abel533
7199b4f2dd
fix: 修复消息区溢出布局问题,恢复Spacer弹性空白
...
- 消息区添加 .height(maxMessageLines) + .overflow(HIDDEN) 防止溢出
- 恢复 Spacer.create() 在消息少时填充空白
- AskUser工具添加调试日志帮助排查结构化回调
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
abel533
65bd5b5d9a
feat: interactive AskUser with arrow-key selection
...
- Add interactive option selection for AskUserQuestion tool
(arrow keys ↑↓, Enter confirm, 1-9 quick select, Esc cancel)
- Last option with '其他/Other' enters free text input mode
- New ASK_USER_STRUCTURED_CALLBACK in AskUserQuestionTool
accepts (question, options) BiFunction for structured interaction
- ClaudeCodeComponent renders option list with ❯ indicator
- Cursor position adjusts for variable-height ask area
- Falls back to simple text prompt when no options provided
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
2e8e1eb819
fix: TodoWriteTool标记为readOnly - 内存操作无需权限确认
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
e3f60a5933
fix: CLI交互优化 - 流式缩进+输入框横线+日志降噪
...
- 流式输出: ● 标识与文本同行,续行4空格缩进对齐
- 输入框: 上下横线(─)分隔输入区域,宽度自适应终端
- 日志: 工具异常日志降为debug级别,避免终端输出stack trace
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
ff734d6b0d
i18n: 全部用户可见字符串统一为英文(46个文件)
...
- 所有Command/Tool/Core/MCP/Plugin中的中文提示改为英文
- Javadoc注释和行内注释保留中文不变
- AI提示词(compact/commit/review等)改为英文
- 编译验证通过
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
79736cf16f
feat: P2全部功能 - MCP协议+插件系统+任务管理+CLI增强
...
A组 CLI增强:
- DiffRenderer: 彩色diff渲染(行号/stat摘要/unified格式)
- /hooks: 查看已注册Hook列表
- /review: AI代码审查(支持--staged/文件路径)
- /stats: 会话使用统计(tokens/费用/API调用/运行时长)
- /branch: 对话分支管理(save/load/list/delete)
- /rewind: 回退对话历史
- /tag: 对话位置标签
- /security-review: AI安全审查
B组 任务系统:
- TaskManager: 后台任务管理(线程安全/自动执行/手动管理)
- TaskCreate/TaskGet/TaskList/TaskUpdate 4个工具
- ConfigTool: 配置读写工具
C组 MCP协议:
- McpClient: MCP客户端(JSON-RPC 2.0/工具发现/资源读取)
- McpTransport: 传输层接口
- StdioTransport: StdIO传输实现(子进程/异步读写)
- McpManager: 多MCP服务器管理(配置加载/生命周期)
- McpToolBridge: MCP工具桥接为本地Tool
- /mcp: MCP服务器管理命令
D组 插件系统:
- Plugin接口 + PluginContext + PluginManager
- JAR插件加载(ClassLoader隔离/Manifest读取)
- OutputStylePlugin: 内置输出样式插件
- /plugin: 插件管理命令
集成: AppConfig注册全部18工具+28命令
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
82a28b7aa7
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>
1 month ago
liuzh
e09c3de91e
feat: Phase3 新增5个工具 (ListFiles, WebFetch, TodoWrite, Agent, NotebookEdit)
...
新增工具:
- ListFilesTool: 目录列表,支持递归深度、隐藏文件过滤、文件大小显示
- WebFetchTool: HTTP内容获取,HTML→文本转换,大小限制100KB,超时30s
- TodoWriteTool: 待办任务管理(add/update/complete/delete/list),内存存储
- AgentTool: 子Agent调用,通过ToolContext工厂方法创建独立AgentLoop
- NotebookEditTool: Jupyter notebook编辑(read/insert/replace/delete/move)
配置更新:
- AppConfig注册11个工具(原6+新5)
- AgentLoop工厂方法注入ToolContext,支持AgentTool创建子Agent
工具总数: 6 → 11
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
cc0d3f8b00
Revert "fix: 将所有emoji/Unicode特殊字符替换为ASCII安全字符"
...
This reverts commit 3cd67ffe451be2cc7a66b5c554966f1d5aa58c7c.
1 month ago
liuzh
eeceaaaea9
fix: 将所有emoji/Unicode特殊字符替换为ASCII安全字符
...
Windows cmd/PowerShell默认codepage下emoji显示为?号。
全局替换: 👋 ->移除, 💭 ->[Thinking], ⚙->*, ✓->[OK], ✗->[FAIL],
◆->>, ⚠->[!], ✅ ->[OK], •->|/-, →->>>, ✏️ ->[Edit]等。
❯保留(windows-vtp终端下正常显示)。
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago
liuzh
d67f41358d
feat: Phase1 项目骨架 - Maven项目结构、核心AgentLoop、6个工具、命令系统、控制台渲染、REPL会话
...
实现内容:
- pom.xml: JDK25 + Spring AI 2.0.0-M4 + JLine3 + Picocli
- core/AgentLoop: 基于ChatModel的显式工具循环(非ChatClient)
- tool/: Tool接口 + ToolRegistry + ToolCallbackAdapter(适配Spring AI)
- tool/impl/: BashTool, FileReadTool, FileWriteTool, FileEditTool, GlobTool, GrepTool
- command/: SlashCommand接口 + CommandRegistry + /help, /clear, /exit
- console/: AnsiStyle, BannerPrinter, ToolStatusRenderer, ThinkingRenderer, SpinnerAnimation, MarkdownRenderer
- context/: SystemPromptBuilder, ClaudeMdLoader(多级CLAUDE.md加载)
- repl/ReplSession: REPL主循环(Scanner降级方案)
- config/AppConfig: Spring Bean装配
- application.yml: Anthropic/OpenAI双模型配置
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 month ago