惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
D
Docker
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
D
DataBreaches.Net
月光博客
月光博客
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
MyScale Blog
MyScale Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第15章:插件与自定义工作台开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw
第六章:Agent 与子代理自定义
我才是银古 · 2026-06-04 · via 博客园 - 我才是银古

第六章:Agent 与子代理自定义

Agent(智能体)是 OpenCode 的灵魂。通过为不同任务配置专门的 Agent——不同的系统提示词、模型、权限、推理强度——你既能提升质量,又能精准控制成本。本章讲解内置 Agent、如何自定义 Agent,以及与省 Token 直接相关的 modelstepspermission 等选项。


6.1 两类 Agent:主智能体与子智能体

  • 主智能体(primary):你直接对话的主助手,用 Tab(或 switch_agent 键位)循环切换。
  • 子智能体(subagent):主智能体为特定任务调用的专用助手,也可用 @ 提及手动调用,例如 @general 帮我搜索这个函数

子智能体的关键价值:它们在独立的子会话里工作,不污染主对话的上下文——这对控制 Token 极其重要(第九章详述)。


6.2 内置 Agent

主智能体

  • build(默认):全工具开放,用于实际开发。
  • plan:受限的规划/分析智能体。默认对「文件编辑」和「bash」都设为 ask,适合让模型分析代码、给方案,而不真正改动代码。

子智能体

  • general:通用型,研究复杂问题、执行多步任务,除 todo 外有完整工具权限,可并行跑多份工作。
  • explore:快速、只读,用于探索代码库——按模式找文件、搜关键字、回答「这段代码在哪/怎么写的」。
  • scout只读,用于外部文档与依赖研究——把依赖仓库克隆进 OpenCode 的托管缓存、查阅库源码、与上游实现交叉比对,而不改动你的工作区。

此外还有几个隐藏的系统 Agent(compaction 压缩、title 生成标题、summary 摘要),自动运行、不可在 UI 选择。

善用 explore/scout 这两个只读子代理做检索与调研,可以把大量「读」的消耗隔离在子会话里,主会话只接收精炼结论,显著省 Token。


6.3 自定义 Agent 的两种方式

方式一:JSON 配置

opencode.jsonagent 下定义或覆盖:

{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "build": {
      "mode": "primary",
      "model": "anthropic/claude-sonnet-4-5",
      "prompt": "{file:./prompts/build.txt}",
      "permission": { "edit": "allow", "bash": "allow" }
    },
    "plan": {
      "mode": "primary",
      "model": "anthropic/claude-haiku-4-5",
      "permission": { "edit": "deny", "bash": "deny" }
    },
    "code-reviewer": {
      "description": "审查代码的最佳实践与潜在问题",
      "mode": "subagent",
      "model": "anthropic/claude-sonnet-4-5",
      "prompt": "你是代码审查者,关注安全、性能与可维护性。",
      "permission": { "edit": "deny" }
    }
  }
}

方式二:Markdown 文件(推荐)

把 Agent 写成 Markdown,放在:

  • 全局:~/.config/opencode/agents/
  • 项目:.opencode/agents/
---
description: 审查代码质量与最佳实践
mode: subagent
model: anthropic/claude-sonnet-4-5
temperature: 0.1
permission:
  edit: deny
  bash: deny
---

你处于代码审查模式,关注:

- 代码质量与最佳实践
- 潜在 Bug 与边界情况
- 性能影响
- 安全考量

只给出建设性反馈,不直接改代码。

文件名即 Agent 名:review.md 生成 review 智能体。前置 frontmatter 是配置,正文是系统提示词。

交互式创建

opencode agent create

它会引导你选择保存位置、描述用途、自动生成提示词与标识符、勾选允许的权限(未勾选即拒绝),最后生成 Markdown 文件。


6.4 Agent 配置项详解

description(必填)

简述这个 Agent 做什么、何时用。子智能体的 description 会被主智能体用来判断「该不该自动调用它」,请写清楚。

model(省钱关键)

覆盖该 Agent 使用的模型。这是按任务分层用模的核心

{
  "agent": {
    "plan":   { "model": "anthropic/claude-haiku-4-5" },
    "review": { "model": "anthropic/claude-sonnet-4-5" }
  }
}

若不指定 model:主智能体用全局 model;子智能体默认沿用「调用它的主智能体」的模型。让规划、审查、检索等任务用便宜模型,实现任务用强模型,是最有效的成本优化之一。

temperature / top_p

控制随机性。低值(0.0–0.2)更聚焦、确定,适合分析与规划;高值(0.6–1.0)更有创造性。不设则用模型默认(多数模型为 0,Qwen 约 0.55)。

{
  "agent": {
    "analyze":   { "temperature": 0.1 },
    "brainstorm":{ "temperature": 0.7 }
  }
}

steps:限制迭代步数(直接控成本)

steps 限制 Agent 在被迫只输出文本前,最多能做多少次「智能体迭代」。想给成本设上限的用户尤其应该用它

{
  "agent": {
    "quick-thinker": {
      "description": "迭代受限的快速推理",
      "prompt": "你是快思考者,用最少步骤解决问题。",
      "steps": 5
    }
  }
}

达到上限时,Agent 会收到特殊系统提示,要求它总结已完成工作并列出剩余任务。(旧字段 maxSteps 已废弃,请用 steps。)

prompt

prompt 指定该 Agent 的系统提示词文件(路径相对配置文件位置):

{ "agent": { "review": { "prompt": "{file:./prompts/code-review.txt}" } } }

mode / hidden / disable / color

  • modeprimary / subagent / all(默认 all)。
  • hidden: true:把子智能体从 @ 自动补全里隐藏,仅供程序化调用(只对 subagent 生效)。
  • disable: true:禁用该 Agent。
  • color:UI 颜色,支持十六进制(#FF5733)或主题色(primary/accent/success 等)。

透传 Provider 选项(推理强度等)

Agent 配置里任何其它键都会直接透传给 Provider 作为模型选项。例如对 OpenAI 推理模型控制推理强度与输出冗长度:

{
  "agent": {
    "deep-thinker": {
      "description": "对复杂问题使用高推理强度",
      "model": "openai/gpt-5",
      "reasoningEffort": "high",
      "textVerbosity": "low"
    }
  }
}

反过来,对「轻量/规划」类 Agent 把 reasoningEffort 调到 low/minimaltextVerbosity 调到 low,就是省 Token 的标准操作。


6.5 Agent 权限(含按命令/路径细粒度)

每个 Agent 都能独立配置权限,且 Agent 级规则覆盖全局。权限键值可为 allow / ask / deny,部分键还支持「glob → 动作」的对象语法:

---
description: 只读代码审查
mode: subagent
permission:
  edit: deny
  bash:
    "*": ask
    "git diff": allow
    "git log*": allow
    "grep *": allow
  webfetch: deny
---

只分析代码并给出修改建议。

要点(第八章会系统展开):

  • 规则按模式匹配,最后一条命中的规则生效;因此把 "*" 放最前、具体规则放后面。
  • 权限键作为通配模式匹配底层工具名,对内置工具、自定义工具、MCP 工具同样适用(如 "mymcp_*": "deny" 禁用某 MCP 的全部工具)。

6.6 默认主智能体与子代理调用控制

设置默认主智能体

{
  "$schema": "https://opencode.ai/config.json",
  "default_agent": "plan"
}

default_agent 必须是主智能体(内置的 build/plan 或你自定义的主智能体)。把默认设为 plan,能让每个新会话都从「只读规划」开始,避免模型上来就乱改、乱跑命令——既安全又省返工。该设置对 TUI、opencode run、桌面应用、GitHub Action 全部生效。

限制某 Agent 能调用哪些子代理(permission.task

{
  "agent": {
    "orchestrator": {
      "mode": "primary",
      "permission": {
        "task": {
          "*": "deny",
          "orchestrator-*": "allow",
          "code-reviewer": "ask"
        }
      }
    }
  }
}

当某子代理被 deny 时,它会被从 Task 工具描述中完全移除,模型不会再尝试调用它。规则同样「最后命中者生效」。注意:用户始终能通过 @ 手动调用任意子代理,即使 task 权限拒绝。


6.7 常见 Agent 用例

  • build:全工具开放的完整开发。
  • plan:只读分析与规划,不改代码。
  • review:只读 + 文档工具的代码审查。
  • debug:聚焦排查,开放 bash 与 read。
  • docs:写文档,开放文件操作但禁用系统命令。

把这些 Agent 配上「便宜模型 + 低推理强度 + 收紧权限」,就构成了既高效又省钱的工作台。


6.8 小结

本章你学会了内置 Agent 的分工、用 JSON/Markdown 自定义 Agent、关键配置项(尤其是 modelstepstemperature、推理强度透传与权限),以及默认 Agent 与子代理调用控制。「按任务分层用模 + 只读子代理隔离上下文 + 限制步数 + 收紧权限」是 OpenCode 成本优化的四大支柱,第九章会把它们组装成完整方案。