Skip to content

Slug: assistant

Assistant 使用 Tower 自有 SQLite 会话和消息作为恢复真源,不绑定特定 CLI 的 transcript。Assistant 插槽可以选择 CLI 或 API 连接,并共享 AI Tools 的显式回退规则。

会话与流式执行

  • 多轮历史、会话标题以及 workspace/project/version 绑定存入 AssistantSessionAssistantTurnAssistantMessage
  • SSE 依次发送文本、推理、工具调用、工具结果、用量、完成或脱敏错误事件;用户可以取消当前轮。
  • 只在当前轮首个文本、推理、工具调用或副作用前尝试备用目标;活动开始后锁定 connection/model,避免重复内容、工具和计费。
  • 图片与文本附件经过路径、数量、类型和大小校验。消息只保存受控附件元数据,不接受任意主机路径。
  • Tower 工具由宿主提供并执行,模型只看到允许的工具定义;工具结果回到同一轮会话。

旧会话导入

最多列出 50 个旧 Claude Agent SDK 会话。第一次打开/发送时按需复制为 Tower 会话,并记录 legacySource + legacyId 防止重复导入;转换失败不会修改原 transcript。导入后,Tower 数据库消息是多 Provider 续聊的上下文来源。

主要位置

位置职责
src/lib/ai/assistant-session-service.ts会话、轮次、消息和附件校验
src/lib/ai/assistant-stream-executor.tsCLI/API 流、回退、取消和工具事件
src/lib/ai/assistant-legacy-adapter.ts旧 Claude 会话只读导入
/api/internal/assistant/chatSSE 聊天
/api/internal/assistant/sessions会话 CRUD/导入
/api/internal/assistant/attachments附件上传

数据升级和备份范围见 升级与迁移