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:
@@ -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/) | 非核心功能 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user