从源码看 Qwen Code 的设计思路
01
—
项目概述
Qwen Code 是一个基于 AI Agent 的智能编程助手,采用模块化分层架构设计。核心是一个AI Agent 对话循环,持续协调用户输入、大语言模型(LLM)推理和工具执行,直到任务完成。
项目代码仓库:
https://github.com/QwenLM/qwen-code.git
开发者指南:
https://qwenlm.github.io/qwen-code-docs/zh/developers/architecture/
02
—
整体架构设计
2.1 架构分层

2.2 模块职责说明
|
层级 |
模块 |
职责 |
路径 |
|---|---|---|---|
|
客户端层 |
CLI Package |
命令行客户端,提供交互式 UI、ACP 服务端、Session 管理 |
|
|
VSCode Plugin |
VSCode 扩展,ACP 客户端,通过 JSON-RPC 调用 CLI |
|
|
|
Zed Extension |
Zed 编辑器扩展,ACP 客户端 |
|
|
|
SDK (TS/Java) |
程序化接口,通过进程通信(JSON Lines)调用 CLI |
|
|
|
核心引擎层 |
Agent Loop |
核心对话循环,协调用户输入、模型响应、工具执行 |
|
|
Tool System |
工具注册表和执行系统 |
|
|
|
Tool Scheduler |
工具调度器,管理工具调用状态机 |
|
|
|
Subagent System |
子智能体管理系统,支持任务分解和嵌套 Agent Loop |
|
|
|
Config |
核心配置管理器,连接所有核心组件的桥梁 |
|
|
|
Services |
核心服务:会话记录、循环检测、对话压缩 |
|
|
|
Extension System |
扩展系统,支持 MCP 服务器、自定义工具和子智能体 |
|
2.3 客户端集成方式对比
|
客户端 |
通信方式 |
协议格式 |
使用场景 |
特点 |
|---|---|---|---|---|
|
CLI 交互式 |
直接方法调用 |
N/A |
终端命令行使用 |
Ink UI,实时交互 |
|
VSCode/Zed |
进程通信 |
ACP (JSON-RPC) |
IDE 编辑器集成 |
Webview UI,双向通信 |
|
SDK |
进程通信 |
JSON Lines |
程序化集成、自动化 |
可嵌入 MCP 服务器 |
03
—
核心流程详解
3.1 交互流程
从用户输入到最终响应的完整交互流程:

3.2 Agent Loop 执行流程
Agent Loop 是 Qwen Code 的核心对话循环机制,负责协调用户输入、模型响应、工具执行之间的交互,直到任务完成。
3.2.1 Agent Loop 入口触发条件
Agent Loop 在以下情况下被触发:
-
用户发送消息时:当用户通过 CLI 输入问题或命令时,调用
GeminiClient.sendMessageStream()方法进入 Loop
-
工具执行结果需要继续对话时:当工具执行完成后,将工具结果作为新的用户消息重新进入 Loop
-
模型主动要求继续时:通过
checkNextSpeaker检测到模型需要继续发言时,递归调用sendMessageStream
3.2.2 详细执行流程

3.2.3 详细步骤说明
步骤 1: 入口检查 (sendMessageStream)
-
检查会话 Turn 数是否超过
maxSessionTurns限制 -
检查 Token 数是否超过
sessionTokenLimit限制 -
确保不超过硬编码的最大轮数
MAX_TURNS(默认 100) -
创建
Turn实例,传入chat会话和prompt_id
步骤 2: Turn 执行 (Turn.run)
-
构建请求消息,包含:
-
用户输入内容
-
对话历史记录
-
可用工具定义(function declarations)
-
系统提示(system prompt)
-
调用模型 API(Gemini/Qwen/Anthropic)
-
接收流式响应,逐块解析
步骤 3: 响应处理
-
文本内容:通过
yield发送Content事件,实时展示给用户 -
工具调用:收集
-
name: 工具名称 -
args: 工具参数 -
id: 调用 ID(用于匹配响应) -
完成信号:记录
finishReason(STOP、MAX_TOKENS、SAFETY 等)
步骤 4: 工具调用执行
-
工具查找:通过
ToolRegistry.getTool()根据工具名称查找对应的工具实例 -
构建调用:调用
tool.build()创建ToolInvocation对象,封装参数和执行逻辑 -
权限检查:根据当前执行模式(ApprovalMode)决定如何处理:
-
Plan 模式:
-
如果是 exit_plan_mode 工具:显示计划确认对话框,用户可选择继续执行或取消
-
其他工具:阻止执行,返回错误提示(Plan 模式下不允许执行普通工具)
-
Default 模式:
-
需要确认的工具:显示确认对话框等待用户批准
-
不需要确认的工具:直接执行
-
Auto-edit 模式:
-
编辑类工具(如 write_file、edit):自动执行无需确认
-
其他工具:需要确认
-
YOLO 模式:所有工具自动执行,无需确认
-
执行工具:调用
invocation.execute()执行实际逻辑 -
返回结果:封装为
ToolResult返回,包含执行结果或错误信息
步骤 5: 循环控制
-
如果有工具执行结果,将结果构建为
nextMessage,继续下一轮 Loop -
如果没有工具调用,检查
-
如果是
STOP,Loop 正常结束 -
如果模型需要继续(通过
checkNextSpeaker判断),发送 “Please continue” 继续 Loop -
检查是否达到最大轮数,防止无限循环
3.2.4 两种 Loop 调用方式对比
Qwen Code 中有两种 Agent Loop 的调用方式,核心 Loop 逻辑都在 packages/core/src/core/client.ts 中实现,非交互式模式通过 packages/cli/src/nonInteractiveCli.ts 再进行了一次包装适配。
|
特性 |
Core 层 Loop ( |
非交互式包装 Loop ( |
|---|---|---|
|
实现方式 |
递归调用 |
|
|
使用场景 |
交互式终端、直接 API 调用 |
IDE 集成、SDK 集成、非交互式模式 |
|
通信协议 |
直接方法调用 |
JSON Lines 或 ACP (JSON-RPC) |
|
流式输出 |
直接通过 AsyncGenerator |
通过 Adapter 转换为 JSON Lines/ACP 通知 |
|
权限处理 |
终端交互确认(Ink UI) |
控制请求 |
|
控制平面 |
不需要 |
需要( |
为什么需要非交互式包装?非交互式包装的核心目的是将直接 API 调用转换为进程间通信协议:
-
协议适配:将内部 AsyncGenerator 事件转换为 JSON 格式输出,让 IDE/SDK 能解析
-
控制平面:IDE 集成需要双向通信(权限请求、模式切换、中断控制等)
关系对比:
交互式 CLI ──→ 直接调用 sendMessageStream() ──→ Core Agent Loop (递归)↑非交互式 CLI ──→ while 循环包装 ──→ 协议转换/控制平面
Core 层 Loop 伪代码:
# client.tsasync function* sendMessageStream(request, turns = MAX_TURNS):// 1. 检查限制ifexceedMaxTurns() orexceedTokenLimit():yield { type: 'MaxSessionTurns' } / { type: 'SessionTokenLimitExceeded' }return turn// 2. 执行 Turnturn = new Turn(chat, prompt_id)for event in turn.run(model, request):yield event // Content, ToolCallRequest, Error 等// 3. 检查是否需要继续(模型主动要求继续)if no pending tools and not aborted:nextSpeaker = checkNextSpeaker()if nextSpeaker == 'model':// 递归调用,turns - 1yield* sendMessageStream([{ text: 'Please continue.' }], turns - 1)return turn
非交互式 Loop 伪代码:
# nonInteractiveCli.tsasync function runNonInteractive(userInput):currentMessages = [{ role: 'user', parts: userInput }]while true:turnCount++if turnCount > maxSessionTurns:handleMaxTurnsExceededError()// 调用核心层的递归 LoopresponseStream = geminiClient.sendMessageStream(...)toolCallRequests = [ ]// 处理流式响应,转换为 JSON Linesforawait (event of responseStream):adapter.processEvent(event) // 转换为 JSON 输出if event.type == 'ToolCallRequest':toolCallRequests.push(event.value)// 执行工具调用if toolCallRequests.length > 0:toolResponseParts = [ ]for request in toolCallRequests:// 可能需要通过 Control Plane 请求权限response = await executeToolCall(config, request, abortSignal)toolResponseParts.push(...response.responseParts)// 工具结果作为下一轮输入currentMessages = [{ role: 'user', parts: toolResponseParts }]// ← 继续 while 循环else:// 没有工具调用,Loop 结束adapter.emitResult({ isError: false, numTurns: turnCount })return
3.2.5 Loop 退出条件详解
|
退出条件 |
触发时机 |
返回值/行为 |
|---|---|---|
|
正常完成 |
没有待执行工具且 |
|
|
达到最大 Turn 数 |
|
|
|
单次请求达到最大轮数 |
|
返回当前 Turn |
|
Token 限制 |
|
|
|
用户取消 |
|
|
|
模型返回 STOP |
|
Loop 正常结束 |
|
发生错误 |
|
返回当前 Turn,携带错误信息 |
|
检测到循环 |
|
阻止重复执行 |
|
安全拦截 |
内容被安全过滤器拦截 |
|
04
—
核心模块详解
4.1 CLI 模块 (packages/cli)
CLI 模块是用户的主要交互入口,负责命令解析、界面渲染、会话管理和配置设置。
4.1.1 控制平面 (Control Plane)
控制器列表:
-
SystemController: 处理初始化、中断、模型设置、命令查询
-
PermissionController: 处理工具权限请求和权限模式设置
-
SdkMcpController: 处理 MCP 服务器状态管理
4.1.2 ACP 通信系统
ACP (Agent Client Protocol) 实现 IDE 与 Qwen Code CLI 之间的双向通信,基于 JSON-RPC 2.0 协议。
核心文件:
-
packages/cli/src/acp-integration/ -
packages/vscode-ide-companion/

ACP 消息通信流程:

4.2 Core 模块 (packages/core)
Core 模块是业务逻辑核心,提供 API 客户端、提示构建、工具注册与执行、状态管理等功能。
4.2.1 Agent Loop 与 Tools/Subagent 衔接
Subagent 的实现是一种特殊的 tools。

4.2.2 工具系统
工具系统是 Qwen Code 的核心能力之一,采用注册表模式实现工具的动态发现、注册和执行。系统主要由三个核心组件构成:ToolRegistry(工具注册表)、CoreToolScheduler(工具调度器)和各类 Tool(工具实现)。核心文件位置:
-
工具注册表
packages/core/src/tools/tool-registry.ts
-
工具调度器
packages/core/src/core/coreToolScheduler.ts
-
工具实现
packages/core/src/tools/
4.2.2.1 工具系统图

4.2.2.2 工具定义与分类
Qwen Code 中的工具分为三大类:
|
工具类型 |
说明 |
示例 |
注册方式 |
|---|---|---|---|
|
内置工具 |
核心功能工具,随系统启动自动注册 |
read_file, write_file, shell, edit |
代码硬编码注册 |
|
MCP 工具 |
通过 MCP 协议连接的外部工具 |
数据库查询、API 调用、文件系统 |
动态发现 |
|
子智能体工具 |
特殊的工具类型,触发嵌套 Agent Loop |
@code-reviewer, @security-audit |
配置注册 |
内置工具列表:
|
工具名称 |
功能 |
是否需要确认 |
适用模式 |
|---|---|---|---|
|
|
读取文件内容 |
否 |
所有 |
|
|
写入文件内容 |
是(Default) |
Default/Auto-edit/YOLO |
|
|
编辑文件内容 |
是(Default) |
Default/Auto-edit/YOLO |
|
|
列出目录内容 |
否 |
所有 |
|
|
文本搜索 |
否 |
所有 |
|
|
执行 Shell 命令 |
是 |
Default/Auto-edit/YOLO |
|
|
网络搜索 |
否 |
所有 |
|
|
获取网页内容 |
否 |
所有 |
|
|
任务管理 |
否 |
所有 |
|
|
待办事项 |
否 |
所有 |
|
|
记忆管理 |
否 |
所有 |
|
|
退出规划模式 |
特殊处理 |
Plan 模式 |
4.2.2.3 工具注册流程

工具注册代码逻辑:
// Config.createToolRegistry 方法async createToolRegistry(sendSdkMcpMessage) {const registry = new ToolRegistry(this, eventEmitter, sendSdkMcpMessage);// 1. 注册内置工具registry.registerTool(new ReadFileTool(this));registry.registerTool(new WriteFileTool(this));registry.registerTool(new ShellTool(this));// ... 其他内置工具// 2. 发现外部工具await registry.discoverAllTools();return registry;}
4.2.2.4 工具调用&执行流程

核心步骤:
-
模型请求工具调用 – 返回
functionCalls数组,包含工具名称、参数、调用 ID -
工具查找与构建 – 从
ToolRegistry获取工具,调用tool.build()创建ToolInvocation -
权限检查与执行 –
CoreToolScheduler根据执行模式决定是否需要确认(详见 4.2.3 节) -
结果返回 – 构建
functionResponse,作为下一轮消息发送给模型
4.2.3 执行模式系统
Qwen Code 提供四种执行模式控制工具调用的权限:
|
模式 |
ID |
读工具 |
写工具 |
Shell |
适用场景 |
|---|---|---|---|---|---|
|
Plan |
|
✓ |
✗ |
✗ |
代码审查、架构分析 |
|
Default |
|
✓ |
确认 |
确认 |
日常开发 |
|
Auto Edit |
|
✓ |
✓ |
确认 |
大规模重构 |
|
YOLO |
|
✓ |
✓ |
✓ |
自动化脚本 |
核心代码位置:
|
组件 |
文件路径 |
说明 |
|---|---|---|
|
模式枚举定义 |
|
|
|
权限检查逻辑 |
|
|
|
工具确认接口 |
|
|
|
模式切换(CLI) |
|
模式切换和自动批准逻辑 |
|
模式切换(ACP) |
|
ACP 协议的模式设置 |
权限检查流程:

关键衔接点:
-
工具定义层 – 每个工具实现
shouldConfirmExecute()方法,返回是否需要确认 -
调度器层 –
CoreToolScheduler._schedule()调用shouldConfirmExecute()并根据ApprovalMode决定行为 -
配置层 –
Config.getApprovalMode()提供当前模式,Config.setApprovalMode()切换模式 -
UI 层 – 用户通过命令或快捷键切换模式,触发
setApprovalMode()
Plan 模式特殊机制:当处于 Plan 模式时,Agent 可以使用 exit_plan_mode 工具来提交计划并退出规划模式。
4.2.4 子智能体系统
子智能体系统是 Qwen Code 实现任务分解和专业化处理的核心机制。通过子智能体,可以将复杂任务拆分为多个子任务,由专门的智能体并行或串行处理,最后汇总结果。
核心代码位置:
|
组件 |
文件路径 |
说明 |
|---|---|---|
|
子智能体管理器 |
|
|
|
子智能体执行环境 |
|
|
|
子智能体工具 |
|
|
|
子智能体类型定义 |
|
配置、事件、钩子等类型定义 |
|
内置子智能体 |
|
内置子智能体注册表 |
关键衔接点:
-
工具层衔接 –
TaskTool作为普通工具注册到ToolRegistry
-
管理器层衔接 –
Config.getSubagentManager()提供子智能体管理器实例
-
执行层衔接 –
SubAgentScope.create()创建隔离环境,启动嵌套 Agent Loop
-
配置层衔接 – 子智能体配置文件(
.qwen/agents/*.md)通过SubagentManager加载
子智能体调用流程:

常见场景:
-
代码审查:专门的审查智能体,只读模式,检查代码质量
-
安全审计:扫描安全漏洞,生成安全报告
-
多智能体并行:前端、后端、测试智能体并行处理复杂任务
4.2.4.1 子智能体系统架构

关键特性:
-
隔离的配置和工具集
-
独立的系统提示词
-
可配置的执行限制
-
结果以自然语言返回
4.2.5 MCP 系统集成
MCP (Model Context Protocol) 是一个开放协议,用于标准化 AI 模型与外部工具、数据源之间的集成。

4.3 SDK 模块
4.3.1 TypeScript SDK 架构
SDK 采用进程间通信(IPC)方式与 Qwen Code CLI 交互:

4.3.2 SDK 与 ACP 协议对比
|
对比维度 |
SDK 集成方式 |
ACP 协议方式 |
|---|---|---|
|
通信方式 |
进程间通信(stdin/stdout) |
进程间通信(stdin/stdout) |
|
协议格式 |
JSON Lines(自定义消息格式) |
JSON-RPC 2.0 |
|
消息类型 |
SDKMessage(user/assistant/system/result/stream_event) |
ACP Message(request/response/notification) |
|
控制平面 |
Control Request/Response |
ACP Methods |
|
初始化方式 |
发送 |
JSON-RPC |
|
权限处理 |
SDK 提供 |
ACP |
|
MCP 支持 |
SDK 可嵌入 MCP 服务器 |
ACP 原生支持 MCP 服务器配置 |
|
使用场景 |
程序化集成、脚本自动化 |
IDE 集成、编辑器插件 |
4.3.3 Java SDK 双模式支持
Java SDK 提供两套独立的 API:

4.4 VSCode IDE Companion
VSCode 插件提供 IDE 内嵌聊天界面、文件和编辑器集成、ACP 协议通信等功能。

05
—
模块间数据流向
5.1 完整数据流向

5.2 关键对接点
|
对接方向 |
接口/协议 |
说明 |
|---|---|---|
|
VSCode ↔ CLI |
ACP (JSON-RPC) |
IDE 通过 ACP 协议调用 CLI |
|
SDK ↔ CLI |
JSON Lines |
SDK 通过进程通信调用 CLI |
|
CLI ↔ Core |
直接方法调用 |
CLI Session 直接调用 Core GeminiChat |
|
Core ↔ Model |
ContentGenerator |
模型 API 抽象层 |
|
Core ↔ Tool |
ToolRegistry |
工具注册与查找 |
|
Tool ↔ Execute |
CoreToolScheduler |
工具调度执行 |
06
—
核心服务系统
6.1 会话记录服务 (ChatRecordingService)
会话记录服务负责将对话历史持久化到磁盘,支持会话恢复和审计。核心文件:
packages/core/src/services/chatRecordingService.ts
6.1.1 存储格式
采用 JSONL (JSON Lines) 格式,每行一条记录:
interface ChatRecord {uuid: string; // 记录唯一标识parentUuid: string | null; // 父记录 UUID(树形结构)sessionId: string; // 会话 IDtimestamp: string; // ISO 8601 时间戳type: 'user' | 'assistant' | 'tool_result' | 'system';subtype?:| 'chat_compression'| 'slash_command'| 'ui_telemetry'| 'at_command';cwd: string; // 工作目录version: string; // CLI 版本gitBranch?: string; // Git 分支message?: Content; // API 格式的消息内容usageMetadata?: GenerateContentResponseUsageMetadata;model?: string;toolCallResult?: Partial<ToolCallResponseInfo>;systemPayload?: Record<string, unknown>;}
存储位置:
6.1.2 核心方法
|
方法 |
功能 |
写入时机 |
|---|---|---|
|
|
记录用户输入 |
立即写入 |
|
|
记录模型响应 |
Turn 结束后 |
|
|
记录工具执行结果 |
工具执行完成 |
|
|
记录对话压缩检查点 |
压缩完成后 |
|
|
记录斜杠命令 |
命令执行后 |
|
|
记录 UI 遥测事件 |
事件发生时 |
|
|
记录 @ 命令 |
命令执行后 |
6.2 循环检测服务 (LoopDetectionService)
循环检测服务防止 AI 陷入无限循环,通过多种策略检测重复模式。核心文件:
packages/core/src/services/loopDetectionService.ts
6.2.1 检测策略
|
策略 |
检测目标 |
阈值 |
触发条件 |
|
工具调用循环检测 |
连续相同的工具调用 |
5 次 |
相同工具名称和参数重复 5 次 |
|
内容循环检测 |
重复的文本内容 |
10 次(50 字符块) |
相同文本块在短距离内重复 |
|
LLM 辅助循环检测 |
认知循环、无进展状态 |
置信度 > 0.9 |
30 轮后每 3-15 轮检查一次 |
6.2.2 工具调用循环检测
// 检测逻辑private checkToolCallLoop(toolCall: { name: string; args: object }): boolean {const key = this.getToolCallKey(toolCall); // SHA256 哈希if (this.lastToolCallKey === key) {this.toolCallRepetitionCount++;} else {this.lastToolCallKey = key;this.toolCallRepetitionCount = 1;}return this.toolCallRepetitionCount >= TOOL_CALL_LOOP_THRESHOLD; // 5}
6.2.3 内容循环检测
采用滑动窗口算法:
-
将流式文本分割为固定大小的块(50 字符)
-
对每个块计算 SHA256 哈希
-
跟踪相同哈希出现的位置
-
当相同块在短距离内重复 10 次时触发
特殊处理:
-
代码块内容不检测(避免误报)
-
表格、列表、标题等结构化内容重置检测
6.2.4 LLM 辅助循环检测
当对话超过 30 轮后,定期调用 LLM 分析最近 20 轮对话:
// 系统提示词(简化)const LOOP_DETECTION_SYSTEM_PROMPT = `你是一个专业的 AI 诊断智能体,负责识别对话是否陷入无进展状态。无进展状态的特征:1. 重复操作:重复相同的工具调用或响应2. 认知循环:无法确定下一步,反复询问相同问题3. 无净变化:在文件间循环但没有实质进展请区分真正的循环和合理的增量进展。`;// 返回格式{reasoning: string; // 推理过程confidence: number; // 0.0-1.0 的置信度}
动态调整检查间隔:
-
高置信度(> 0.9):触发循环检测
-
中等置信度:缩短检查间隔(5 轮)
-
低置信度:延长检查间隔(15 轮)
6.3 对话压缩服务 (ChatCompressionService)
对话压缩服务在对话历史过长时自动压缩,减少 Token 消耗。核心文件:
packages/core/src/services/chatCompressionService.ts
6.3.1 压缩触发条件
|
条件 |
默认值 |
说明 |
|---|---|---|
|
Token 阈值 |
70% 上下文窗口 |
超过此阈值触发自动压缩 |
|
保留比例 |
30% |
保留最近 30% 的对话历史 |
|
强制压缩 |
用户手动触发 |
忽略阈值,强制执行压缩 |
6.3.2 压缩流程

6.4 会话管理服务 (SessionService)
会话管理服务提供会话的列表、加载、保存、删除等操作。核心文件:
packages/core/src/services/sessionService.ts
6.4.1 核心功能
|
功能 |
方法 |
说明 |
|---|---|---|
|
列出会话 |
|
列出所有可用会话 |
|
加载会话 |
|
从磁盘加载会话历史 |
|
保存会话 |
|
保存当前会话(自动) |
|
删除会话 |
|
删除指定会话 |
|
重建历史 |
|
从记录重建 API 历史 |
|
重放遥测 |
|
重放 UI 遥测事件 |
6.4.2 会话恢复流程

07
—
总结
Qwen Code 采用清晰的两层架构设计:
-
客户端层 – 提供多种接入方式(CLI 交互式、VSCode/Zed IDE 集成、SDK 程序化调用)
-
核心引擎层 – 共享的 Agent Loop、工具系统、子智能体系统、核心服务
核心设计特点:
-
Agent Loop – 核心对话循环,协调用户输入、模型响应、工具执行
-
多客户端支持 – CLI 直接调用、IDE 通过 ACP 协议、SDK 通过进程通信
-
工具注册表模式 – 动态发现和加载工具(内置、MCP、命令行发现)
-
执行模式控制 – Plan/Default/Auto-edit/YOLO 四种权限策略
-
核心服务系统 – 会话记录、循环检测、对话压缩等关键能力
-
子智能体系统 – 支持任务分解和嵌套执行
-
MCP 集成 – 扩展外部工具生态
关键数据流:
客户端(CLI/IDE/SDK)→ Session → Agent Loop → 模型 API→ 工具调用 → CoreToolScheduler → 权限检查 → 工具执行→ 结果返回 → 继续 Loop → 流式输出
客户端集成方式:
CLI 交互式 ──直接调用──→ Session → CoreVSCode/Zed ──ACP 协议──→ Session → CoreSDK 程序化 ──JSON Lines──→ Session → Core
附录 A:关键文件索引
核心模块
|
功能 |
文件路径 |
|---|---|
|
Agent Loop 入口 |
|
|
Turn 执行 |
|
|
工具注册表 |
|
|
工具调度器 |
|
|
子智能体管理器 |
|
|
配置管理 |
|
核心服务
|
功能 |
文件路径 |
|---|---|
|
会话记录 |
|
|
循环检测 |
|
|
对话压缩 |
|
|
会话管理 |
|
CLI 模块
|
功能 |
文件路径 |
|---|---|
|
ACP 集成 |
|
|
非交互式 Session |
|
|
控制平面 |
|
|
交互式 UI |
|
IDE 集成
|
功能 |
文件路径 |
|---|---|
|
VSCode 扩展 |
|
|
Zed 扩展 |
|
|
IDE 上下文 |
|
附录 B:术语表
|
术语 |
说明 |
|---|---|
|
Agent Loop |
核心对话循环,协调用户输入、模型响应、工具执行 |
|
Turn |
一轮对话,包含用户输入和模型响应 |
|
Tool |
工具,提供特定功能的可执行单元 |
|
ToolInvocation |
工具调用实例,包含参数和执行逻辑 |
|
ToolRegistry |
工具注册表,管理所有可用工具 |
|
CoreToolScheduler |
工具调度器,管理工具调用状态机 |
|
Subagent |
子智能体,独立的 Agent 实例,用于任务分解 |
|
MCP |
Model Context Protocol,模型上下文协议 |
|
ACP |
Agent Client Protocol,智能体客户端协议(基于 JSON-RPC 2.0) |
|
Approval Mode |
执行模式,控制工具调用的权限策略 |
|
JSONL |
JSON Lines,每行一个 JSON 对象的文本格式 |
|
Control Plane |
控制平面,非交互式模式的 |
|
IDE Context |
IDE 上下文,编辑器状态信息 |
|
Loop Detection |
循环检测,防止 AI 陷入无限循环 |
|
Chat Compression |
对话压缩,减少长对话的 Token 消耗 |
|
Session Recording |
会话记录,持久化对话历史 |
夜雨聆风