Skip to content

Slug: ai

功能介绍

AI 能力层统一管理 Tower 中所有的 AI 调用,提供 5 种核心 AI 能力:

能力说明触发时机建议模型
助手聊天多轮流式对话,支持图片输入用户在助手面板发起对话当前默认
小总结50 字执行摘要任务停止时自动生成Haiku 4.5
大总结 Dreaming结构化洞察 JSON任务完成(DONE)时自动生成Sonnet 4.6
项目分析分析目录结构生成描述点击项目「生成描述」按钮Sonnet 4.6
任务执行PTY 终端交互式执行启动任务执行当前默认

不同能力建议使用不同模型(Haiku 适合轻量级摘要,Sonnet 适合深度分析),后续支持为每种能力独立配置模型。

详细说明

AI 能力调用点

能力文件调用方式
助手聊天api/internal/assistant/chat/route.tsAgent SDK query()
小总结lib/claude-session.tsgenerateSummaryFromLogAgent SDK aiQuery()
大总结(Dreaming)lib/claude-session.tsgenerateDreamingInsightAgent SDK aiQuery()
项目分析actions/project-actions.tsanalyzeProjectDirectoryAgent SDK aiQuery()
任务执行actions/agent-actions.tsstartPtyExecutionPTY spawn CLI

CLI Adapter 接口(TODO)

当前硬编码 Claude Code,后续接入第二个 CLI 时抽象:

spawn(cwd, args, env)        — 启动 CLI 进程(PTY)
resume(sessionId)            — 恢复会话
continue()                   — 继续最近会话
getSessionId()               — 获取会话 ID
getHooks() / installHooks()  — Hook 配置注册
buildEnvOverrides(taskId)    — 环境变量注入

文件清单

核心库

文件说明
lib/claude-session.tsAI 统一入口:aiQuery()generateSummaryFromLog()generateDreamingInsight()
lib/assistant-sessions.ts助手会话管理(localStorage 注册表)
lib/assistant-constants.tsASSISTANT_SESSION_KEY 等常量
lib/assistant-message-converter.tsSDK 消息 → UI 消息格式转换
lib/build-multimodal-prompt.ts多模态 prompt 构建(文本+图片)
lib/execution-summary.ts执行后摘要和 Dreaming 洞察生成
lib/cli-test.tsCLI Adapter 环境检测

Server Actions

文件函数说明
actions/agent-actions.tsstartPtyExecution启动 Claude CLI PTY
actions/agent-actions.tsresumePtyExecution恢复会话
actions/agent-actions.tscontinueLatestPtyExecution继续最近会话
actions/cli-profile-actions.tsgetDefaultCliProfile获取活跃 CLI 配置
actions/prompt-actions.tsgetPrompts / createPromptPrompt 模板管理
actions/project-actions.tsanalyzeProjectDirectoryAI 项目分析

API Routes

路由说明
/api/internal/assistant/chat助手聊天 SSE 流式
/api/internal/assistant/sessions会话消息检索
/api/internal/assistant/images图片服务
/api/adapters/testCLI Adapter 连接测试

数据模型

模型说明
CliProfileCLI 命令、参数、环境变量配置。command 仅允许 claude/claude-code
AgentConfigAgent 特定配置,唯一约束 (agent, configName)
AgentPromptPrompt 模板,支持全局/workspace 级别
TaskExecution执行记录,含 sessionIdsummarygitLoginsightNoteId

组件

组件说明
settings/cli-profile-config.tsxCLI Profile 配置 UI
settings/cli-adapter-tester.tsxCLI 连接测试 UI
settings/prompts-config.tsxPrompt 模板管理 UI
settings/ai-tools-config.tsxAgent 配置 UI

约束

  • CliProfile.command 仅白名单 claudeclaude-code
  • baseArgs 禁止 shell 元字符 ;&|$()
  • envVars 禁止危险 key: PATH, LD_PRELOAD, NODE_OPTIONS
  • 环境变量通过 envOverrides 注入,禁止修改 process.env