~/content/agent-模式

Agent 模式

让 OpenCode 自主处理复杂的多步骤任务

last_updated: "2025-01-19"

##什么是 Agent 模式?

Agent 模式是 OpenCode 的自主执行功能,允许 AI:

  • 无需手动确认即可执行多个步骤
  • 独立读取、写入和修改文件
  • 运行 shell 命令并分析输出
  • 根据上下文和结果做出决策

此模式非常适合需要多个操作的复杂任务。

##启用 Agent 模式

###会话级别激活

使用 agent 模式启动 OpenCode:

bash
opencode --agent

或在会话期间启用:

bash
> /agent on
Agent 模式已启用。我现在可以自主执行多步骤任务。

###配置文件

在配置中默认启用 agent 模式:

bash
# ~/.config/opencode/config.yaml
agent:
  enabled: true
  require_confirmation: false
  max_steps: 50

##Agent 模式如何工作

###逐步执行

当你给 Agent 模式一个任务时,OpenCode 会:

  1. 规划 - 创建完成任务的策略
  2. 执行 - 自主运行每个步骤
  3. 适应 - 根据结果调整计划
  4. 报告 - 总结完成的工作

###示例:设置项目

bash
> 创建一个带有 TypeScript、ESLint 和 Prettier 的新 React 项目

Agent 模式将:

bash
步骤 1/6: 使用 Vite 创建 React 项目...
> npm create vite@latest my-app -- --template react-ts
✓ 项目已创建

步骤 2/6: 安装依赖...
> cd my-app && npm install
✓ 依赖已安装

步骤 3/6: 添加 ESLint...
> npm install -D eslint @typescript-eslint/parser
✓ ESLint 已安装

步骤 4/6: 配置 ESLint...
创建: .eslintrc.cjs
✓ ESLint 已配置

步骤 5/6: 添加 Prettier...
> npm install -D prettier eslint-config-prettier
✓ Prettier 已安装

步骤 6/6: 创建 Prettier 配置...
创建: .prettierrc
✓ 设置完成!

摘要:
- 创建了 React + TypeScript 项目
- 配置了带有 TypeScript 支持的 ESLint
- 添加了与 ESLint 集成的 Prettier

##安全功能

###确认提示

对于可能危险的操作,Agent 模式会请求确认:

bash
Agent 想要执行:
> rm -rf node_modules && npm install

这将删除并重新安装所有依赖。
继续?[y/N]

###沙箱机制

Agent 模式在安全边界内运行:

  • 无法修改项目目录之外的文件
  • 无法执行需要 root 权限的命令
  • 网络操作受限
  • 最大执行步骤数限制以防止无限循环

###撤销支持

所有更改都可以撤销:

bash
> /undo
正在撤销上一个 agent 操作...
✓ 5 个文件已恢复到之前的状态

##最佳使用场景

###项目设置

bash
> 使用 Express、TypeScript、Jest 和 Docker 设置 Node.js API 项目

###重构

bash
> 将 src/components 中的所有类组件转换为使用 hooks 的函数组件

###调试

bash
> 查找并修复应用程序中的内存泄漏

###测试

bash
> 为 auth 模块编写全面的测试,目标覆盖率 90%

###代码迁移

bash
> 将 utils/ 目录从 JavaScript 迁移到 TypeScript

##Agent 模式命令

| 命令 | 描述 | |------|------| | /agent on | 启用 agent 模式 | | /agent off | 禁用 agent 模式 | | /agent status | 显示当前 agent 设置 | | /agent pause | 暂停执行 | | /agent resume | 恢复执行 | | /agent stop | 停止当前操作 |

##配置选项

bash
agent:
  # 启用/禁用 agent 模式
  enabled: true

  # 文件修改需要确认
  require_confirmation: false

  # shell 命令需要确认
  require_shell_confirmation: true

  # 每个任务的最大步骤数
  max_steps: 50

  # 每步超时时间(秒)
  step_timeout: 60

  # 允许的目录(相对于项目根目录)
  allowed_paths:
    - src/
    - tests/
    - config/

  # 被阻止的命令
  blocked_commands:
    - rm -rf /
    - sudo
    - shutdown

##Agent 模式技巧

###清晰的指令

明确说明你想要什么:

❌ "设置测试" ✅ "设置带有 TypeScript 支持的 Jest,添加覆盖率报告,并创建示例测试文件"

###设置边界

定义更改的范围:

bash
> 仅重构 src/services/ 中的文件,将 promises 改为 async/await

###审查结果

agent 操作后,审查更改:

bash
> /diff

这将显示 agent 会话期间所做的所有修改。

###使用检查点

对于大型操作,使用检查点:

bash
> 每完成一个主要步骤后创建一个 git 提交

##故障排除

###Agent 卡住

如果 agent 似乎在循环:

bash
> /agent stop

然后提供更具体的指令。

###意外更改

如果 agent 做出了不想要的更改:

bash
> /undo

或使用 git 撤销:

bash
git checkout -- .

###权限错误

确保 agent 具有适当的权限:

bash
> /agent paths add ./new-directory

##下一步

了解更多:

Comments (Coming Soon)

Configure Giscus in environment variables to enable comments.