feat: P0功能补全 - 5命令+2工具+权限确认+Thinking显示

新增5个命令:
- /diff: 显示Git未提交变更(支持--staged/--stat)
- /version: 显示版本和环境信息
- /skills: 列出所有可用技能
- /memory: 查看/编辑CLAUDE.md(支持add/edit/user子命令)
- /copy: 复制最近AI回复到剪贴板

新增2个工具:
- WebSearchTool: DuckDuckGo搜索(免费,无需API Key)
- AskUserQuestionTool: AI向用户提问(通过ToolContext回调)

权限确认机制:
- 非只读工具执行前提示用户确认(Y/n/always)
- 支持always一次授权全部后续操作
- 在AgentLoop.executeToolCalls中拦截

Thinking内容显示:
- AgentLoop新增onThinkingContent回调
- 从ChatResponse metadata提取thinking内容
- ThinkingRenderer渲染思考过程(缩进暗色格式)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
liuzh
2026-04-01 22:06:57 +08:00
co-authored by Copilot
parent 7dc4d142b3
commit 82a28b7aa7
11 changed files with 1204 additions and 23 deletions
+124 -20
View File
@@ -269,32 +269,136 @@ allowed-tools: [BashTool, FileReadTool]
## 4. 验收标准
### 4.1 基础功能
- [ ] 应用可正常启动并显示 Banner
- [ ] 支持通过环境变量或配置文件设置 API Key 和模型
- [ ] REPL 循环正常工作:输入问题 → 获得 AI 回复
- [ ] 工具调用循环正常:AI 可以调用工具并获取结果
- [ ] 至少支持 8 个核心工具(Bash、FileRead、FileWrite、FileEdit、Glob、Grep、WebFetch、TodoWrite
- [ ] 至少支持 8 个斜杠命令(/help、/clear、/compact、/exit、/cost、/model、/memory、/context
- [x] 应用可正常启动并显示 Banner
- [x] 支持通过环境变量或配置文件设置 API Key 和模型
- [x] REPL 循环正常工作:输入问题 → 获得 AI 回复
- [x] 工具调用循环正常:AI 可以调用工具并获取结果
- [x] 至少支持 8 个核心工具(实际 11 个
- [x] 至少支持 8 个斜杠命令(实际 11 个
### 4.2 交互体验
- [ ] Banner 显示正常(Logo + 版本 + 模型信息)
- [ ] 输入提示符支持行编辑和历史记录
- [ ] Thinking 过程可见
- [ ] 工具调用时显示 Spinner 动画和状态
- [ ] 支持 ANSI 颜色输出
- [ ] Markdown 内容基本格式化
- [x] Banner 显示正常(Logo + 版本 + 模型信息 + Provider + URL
- [x] 输入提示符支持行编辑和历史记录
- [x] Thinking 过程可见Spinner 动画 + "Thinking..." 提示)
- [x] 工具调用时显示 Spinner 动画和状态
- [x] 支持 ANSI 颜色输出
- [x] Markdown 内容基本格式化
### 4.3 上下文功能
- [ ] 能加载项目 CLAUDE.md
- [ ] 能加载用户级 CLAUDE.md
- [ ] Git 上下文信息正确收集
- [ ] 系统提示词包含所有必要信息
- [x] 能加载项目 CLAUDE.md
- [x] 能加载用户级 CLAUDE.md
- [x] Git 上下文信息正确收集
- [x] 系统提示词包含所有必要信息
### 4.4 代码质量
- [ ] Maven 编译无错误
- [ ] 代码结构清晰,包划分合理
- [ ] 关键逻辑有中文注释
- [ ] 提供完整的使用文档
- [x] Maven 编译无错误
- [x] 代码结构清晰,包划分合理
- [x] 关键逻辑有中文注释
- [x] 提供完整的使用文档README.md
### 4.5 已超出原始验收标准的功能
- [x] 流式输出(Flux<ChatResponse> 逐 token 实时显示)
- [x] 对话历史持久化(JSON 格式自动保存/加载)
- [x] AI 驱动的上下文压缩(/compact 生成摘要)
- [x] 多行输入支持(反斜杠续行)
- [x] 双 API 提供者(OpenAI + Anthropic 切换)
- [x] /history 命令查看保存的对话
---
## 5. 实现状态总结
### 5.1 已实现功能清单
| 类别 | 功能 | 状态 |
|------|------|------|
| **REPL 核心** | ChatModel 自定义循环 | ✅ |
| | 流式输出 (Flux) | ✅ |
| | 阻塞模式降级 | ✅ |
| | 最大迭代限制 (50轮) | ✅ |
| | 消息历史管理 | ✅ |
| | 对话持久化 | ✅ |
| **工具系统 (11个)** | BashTool | ✅ |
| | FileReadTool | ✅ |
| | FileWriteTool | ✅ |
| | FileEditTool | ✅ |
| | GlobTool | ✅ |
| | GrepTool | ✅ |
| | WebFetchTool | ✅ |
| | TodoWriteTool | ✅ |
| | ListFilesTool | ✅ |
| | AgentTool | ✅ |
| | NotebookEditTool | ✅ |
| **命令系统 (11个)** | /help, /clear, /exit | ✅ |
| | /compact (AI摘要) | ✅ |
| | /cost, /model, /status | ✅ |
| | /context, /config, /init | ✅ |
| | /history | ✅ |
| **上下文** | CLAUDE.md 加载 | ✅ |
| | Skills 技能加载 | ✅ |
| | Git 上下文收集 | ✅ |
| | 系统提示词构建 | ✅ |
| **终端 UI** | Banner + Provider 信息 | ✅ |
| | JLine 行编辑/历史/Tab补全 | ✅ |
| | 多行输入 | ✅ |
| | Spinner 动画 | ✅ |
| | 工具状态渲染 | ✅ |
| | ANSI 颜色 | ✅ |
| | Markdown 渲染 | ✅ |
| **配置** | 双 API 提供者切换 | ✅ |
| | 环境变量统一 | ✅ |
| | Token/费用追踪 | ✅ |
### 5.2 未实现功能清单
#### 🔴 P0 核心(建议实现)
| 功能 | 难度 | 说明 |
|------|------|------|
| **WebSearchTool** | 中 | 网络搜索工具,需要搜索 API(可用 DuckDuckGo 免费 API |
| **AskUserQuestionTool** | 中 | AI 向用户提问工具,需要在 agent loop 中暂停等待用户输入 |
| **/diff 命令** | 低 | 显示未提交的 Git 变更,可复用 GitContext |
| **/version 命令** | 低 | 显示版本号,直接读取 pom.xml 版本 |
| **/skills 命令** | 低 | 列出可用技能,已有 SkillLoader |
| **/memory 命令** | 低 | 编辑 CLAUDE.md,打开编辑器或直接编辑 |
| **/copy 命令** | 低 | 复制最近回复到剪贴板 |
| **权限确认机制** | 中 | 危险操作前要求用户确认(如文件写入、bash 执行) |
| **Thinking 内容显示** | 高 | 显示 AI 思考过程(需要 Anthropic extended thinking API 支持) |
#### 🟡 P1 重要(体验增强)
| 功能 | 难度 | 说明 |
|------|------|------|
| CLAUDE.local.md 支持 | 低 | 本地级记忆文件 |
| 底部状态行 | 中 | 持续显示模型、token、工作目录 |
| Hook 系统 (PreToolUse) | 中 | 工具调用前后钩子 |
| /resume 恢复对话 | 低 | 从持久化文件恢复对话 |
| /export 导出对话 | 低 | 导出为 Markdown 文件 |
| /commit 命令 | 中 | 直接创建 Git commit |
| Vim 模式输入 | 高 | JLine Vim 模式绑定 |
| 代码语法高亮 | 中 | MarkdownRenderer 中的代码块着色 |
#### 🟢 P2 扩展(可后续迭代)
| 功能 | 说明 |
|------|------|
| MCP 客户端集成 | Model Context Protocol 支持 |
| 插件系统 | 可扩展的工具/命令加载 |
| LSP 集成 | 语言服务器协议 |
| 差异视图 (DiffRenderer) | 文件变更的彩色diff显示 |
| OAuth 认证流程 | 第三方认证 |
| 多代理协调 | Agent Swarm 模式 |
#### ⚪ P3 跳过(不适用于 Java CLI
| 功能 | 原因 |
|------|------|
| Ink/React UI 框架 | Java 用 JLine 替代 |
| IDE 桥接 (bridge/) | 需要独立的 IDE 插件 |
| 语音功能 (voice/) | 平台特定 |
| 远程会话 (remote/) | 需要服务端 |
| 沙箱隔离 (sandbox/) | 需要容器化 |
| 遥测 (telemetry/) | 非核心功能 |
---