5.1 Agents代理系统

Agents(代理)是OpenCode的核心概念,它们是具有特定角色和能力的AI助手。通过配置不同的代理,可以针对不同任务优化AI的行为。

什么是Agents

OpenCode采用多代理架构,包含两类代理:

主代理(Primary Agents)

  • Build - 默认的主代理,用于代码构建、编辑和执行任务
  • Plan - 规划代理,用于任务规划和架构设计,不直接修改代码

子代理(Sub Agents)

  • General - 通用代理,适合一般性任务
  • Explore - 探索代理,专注于代码库探索和理解
代理调用方式
主代理可以通过 /agent <name> 命令切换,子代理由主代理根据任务需要自动调用。

内置代理介绍

Build代理

默认的主代理,具有完整的工具访问权限:

  • 可以读取、编辑、创建文件
  • 可以执行shell命令
  • 可以搜索代码库
  • 适合实际的开发任务

Plan代理

规划代理,只有只读权限:

  • 只能读取文件和搜索代码
  • 不能修改文件或执行命令
  • 适合架构设计和任务规划
  • 输出详细的实施计划

Explore代理

代码探索专用:

  • 专注于理解代码结构
  • 分析依赖关系
  • 提供代码解释

代理配置方法

代理可以通过两种方式配置:JSON配置文件或Markdown文件。

JSON配置

opencode.json 中配置:

{
  "agent": {
    "myagent": {
      "description": "我的自定义代理",
      "mode": "primary",
      "temperature": 0.7,
      "maxSteps": 100,
      "tools": ["read", "edit", "bash"],
      "permission": {
        "bash": "ask"
      },
      "prompt": "你是一个专注于代码审查的AI助手...",
      "model": "claude-sonnet-4-20250514"
    }
  }
}

Markdown配置

创建 AGENT.md 文件:

---
description: 代码审查专家
mode: primary
temperature: 0.5
maxSteps: 50
tools:
  - read
  - grep
  - glob
permission:
  bash: deny
model: claude-sonnet-4-20250514
---

# 代码审查代理

你是一个专业的代码审查专家。

## 职责

- 检查代码质量
- 发现潜在问题
- 提供改进建议

## 注意事项

- 关注可读性和可维护性
- 检查安全漏洞
- 验证最佳实践

配置选项详解

选项类型说明
descriptionstring代理的简短描述,在代理列表中显示
modestring代理模式:primary(主代理)或 sub(子代理)
temperaturenumber生成温度,0-2之间,越高越有创造性
maxStepsnumber最大执行步骤数,防止无限循环
toolsarray可用工具列表,如 ["read", "edit", "bash"]
permissionobject工具权限配置,覆盖全局设置
promptstring系统提示词,定义代理行为
modelstring使用的模型,覆盖默认模型

创建自定义代理

示例1:安全审计代理

{
  "agent": {
    "security": {
      "description": "安全漏洞检测",
      "mode": "primary",
      "temperature": 0.3,
      "maxSteps": 200,
      "tools": ["read", "grep", "glob", "list"],
      "permission": {
        "bash": "deny",
        "edit": "deny",
        "write": "deny"
      },
      "prompt": "你是安全审计专家,专注于发现代码中的安全漏洞..."
    }
  }
}

示例2:文档生成代理

{
  "agent": {
    "docs": {
      "description": "文档生成助手",
      "mode": "primary",
      "temperature": 0.7,
      "maxSteps": 100,
      "tools": ["read", "write", "glob"],
      "permission": {
        "bash": "deny"
      },
      "prompt": "你是技术文档专家,帮助生成清晰的API文档和README..."
    }
  }
}

示例3:测试生成代理

{
  "agent": {
    "test": {
      "description": "测试用例生成",
      "mode": "primary",
      "temperature": 0.5,
      "maxSteps": 150,
      "tools": ["read", "write", "edit", "bash", "grep"],
      "permission": {
        "bash": "ask"
      },
      "prompt": "你是测试工程师,专注于生成全面的单元测试和集成测试..."
    }
  }
}

切换代理

使用斜杠命令切换主代理:

# 切换到Plan代理
/agent plan

# 切换到自定义代理
/agent security

# 切换回Build代理
/agent build
注意
切换代理会保持当前会话,但代理的行为和权限会改变。确保在切换前保存重要上下文。

代理继承

自定义代理可以基于内置代理进行扩展,只需覆盖需要修改的选项:

{
  "agent": {
    "careful-build": {
      "description": "谨慎的构建代理",
      "mode": "primary",
      "permission": {
        "bash": "ask",
        "edit": "ask",
        "write": "ask"
      }
    }
  }
}

下一步

了解如何通过Rules配置文件来定义项目规则和AI行为指南。