Commit Graph

21 Commits

Author SHA1 Message Date
kurihada f55bd8f526 refactor(core): 重命名 agent_output 为 task_output
- 删除 agent_output.ts,新增 task_output.ts
- 更新工具导出、注册和描述映射
- 更新 build/plan agent 预设的工具列表
- 更新 task 工具中的相关引用
2025-12-17 14:15:49 +08:00
kurihada 78551d68f3 feat(core): ToolParameter 支持 default、minimum、maximum、enum 字段
- 扩展 ToolParameter 类型,新增 default/minimum/maximum/enum 可选字段
- 更新 buildZodSchema 函数处理 enum 和 min/max 约束
- MCP 工具适配器解析 JSON Schema 中的扩展字段
- task_output 工具使用新字段替代 description 中的约束说明
- 新增单元测试覆盖所有扩展字段
2025-12-17 14:15:09 +08:00
kurihada 31e246f629 refactor(core): 移除 get_file_info 和 list_directory 工具
这些工具功能可通过 bash 命令 (ls, stat, file) 实现,不再需要单独的工具。

删除的文件:
- src/tools/filesystem/get_file_info.ts
- src/tools/filesystem/list_directory.ts
- src/tools/descriptions/filesystem/get_file_info.txt
- src/tools/descriptions/filesystem/list_directory.txt
- tests/unit/tools/filesystem/get_file_info.test.ts
- tests/unit/tools/filesystem/list_directory.test.ts

更新的文件:
- src/tools/index.ts: 移除导入和注册
- src/tools/filesystem/index.ts: 移除导出
- src/tools/load_description.ts: 移除映射
- src/agent/presets/*.ts: 移除 tools.enabled 引用
- tests/unit/tools/load_description.test.ts: 移除测试数据
2025-12-17 12:07:38 +08:00
kurihada 2abea47386 refactor(core): 移除不再需要的文件系统工具
删除以下工具及相关文件:
- copy_file: 复制文件
- create_directory: 创建目录
- delete_file: 删除文件
- move_file: 移动文件
- search_files: 搜索文件

清理范围:
- 工具实现文件 (5个)
- 工具描述文件 (5个)
- 单元测试文件 (6个)
- Agent presets 中的引用
- Checkpoint 系统中的触发类型
- Hook 系统中的相关处理
2025-12-17 12:00:46 +08:00
kurihada eb80b2c9e6 fix(core): 修复测试用例以匹配最新实现
- todo-manager.test: 修复空日期字符串导致的 Invalid time value 错误
- config-loader.test: 更新测试以匹配简化后的配置加载逻辑
- mcp/config.test: 修复配置路径匹配问题
- task.test/task-extended.test: 添加缺失的 agentEventEmitter mock
- presets/index.test: 更新预设 Agent 数量和 maxSteps 测试
- agent.test: 添加缺失的 mock 函数并修正模式切换测试
- 删除过时的 session/manager.test 和 storage.test (使用已废弃的 API)
2025-12-16 22:33:46 +08:00
kurihada 87edd6e35b refactor(core): 移除 BASH_TOOL_EXTRA_NOTES 和 GIT_COMMIT_AND_PR_CREATION_INSTRUCTION
- 从模板引擎中移除这两个函数的注册
- 从 bash 工具描述中移除对应的模板变量
- 删除不再需要的 git-instructions.txt 文件
- 更新单元测试,移除相关测试用例
2025-12-16 17:00:13 +08:00
kurihada 09dc046f8f feat(core): 扩展模板引擎支持函数调用和算术运算
- 新增模板函数调用语法 ${FUNC_NAME()}
- 新增除法算术运算 ${value/divisor}
- 添加 bash 工具配置常量 (CUSTOM_TIMEOUT_MS 等)
- 更新 bash 工具描述使用动态模板格式
- 添加 Git 操作指令文本 (commit/PR 说明)
- 添加模板渲染器单元测试 (31 个测试用例)
2025-12-16 16:52:46 +08:00
kurihada 1d380d0bcb refactor(core): 统一模板引擎到 src/template/ 目录
- 将 agent/prompt-template/ 目录合并到 src/template/
- 新增通用模板函数 renderTemplate、render
- 新增 Agent 特定函数 renderPromptTemplate、renderPrompt
- 新增 createToolDescriptionContext 支持工具描述模板变量
- 支持 ${GREP_TOOL_NAME} 等 Claude Code 风格变量
- 更新所有相关导入路径
2025-12-16 16:05:10 +08:00
kurihada 30f35a6562 refactor(core): 重命名 grep_content 工具为 grep
- 重命名 grep_content.ts 为 grep.ts
- 更新工具名称从 grep_content 改为 grep
- 更新所有引用该工具的代码和测试文件
- 更新描述文件名称
2025-12-16 15:03:33 +08:00
kurihada 452f19e2a9 refactor(core): 移除未使用的 prompt-template templates 目录 2025-12-16 14:19:36 +08:00
kurihada 58f1bc8718 feat(core): 实现动态提示词模板系统
- 新增 prompt-template 模块,支持运行时变量替换
- 支持 ${variable}、${obj.prop}、${cond ? "a" : "b"} 语法
- AgentInfo 新增 promptTemplate 字段标记动态模板
- Plan Agent 提示词改用模板语法,支持动态工具名和计划文件路径
- AgentExecutor.buildSystemPrompt 集成模板渲染
- 新增 27 个单元测试验证模板功能
2025-12-16 14:15:10 +08:00
kurihada 9376887995 refactor(core): 统一配置系统,移除 config.json
- 移除 config.json,所有配置统一从 agents.json 和 providers.json 读取
- config-loader.ts 从全局目录 ~/.ai-terminal-assistant/ 加载配置
- loadConfig() 从 agentRegistry.getGlobalConfig() 获取 defaults.model
- 添加 loadVisionConfig() 支持 Vision 模型配置
- Tavily API Key 仅从环境变量读取
- UI AgentDefaultsEditor 添加 Vision 模型配置界面
- 更新相关测试
2025-12-16 00:33:29 +08:00
kurihada 6342a46e59 refactor(storage): 统一消息存储到 Core 层
问题:Server 端只存储最终文本响应,工具调用的中间消息丢失。

解决方案:
- Agent.chat() 返回 ChatResult,包含完整消息链
- Server SessionManager 简化为只管理会话元数据
- 消息 API 改为从 Core Storage 读取
- 移除 Server 端的消息存储和 addMessage 方法

影响范围:
- core: Agent.chat() 返回类型变更
- server: SessionManager 接口变更,移除消息存储
- server: GET /sessions/:id/messages 从 Core 读取
- server: 移除 POST /sessions/:id/messages 端点
2025-12-15 10:04:22 +08:00
kurihada c307cd3a7c refactor(agent): 将 Summary Model 改造为内置 Sub Agent
- 扩展 AgentMode 类型添加 'internal' 模式
- 新增 summary agent preset (claude-3-5-haiku)
- AgentRegistry 添加 getInternal/listInternalAgents 方法
- CompressionManager 添加 setSummaryModelFromAgentConfig
- Agent 构造函数改用 Registry 配置初始化 Summary 模型
- 清理旧的 SummaryConfig 配置系统
- UI AgentsPanel 分离显示 System/Preset/Custom agents
- UI AgentEditor 为 internal agent 显示简化编辑界面
2025-12-14 22:12:36 +08:00
kurihada 9e011476c8 refactor(config): 移除环境变量依赖,统一使用 Provider 配置系统
- 移除 .env.example 文件
- 简化 resolveApiKey 函数,只从配置文件读取 API Key
- 重构 loadConfig/loadVisionConfig/loadSummaryConfig 使用 ProviderRegistry
- 更新测试以 mock Provider 系统
2025-12-14 21:29:36 +08:00
kurihada f54f24b079 feat(context): 优化对话压缩系统
- 添加独立摘要模型配置支持(SUMMARY_PROVIDER/MODEL/API_KEY/BASE_URL)
- 添加 CompressionStatus 枚举和 DetailedCompressionResult 详细返回类型
- 实现压缩失败检测(空摘要、token膨胀)
- 添加首条 user-assistant 对保护,确保上下文连贯性
- CompressionManager 支持独立摘要模型(优先使用小模型降低成本)
- Agent 自动压缩时显示详细状态信息
- 更新相关测试用例
2025-12-13 11:13:20 +08:00
kurihada 9ff2934089 refactor(session): 升级存储系统架构
- 添加读写锁机制防止并发写入冲突
- 实现数据迁移框架支持版本化升级
- 分层存储结构:项目/会话/消息独立存储
- 使用 Git root commit hash 作为稳定项目 ID
- 增量消息同步避免重复写入
- 每条消息独立文件,按序号命名 (0001.json, 0002.json)
2025-12-13 10:41:36 +08:00
kurihada 6ec6fe2f9f feat(provider): 添加独立的 Provider 模块管理模型提供商
实现可扩展的 Provider 系统,支持动态注册自定义提供商:

Core 模块 (packages/core/src/provider/):
- types.ts: Provider 相关类型定义
- builtin/: 内置提供商 (Anthropic, OpenAI, DeepSeek)
- registry.ts: ProviderRegistry 单例类
- config.ts: 配置持久化 (~/.ai-terminal-assistant/providers.json)
- utils.ts: 连接测试等工具函数

Server API (packages/server/src/routes/providers.ts):
- GET/POST/PUT/DELETE /providers 提供商管理
- POST /providers/:id/test 连接测试
- 自定义模型管理接口

Frontend (packages/ui/):
- ProvidersPanel 组件用于管理提供商
- API client 函数和类型定义

主要功能:
- 支持动态注册 OpenAI 兼容服务 (Ollama, vLLM 等)
- 每个提供商独立的 API Key 配置
- 预设模型列表 + 自定义模型输入
- 连接测试验证
2025-12-13 01:50:27 +08:00
kurihada 1d69fd876d feat(permission): 实现 WebSocket 权限确认机制
重构权限系统,将终端 UI 代码从 core 模块移除,实现基于 WebSocket 的权限确认流程:

Core 模块清理:
- 删除 permission/prompt.ts 和 file-prompt.ts(终端交互)
- 删除 diff.ts 中的 chalk 渲染函数
- 删除 config.ts 中的 inquirer 交互
- 移除 chalk 依赖

Server 权限处理:
- 新增 permission/handler.ts,实现 WebSocket 权限请求/响应
- 更新 agent/adapter.ts 设置权限回调
- 更新 ws.ts 处理 permission_response 消息

Web 权限组件:
- 新增 PermissionDialog 组件,显示权限请求详情和 Diff
- 更新 useChat hook 管理权限状态
- 更新 Chat 页面集成权限弹窗
2025-12-13 01:09:35 +08:00
kurihada 5d4afecd48 refactor(core): 移除 UI 交互层,保持 core 为纯能力模块
- 删除 terminal.ts 及其测试(UI 交互应属于 cli 包)
- 清理 index.ts 中的 CLI 入口代码
- 合并 lib.ts 导出到 index.ts
- 移除 commander、inquirer 依赖
- 更新 package.json 导出配置
2025-12-13 00:42:07 +08:00
kurihada 5e32375f0e feat: 重构为 Monorepo 架构并实现 HTTP Server
架构变更:
- 采用 pnpm workspaces 实现 Monorepo 结构
- 将现有代码迁移到 packages/core
- 新增 packages/server HTTP 服务层

Server 功能:
- REST API: 会话管理、工具管理、配置管理
- WebSocket: 实时双向通信支持
- SSE: 服务端事件推送
- Hono + Bun 作为运行时

API 端点:
- GET/POST /api/sessions - 会话 CRUD
- GET/POST /api/sessions/:id/messages - 消息管理
- GET /api/sessions/:id/events - SSE 事件流
- WS /api/ws/:sessionId - WebSocket 连接
- GET/POST /api/tools - 工具管理
- GET/PUT /api/config - 配置管理
2025-12-12 10:42:20 +08:00