diff --git a/README.md b/README.md index 1438a3e1..214649ea 100644 --- a/README.md +++ b/README.md @@ -99,10 +99,16 @@ | 流派 | 代表 Agent | 核心模式 | |------|---------|---------| -| **编辑优先** | Aider | LLM 直接输出代码修改(14 种格式) | -| **工具调用** | Claude Code, Codex CLI, OpenCode, Cline, Goose | 结构化 function calling | -| **事件驱动** | OpenHands | EventStream 发布/订阅 | -| **ReAct 循环** | Gemini CLI, Qwen Code, SWE-agent | Reason→Act→Observe→Repeat(思考→行动→观察→重复) | +| **编辑优先** | Aider | LLM 直接输出代码修改(14 种格式),需文本解析 | +| **工具调用** | Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenCode, Cline, Goose, Copilot CLI, Kimi CLI | 结构化 function calling,LLM 通过 API 返回 tool calls | +| **混合 ReAct** | SWE-agent, mini-swe-agent | 兼容 function calling(默认)与文本动作解析,文本解析是其鲜明特征 | +| **事件驱动** | OpenHands | EventStream 发布/订阅,Action/Observation 完全解耦 | + +> **注 1**:许多交互式 coding agent 都可以理解为 ReAct-like 循环(reasoning → acting → observation → repeat)。上表为了可操作地分类,主要按**动作表达/编排机制**区分:function calling、文本解析、编辑格式、事件流等。 +> +> **注 2**:以下 Agent 未列入上表,原因各异: +> - **Cursor、Warp、Continue、Qoder CLI**:闭源/IDE 嵌入式 Agent,具有工具系统能力(多支持 MCP),但本仓库现有证据不足以确认其使用原生 API function calling +> - **Oh My OpenAgent**:基于 OpenCode 的 Harness 层,继承工具调用架构但不直接调用 LLM API,视为「工具调用」的间接成员 ## 技术栈 diff --git a/docs/comparison/architecture-deep-dive.md b/docs/comparison/architecture-deep-dive.md index 6e59e3bc..a2bd8d57 100644 --- a/docs/comparison/architecture-deep-dive.md +++ b/docs/comparison/architecture-deep-dive.md @@ -95,41 +95,50 @@ graph TD 所有工具的核心都是一个代理循环,但实现方式差异显著: -### 纯 ReAct 循环 +### 工具调用循环(主流) ``` -思考 → 行动 → 观察 → 重复 +消息 → LLM → function calling → 工具执行 → 结果 → 重复 ``` -**使用者**:Gemini CLI、Qwen Code、SWE-agent +**使用者**:Claude Code、Gemini CLI、Qwen Code、Codex CLI、OpenCode、Cline、Goose、Copilot CLI、Kimi CLI -- Gemini CLI 的 `GeminiClient` 最多 100 轮,通过 `Scheduler` 调度工具 -- SWE-agent 的 `DefaultAgent.step()` 逐步执行,支持多种解析器 -- Qwen Code 继承 Gemini CLI 架构,增加了 Loop 检测(Levenshtein 距离) +- Claude Code 使用 Anthropic `tool_use` API,20+ 内置工具 +- Gemini CLI/Qwen Code 使用 `@google/genai` function calling,`CoreToolScheduler`(1790 行)调度工具 +- Codex CLI 使用 OpenAI function calling + `apply_patch` +- OpenCode 使用 Vercel AI SDK v5 统一接口,19+ 工具 +- Cline 在 VS Code 内执行,24+ 工具,每步自动 Git Checkpoint +- Goose 通过 MCP 协议统一工具接口(所有工具走 MCP) +- Copilot CLI 使用 YAML 定义的代理,`tool_choice` 列出现在模型配置矩阵 +- Kimi CLI "工具调用解析" + `ToolCall`/`ToolResult` Wire 事件,多提供商 -### 编辑-提交循环 +> **注 1**:许多交互式 coding agent 都可以理解为 ReAct-like 循环(reasoning → acting → observation → repeat)。差异主要在于**动作表达/编排机制**:function calling、文本解析、编辑格式、事件流等。 +> +> **注 2**:Cursor、Warp、Continue、Qoder CLI 等闭源/IDE 嵌入式 Agent 具有工具系统能力(多支持 MCP),但本仓库现有证据不足以确认其使用原生 API function calling,暂不列入。Oh My OpenAgent 基于 OpenCode Harness 层,继承工具调用架构但不直接调用 LLM API。 + +### 混合 ReAct 循环 ``` -发送 → 解析编辑 → 应用修改 → Git 提交 → Lint/测试 → 反思 +思考 → 动作 → 解析 → 执行 → 观察 → 重复 ``` -**使用者**:Aider +**使用者**:SWE-agent -- 独特的编辑格式系统(14 种),模型输出直接包含代码修改 -- 反思循环:lint/测试失败自动重试(最多 3 次) -- 每次修改自动 Git 提交,天然版本控制 +- SWE-agent 的 `DefaultAgent.step()` 支持多种解析器,`FunctionCallingParser`(原生 function calling,**默认**)和纯文本 `ThoughtActionParser`、`ActionOnlyParser` +- 文本动作解析是兼容路径,适用于不支持 function calling 的模型,也是其鲜明特征之一 +- 与"工具调用"流派的区别:SWE-agent 同时支持两种动作表达方式,而非仅依赖原生 function calling -### 工具调用循环 +### 编辑-提交循环 ``` -消息 → LLM → 工具调用 → 执行 → 结果 → 重复 +发送 → 解析编辑 → 应用修改 → Git 提交 → Lint/测试 → 反思 ``` -**使用者**:Claude Code、OpenCode、Cline、Goose +**使用者**:Aider -- Claude Code/OpenCode 使用结构化工具调用(function calling) -- Cline 在 VS Code 内执行,每步自动 Git Checkpoint -- Goose 通过 MCP 协议统一工具接口 +- 独特的编辑格式系统(14 种),模型输出直接包含代码修改 +- 反思循环:lint/测试失败自动重试(最多 3 次) +- 每次修改自动 Git 提交,天然版本控制 ### 事件驱动循环 @@ -363,12 +372,17 @@ Tree-sitter AST 解析(30+ 语言) ## 关键洞察 -### 1. 三大架构流派 +### 1. 四大架构流派 -- **编辑优先**(Aider):LLM 直接输出代码修改,工具是辅助 -- **工具调用**(Claude Code、OpenCode、Cline、Goose):LLM 通过结构化工具调用操作环境 +- **编辑优先**(Aider):LLM 直接输出代码修改,需文本解析,工具是辅助 +- **工具调用**(Claude Code、Gemini CLI、Qwen Code、Codex CLI、OpenCode、Cline、Goose、Copilot CLI、Kimi CLI):LLM 通过结构化 function calling 操作环境,是主流模式 +- **混合 ReAct**(SWE-agent、mini-swe-agent):兼容 function calling(默认)与文本动作解析,文本解析是其鲜明特征 - **事件驱动**(OpenHands):完全解耦的事件总线,最灵活但最复杂 +> **关键认知**:许多交互式 coding agent 都可以理解为 ReAct-like 循环(reasoning → acting → observation → repeat)。本文为了可操作地分类,主要按**动作表达/编排机制**区分:function calling、文本解析、编辑格式、事件流等。ReAct 原论文的核心是 reasoning + acting + observation 的交错交互模式,不强制要求动作用纯文本表达。 +> +> **未列入的 Agent**:Cursor、Warp、Continue、Qoder CLI 等闭源/IDE 嵌入式 Agent 暂因证据不足未列入「工具调用」流派。Oh My OpenAgent 基于 OpenCode Harness 层,继承工具调用架构但不直接调用 LLM API,视为「工具调用」的间接成员。 + ### 2. Gemini CLI 是事实上的"开源 Claude Code 模板" Gemini CLI 的架构被 Qwen Code 直接分叉,其设计模式(声明式工具 + 事件调度器 + 策略引擎)影响了多个后续项目。 diff --git a/docs/comparison/features.md b/docs/comparison/features.md index 45b5c6a2..084396d9 100644 --- a/docs/comparison/features.md +++ b/docs/comparison/features.md @@ -38,22 +38,22 @@ ### 架构与设计 -| Agent | 语言 | 架构 | 主要设计目标 | +| Agent | 语言 | 架构/定位 | 主要设计目标 | |------|----------|--------------|-------------------| -| Claude Code | Rust | 原生 CLI | 代理式编程工具 | -| Aider | Python | Git 原生 | 结对编程 | -| Copilot CLI | TypeScript (Node.js SEA) | 独立二进制 | 终端原生代理,GitHub 集成 | -| Cursor | TypeScript | IDE (VS Code) | AI 原生编辑器 | -| SWE-agent | Python | Agent-Computer Interface | 基准性能 | -| Cline | TypeScript | IDE 扩展 | 自主编码 | -| Goose | Rust | MCP 原生 | 模型灵活性 | -| OpenCode | TypeScript | 多代理(7 内置) | 多客户端 AI 平台(TUI + Web + 桌面) | -| Continue | TypeScript | IDE + CLI + CI/CD | PR Checks + 语义索引 | -| Warp | Rust | 终端替代品 | 现代终端 + AI | -| Gemini CLI | TypeScript | ReAct 循环 | Google 生态 | -| OpenHands | Python | 复合 AI | 完全自主 | -| Qwen Code | TypeScript | ReAct 循环(Gemini CLI 分叉) | 中文开发者生态 | -| Kimi CLI | Python | 多代理(4 内置)+ Wire 协议 | 双模式交互 + 多客户端(TUI + Web + IDE) | +| Claude Code | Rust | CLI Agent(工具调用) | 代理式编程工具 | +| Aider | Python | CLI Agent(编辑优先,Git 原生) | 结对编程 | +| Copilot CLI | TypeScript (Node.js SEA) | CLI Agent(工具调用,GitHub 集成) | 终端原生代理,GitHub 集成 | +| Cursor | TypeScript | IDE Agent(VS Code fork) | AI 原生编辑器 | +| SWE-agent | Python | CLI Agent(混合 ReAct,ACI) | 基准性能 | +| Cline | TypeScript | IDE Agent(VS Code 扩展) | 自主编码 | +| Goose | Rust | CLI Agent(工具调用,MCP 原生) | 模型灵活性 | +| OpenCode | TypeScript | CLI Agent(工具调用,多代理) | 多客户端 AI 平台(TUI + Web + 桌面) | +| Continue | TypeScript | IDE + CLI + CI/CD Agent | PR Checks + 语义索引 | +| Warp | Rust | 终端 Agent(GPU 渲染终端) | 现代终端 + AI | +| Gemini CLI | TypeScript | CLI Agent(工具调用,function calling) | Google 生态 | +| OpenHands | Python | CLI Agent(事件驱动,EventStream) | 完全自主 | +| Qwen Code | TypeScript | CLI Agent(工具调用,Gemini CLI 分叉) | 中文开发者生态 | +| Kimi CLI | Python | CLI Agent(工具调用,Wire 协议) | 双模式交互 + 多客户端(TUI + Web + IDE) | ### 核心功能对比