OpenCode智能代理体系:7大代理+14个工具,打造自主协作的AI开发团队
🔥 你有没有想过,AI 除了聊天,还能像一支真正的开发团队那样读代码、写代码、执行测试、甚至完成部署上线?
7 大智能代理 × 14 个内置工具——OpenCode 不只是一个“会写代码的聊天机器人”,它更像一个可以自主思考、分工协作、精准操控的 AI 开发团队。
📌 核心概念:两层能力架构
在上一篇文章《75+ 模型随心选——模型配置全攻略》中,我们完成了模型的挑选。但模型只是“大脑”,OpenCode 真正的能力来自它的指挥体系——代理(Agent) 和 工具(Tool)。
为什么需要代理和工具?
设想一个场景:你对 AI 说“重构整个用户认证模块”。如果只有一个通用 AI,它必须同时理解需求、规划步骤、读写文件、运行测试……什么都要做,什么都有可能搞砸。
OpenCode 的思路完全不同:让专业的代理去做专业的事,就像一个组织有序的开发团队:
你的自然语言指令
代理层 思考 · 规划 · 分工
工具层 读 · 写 · 执行 · 搜索
你的代码库 文件 / 命令 / 搜索
- • 代理(Agent):决定“怎么思考”——分析、规划、分工、协作
- • 工具(Tool):决定“能做什么”——读写文件、执行命令、搜索代码
💡 说明:OpenCode 还支持通过 MCP 连接外部工具链(数据库、API、云服务),这是第三层扩展能力。关于 MCP 的内容将安排在本系列第 4 篇《MCP 深度实战——连接开发工具链》中单独讲解,本文聚焦在代理与内置工具本身。
🤖 智能代理系统
7 大内置代理全景
OpenCode 内置了 7 个专用代理,按照职责可以分为三层:
| 代理 | 层级 | 角色定位 | 工具权限 | 典型场景 |
|---|---|---|---|---|
| Build | 主代理 | 构建者 | 全部工具 | 编写代码、修复缺陷、执行任务 |
| Plan | 主代理 | 规划者 | 文件编辑和 bash 默认需确认 | 分析项目、设计方案 |
| General | 子代理 | 全能型 | 除 todowrite 外全部工具 | 处理复杂子任务、并行工作 |
| Explore | 子代理 | 探索者 | 只读 | 搜索代码、理解架构 |
| Compaction | 系统代理 | 上下文压缩 | — | 自动压缩长对话 |
| Title | 系统代理 | 标题生成 | — | 为会话自动生成标题 |
| Summary | 系统代理 | 摘要生成 | — | 生成会话摘要 |
子代理(@ 调用)
主代理(Tab 切换)
系统代理(自动运行)
Compaction 上下文压缩
Title 标题生成
Summary 摘要生成
Build 全权限构建者
Plan 安全规划者
General 全能型助手
Explore 只读探索者
主代理:Build 和 Plan
主代理是你直接对话的核心助手,通过 Tab 键 或 switch_agent 快捷键进行切换。
Build 代理——你的编程搭档
Build 是默认的主代理,拥有全部工具的权限,可以直接操作文件、执行命令。日常开发中 90% 的时间你都是在和它对话。
使用示例:
你(Build 模式):帮我在 handlers/user.go 中添加一个用户注册接口
Build 代理:
📖 读取 handlers/user.go
📖 读取 models/user.go
📖 读取 routes/router.go
✏️ 编辑 handlers/user.go - 添加 Register handler
✏️ 编辑 routes/router.go - 注册路由
🔧 运行 go build ./... → 编译成功
📝 完成!共修改 2 个文件
Plan 代理——先规划再动手
Plan 代理专门用于分析和规划设计,以下操作默认设为 ask(需要你确认后才会执行):
- • 文件编辑:所有 write、patch、edit 操作
- • bash 命令:所有 shell 命令
这意味着 Plan 代理会先看、先想、先拿出方案,而不会在背后悄悄改动你的代码。
使用示例:
你(Plan 模式):我想给项目增加一层缓存,帮我分析一下怎么实现
Plan 代理:
📖 分析项目结构...
📖 识别技术栈:Go + Gin + PostgreSQL
📋 缓存方案建议:
1. 以 Redis 作为缓存层
2. 在 repository 层增加缓存装饰器
3. 需要改动的文件:
- internal/repository/user.go
- internal/repository/cache.go(新建)
- go.mod(添加依赖)
⚠️ 注意事项:
- 需要处理缓存穿透问题
- 建议设计缓存预热机制
需要我切换到 Build 模式开始实施吗?
💡 最佳实践:面对复杂任务时,先用 Plan 模式查看方案,满意后再切换到 Build 模式执行。只需一次 Tab 键,就能从“纸上谈兵”进入“动手开干”。
子代理:General 和 Explore
子代理是主代理可以调用的专业助手。你可以在消息中通过 @ 提及 来手动调用,主代理也会根据任务自动调度它们。
General 代理——全能型子代理
General 拥有除 todowrite 以外的全部工具权限,甚至能够修改文件。它的核心价值在于并行处理——主代理可以同时分派多个 General 子代理去分别负责不同的工作。
你:这个项目有三个独立的 bug 需要修复,帮我并行处理
Build 代理:
🔄 调用 @general 子代理 1 → 修复 auth 模块的空指针异常
🔄 调用 @general 子代理 2 → 修复 API 响应格式不一致
🔄 调用 @general 子代理 3 → 修复并发场景下的竞态条件
✅ 三个 bug 已并行修复,共改动 5 个文件
Explore 代理——只读探索者
Explore 是一个只读代理,不能修改任何文件。它特别适合用于:
- • 刚接触一个陌生项目,需要快速掌握整体架构
- • 搜索某个特定功能的实现位置
- • 分析项目依赖关系和代码结构
使用示例:
你:@explore 帮我梳理一下这个项目的整体架构
Explore 代理:
📖 搜索项目结构...
📖 读取关键配置文件...
📖 分析依赖关系...
📋 项目架构分析:
- 技术栈:Go 1.22 + Gin + GORM + Redis
- 入口文件:cmd/server/main.go
- 核心模块:
├── handlers/ → HTTP 请求处理(12 个文件)
├── services/ → 业务逻辑层(8 个文件)
├── repository/ → 数据访问层(6 个文件)
├── middleware/ → 中间件(认证、日志、限流)
└── config/ → 配置管理
🔗 核心数据流:Request → Middleware → Handler → Service → Repository → DB
💡 导航技巧:当子代理创建了自己的子会话后,你可以通过
Ctrl+x →和Ctrl+x ←在父会话与子会话之间来回切换。
系统代理:Compaction / Title / Summary
系统代理是自动运行的后台代理,你通常不会在界面中直接看到它们,但它们一直在默默工作:
| 系统代理 | 触发时机 | 作用 | 配置方式 |
|---|---|---|---|
| Compaction | 对话过长时自动触发 | 将历史对话压缩为摘要,释放上下文空间 | compaction 配置项 |
| Title | 每次新会话开始时自动触发 | 为会话生成简短标题,便于后续查找 | agent.title 配置项 |
| Summary | 会话结束时自动触发 | 生成会话摘要,用于历史回顾 | agent.summary 配置项 |
你可以通过 small_model 配置来指定系统代理所使用的模型,从而控制成本:
{
"small_model": "openai/gpt-5-4-mini"
}
也可以为特定的系统代理单独指定模型:
{
"agent": {
"title": {
"model": "openai/gpt-5-4-mini"
},
"compaction": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
🤖 代理高级配置
配置方式
代理支持两种配置方式:
方式一:JSON 配置(在 opencode.json 中)
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"model": "anthropic/claude-sonnet-4-20250514",
"temperature": 0.3,
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"model": "anthropic/claude-haiku-4-20250514",
"temperature": 0.1
}
}
}
方式二:Markdown 文件(适合自定义代理)
在以下目录中创建 .md 文件即可定义代理:
- • 全局:
~/.config/opencode/agents/ - • 项目级:
.opencode/agents/
文件名即为代理名称,例如 review.md 会创建一个名为 review 的代理。
配置选项详解
| 选项 | 类型 | 说明 | 示例 |
|---|---|---|---|
description |
string | 代理功能描述(自定义代理必填) | "审查代码安全和性能" |
mode |
string | 代理模式:primary / subagent |
"subagent" |
model |
string | 覆盖使用的模型 | "anthropic/claude-sonnet-4-20250514" |
prompt |
string | 自定义系统提示词 | "{file:./prompts/build.txt}" |
temperature |
number | 响应随机性(0.0 ~ 1.0) | 0.3 |
top_p |
number | 响应多样性(温度的替代方案) | 0.9 |
steps |
number | 最大迭代步数 | 10 |
tools |
object | 工具启用/禁用 | {"write": false} |
hidden |
boolean | 是否从 @ 菜单中隐藏 | true |
disable |
boolean | 是否禁用该代理 | true |
color |
string | UI 显示颜色 | "#FF5733" 或 "accent" |
temperature:控制创造力
0.0 - 0.2 → 确定性响应,适合代码分析、规划
0.3 - 0.5 → 平衡响应,适合一般开发任务
0.6 - 1.0 → 创造性响应,适合头脑风暴、探索
{
"agent": {
"plan": { "temperature": 0.1 },
"build": { "temperature": 0.3 },
"brainstorm": { "temperature": 0.7 }
}
}
如果不指定 temperature,OpenCode 将使用模型的默认值(大多数模型为 0,Qwen 系列为 0.55)。
steps:控制成本
通过设置最大迭代步数,可以防止代理陷入无限循环而消耗过多 token:
{
"agent": {
"quick-thinker": {
"description": "快速思考,限制迭代次数",
"prompt": "用最少的步骤解决问题",
"steps": 5
}
}
}
当达到步数限制后,代理会收到系统提示,并回复工作摘要以及剩余任务的建议。
hidden:隐藏内部代理
将子代理从 @ 自动补全菜单中隐藏起来,使其仅供其他代理通过 Task 工具以编程方式调用:
{
"agent": {
"internal-helper": {
"mode": "subagent",
"hidden": true,
"description": "仅供内部调用的辅助代理"
}
}
}
color:自定义 UI 颜色
可以使用十六进制颜色值,或者主题颜色名(primary、secondary、accent、success、warning、error、info):
{
"agent": {
"creative": { "color": "#ff6b6b" },
"code-reviewer": { "color": "accent" }
}
}
自定义代理实战
除了内置代理,你还可以创建自己专属的代理。
示例一:代码审查代理(JSON 格式)
{
"agent": {
"code-reviewer": {
"description": "审查代码质量、安全性和性能",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "你是一名严格的代码审查员。审查每段提交的代码在质量、安全性和性能方面的问题。重点关注 OWASP Top 10。",
"tools": {
"write": false,
"edit": false
},
"temperature": 0.1
}
}
}
示例二:安全审计代理(Markdown 格式)
<!-- .opencode/agents/security-auditor.md -->
---
description: 安全审计专家,检查代码安全漏洞
mode: subagent
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
你是一名安全审计专家。请检查代码中的:
- SQL 注入风险
- XSS 漏洞
- 不安全的加密使用方式
- OWASP Top 10 问题
- 依赖项漏洞
只进行分析并报告问题,不要直接修改代码。
使用的时候通过 @ 提及代理即可:
你:@security-auditor 帮我审计一下 auth 模块的代码
security-auditor:
📖 扫描 auth 模块...
⚠️ 发现 2 个安全问题:
1. [高危] login.go:45 - SQL 语句拼接未使用参数化查询
2. [中危] token.go:23 - JWT 密钥硬编码在代码中
📋 建议修复方案:
1. 将字符串拼接改为预处理语句
2. 把密钥迁移到环境变量中
任务权限:控制代理间调用
可以通过 permission.task 来控制某个代理可以通过 Task 工具调用哪些子代理:
{
"agent": {
"orchestrator": {
"mode": "primary",
"description": "编排代理,调度子任务",
"permission": {
"task": {
"*": "deny",
"orchestrator-*": "allow",
"code-reviewer": "ask"
}
}
}
}
}
🔧 14 个内置工具详解
工具全景表
| 工具 | 功能 | 输入示例 | 典型场景 |
|---|---|---|---|
| bash | 执行 Shell 命令 | go test ./... |
运行测试、安装依赖、Git 操作 |
| edit | 精确修改文件 | 替换特定字符串 | 修改函数、重命名变量、修复 bug |
| write | 创建或覆盖文件 | 整个文件内容 | 创建新文件、生成配置 |
| read | 读取文件内容 | 文件路径 + 行范围 | 理解代码、查看配置 |
| grep | 正则搜索内容 | 搜索模式 + 文件过滤 | 查找函数定义、搜索引用 |
| glob | 模式匹配文件 | **/*.go |
查找特定类型文件 |
| list | 列出目录内容 | 目录路径 + 过滤 | 查看项目结构 |
| patch | 应用补丁 | diff 文件内容 | 批量修改、应用 diff |
| skill | 加载技能 | SKILL.md 路径 | 执行预定义工作流 |
| todowrite | 管理待办事项 | 任务列表 | 跟踪多步骤任务进度 |
| webfetch | 抓取网页内容 | URL | 获取文档、读取 API 说明 |
| websearch | 网络搜索 | 搜索关键词 | 查找解决方案、搜索资料 |
| question | 向用户提问 | 问题 + 选项 | 澄清需求、确认操作 |
| lsp | LSP 集成(实验性) | LSP 操作 | 跳转定义、查找引用 |
📚 内部机制:
grep、glob、list底层使用的是 ripgrep,并且默认遵循.gitignore规则。如果希望搜索被忽略的目录,可以在项目根目录创建.ignore文件来取消忽略。
重点工具详解
bash:最强大的工具
bash 让 AI 拥有了执行任意 Shell 命令的能力:
OpenCode:
🔧 运行 go test ./... -v
✅ 12 个测试通过,0 个失败
🔧 运行 go vet ./...
✅ 没有发现问题
🔧 运行 git diff --stat
📝 handlers/user.go | 15 +++++++++
📝 routes/router.go | 3 ++
bash 还支持 glob 模式,可以精细地控制允许和拒绝哪些命令:
{
"permission": {
"bash": {
"*": "ask",
"go test *": "allow",
"go build *": "allow",
"go vet *": "allow",
"git status *": "allow",
"git diff *": "allow",
"git log *": "allow"
}
}
}
⚠️ 安全提示:
*通配符应当放在前面,具体的规则放在后面。因为最后匹配的规则具有最高优先级。
edit vs write:何时用哪个?
这两个工具都能修改文件,但适用的场景并不相同:
| 维度 | edit | write |
|---|---|---|
| 定位 | 精确修改 | 整体创建 |
| 原理 | 字符串替换 | 全量写入 |
| 适合 | 改几行代码、修 bug | 创建新文件、生成配置 |
| 风险 | 低(只改动匹配的部分) | 高(会覆盖整个文件) |
| 性能 | 快(只传输差异) | 相对较慢(传输整个文件) |
✅ 更适合用 edit 的场景:
- 修改 handlers/user.go 中的某一个函数
- 重命名一个变量
- 修复一个 bug
✅ 更适合用 write 的场景:
- 创建一个新的 handler 文件
- 生成 Dockerfile
- 创建配置文件
grep + glob:搜索组合拳
grep 和 glob 是代码搜索的一对黄金搭档:
- • grep:在文件内容中搜索(基于正则表达式)
- • glob:根据模式匹配文件路径
# grep:找到所有包含 "JWT" 的文件
🔍 搜索内容:JWT
📌 匹配的文件:
- middleware/auth.go:15 → func validateJWT()
- handlers/token.go:8 → type JWTClaims struct
- config/auth.go:3 → const jwtSecret = "..."
# glob:找到所有测试文件
🔍 搜索文件:**/*_test.go
📌 匹配的文件:
- handlers/user_test.go
- services/auth_test.go
- repository/user_test.go
patch:批量应用补丁
patch 工具能够应用标准 diff 格式的补丁,非常适合以下场景:
- • 一次性修改多个文件中的多个位置
- • 将 code review 的修改建议自动应用到代码中
- • 从外部源导入变更
skill:加载预定义技能
skill 工具会加载 SKILL.md 文件,并将其内容注入到当前对话中。这很适合将常用的工作流程进行标准化:
你:帮我运行代码审查工作流
OpenCode:
📋 加载技能:code-review.md
🔍 按照技能指引执行代码审查...
list:查看目录结构
list 工具用于列出指定路径下的文件和目录,并支持 glob 模式过滤:
OpenCode:
📁 列出 src/handlers/ 目录内容:
- user.go
- auth.go
- order.go
- middleware/
├── auth.go
├── logger.go
└── ratelimit.go
LSP(实验性):代码智能
LSP 工具提供了一系列代码智能功能:
| 操作 | 说明 |
|---|---|
goToDefinition |
跳转到定义 |
findReferences |
查找所有引用 |
hover |
悬停信息 |
documentSymbol |
文档符号 |
workspaceSymbol |
工作区符号 |
goToImplementation |
跳转到实现 |
prepareCallHierarchy |
调用层次结构 |
incomingCalls |
入站调用 |
outgoingCalls |
出站调用 |
⚠️ 实验性功能:LSP 目前仍处于实验阶段,需要额外配置语言服务器。更多细节请参考 OpenCode 官方文档中关于 LSP 服务器配置的章节。
🔐 工具权限体系
三级权限:allow / ask / deny
OpenCode 中每个工具都可以独立配置权限级别:
| 权限 | 行为 | 适用场景 |
|---|---|---|
allow |
自动执行,无需确认 | 读取文件、搜索代码 |
ask |
每次操作前询问确认 | 执行命令、编辑文件 |
deny |
完全禁止使用 | 危险操作、安全审计 |
基础配置示例:
{
"permission": {
"bash": "ask",
"edit": "allow",
"write": "allow",
"read": "allow",
"grep": "allow",
"glob": "allow",
"webfetch": "allow",
"websearch": "allow"
}
}
bash glob 权限:精细控制命令
bash 工具支持 glob 模式,让你能精准地控制哪些命令可以自动执行,哪些需要再次确认:
{
"permission": {
"bash": {
"*": "ask",
"go test *": "allow",
"go build *": "allow",
"npm run *": "allow",
"python *": "allow",
"git status": "allow",
"git diff *": "allow",
"git log *": "allow",
"git push": "ask",
"rm *": "deny"
}
}
}
规则优先级:最后匹配的规则优先。因此建议把通配符 * 放在最前面,然后把具体规则放在后面。
按代理覆盖权限
你可以为不同的代理设置不一样的权限——比如同样是 edit 工具,Build 代理可以自动执行,而 Plan 代理则需要确认:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
},
"agent": {
"build": {
"permission": {
"edit": "allow",
"bash": {
"*": "ask",
"go test *": "allow",
"go build *": "allow"
}
}
},
"plan": {
"permission": {
"edit": "deny",
"bash": "deny"
}
}
}
}
在 Markdown 格式的代理中同样可以设置权限:
---
description: 只读代码审查代理
mode: subagent
permission:
edit: deny
bash:
"*": ask
"git diff": allow
"git log*": allow
webfetch: deny
---
只分析代码并提出修改建议,不要直接改动文件。
通配符控制
使用 * 可以批量控制工具权限,MCP 工具同样适用:
{
"permission": {
"mymcp_*": "ask"
},
"agent": {
"readonly": {
"tools": {
"mymcp_*": false,
"write": false,
"edit": false
}
}
}
}
🎯 综合配置示例
下面是一份完整的项目配置示例,涵盖了代理、工具和权限(暂不包含 MCP):
{
"$schema": "https://opencode.ai/config.json",
// 模型配置
"model": {
"build": "anthropic/claude-sonnet-4-20250514",
"plan": "anthropic/claude-sonnet-4-20250514"
},
"small_model": "openai/gpt-5-4-mini",
// 提供商配置
"provider": {
"anthropic": {
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
},
"openai": {
"options": {
"apiKey": "{env:OPENAI_API_KEY}"
}
}
},
// 全局权限
"permission": {
"bash": {
"*": "ask",
"go test *": "allow",
"go build *": "allow",
"go vet *": "allow",
"git status": "allow",
"git diff *": "allow",
"git log *": "allow"
},
"edit": "allow",
"write": "allow",
"read": "allow",
"grep": "allow",
"glob": "allow"
},
// 代理配置
"agent": {
"build": {
"temperature": 0.3,
"model": "anthropic/claude-sonnet-4-20250514"
},
"plan": {
"temperature": 0.1,
"model": "anthropic/claude-haiku-4-20250514"
},
"code-reviewer": {
"description": "审查代码质量、安全性和性能",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"temperature": 0.1,
"prompt": "你是一名严格的代码审查员。重点审查代码质量、安全性和性能。",
"tools": {
"write": false,
"edit": false,
"bash": false
}
},
"security-auditor": {
"description": "安全审计专家,检查 OWASP Top 10 漏洞",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"temperature": 0.1,
"tools": {
"write": false,
"edit": false,
"bash": false
}
}
}
}
💡 进阶技巧
1. 新项目上手三步曲
刚接手一个新项目时,可以按照下面的步骤来:
# 第一步:让 Explore 代理分析项目
你:@explore 分析这个项目的整体架构,列出核心模块和依赖关系
# 第二步:切换到 Plan 模式,深入了解技术栈
你(Plan 模式):分析项目的技术栈、构建方式和部署流程
# 第三步:切换到 Build 模式,开始实际工作
你(Build 模式):根据上面的分析,帮我修复 README 中过时的内容
2. Plan-Build 黄金工作流
处理复杂任务时,始终遵循“先 Plan 再 Build”的原则:
步骤 1 - Plan 模式:
你(Plan 模式):我想实现一套完整的用户权限系统,帮我先规划一下
Plan 代理:
📋 方案设计...
📝 需要创建 4 个新文件,修改 3 个现有文件
⚠️ 涉及数据库迁移,建议先进行备份
步骤 2 - 确认方案后切换到 Build:
你(Build 模式):按照刚才的方案执行
Build 代理:
✅ 开始实施...
3. 用 steps 控制成本
如果担心 token 消耗过多,可以为代理设置步数上限:
{
"agent": {
"build": {
"steps": 20
}
}
}
达到上限后代理会自动暂停,向你汇报当前进度和剩余任务,等你确认后再继续。
4. 工具权限最小化原则
只授予真正需要的权限,以降低误操作的风险:
{
"permission": {
"bash": {
"*": "ask",
"go test *": "allow",
"go build *": "allow"
},
"write": "ask",
"edit": "allow",
"read": "allow"
}
}
这样 AI 创建新文件时需要你确认,但编辑已有文件和运行测试则可以自动完成。
5. 用 .ignore 打破搜索限制
grep、glob、list 默认遵循 .gitignore 规则。如果你还需要搜索 node_modules 或 dist 等目录,可以创建一个 .ignore 文件:
# 项目根目录下的 .ignore 文件
!node_modules/
!dist/
!build/
⚠️ 常见问题(FAQ)
Q1: Build 和 Plan 模式怎么切换?
在对话中按 Tab 键,就可以在主代理(Build ↔ Plan)之间循环切换。你也可以使用配置中绑定的 switch_agent 快捷键。当前模式会在输入框中显示。
Q2: 如何让子代理并行工作?
你并不需要手动编排——只需要在消息中说明需要并行处理的多个任务,Build 代理就会自动调度 General 子代理并行执行。你也可以用 @general 来手动调用子代理。
Q3: 自定义代理的 Markdown 文件放在哪里?
有两个位置可选:
- • 全局:
~/.config/opencode/agents/(对所有项目生效) - • 项目级:
.opencode/agents/(仅对当前项目生效)
文件名就是代理名称,例如 review.md 会创建一个名为 review 的代理。
Q4: 工具权限应该怎么配比较合理?
新手推荐:
{
"permission": {
"bash": "ask",
"edit": "allow",
"write": "ask",
"read": "allow"
}
}
bash 和写入新文件需要确认(防止误操作),编辑文件和读取文件则自动执行(提高效率)。
熟手推荐:利用 bash glob 精细控制命令权限,把安全的命令设为 allow,危险的命令设为 ask 或 deny。
Q5: LSP 工具什么时候可以稳定使用?
LSP 目前仍是实验性功能,需要额外配置语言服务器。如果你使用的是 VS Code 等已经配置好 LSP 的 IDE,部分功能可能已经在后台工作。独立使用时需要手动配置环境。
Q6: websearch 工具需要单独的 API Key 吗?
不需要。 websearch 底层使用了 Exa AI 的托管 MCP 服务,无需额外申请 API Key 或进行身份验证就可以直接使用。
📚 总结
OpenCode 智能操作体系 = 7 大代理 × 14 个工具 × 精细权限控制
| 层 | 核心价值 | 关键配置 |
|---|---|---|
| 主代理 | Build 全力执行,Plan 安全规划 | Tab 切换、模型、temperature |
| 子代理 | General 并行处理,Explore 只读探索 | @ 调用、hidden、工具权限 |
| 系统代理 | Compaction / Title / Summary 自动运行 | small_model 降低开销 |
| 工具 | 14 个内置工具覆盖全部操作 | allow / ask / deny + bash glob |
| 权限 | 精细控制每个工具的行为 | 全局 + 按代理覆盖 |
通过本文,你已经掌握以下内容:
- • ✅ 7 大内置代理的角色定位和使用场景
- • ✅ 代理高级配置:temperature、steps、hidden、color、mode
- • ✅ 自定义代理的创建方法(JSON + Markdown)
- • ✅ 14 个内置工具的功能和适用场景
- • ✅ 工具权限的三级控制及 bash glob 精细配置
- • ✅ 综合配置的最佳实践
但 OpenCode 的能力远不止于此——通过 MCP(Model Context Protocol),你还可以连接数据库、调用 API、操作云服务,将 OpenCode 的能力无限扩展。这正是下一篇要详谈的内容。
🔗 延伸阅读
- • OpenCode 代理官方文档
- • OpenCode 工具官方文档
- • OpenCode 权限配置文档
- • 下一篇:MCP 深度实战——连接开发工具链
- • 上一篇:75+ 模型随心选——模型配置全攻略