Commit Graph

31 Commits

Author SHA1 Message Date
kurihada 89673e28cb feat: 实现检查点系统 (Shadow Git 架构)
- 添加 Shadow Git 存储后端,使用隔离的 git 仓库管理快照
- 实现检查点管理器,支持自动/手动检查点创建
- 添加 5 个检查点工具:
  - undo: 快速撤销到上一个检查点
  - checkpoint_create: 创建命名检查点
  - checkpoint_list: 列出所有检查点
  - checkpoint_diff: 显示检查点与当前状态的差异
  - checkpoint_restore: 恢复到指定检查点
- 支持嵌套 .git 目录处理,避免冲突
- 添加事件系统监听检查点生命周期
- 编写完整测试用例 (21 个测试)
2025-12-11 23:00:47 +08:00
kurihada 9818e02ed1 feat: 添加 AST RepoMap 代码仓库地图功能
- 实现基于 Tree-sitter 的代码符号提取 (支持 TS/JS/Python)
- 实现 PageRank 算法进行符号相关性排序
- 支持个性化权重调整 (提及的标识符、聊天文件等)
- 添加磁盘缓存避免重复解析
- 集成 repo_map 工具到工具系统
- 添加 15 个单元测试
2025-12-11 22:26:43 +08:00
kurihada 4beaf088d0 feat: 添加 MCP (Model Context Protocol) 集成支持
实现 MCP 协议集成,允许通过外部服务器扩展工具能力:

核心模块:
- types.ts: MCP 类型定义 (LocalMCPServer, RemoteMCPServer, MCPTool 等)
- config.ts: 配置加载、验证,支持 {env:VAR} 环境变量语法
- transports/stdio.ts: stdio 传输层实现 (JSON-RPC 2.0)
- client.ts: MCP 客户端,处理协议握手和工具调用
- manager.ts: 多服务器生命周期管理
- tool-adapter.ts: 将 MCP 工具转换为内部格式

CLI 命令:
- ai-assist mcp list: 列出服务器状态
- ai-assist mcp tools: 列出可用工具
- ai-assist mcp test <server>: 测试连接

配置支持:
- 用户级 (~/.ai-assist/config.json) 和项目级配置
- JSON/YAML 格式
- 通配符模式工具启用/禁用
2025-12-11 21:18:41 +08:00
kurihada bca19b7741 test: 补充单元测试提升代码覆盖率
新增测试文件:
- agent/executor-extended.test.ts, presets/
- context/manager-extended.test.ts
- core/agent.test.ts, providers.test.ts
- lsp/cli.test.ts, client-extended.test.ts, index.test.ts
- permission/file-prompt.test.ts, prompt.test.ts
- skills/builtin/
- tools/filesystem/write_file-extended.test.ts
- tools/git/git_commit-extended.test.ts
- tools/load_description.test.ts
- tools/todo/todo-manager.test.ts
- tools/tool-search.test.ts
- types/
- utils/config-extended.test.ts, diff-extended.test.ts

修改现有测试:
- agent/manager.test.ts
- tools/skill/skill.test.ts
- utils/config.test.ts, diff.test.ts, image.test.ts
2025-12-11 20:37:03 +08:00
kurihada f8b0cd4bec test: 补充 task、copy_file、skill_search 工具测试
- task-extended.test.ts: 覆盖 Vision Agent、模型选择、后台运行
- copy_file-extended.test.ts: 覆盖递归复制、权限检查边界情况
- skill_search-extended.test.ts: 覆盖来源标记、未分类分组、参数显示

覆盖率提升:
- task.ts: 97.91%
- copy_file.ts: 100%
- skill_search.ts: 98.61%
2025-12-11 20:33:14 +08:00
kurihada d0d0e8dbaf refactor: 清理代码结构,统一重复定义,移除未使用代码
- 提取 Provider 配置到公共模块 core/providers.ts
- 统一 PermissionAction/PermissionRule 类型定义到 permission/types.ts
- 移除 core/agent.ts 中未使用的 legacyTools 系统
- 移除 tools/index.ts 中未使用的 allTools 导出
- 减少约 125 行重复/冗余代码
2025-12-11 18:42:07 +08:00
kurihada abbb03bf50 feat: 重构 Vision 处理架构,支持自动委托 Vision Agent
- 主 Agent 收到图片后自动检测是否支持 vision,不支持时委托 Vision Agent 处理
- 添加 qwen-ai-provider-v5 支持百炼/DashScope API
- Task 工具支持 images 参数,可传递图片给子 Agent
- Vision Agent 使用独立的 VisionConfig 配置
- 移除 UI 层的 vision fallback 逻辑,统一在 Agent 层处理
- 删除废弃的 src/utils/vision.ts(原生 fetch 实现)
2025-12-11 18:21:36 +08:00
kurihada 32fdb244f0 feat: 添加 OpenAI 兼容 API 支持和独立 Vision 服务
- 添加 OpenAI AI SDK provider 支持 (@ai-sdk/openai)
- 支持 OpenAI 兼容服务的 baseUrl 配置(如阿里云百炼)
- 添加独立的 Vision 配置(visionProvider/visionApiKey/visionBaseUrl/visionModel)
- 实现图片引用语法 @path/to/image.png,支持带空格的路径
- 当主模型不支持 vision 时,自动调用配置的 Vision 服务分析图片
- 添加图片处理工具函数和单元测试
2025-12-11 17:49:16 +08:00
kurihada a476a4240c feat: 添加 Commands 系统支持斜杠命令
实现类似 OpenCode 的 Commands 功能:
- 支持 Markdown 格式定义命令,带 YAML frontmatter
- 变量替换:$ARGUMENTS, $1/$2, @filepath, !`shell`
- 三级加载:builtin < user < project
- 7 个内置命令:init, review, test, fix, explain, commit, help
- 集成终端 UI 支持 /commands 列表和命令执行
- 完整单元测试覆盖 (46 tests)
2025-12-11 16:12:28 +08:00
kurihada 723558ff22 feat: 添加 Skills 系统支持可复用提示模板
- 新增 Skill 类型定义和加载器,支持 YAML/JSON/Markdown 格式
- 实现 Skill 注册表,支持搜索、分类和优先级覆盖
- 添加 8 个内置 Skills: code-review, explain-code, generate-docs 等
- 创建 skill 和 skill_search 工具供 Agent 调用
- 支持从用户目录和项目目录加载自定义 Skills
- 添加完整的单元测试覆盖
2025-12-11 15:56:19 +08:00
kurihada ad5d30b262 feat: 添加后台 Agent 执行和模型选择功能
- 新增 AgentManager 管理后台 Agent 生命周期
- Task 工具支持 run_in_background 参数实现后台执行
- Task 工具支持 model 参数选择 sonnet/opus/haiku 模型
- 新增 agent_output 工具查询后台 Agent 执行状态和结果
- 添加 AgentManager 和 AgentOutput 工具单元测试
2025-12-11 15:46:30 +08:00
kurihada 729fb2d42a feat: 添加完整的单元测试套件
- 新增 vitest 测试框架配置
- 添加 54 个测试文件,共 951 个测试用例
- 覆盖核心模块:
  - Agent: executor, registry, config-loader, permission-merger
  - Context: manager, compaction, prune, token-counter
  - Permission: manager, bash/file/git/web checkers, wildcard
  - Session: manager, storage
  - Tools: filesystem (12个), git (10个), web, shell, todo, task
  - LSP: client, server, language
  - Utils: config, diff
  - UI: terminal
2025-12-11 14:45:24 +08:00
kurihada f4df6483a6 feat: Agent 模式切换时应用工具过滤
- 在 getAvailableTools() 中根据 AgentToolConfig 过滤工具
- 支持 enabled 白名单、disabled 黑名单、noTask 配置
- 切换回 default 时恢复原始 systemPrompt
- /agent 命令显示当前可用工具数量
2025-12-11 13:23:45 +08:00
kurihada bfe3bc63b3 feat: 添加 /agent 命令支持交互式切换 Agent 模式
- 在 AgentRegistry 添加 listPrimaryAgents() 方法
- 在 Agent 类添加 setAgentMode/getAgentMode 方法
- 在 TerminalUI 实现 /agent 命令:
  - /agent 显示当前模式和可用列表
  - /agent <name> 切换到指定 Agent
  - /agent default 切换回默认模式
- 提示符显示当前 Agent 模式(如 @plan You >)
- 为 build Agent 添加 prompt 配置
2025-12-11 13:19:58 +08:00
kurihada 82f0a0ccde feat: 添加多代理系统和 Task 子任务功能
Agent 模块:
- types.ts: Agent 类型定义 (AgentInfo, AgentPermission 等)
- permission-merger.ts: 三级权限合并逻辑 (系统->全局->Agent)
- config-loader.ts: 支持 YAML/JSON 配置文件加载
- registry.ts: Agent 注册表,管理预设和自定义 Agent
- executor.ts: Agent 执行器,支持工具过滤和权限控制
- presets/: 预设 Agent (general, explore, code-reviewer, build, plan)

Task 工具:
- task.ts: 执行子任务,委派给指定 Agent 处理
- 支持子会话创建和管理

会话扩展:
- 支持父子会话关系 (parentId, agentName)
- 新增 createChildSession, saveChildSession 方法

配置:
- 支持 .ai-assist/agents.yaml 用户自定义 Agent
- 支持通配符模式的 Bash 权限规则
2025-12-11 11:21:08 +08:00
kurihada c6f8ba95ec feat: 添加对话压缩功能和上下文使用情况显示
- 新增 context 模块实现 Prune 和 Compaction 压缩策略
- Prune: 将旧工具调用结果替换为占位符
- Compaction: 使用 AI 生成对话摘要
- CLI 提示符显示上下文使用量 [used/available]
- 添加 /compact 命令手动压缩对话
- 添加 /context 命令查看上下文详情
- Agent 集成自动压缩 (85%阈值) 和强制压缩功能
2025-12-11 10:59:43 +08:00
kurihada dddec9b6d5 feat: 添加 Git 工具集和重组描述文件目录结构
Git 工具集:
- 新增 10 个 Git 工具: status, diff, log, branch, add, commit, push, pull, checkout, stash
- 新增 GitPermissionChecker 权限检查器
- 读操作默认允许,写操作需要用户确认

目录结构优化:
- 重组 descriptions 目录,按工具类别分子目录 (shell, filesystem, web, git, todo)
- 更新 load_description.ts 支持子目录加载
- 更新 build 脚本支持递归复制描述文件
2025-12-11 10:30:40 +08:00
kurihada 43cfe483fb feat: 添加 web_extract 网页内容提取工具
- 使用 Tavily Extract API 从 URL 提取网页内容
- 支持批量提取(最多 20 个 URL)
- 支持 basic/advanced 提取深度
- 支持 markdown/text 输出格式
- 可选提取图片列表
- 复用 WebPermissionChecker 进行权限管控
2025-12-11 10:09:19 +08:00
kurihada 3c922fe16c feat: 添加 web_search 工具和权限管控
- 新增 web_search 工具,使用 Tavily SDK 进行网络搜索
- 支持搜索深度(basic/advanced)和主题(general/news/finance)配置
- 新增 WebPermissionChecker 权限检查器
- 搜索操作默认需要用户确认,支持会话级权限记忆
- 配置文件支持 tavilyApiKey 存储
2025-12-11 01:32:32 +08:00
kurihada 924fd7b9c6 fix: 修复会话历史丢失工具调用和 LSP 启动错误输出
- 保存完整的响应消息(包括工具调用和结果)到会话历史
- LSP 服务器未安装时静默忽略,不输出错误信息
2025-12-11 00:56:35 +08:00
kurihada 09839b15a0 feat: 添加文件写入 diff 预览和 LSP 诊断优化
- 文件写入/编辑前显示 diff 对比供用户确认
- LSP 诊断只显示错误和警告,忽略 hint/info
- 优化 LSP 等待时间:首次启动 2s,后续 300ms
2025-12-11 00:44:42 +08:00
kurihada 929f6f7850 feat: 添加 LSP 代码诊断功能
- 实现 LSP 客户端,支持与语言服务器通信
- 支持多种语言: TypeScript, Python, Go, Rust, C/C++ 等
- write_file/edit_file 工具集成 LSP 诊断,写入后自动检查代码错误
- 添加 CLI 命令管理语言服务器 (ai-assist lsp list/install/info)
- 智能等待机制:首次启动 LSP 等待 2s,后续仅需 300ms
- 将 read_file/write_file/edit_file 设为核心工具,确保文件操作使用正确的工具
- 更新系统提示词,引导 AI 使用文件工具而非 bash 命令
2025-12-11 00:01:58 +08:00
kurihada 1e0ecc2de7 feat: 添加会话持久化和 Todo 工具
会话持久化:
- 新增 SessionManager 和 SessionStorage,支持会话自动保存和恢复
- 会话数据存储在 ~/.local/share/ai-assist/,遵循 XDG 规范
- 支持对话历史、已发现工具、待办事项的持久化
- 启动时自动恢复同一工作目录的上次会话
- 支持会话归档和历史会话管理

Todo 工具:
- 新增 todoread 工具:读取当前会话的待办事项列表
- 新增 todowrite 工具:创建和更新待办事项
- 支持 pending/in_progress/completed 三种状态
- 待办事项随会话自动持久化

其他改进:
- ToolResult 类型新增可选的 metadata 字段
- Agent 支持会话管理器集成
- clearHistory 改为异步方法
2025-12-10 22:55:37 +08:00
kurihada bc1ece3dad feat: 实现 Tool Search Tool 动态工具发现机制
- 新增 ToolRegistry 工具注册表,支持核心工具和延迟加载工具分离
- 新增 tool_search 元工具,支持关键词搜索发现可用工具
- 新增基于关键词的搜索算法,按相关度评分排序
- 为所有工具添加 metadata(分类、关键词、延迟加载标识)
- 修改 Agent 支持动态工具注入,tool_search 结果自动添加到可用工具
- 核心工具(tool_search, bash)始终加载,其他工具按需发现
2025-12-10 19:51:25 +08:00
kurihada e435b2f8f8 feat: 新增 6 个工具并重组目录结构
新增工具:
- grep_content: 在文件内容中搜索文本/正则表达式
- get_file_info: 获取文件元信息(大小、权限、时间等)
- move_file: 移动或重命名文件/目录
- copy_file: 复制文件或目录(支持递归)
- delete_file: 删除文件或目录
- create_directory: 创建目录

目录重组:
- src/tools/shell/ - Shell 相关工具(bash)
- src/tools/filesystem/ - 文件系统工具(12个)
- 每个子目录有独立的 index.ts 导出

权限系统扩展:
- 新增操作类型: grep, info, move, copy, mkdir
- 读取类操作默认允许,写入类操作需要确认
2025-12-10 18:32:39 +08:00
kurihada 60a046357b feat: 添加权限管理系统
- 实现 tree-sitter 解析 bash 命令,准确识别管道、&&、子shell 等复杂命令
- 新增权限检查器模式,支持 allow/deny/ask 三级权限控制
- BashPermissionChecker: 支持命令模式匹配和外部目录访问检测
- FilePermissionChecker: 支持文件操作分级(read/write/edit/list/search/delete)
- 敏感路径规则:系统目录拒绝,SSH/AWS 等凭证目录需确认
- 会话级权限记忆,用户决定可在当前会话内生效
- 所有工具(bash、read_file、write_file、edit_file、list_directory、search_files)已集成权限检查
2025-12-10 18:32:26 +08:00
kurihada af1185c4d7 优化工具 2025-12-10 17:11:46 +08:00
kurihada 4b451b2d58 支持多轮工具调用 2025-12-10 16:40:48 +08:00
kurihada 9973e8ec06 修复多轮对话bug 2025-12-10 16:35:04 +08:00
kurihada a53bf1d6e4 支持DeepSeek 2025-12-10 16:24:06 +08:00
kurihada ff3ec65139 Initial commit 2025-12-10 16:04:26 +08:00