# 01 — Agents (代理) > 源: > 适用: 创建/修改 opencode 子代理 (`.opencode/agent/*.md`) 或 `opencode.json` 的 `agent` 段 ## 类型 - **主代理 (primary)**: 用户直接交互,Tab 切换;默认 Build (全工具) + Plan (只读/ask) - **子代理 (subagent)**: 主代理自动调用,或用户 `@` 提及 ## 内置代理清单 | 名称 | 模式 | 用途 | 工具 | |---|---|---|---| | `build` | primary | 默认开发 | 全开 | | `plan` | primary | 规划/分析 (不写) | edit/bash = ask | | `general` | subagent | 通用多步任务 | 几乎全开 (无 todowrite) | | `explore` | subagent | 代码库搜索 | **只读** | | `scout` | subagent | 外部库/upstream 对比 | 只读 + 克隆到缓存 | | `compaction` / `title` / `summary` | primary (隐藏) | 系统内部 | — | > 自定义代理可覆盖内置:`agent: { build: { ... } }` 或 `agent/build.md`。 ## 两种配置形式 **JSON 形式** (`opencode.json`): ```json { "$schema": "https://opencode.ai/config.json", "agent": { "review": { "description": "Reviews code for best practices", "mode": "subagent", "model": "anthropic/claude-sonnet-4-6", "tools": { "write": false, "edit": false, "bash": false }, "prompt": "{file:./prompts/review.txt}" } } } ``` **Markdown 形式** (推荐,本仓库使用) — `.opencode/agent/.md` 或 `.opencode/agents/.md`: ```markdown --- description: Reviews code for quality and best practices mode: subagent model: anthropic/claude-sonnet-4-6 temperature: 0.1 tools: write: false edit: false bash: false --- You are in code review mode. Focus on: - Code quality and best practices - Potential bugs and edge cases - Performance implications - Security considerations ``` > **文件名即代理名**: `review.md` → `review`。`prompt` 写在 frontmatter 还是 body 选一个,别两处都写。 ## Frontmatter 全字段 | 字段 | 必填 | 类型 | 说明 | |---|---|---|---| | `name` | 是 (内联必填,文件可选) | string | 代理名 | | `description` | 是 | string | **必需**,决定自动调用时机 | | `mode` | 否 | `primary` \| `subagent` \| `all` | 默认 `all` | | `model` | 否 | `provider/model-id` | 子代理默认继承主代理模型 | | `prompt` | 否 | string / `{file:...}` | 系统提示词;路径相对**配置文件**所在目录 | | `temperature` | 否 | 0.0-1.0 | 0=确定, 0.55=Qwen 默认, 0.7=创意 | | `top_p` | 否 | 0.0-1.0 | 温度的替代 | | `steps` | 否 | int | 最大迭代步数 (旧 `maxSteps` 弃用) | | `tools` | 否 | object | `{ "": bool }` 或 glob `"mymcp_*": false` | | `permission` | 否 | object | 覆盖全局权限 (见 02-skills / 05-tools) | | `mode` | 否 | string | — | | `hidden` | 否 | bool | `true` 时从 `@` 补全菜单隐藏 (仅 subagent) | | `color` | 否 | `#RRGGBB` \| 主题色 | UI 颜色: `primary`/`secondary`/`accent`/`success`/`warning`/`error`/`info` | | `disable` | 否 | bool | `true` 禁用 | | `steps` | 否 | int | — | | `options` | 否 | object | 其他键进 options,透传到模型 (如 `reasoningEffort: "high"`) | | `variant` | 否 | string | — | > 未知 top-level 字段 → 静默进 `options` (透传模型)。**不是**抛错。 ## 权限 (重点) 支持值: `"allow"` / `"ask"` / `"deny"`。 **Glob 规则 — 最后匹配优先**: ```yaml permission: bash: "*": ask # 兜底 "git status *": allow # 放行具体 ``` **`permission.task` 控制子代理能调谁**: ```yaml permission: task: "*": deny "orchestrator-*": allow "code-reviewer": ask ``` > `deny` 时,该子代理**从 Task 工具描述中完全移除**,模型看不到它。用户**仍能**用 `@` 直接调。 ## 创建代理的官方命令 ```bash opencode agent create # 交互式: 位置/描述/工具/生成 ``` ## 实战示例 (照搬官方) **文档代理** (`~/.config/opencode/agents/docs-writer.md`): ```markdown --- description: Writes and maintains project documentation mode: subagent tools: bash: false --- You are a technical writer. Create clear, comprehensive documentation. ``` **安全审计代理** (`~/.config/opencode/agents/security-auditor.md`): ```markdown --- description: Performs security audits and identifies vulnerabilities mode: subagent tools: write: false edit: false --- You are a security expert. Focus on: - Input validation vulnerabilities - Authentication and authorization flaws - Data exposure risks - Dependency vulnerabilities - Configuration security issues ``` ## 本仓库现状 - `.opencode/agents/dba.md` — 已存在的 DBA 子代理 (本项目自定义) - `~/.config/opencode/agent/*` — 全局子代理位置 ## 验证清单 (改完跑一遍) 1. frontmatter `description` 非空,`mode` 正确。 2. 工具权限: 不需要的都 `false`,尤其 `bash` / `edit` / `write`。 3. 全局权限 vs 代理权限: 子代理用 `permission:` 块覆盖。 4. **退出并重启 opencode**。 5. 在 UI 用 `@` 试调,或主代理根据 description 自动触发。