术语表
这一页不追求百科式定义,只负责统一本书里的高频概念口径,避免同一个词在不同章节里被读成不同意思。
Agent
在本书里,Agent 默认不是“一个会思考的抽象角色”,而是:
- 一份运行时配置
- 一组模型、权限、提示词与模式的组合
- 一个可以被系统调度的执行角色
如果没有特别说明,不把它理解成独立进程或单一类实例。
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分支源码为准 - 不替未来版本做承诺
- 不替未落地能力做脑补
这是本书最重要的写作约束之一。