强大的智能体系统,不是把提示词写长,而是处理好分工、边界、权限、上下文和校验。
opencode 给了几块积木:主代理、子代理、skill、项目规则和权限系统,难点是组织它们。主代理太强,会变成失控杂工,带来幻觉和过多 Token 消耗;传给子代理的上下文与 prompt 不当,会造成语义污染和 Token 浪费;skill 不设限制,会在错误场景里乱入;权限不给边界,所有设计都会败给一次误操作。
配套核心文件放这里,正文只讲组织方法:
把 Agent 当人用,把 Skill 当工具书用,把权限当门锁用。
Agent 有角色、目标、权限和责任。它能判断、调度、取舍。
Skill 是流程卡。它告诉模型怎么做某类任务,给检查表、术语表、模板和质量标准。
权限是硬边界。它决定代理能不能读、写、跑命令、访问网络、调用别的代理。
三者不要混。
1 | your-project/ |
适合所有项目的能力放全局,只适合当前项目的规则放项目里。项目配置会覆盖全局配置。
主代理用 mode: primary。它不必亲自干所有事,但必须对最终结果负责。
它要做六件事:
主代理最忌两种病:什么都自己做,或者把责任甩给子代理。好的主代理像导师,不像复读机。
子代理用 mode: subagent。它的价值来自边界。
适合交给子代理的任务:
不适合交给子代理的任务:
对子代理,权限应更窄。审阅、阅读、仲裁、诊断类子代理通常只需要读,不需要写。
Skill 放在:
1 | .opencode/skills/my-skill/SKILL.md |
无需赘述。opencode 兼容 Anthropic 的 skill 文件格式,按 SKILL.md 的约定写即可。常见的文档处理、简单图表制作类 skill,也可以直接下载使用。
description 要写清触发场景,因为模型会根据描述决定是否加载这个 skill。一个好 skill 的描述应该包含具体触发词,比如“论文、PDF、arXiv、图表、实验、消融”。不要写“帮助你更好工作”这类空话。
skill 要白名单化。尤其是你有上百个 skill 时,opencode 会一次展示给 Agent,容易造成混乱。(尤其是 Gemini 这种蠢家伙)
通用思路是:先拒绝全部,再放开需要的几个。具体配置看:opencode-paper-suite.json。
建议默认倾向是:
阅读、审阅、仲裁类子代理不该拥有写权限。实现类子代理可以写,但必须有清晰任务范围。
AGENTS.md 适合写整个项目的路由规则,而不是某个代理的介绍。
它应该回答:
下载示例:AGENTS.routing.md.txt。
1 | 主代理:理解意图,拆任务,收口 |
这套结构可以用于写代码、读论文、写文档、做数据报告。不同场景换不同 skill 和子代理,但骨架不变。
配套文章里,论文 Agent 系统拆成:
1 | paper 主代理 |
完整教程见:Paper-Agent 在 opencode 中的实现。
这个例子体现的是一般方法:主代理管方向,子代理管局部,skill 管方法,权限管风险。
智能体系统不需要复杂到吓人,边界清楚,就已经很强大了。