# 修改记录 ## [2026-04-03] - P2: MCP协议 + 插件系统 + 任务管理 + CLI增强 - **修改类型**: 功能新增 - **修改详情**: - **A组 CLI增强**: - 新增 `DiffRenderer` 彩色 diff 渲染器(行号、stat摘要、unified格式解析) - 新增 7 个命令: `/hooks`, `/review`(rev), `/stats`, `/branch`, `/rewind`, `/tag`, `/security-review`(sec) - `/review` 支持 `--staged` 标志和文件路径参数 - `/branch` 支持 save/load/list/delete 子命令管理对话分支 - `/tag` 支持对话位置标签和 goto 跳转 - `/security-review` 发送 AI 安全审查(SQL注入/XSS/认证/凭证泄露检测) - **B组 任务系统**: - 新增 `TaskManager` 后台任务管理器(线程安全、ConcurrentHashMap、CachedThreadPool) - 新增 4 个工具: `TaskCreate`/`TaskGet`/`TaskList`/`TaskUpdate` - 新增 `ConfigTool` 配置读写工具 - 支持自动执行模式和手动状态管理模式 - **C组 MCP协议**: - 新增 `mcp/` 包: `McpClient`、`McpTransport`、`StdioTransport`、`McpManager`、`McpException` - MCP 客户端支持 JSON-RPC 2.0 协议(initialize 握手、tools/list、tools/call、resources/read) - StdIO 传输实现(子进程管理、异步读写、CompletableFuture 请求-响应关联) - `McpManager` 多服务器管理(从 `.mcp.json` 配置加载、生命周期管理) - `McpToolBridge` 将 MCP 工具桥接为本地 Tool(名称格式: `mcp__{server}__{tool}`) - 新增 `/mcp` 命令(connect/disconnect/tools/resources/reload) - **D组 插件系统**: - 新增 `plugin/` 包: `Plugin` 接口、`PluginContext`、`PluginManager` - JAR 插件加载(URLClassLoader 隔离、Manifest Plugin-Class 读取) - 支持全局插件 (`~/.claude-code-java/plugins/`) 和项目插件 (`.claude-code/plugins/`) - 新增 `OutputStylePlugin` 内置输出样式插件(default/minimal/verbose/markdown) - 新增 `/plugin` 命令(load/unload/reload/info) - **集成**: AppConfig 注册全部 18 工具 + 28 命令 + TaskManager + McpManager + PluginManager - **关联需求**: 5.2 P2 扩展功能 ## [2026-04-03] - P1: Hook系统 + Vim模式 + Banner增强 - **修改类型**: 功能新增 - **修改详情**: - 新增 `HookManager`: 支持 PreToolUse/PostToolUse/PrePrompt/PostResponse 4 种钩子 - Hook 优先级排序(数字越小优先级越高),PreToolUse 可中止工具执行 - AgentLoop 集成 Hook 系统到 executeToolCalls() 流程 - ReplSession 支持 Vim 编辑模式(`CLAUDE_CODE_VIM=1` 环境变量启用) - Banner 增强:显示命令数量和 Vim 模式标识 - 修复重复 isDumb 变量 - **关联需求**: 5.2 P1 重要功能 ## [2026-04-03] - P1: 3命令 + 代码高亮 + 状态行 - **修改类型**: 功能新增 - **修改详情**: - 新增 3 个命令: `/resume`(恢复对话), `/export`(导出Markdown), `/commit`(AI生成commit) - `MarkdownRenderer` 完全重写:支持 Java/JS/TS/Python/Bash/SQL 6 种语言语法高亮 - 高亮处理:注释 → 字符串保护 → 注解 → 关键字 → 数字 → 布尔/null - 新增 `StatusLine` 底部状态行(模型、token、费用、API调用、工作目录) - AppConfig 注册总数达 19 命令 - **关联需求**: 5.2 P1 重要功能 ## [2026-04-03] - P0: 5命令 + 2工具 + 权限确认 + Thinking显示 - **修改类型**: 功能新增 - **修改详情**: - 新增 5 个命令: `/diff`, `/version`(ver), `/skills`, `/memory`(mem), `/copy` - 新增 `WebSearchTool`: DuckDuckGo HTML 搜索(无需 API Key) - 新增 `AskUserQuestionTool`: AI 向用户提问(通过 ToolContext 回调暂停 agent loop) - AgentLoop 新增权限确认机制: 非只读工具调用前提示 [Y/n/always] - AgentLoop 新增 Thinking 内容提取和显示(从 ChatResponse metadata 读取) - 新增 `PermissionRequest` record 和 `onPermissionRequest`/`onThinkingContent` 回调 - ReplSession 新增 `promptPermission()` UI 和 `readUserInputDuringAgentLoop()` 方法 - **关联需求**: 5.2 P0 核心功能 ## [2026-04-02] - Phase 5: 流式输出与高级功能 - **修改类型**: 功能新增 - **修改详情**: - **5A 流式输出**: AgentLoop 新增 `runStreaming()` 方法,使用 `chatModel.stream()` → `Flux` 逐 token 实时输出到终端。流式失败自动降级到阻塞模式。重构核心循环统一阻塞/流式两种模式 - **5B 对话持久化**: 新增 `ConversationPersistence` 类,退出 REPL 时自动保存对话到 `~/.claude-code-java/conversations/` 目录(JSON 格式)。新增 `/history` 命令查看历史对话 - **5C /compact AI 摘要**: 增强 `/compact` 命令,用 AI 生成对话摘要注入上下文,替代简单清空历史。保留系统提示+AI 摘要+最后一轮对话 - **5D 多行输入**: JLine 配置反斜杠续行(`\`),续行提示符 ` ... ` - **关联需求**: 2.1 核心 REPL 循环, 2.6 流式输出 ## [2026-04-02] - 双 API 提供者支持 - **修改类型**: 功能新增 - **修改详情**: - 支持 OpenAI 和 Anthropic 双 API 提供者,通过 `CLAUDE_CODE_PROVIDER` 环境变量切换 - 统一环境变量: `AI_API_KEY` / `AI_BASE_URL` / `AI_MODEL` 两种提供者通用 - Banner 启动时显示当前 Provider、Model、API URL - 修复 ProviderInfo 读取旧环境变量名的 bug - **关联需求**: 2.1 核心 REPL 循环 ## [2026-04-02] - Phase 4: 命令系统与上下文增强 - **修改类型**: 功能新增 - **修改详情**: - 新增 `TokenTracker` 真实 token 追踪(含模型定价) - 新增 `SkillLoader` 技能加载(3 个目录扫描、YAML frontmatter 解析) - 新增 `GitContext` Git 上下文收集(分支、状态、最近提交) - 新增 4 个命令: `/init`, `/status`, `/context`, `/config` - 增强 3 个命令: `/cost`(真实 token), `/model`(可切换), `/compact`(显示统计) - `SystemPromptBuilder` 集成 Skills 和 Git 上下文 - `AgentLoop` 记录 token 使用量 - **关联需求**: 2.4 命令系统, 2.5 上下文构建 ## [2026-04-02] - Phase 3: 完整工具集 - **修改类型**: 功能新增 - **修改详情**: - 新增 5 个工具: `ListFilesTool`, `WebFetchTool`, `TodoWriteTool`, `AgentTool`, `NotebookEditTool` - 修复 `WebFetchTool` 编译错误(replaceAll lambda → Pattern 匹配器) - `AgentTool` 子 Agent 工厂通过 `ToolContext` 注入 - **关联需求**: 2.2 工具系统 ## [2026-04-02] - Phase 2: JLine 终端交互增强 - **修改类型**: 功能新增 - **修改详情**: - 使用 JLine 3 重写 REPL(行编辑、历史、Tab 补全) - 新增 `ClaudeCodeCompleter` Tab 补全器 - 新增 `/model`, `/compact`, `/cost` 命令 - JLine FFM 原生终端支持(JDK 22+) - Windows 终端 UTF-8 编码修复(PrintStream + JVM 参数 + 启动脚本) - `run.ps1` / `run.bat` 启动脚本 - **关联需求**: 2.3 终端交互 ## [2026-04-02] - Phase 1: 项目骨架与基础循环 - **修改类型**: 功能新增 - **修改详情**: - Maven 项目结构: Spring Boot 4.1.0-M2, Spring AI 2.0.0-M4, JDK 25 - 核心 `AgentLoop` 显式工具调用循环(ChatModel + 手动工具循环) - 6 个基础工具: `BashTool`, `FileReadTool`, `FileWriteTool`, `FileEditTool`, `GlobTool`, `GrepTool` - 控制台组件: `BannerPrinter`, `ToolStatusRenderer`, `ThinkingRenderer`, `SpinnerAnimation`, `MarkdownRenderer` - 命令系统: `SlashCommand` 接口, `CommandRegistry`, `/help`, `/clear`, `/exit` - 修复 Spring AI 兼容性: Spring Boot 4.x 升级, ChatModel Bean 冲突, JVM 内存 - **关联需求**: 全部章节 ## [2026-04-02] - 项目初始化与需求分析 - **修改类型**: 文档更新 - **修改详情**: - 创建 `需求文档.md`,完成需求分析和技术设计 - 创建 `修改记录.md`,记录项目变更历史 - 完成 claude-code TypeScript 源码的主线逻辑分析 - 完成 claude-code-learn Java 参考实现的架构分析 - 确定 Java 重写的技术栈:JDK 25 + Spring Boot 4.1.0-M2 + Spring AI 2.0.0-M4 + JLine 3 + Picocli - 设计包结构和类映射关系 - 划分 6 个实现阶段 - **关联需求**: 全部章节