kuaifan ec1ab31b0e refactor(ai-kb): 索引同步改为容器启动 reconcile
- 删除 CI reindex workflow(ai-kb-reindex.yml):内容入库不再依赖 CI
  远程触发,AI 插件容器每次启动按文件 hash 对账(reconcile)自动增量
  收敛,免重启即时生效时可手动调 POST /kb/reindex(默认 mode=reconcile)
- ai-kb README.md 同步更新贡献流程与内容同步机制说明
- CLAUDE.md 精简 ai-kb 同步规则:去除与 _schema/README 重复的写作规范
  与背景说明,保留同步时机、操作指引、改完无需触发索引三条
- 另:auth 接口 locale 检索语种缺省改为由请求语言推导(含 zh 视为 zh,
  否则 en),删除 config/ai.php 的 rag_supported_locales 与回退逻辑,
  前端改用 getLanguage() 统一映射,同步更新 ai-kb auth.md
- appstore 镜像升级 0.4.3 -> 0.5.0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 09:46:58 +00:00

2.2 KiB
Raw Permalink Blame History

id, title, type, feature, scope, locale, aliases, related_tools, related_pages, prerequisites, negative, last_verified
id title type feature scope locale aliases related_tools related_pages prerequisites negative last_verified
ai-assistant.auth.concept AI 助手鉴权stream_key concept ai-assistant end-user zh
AI 鉴权
AI 授权
stream_key
AI token
AI 流凭证
用户已登录
当前用户允许聊天
stream_key 是一次性凭证,发完一条消息就失效
流式接口 /ai/invoke/stream/* 不在主仓库,由 dootask-ai 容器提供
普通用户不需要关心 stream_key前端自动获取
v1.7.90

AI 助手鉴权stream_key

定义

AI 助手发送提问前必须先调用 POST api/assistant/auth 生成一次性 stream_key,再用它去开 SSE 流(/ai/invoke/stream/{stream_key}),既复用登录态又避免把用户 token 暴露给 ai 容器。

数据流

  1. 用户点发送
  2. 前端 POST api/assistant/auth,参数:model_typemodel_namecontextJSONlocalezh/en缺省取请求语言语言包含 zh 视为 zh否则 en
  3. 后端 AssistantController::auth 校验登录 + 聊天权限,写入临时凭证
  4. 返回 {stream_key: "xxx"}
  5. 前端开 SSEai/invoke/stream/{stream_key}
  6. ai 容器消费凭证、转发上游模型,推回 append/replace/done

关键约束

  • 一次性:一个 stream_key 仅能开一次 SSE 流
  • 绑定用户:内嵌 userid,越权使用被拒
  • 携带 context:对话历史在 auth 阶段写入ai 容器不反向查 DooTask 库
  • 插件校验AssistantController 构造函数先做 Apps::isInstalledThrow('ai');未装直接抛错

权限校验

User::auth()->checkChatInformation():未登录 / 被禁止聊天 / 激活异常都会拒绝。

相关接口

接口 用途
POST api/assistant/auth 生成 stream_key
GET api/assistant/models 拉可用模型列表
POST api/assistant/session/list 历史会话
POST api/assistant/session/save 保存当前会话
POST api/assistant/session/delete 删除 / 清空

不支持

  • 不支持复用 stream_key
  • 不支持匿名调用
  • 不支持终端用户直接管理 token

相关