Appearance
更新日志
2026-08-26(安全加固第三轮)
- AI 工具上下文归属校验(High):
wants_context的对话上下文现在只包含 调用者本人会话的内容——平台按会话归属校验,别人的 session_id 拿不到任何 上下文(键缺失,不区分"不存在"与"不是你的")。 - 异步工具生命周期:用户中断对话后挂起表不再残留(finally 全路径清理); 已取消的调用回填结果返回 404 而非误报"已送达"。
/open/tools对称性:更新/删除补齐ai_toolsscope 检查与限流。- SDK 1.4.1:markdown 代码块占位符改用 NUL 哨兵,修复正文中 " 0 " 这类字面量与占位符碰撞导致的内容错位/重复(经实证检验非 XSS, 转义管线对属性注入/scheme 混淆依然安全)。
2026-08-26(SDK 1.4.0:IndexedDB 会话存储)
- 新增
createChatStore:mountChat 持久化的大空间选项——IndexedDB(配额 数百 MB 级,对比 localStorage ~5MB),零依赖、多会话按 key 隔离、自带 5MB/2000 条预算裁剪、异步排队写入、隐私模式等不可用环境自动降级。 存储选型指南:IndexedDB(起步)→ 自己的后端(跨设备)→ localStorage (仅轻量)。
2026-08-26(SDK 1.3.1:持久化防炸)
mountChat会话持久化的三层保护:存档载荷尺寸上限persistMaxChars(默认 256KB,超限自动从最旧一轮裁起)、内存历史上限historyLimit(默认 200 条,恢复存档同样生效)、onHistoryChange里的存储异常吞掉 (localStorage ~5MB 写满不再打断聊天)。文档把后端存储立为推荐做法。
2026-08-26(SDK 1.3.0 + 工具异步模式)
- mountChat 会话持久化(SDK 1.3.0):
initialHistory恢复 +onHistoryChange存档,两行接上自己的存储实现跨刷新续聊。 - AI 工具异步模式:回调秒回
{"jlt_async":true,"wait_sec":≤300},平台 挂起等待,应用处理完经POST /open/tools/result回填(call_id 绑定应用, 跨应用回填被拒;超时转 error 可重试)——慢任务不再占用同步等待上限。
2026-08-26(SDK 1.2.0 + AI 工具深化)
- AI 对话组件(SDK 1.2.0):
mountChat一行挂载——消息列表/流式逐字 渲染/停止/重试/代码块加粗链接/深浅色自适应,配无状态后端中继契约, 5 分钟接入。 - AI 工具性能:工具清单按组织集合 10s 进程内缓存(变更即时失效), 成员对话的每请求解析开销≈0。
- AI 工具自由度:回调可附带最近对话上下文(
wants_context,只读 参考);回调等待上限 60→120 秒;新增开放 API/open/tools自管理工具(CI/清单同步,免管理员 UI)。
2026-08-26(安全加固第二轮)
- 本地能力确认强化——确认弹窗把解析后的
协议://主机:端口单独成行展示 (不再展示可能隐藏真实主机的 URL 前缀);拒绝含user@host的目标;localFetch不跟随重定向(30x 直接失败,防同意后被改道到内网);browserExtract导航后校验最终地址与确认地址同源,被改道即中止。 - 数据库只读加固——只读关键词补齐
INTO/OUTFILE/INFILE/DUMPFILE/ LOAD_FILE(SELECT 变体的文件读写通道);MySQL 会话级只读事务 (SET SESSION TRANSACTION READ ONLY),SET 失败记日志不再静默吞。
2026-08-25(新能力:本地能力,JSAPI v1.3 / SDK 1.1.0)
- 本地能力(
localscope):应用页面可在用户逐次确认下使用其电脑的 抓取能力——jlt.localFetch(本机网络抓正文,可访问内网)与jlt.browserExtract(隔离无头浏览器提取,不带用户登录态)。仅桌面端; 授权为「组织管理员开 scope + 用户每次确认」双层。
2026-08-25(新能力:AI 工具 + 数据库)
- AI 工具(
ai_tools):应用可给组织成员的 AI 助手注册自定义工具—— 声明名称/描述/JSON Schema/回调地址,模型调用时平台签名 POST 到你的后端, 结果回填对话。协议与可见性见给 AI 注册工具。 - 数据库(
db):应用设置里绑定外部数据库(配置人自建/协作/市场安装的均可), 开放 API 提供绑定清单、表结构、只读查询(GET /db/databases、GET /db/{id}/tables…、POST /db/query)——安全边界与用户侧一致:单条 SELECT、禁写关键字、行数上限、语句超时。
2026-08-25(SDK 1.0.0)
- 新增
db能力:应用设置里绑定外部数据库(配置人自建/协作/市场安装的均可), 开放 API 提供绑定清单、表结构、只读查询(GET /db/databases、GET /db/{id}/tables…、POST /db/query)——安全边界与用户侧一致:单条 SELECT、禁写关键字、行数上限、语句超时。
2026-08-25(SDK 1.0.0)
- TypeScript SDK 首个版本化发布,可在文档站直接下载: 浏览器 IIFE 包(
jltSdk全局,免构建引入)、npm 离线安装包(tgz)、 类型声明(d.ts),附 sha256 校验;版本目录只进不退,历史见 版本历史。
2026-08-25(安全加固)
- IP 白名单防伪造——来源 IP 判定改为"可信反代感知":仅当连接来自可信 代理网段时才采信
X-Real-IP/X-Forwarded-For尾跳;直连一律用 socket 对端。伪造X-Forwarded-For无法再绕过白名单。 - 移动端桥接凭证(JSAPI v1.2.1)——壳随
jlt:init向主框架下发一次性_bridge_token,SDK 每个请求回带;页面里嵌套的三方 iframe 伪造的桥接 请求将被丢弃(对齐桌面壳的 origin 严格比对)。 - 回调验证错误收敛——challenge 验证失败不再区分具体环节(可达性/状态码/ 非 JSON),消除借此探测内网的旁路信号;细节只进服务端日志。
2026-08-25(第二轮)
- 开放 API:组织架构——新增
GET /org/teams(团队树 + 成员数)与GET /org/teams/{id}/members(团队成员,含团队角色),走contacts能力。 - 服务器 IP 白名单——应用设置可配置出口 IP/CIDR 白名单,非空时所有
/api/open/*调用(含换 token)只接受白名单来源,防app_secret泄露被 任意机器滥用。 - 事件订阅:手动重投——修好回调端点后,可把已终态失败的投递一键重新排队。
- AI 流式——
POST /ai/completions支持stream: true(OpenAI 兼容 SSE)。
2026-08-25(第一轮)
- JSAPI 交互组件(v1.1)——
selectUsers系统选人组件(免 scope,用户 亲手挑选即授权)、openChat跳单聊、alert/confirm/toast。 - 事件订阅(webhook)——成员加入/离开、应用被安装/卸载/授权变更时 POST 推送到你的后端:challenge 地址验证、HmacSHA256 签名、30s→2m→10m→1h 退避重试,服务重启不丢。
- 移动端支持(v1.2)——组织应用可在手机客户端打开(同一份 JSAPI SDK, 自动识别桌面/移动容器);
getContext().platform返回desktop/mobile。 - 开发者文档站(本站)与 TypeScript SDK(
@ai-im/org-app-sdk)发布。
2026-08-25(初始版本)
- 组织应用上线:注册自建应用(外部 https 网站)、免登(authCode 5 分钟一次性)、 JSAPI 基础能力(
ready/getContext/requestAuthCode/setTitle/close)。 - 开放 API:
auth/token、auth/user、org/members、im/send、ai/completions(非流式)、kb/search。 - 能力(scope)逐项授权:
contacts/im/ai/kb;免登恒定授予。 - 应用市场:发布(audience 可见范围)/ 安装 / 安装方单独授权。