术语表
这一页不追求百科式定义,只负责统一本书里的高频概念口径,避免同一个词在不同章节里被读成不同意思。
Agent
在本书里,Agent 默认不是”一个会思考的抽象角色”,而是:
- 一份运行时配置
- 一组模型、权限、提示词与模式的组合
- 一个可以被系统调度的执行角色
如果没有特别说明,不把它理解成独立进程或单一类实例。
Agent Loop(执行循环)
Agent Loop 是 AI Agent 的核心执行机制,描述了从接收输入到产生输出的完整循环过程:
输入 → 思考 → 工具调用 → 观察结果 → 继续思考 → 输出这个循环会持续进行,直到 Agent 决定不再需要调用工具,而是输出最终答案。
关键特征:
- 非确定性:每次执行路径可能不同
- 自主决策:Agent 自己决定何时调用工具、何时结束
- 上下文累积:每次循环都会将结果添加到上下文中
详见:第二篇 §2.5
Tool Calling(工具调用)
Tool Calling 是 Agent 与外部世界交互的核心机制。在执行循环中,Agent 可以:
- 决定调用哪个工具
- 提供工具参数
- 接收工具执行结果
- 基于结果继续思考
工具调用不是简单的函数调用,而是包含:
- 权限检查
- 参数验证
- 结果裁剪
- 错误处理
详见:第三篇
Planning(任务规划)
Planning 是 Agent 在执行复杂任务前的规划阶段。OpenCode 提供专门的 Planning 模式:
- 只读模式:不能修改代码,只能分析
- 计划文件:可以编辑
.opencode/plans/*.md - 用户确认:计划需要用户审核后才执行
Planning 的价值:
- 避免盲目执行
- 让用户了解执行计划
- 降低风险
详见:第三篇 §3.8
Task Decomposition(任务分解)
Task Decomposition 是将复杂任务拆解为多个子任务的过程。OpenCode 通过 task 工具实现:
// 创建子任务
task({
agent: “explore”,
prompt: “找到所有认证相关文件”
})任务分解的好处:
- 并行执行:多个子任务可以同时进行
- 专家分工:不同 Agent 擅长不同任务
- 降低复杂度:大任务变成小任务
详见:第三篇 §3.8
Memory(记忆机制)
Memory 在 AI Agent 中通常分为三层:
- 短期记忆:当前会话的上下文(Session)
- 工作记忆:压缩后的历史信息(Compaction)
- 长期记忆:持久化的数据(SQLite)
OpenCode 的记忆机制:
- 会话历史存储在数据库中
- 超长对话会自动压缩
- 重要信息会被保留
详见:第四篇、第九篇
Prompt Engineering(提示词工程)
Prompt Engineering 是设计和优化 Agent 系统提示词的过程。OpenCode 的提示词包含:
- 基础指令:Agent 的基本行为规范
- 模型特定提示:针对不同模型的优化
- 环境信息:工作目录、平台、日期等
- Skill 列表:可用的技能
- Agent 自定义提示:特定 Agent 的指令
详见:第二篇 §2.4
Context Management(上下文管理)
Context Management 是管理 Agent 对话历史和上下文窗口的机制。包括:
- 上下文构建:组装历史消息
- 上下文压缩:当超过窗口限制时压缩
- Token 预算:为输出预留空间
- 重要信息保留:确保关键信息不丢失
详见:第四篇 §4.3
Primary Agent
Primary Agent 指直接面向用户交互的主执行角色。它通常具备:
- 接收用户输入
- 调用工具
- 调用
Subagent - 在需要时向用户提问
在 OpenCode 当前实现里,build、plan 这类角色更接近 primary 模式。
Subagent
Subagent 指由主 Agent 调度的子角色,重点不是“更弱”,而是“职责更收紧”。
在本书里,subagent 作为模式名或配置值时,保留代码里的小写写法;作为概念名词时,统一写作 Subagent。
Subagent 通常意味着:
- 不直接面向用户交互
- 不能无限继续调其他
Subagent - 更适合搜索、分析、并行拆分这类局部任务
运行时
本书里的“运行时”主要指 OpenCode 在本地机器上真正执行起来的那一层,包括:
- Agent
- 工具系统
- 会话系统
- 本地 server
- 权限与状态边界
它不等于单一 CLI 命令,也不等于云端产品后端。
工作台
“工作台”主要用来形容 OpenCode 的 TUI 或多端前端形态,强调的是:
- 持续存在的状态空间
- 多面板、多上下文、多入口协作
- 不只是一次性问答,而是连续任务处理
看到这个词时,可以把它理解成“偏 IDE 化的 Agent 交互界面”。
工具系统
“工具系统”不只是模型可调用的函数列表,而是包含下面这些约束的系统边界:
- 工具注册
- 权限询问
- 参数校验
- 输出裁剪
- 模型适配
所以它比“工具函数集合”更接近产品级协议层。
会话
“会话”在本书里不是简单聊天记录,而是一次任务运行历史的容器。它通常承载:
- 用户输入
- assistant 输出
- 工具调用过程
- 回滚、压缩、重试等治理状态
如果一个能力需要持续恢复、继续执行或被前端展示,通常都会回到会话层。
上下文压缩
“上下文压缩”不是简单删历史消息,而是为了:
- 给下一轮生成预留空间
- 保留真正重要的信息
- 降低工具输出和长会话带来的膨胀
它更像一次策略性重建,而不是机械裁剪。
Provider
Provider 在本书里指模型提供商抽象层。它的重点不是“换 API 地址”,而是统一:
- 消息格式
- 能力差异
- 参数差异
- 认证方式
- 成本与限制信息
MCP
MCP 在本书里主要被理解成外部能力接入边界,而不是单纯协议名词。
它帮助 OpenCode:
- 发现外部工具
- 接入外部资源
- 装载外部 prompt
- 把认证和连接恢复收口到统一层
平台注入
“平台注入”主要出现在多端 UI 相关章节,指的是:
- 先保持共享应用骨架稳定
- 再把 Web、Desktop 等差异收敛到明确接口
它和“为每个平台重写一套前端”是相反思路。
控制平面
“控制平面”在本书里通常指那些不直接等于本地 Agent 执行逻辑、但负责跨工作区、远程路由、账号和云端治理的部分。
简单说:
- 本地运行时更偏执行面
- control plane 更偏调度、管理、转发和产品治理
当前实现
当本书写“当前实现”“当前仓库”“当前状态”时,意思是:
- 以当前
dev分支源码为准 - 不替未来版本做承诺
- 不替未落地能力做脑补
这是本书最重要的写作约束之一。