Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,视为「工具调用」的间接成员

## 技术栈

Expand Down
56 changes: 35 additions & 21 deletions docs/comparison/architecture-deep-dive.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,41 +95,50 @@ graph TD

所有工具的核心都是一个代理循环,但实现方式差异显著:

### 纯 ReAct 循环
### 工具调用循环(主流)

```
思考行动观察 → 重复
消息LLMfunction 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 提交,天然版本控制

### 事件驱动循环

Expand Down Expand Up @@ -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 直接分叉,其设计模式(声明式工具 + 事件调度器 + 策略引擎)影响了多个后续项目。
Expand Down
30 changes: 15 additions & 15 deletions docs/comparison/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |

### 核心功能对比

Expand Down