第七章:命令别名完整指南
目录
7.1 命令别名概述
什么是命令别名
命令别名是 opencode.jsonc 中 command 字段定义的快捷入口。它本质上是一个”打字更少、意图更清晰”的路由机制——用户在聊天中输入 /命令名,OpenCode 自动匹配到对应的 Agent 并注入预设模板(template),完成意图路由和执行调度。
在 OpenCode 的 TUI 界面中,输入 / 会显示所有可用命令的自动补全列表,用户无需记忆全部命令即可快速选择。
设计理念
本配置中的 27 个命令遵循以下核心理念:
- 减少输入:用
/deep替代”请仔细处理这个复杂任务”,一个斜杠命令完成意图表达和路由 - 统一入口:所有 Agent 能力通过命令别名暴露,用户无需关心内部 Agent 路由逻辑
- 降低学习成本:命令名即意图(
/review= 审查,/commit= 提交),新用户可凭直觉使用 - 技能自动加载:需要特定技能的 Agent 在 template 中自动
Load对应技能,用户无需手动触发 - 模型自动匹配:Pro 模型处理深度推理、Flash 模型处理轻量查询和检索,路由时自动选择最佳模型
- 权限边界清晰:只读 Agent(oracle、reviewer、explore、librarian)的命令不会修改文件,读写 Agent 的命令有明确的修改权限
命令分类
27 个命令按使用场景分为 9 大类:
| 分类 | 命令数 | 典型场景 |
|---|---|---|
| 实现类 | 3 | 写代码、改文件、实现功能 |
| 规划与分析类 | 3 | 做方案、分析问题、讨论决策 |
| 审查类 | 3 | 代码审查、PR 审查、审查修复循环 |
| 搜索与研究类 | 4 | 查文档、搜代码、生成结构图 |
| 规约驱动开发 | 5 | spec-workflow 全生命周期 |
| 前端 | 1 | UI 组件、样式、布局 |
| 质量与清理 | 2 | 死代码清理、代码简化 |
| Git 与发布 | 2 | 提交、发版 |
| 配置与管理 | 4 | 知识沉淀、交接、技能管理、验证规划 |
7.2 命令别名完整列表
7.2.1 实现类命令
实现类命令是日常开发中使用频率最高的命令,处理从轻量修改到重型重构的全部编码工作。
/deep —— 重型实现
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | 无(base agent 能力) |
| 权限 | 读写 |
| template | Handle this task with thoroughness and precision. |
用途:处理复杂的、多文件改动、需要深度推理的实现任务。deep-worker 是本配置中能力最强的执行 Agent,遵循 AGENTS.md 的全部规则:执行而非探索、最小改动、自我验证、证据纪律。
适用场景:
- 新功能实现(涉及 3+ 文件改动)
- 复杂逻辑重构(跨模块的接口变更)
- 需要深度理解业务逻辑的 Bug 修复
- 性能优化涉及算法级改动
- 架构层面的代码调整
使用示例:
/deep 请实现用户认证模块:包含 JWT 签发、中间件校验、refresh token 轮转,需要同时修改 auth.service.ts、auth.middleware.ts、token.service.ts
/deep 把现有的 REST API 数据访问层从直接调用 Prisma 改为 Repository 模式,涉及 15 个 service 文件
注意事项:
- deep-worker 禁止研究(no research),如果任务需要探索代码库,应先用
/explore或/oracle获取上下文 - deep-worker 禁止委托(no delegation),不能将子任务分派给其他 Agent
- 上下文由 orchestrator 提供,如果上下文不足,Agent 会在执行前先读取相关文件
- 提交任务时尽量提供完整的上下文信息(文件路径、改动范围、预期行为),以减少 Agent 的探索开销
/deepwork —— 审查门控分阶段执行
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | deepwork |
| 权限 | 读写 |
| template | Load the deepwork skill and run its phased execution workflow: Plan (write plan artifact), Review Gate, Implement, Verify, Report. Pause at each gate for human approval. Create durable artifacts at each phase. |
用途:对于特别复杂或高风险的任务,通过”审查门控”(review-gated)的方式分阶段执行。每个阶段产出耐久工件(artifact),在关键节点暂停等待人工审批,降低返工风险。
五阶段流程:
- Plan(规划):分析需求,编写 plan artifact(包含技术方案、改动范围、风险点、验证策略)
- Review Gate(审查门):暂停,等待人工审批 plan。审批不通过则回到 Plan 修订
- Implement(实现):按 plan 执行代码改动,保持最小变更范围
- Verify(验证):运行测试、检查调用链、自读全部修改文件
- Report(报告):产出最终报告(改动摘要、验证结果、遗留事项)
适用场景:
- 大规模重构(影响 10+ 文件)
- 涉及多个模块的架构变更
- 修改核心基础设施代码(认证、数据库 schema、配置体系)
- 需要团队达成共识的技术决策实现
- 新人接手不熟悉的模块进行大改动
使用示例:
/deepwork 请把整个项目的日志系统从 console.log 迁移到结构化日志库 pino,涉及大约 40 个文件,需要保持所有日志点的语义不变
/deepwork 将用户表的数据库迁移从手动 SQL 脚本改为 Prisma migration,同时保证生产数据零丢失。需要生成回滚方案
注意事项:
- 每个阶段产出耐久工件后必须等待人工审批才能进入下一阶段
- 如果实现阶段发现 plan 有误,Agent 会暂停请求修订 plan,不会擅自偏离
- 不适合简单任务——简单的单文件改动应该用
/quick,中等复杂度用/deep - 相比
/deep增加了审查门控的开销,但大幅降低了复杂任务的返工概率
/quick —— 快速处理简单任务
| 属性 | 值 |
|---|---|
| 路由 Agent | light-orchestrator |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | 无 |
| 权限 | 读写 |
| template | Handle this task quickly and efficiently. |
用途:处理明确的、低风险的、单文件或小范围的修改任务。light-orchestrator 使用 Flash 模型,速度快、成本低,适合日常高频的轻量操作。
适用场景:
- 修改一个变量名或函数名
- 修复一个 typo 或注释错误
- 调整配置文件中的某个值
- 添加一个简单的参数校验
- 格式化代码或调整 import 顺序
- 单文件内的小范围逻辑调整
使用示例:
/quick 把 config.ts 第 42 行的 timeout 从 3000 改成 5000
/quick 在 user.controller.ts 的 createUser 方法里加一个邮箱格式校验
/quick 修复 src/utils/date.ts 里 formatDate 函数的拼写错误:把 "formated" 改成 "formatted"
注意事项:
- light-orchestrator 同样禁止研究和委托,任务必须明确且自包含
- 如果任务涉及 3 个以上文件或有隐含的跨文件影响,应当使用
/deep - 如果任务需要先探索代码库才能确定改动范围,先用
/explore获取信息再来/quick - Flash 模型推理能力弱于 Pro,复杂逻辑(如算法级优化、架构调整)不要用
/quick
7.2.2 规划与分析类命令
规划与分析类命令用于”思考型”工作——在动手写代码之前,先理清方向、诊断问题、比较方案。
/plan —— 制定技术方案
| 属性 | 值 |
|---|---|
| 路由 Agent | planner |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | 无 |
| 权限 | 读写 |
| template | Create a detailed plan for the following. |
用途:针对复杂需求制定结构化的技术方案,包括架构设计、模块划分、接口定义、变更范围、风险评估和实施步骤。planner 具备读写权限,可以将计划写入文件。
适用场景:
- 新功能的技术方案设计(从需求到实施计划)
- 系统架构变更的评估和规划
- 大范围重构的步骤拆解
- 技术选型的方案对比
- 需要输出文档的设计决策
使用示例:
/plan 设计一个文件上传模块的技术方案。需求:支持分片上传、断点续传、秒传检测,存储后端需兼容 S3 和本地文件系统。输出到 docs/design/upload-module.md
/plan 分析当前项目从 REST API 迁移到 GraphQL 的可行性和分步计划
注意事项:
- planner 聚焦于”做什么”和”为什么”,不负责具体实现
- 制定计划后会等待人工审批(特别是在
/deepwork流程中) - 如果只是讨论方案(不需要输出正式文档),建议用
/consult代替
/oracle —— 深度分析与问题溯源
| 属性 | 值 |
|---|---|
| 路由 Agent | oracle |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | 无(可搭配 diagnose) |
| 权限 | 只读 |
| template | Analyze and find the root cause of the following. |
用途:对代码进行深度分析、根因诊断、问题溯源。oracle 是只读 Agent,不能修改任何文件,专注于理解和分析。当遇到难以定位的 Bug 时,oracle 可以加载 diagnose 技能进行 6 阶段结构化调试。
适用场景:
- 定位难以复现的 Bug 根因
- 分析性能瓶颈的代码级原因
- 理解一段复杂遗留代码的逻辑和意图
- 安全漏洞的代码级分析
- 数据不一致问题的追踪
使用示例:
/oracle 用户反馈订单状态在某些场景下会从"已支付"回退到"待支付",请分析 order.service.ts 中状态机的所有可能路径,找出根因
/oracle 分析 src/engine/renderer.ts 的性能瓶颈,重点关注循环内的内存分配和重复计算
注意事项:
- oracle 是只读 Agent,不会修改任何代码。如果分析后需要修改,请用
/deep并将分析结果作为上下文传递 - oracle 不能做外部搜索(那是 librarian 的职责),专注于在已有代码中寻找答案
- 分析类任务请描述清楚问题现象、复现条件和预期行为,帮助 oracle 缩小分析范围
/consult —— 方案讨论与最佳实践建议
| 属性 | 值 |
|---|---|
| 路由 Agent | consultant |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | 无 |
| 权限 | 读写 |
| template | Provide options and advice for the following. |
用途:提供多角度方案对比、最佳实践建议和技术决策参考。有别于 planner(制定具体计划)和 oracle(分析代码根因),consultant 更像是”技术顾问”——给出选项、对比利弊、推荐方向。
适用场景:
- 技术选型讨论(如”用 Zustand 还是 Redux Toolkit”)
- 架构模式的优缺点对比
- 代码组织方式的讨论
- 最佳实践咨询
- “我应该怎么做”类的问题
使用示例:
/consult 我们的 React 项目状态管理目前混用了 Context 和 props drilling,正在考虑引入状态管理库。请对比 Zustand、Jotai、Redux Toolkit 在 bundle size、学习曲线、TypeScript 支持方面的优劣,给出推荐
/consult 数据库查询性能优化:我们有一个 500 万行的订单表,查询越来越慢。请分析索引策略、分区方案和读写分离三种方案的适用场景和 trade-off
注意事项:
- 如果讨论之后需要制定正式计划,用
/plan承接讨论结论 - consultant 的建议基于通用最佳实践,不包含对当前项目的深度分析(那是 oracle 的职责)
- 如果问题需要查阅外部文档,先用
/search获取上下文,再把结论带给 consultant
7.2.3 审查类命令
审查类命令覆盖代码审查的三种典型场景:本地 diff 审查、审查修复循环、PR 线上审查。
/review —— 多维度代码审查
| 属性 | 值 |
|---|---|
| 路由 Agent | reviewer |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | code-review |
| 权限 | 只读 |
| template | Load the code-review skill. Scope the diff (branch vs base, PR, or the files provided), scale depth to its size, review the dimensions it touches, and report findings by severity — calibrated to this project's threat model. Do not modify code. |
用途:对当前 diff(分支 vs 基准,或指定的 PR/文件集)进行多维度、分严重程度的代码审查。reviewer 加载 code-review 技能,按变更规模自动调整审查深度,覆盖的维度包括但不限于:正确性、安全性、性能、可维护性、一致性、可读性。
审查维度:
- 正确性:逻辑是否有误、边界条件是否覆盖、异常路径是否处理
- 安全性:注入风险、敏感信息暴露、权限检查遗漏
- 性能:不必要的内存分配、N+1 查询、阻塞操作
- 可维护性:命名是否清晰、职责是否单一、是否有隐式依赖
- 一致性:是否遵循项目既有模式、是否违反 AGENTS.md 规则
- 可读性:嵌套深度、变量命名、注释质量
使用示例:
/review 审查当前分支相对于 main 的全部改动
/review 审查 src/services/ 目录下本次改动的所有文件
注意事项:
- reviewer 是只读 Agent,不会修改代码。如需自动修复审查发现的问题,请使用
/review-loop - 如果审查 PR 并需要将结果回帖到 GitHub,请使用
/review-pr - code-review 技能会根据 diff 规模自动调整深度:小 diff 快速扫描关键维度,大 diff 系统性审查全维度
- 严重程度分级会校准到项目威胁模型(如安全问题是 critical,命名问题是 minor)
/review-loop —— 审查→修复循环
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | code-review |
| 权限 | 读写 |
| template | Load the code-review skill and run its review→fix loop on the current diff. |
用途:将审查和修复结合成一个自动化循环——审查发现问题 → 修复问题 → 再次审查确认,直到 diff 干净或达到 5 轮上限。这是保障代码质量的”清扫模式”。
工作流程:
- 审查当前 diff,列出所有发现
- 逐个修复(每次修复后 self-verify)
- 修复完成后重新审查
- 如果发现新问题,回到步骤 2
- 直到审查无发现(或达到 5 轮上限),输出最终报告
适用场景:
- 提交前的最后一次质量检查
- 发现审查报告有多个问题需要一次性清理
- 集成第三方代码后的质量对齐
- 重构后确保代码风格和规范一致性
使用示例:
/review-loop 在提交前对我的改动做一轮清扫,重点检查命名一致性和错误处理
注意事项:
- 循环上限为 5 轮,防止陷入无限修复。5 轮后未解决的问题会在报告中列出
- 每轮只做行为保持的修复——不会改变代码逻辑,只处理命名、格式、注释、死代码等质量问题
- 如果发现需要改动逻辑的深层问题,Agent 会暂停并报告,不会擅自修改
/review-pr —— 审查 PR 并自动回帖
| 属性 | 值 |
|---|---|
| 路由 Agent | reviewer |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | code-review + gh-cli |
| 权限 | 只读 |
| template | Load the code-review and gh-cli skills. Review the specified PR's diff, then post the findings as a single pending GitHub review via gh api repos/{owner}/{repo}/pulls/<n>/reviews (event=COMMENT) with a comments[] array for per-line notes plus a body carrying the severity summary — gh pr review alone cannot place per-line comments. Never auto-approve — leave the verdict to a human. Do not modify code. |
用途:审查指定的 GitHub Pull Request,将审查发现作为完整的 GitHub Review 回帖到 PR 页面。支持逐行评论(per-line comments)定位到具体代码行。
技术细节:
- 使用
gh api直接调用 GitHub Reviews API(而非gh pr review),因为后者不支持逐行评论 - 评论格式为
event=COMMENT(pending review),不会自动批准 - body 携带严重程度汇总,comments 数组包含每条发现对应的文件和行号
适用场景:
- 审查同事提交的 PR
- 自动化 CI 中的代码审查步骤
- 开源项目的 PR triage
使用示例:
/review-pr 审查 PR #42,仓库是 znlgis/my-opencode-deepseek-config
/review-pr 审查当前仓库的 PR #128,重点关注安全相关的改动
注意事项:
- 永远不会自动批准 PR(
Never auto-approve — leave the verdict to a human) - 需要使用已认证的
ghCLI(gh auth status确认登录状态) - 逐行评论需要
gh api权限,确保 token 有reposcope - 如果只是想看审查结果而不回帖到 GitHub,使用
/review即可
7.2.4 搜索与研究类命令
搜索与研究类命令用于”获取信息”——在动手之前搞清楚代码现状、API 接口和外部知识。
/search —— 外部搜索与信息检索
| 属性 | 值 |
|---|---|
| 路由 Agent | librarian |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | 无 |
| 权限 | 只读 |
| template | Research and find information about the following. |
用途:执行外部搜索,查找文档、API 参考、技术文章、最新信息。librarian 使用 Flash 模型,适合快速检索任务——从网页搜索到文档查阅,不修改任何文件。
适用场景:
- 查询某个库的最新 API 用法
- 查找某个错误信息的解决方案
- 研究某个技术概念或模式
- 获取最新版本的变化(changelog、migration guide)
- 查找开源项目的使用示例
使用示例:
/search React 19 的 useOptimistic hook 怎么用?请给出完整示例和 API 签名
/search Prisma v5 到 v6 的迁移指南,特别是 relation 模式的变化
/search 2025 年 Node.js 后端项目的最佳日志方案对比
注意事项:
- librarian 是只读 Agent,仅返回信息,不进行代码改动
- Flash 模型速度快但分析深度有限,如果搜索结果需要深度分析和判断,可以将结果带到
/oracle或/consult - 如果需要核对特定库的 API 签名(编码前验证),用
/docs更精确
/docs —— 编码前核对 API 文档
| 属性 | 值 |
|---|---|
| 路由 Agent | librarian |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | verify-with-docs |
| 权限 | 只读 |
| template | Load the verify-with-docs skill. The task targets a specific or fast-moving library/framework/API. Do NOT answer from memory: identify the exact package + version in use, fetch or consult the current official docs (or a mounted references source), and report the exact, verified API signatures and usage the implementing agent should rely on. Cite source URLs/paths. |
用途:在编码前核对特定库或框架的 API 文档,防止凭记忆写出错误的 API 调用。verify-with-docs 技能的核心原则是”检索优先”(retrieval-first)——必须从官方文档或挂载的 reference 源获取信息,禁止凭记忆回答。
工作流程:
- 识别项目中使用的确切包名和版本(从 package.json 等锁定文件确认)
- 获取该版本的官方文档(或使用
references配置的本地文档源) - 提取准确的 API 签名、参数类型、返回值
- 输出可供实现 Agent 直接使用的验证后信息
- 引用来源 URL 或文件路径
适用场景:
- 使用不熟悉的库 API
- 升级库版本后确认 API 变化
- 快速变化的框架(如 Next.js、React 的最新版本)
- 多版本共存的 API 差异确认
- 怀疑 AI 记忆中的 API 签名可能是旧版本的
使用示例:
/docs 查一下我们项目中使用的 zod v4 的 .pipe() 方法的准确签名和用法
/docs 确认 Next.js 15 的 generateStaticParams 返回值类型是否正确,我们项目用的是 15.2.x
注意事项:
- 与
/search的区别:/search做开放式信息检索,/docs做精确的 API 签名验证 - 如果项目配置了
references(如opencode-docs),Agent 会优先使用本地挂载的文档源 - 输出结果应包含确切的签名和调用示例,可直接交给
/deep或/quick使用
/explore —— 代码库探索与提案前研究
| 属性 | 值 |
|---|---|
| 路由 Agent | explore |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | spec-workflow(explore 动作) |
| 权限 | 只读 |
| template | Load the spec-workflow skill and run its explore action. Research the current codebase, sketch options and trade-offs, surface open questions. This is a no-stakes thinking pass before committing to a proposal — keep findings in chat (or write to openspec/explorations/<topic>.md for persistence). Do not create changes/<change-id>/ yet. |
用途:在做出正式提案之前,对代码库进行无风险的探索性研究。这是 spec-workflow 的第一步——探索现有的代码结构、勾勒可能的技术方案、识别开放问题,但不产生任何正式承诺。
关键原则:
- “no-stakes thinking pass”(无风险思考轮):不创建正式文件,不锁定方向
- 可以使用并行探索(
glob、grep同时多路发射)快速了解代码结构 - 如果需要持久化探索发现,写入
openspec/explorations/<topic>.md,但不创建openspec/changes/<change-id>/
适用场景:
- 接到新需求后,先了解相关模块的现状
- 不确定改动范围时,先探索再决定方向
- 多个候选方案时,先探索各方案的实现难度
- 作为 spec-workflow 中
/propose的前置步骤
使用示例:
/explore 我想给用户模块加 OAuth 登录,先探索一下现有的 auth 相关代码结构和登录流程
/explore 分析一下如果要给所有 API 加 rate limiting,现有的 middleware 架构是怎么组织的,有哪些切入点
注意事项:
- explore 是只读 Agent,不会修改代码
- 如果探索结论非常明确,可以直接
/propose开始 formal proposal - 如果探索发现需要深度分析某个模块的代码逻辑,转用
/oracle - Flash 模型适合快速广度搜索,但如果是复杂逻辑的深度阅读,建议用 Pro 模型的
/oracle
/codemap —— 生成仓库结构图
| 属性 | 值 |
|---|---|
| 路由 Agent | explore |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | codemap |
| 权限 | 只读 |
| template | Load the codemap skill and generate an annotated directory tree for this project. Build the raw tree (depth 3, excluding node_modules/.git/dist/build/.next/coverage), annotate key directories with one-line purpose descriptions, and add quick-reference metadata (language, framework, runtime, build/test commands). Keep the whole map under 200 lines. If .opencode/codemap.md exists and appears fresh, update it rather than overwriting. |
用途:为当前项目生成带注释的层级结构图,用于快速了解项目布局。输出包括目录树(深度 3 层)、关键目录的功能描述、以及项目元数据(语言、框架、构建/测试命令)。
生成内容:
- 目录树:自动排除
node_modules、.git、dist、build、.next、coverage等非源码目录 - 目录注释:每个关键目录一行功能描述
- 项目元数据:语言、框架、运行时环境、构建命令、测试命令
- 整体限制 200 行以内
适用场景:
- 刚 clone 一个新项目,快速了解结构
- 加入新团队时熟悉项目布局
- 在大项目中找到特定功能的代码位置
- 作为团队文档的补充
使用示例:
/codemap 生成当前项目的结构图
注意事项:
- 如果
.opencode/codemap.md已存在且较新,Agent 会增量更新而非全量重建 - codemap 是快速概览工具,不适合深度的模块依赖分析(那是 oracle 的职责)
- 可以配合
/explore使用:先用/codemap了解大局,再用/explore深入特定区域
7.2.5 规约驱动开发命令
这组命令实现了完整的 spec-workflow(规约驱动变更工作流)生命周期,遵循 explore → propose → apply → archive 的标准流程,并支持中途的 update 修订。
/propose —— 起草变更提案
| 属性 | 值 |
|---|---|
| 路由 Agent | planner |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | spec-workflow(propose 动作) |
| 权限 | 读写 |
| template | Load the spec-workflow skill and run its propose action. Research the existing code and any openspec/specs/ first, then scaffold openspec/changes/<change-id>/ with proposal.md, tasks.md, delta specs, and design.md only if warranted. Focus the proposal on WHY and WHAT, not HOW. Do not start implementing — stop after the artifacts are ready for review. |
用途:为一次变更创建正式的规约提案。产出完整的 spec-workflow 工件集:proposal.md(WHY + WHAT)、tasks.md(实施清单)、delta specs(delta 规格说明),以及必要时的 design.md(HOW——仅在复杂变更需要技术设计时创建)。
生成的工件:
openspec/changes/<change-id>/
├── proposal.md # 变更提案:动机、目标、影响范围、成功标准
├── tasks.md # 实施清单:有序的 checkbox 列表,每个任务可独立验证
├── design.md # 技术设计(可选):仅在变更足够复杂时生成
└── specs/ # delta specs:相对于 openspec/specs/ 的增删改
关键原则:
- 聚焦 WHY 和 WHAT,而非 HOW(除非需要
design.md) - 必须先研究现有代码和
openspec/specs/中的已有规格 - 提案完成后即停止——不开始实现
- 等待人工审查批准后才能进入
/apply
适用场景:
- 需要正式记录的变更(功能、重构、架构调整)
- 多人协作时确保方向对齐
- 需要团队 review 才能开始的重要改动
- 变更影响多个模块,需要提前规划
使用示例:
/propose 为用户系统添加 OAuth 2.0 第三方登录支持(Google + GitHub)。变更范围:auth 模块、用户模型、session 管理。change-id: add-oauth-login
注意事项:
/propose之前建议先用/explore了解代码现状- 提案需要人工 review 后才能进入实施阶段
- change-id 建议使用 kebab-case,语义明确(如
add-oauth-login、fix-session-race-condition) - delta specs 使用 ADDED/MODIFIED/REMOVED/RENAMED 标记,归档时会合并到主规格文件
/apply —— 按清单实施变更
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | spec-workflow(apply 动作) |
| 权限 | 读写 |
| template | Load the spec-workflow skill and run its apply action for the requested change under openspec/changes/. Read proposal.md, design.md, and the delta specs, then work tasks.md one unchecked item at a time, marking each - [x] as you finish. Pause and ask if a task is blocked or the design proves wrong (update the artifacts instead of diverging silently). Follow AGENTS.md and verify with any available build/tests. |
用途:按照给定的 spec-workflow 提案,逐项执行 tasks.md 中的实施清单。每次完成一个 checklist 项后标记 - [x],直到全部完成或遇到阻塞。
工作流程:
- 读取
proposal.md、design.md(如有)、delta specs - 从
tasks.md的第一个未完成项开始 - 在当前会话中实施该任务
- 完成后标记
[x],继续下一项 - 如果某个任务被阻塞或 design 被证明有误,暂停并请求人工决策
- 全部完成后,执行验证(构建、测试、自读所有修改文件)
适用场景:
- 审批通过后的提案实施
- 需要严格按照规划执行的复杂变更
- 变更涉及多个步骤且顺序有依赖关系
使用示例:
/apply 按 openspec/changes/add-oauth-login/ 的提案实施
注意事项:
- 必须先有经过审批的提案(
/propose生成),否则没有tasks.md可执行 - 如果实施过程中发现 design 有问题,Agent 会暂停并提议更新 design,不会擅自偏离
- 每个任务完成后都会做 self-verify(遵循 AGENTS.md 规则)
- 如果构建/测试失败,Agent 会暂停并报告
/archive —— 归档已完成变更
| 属性 | 值 |
|---|---|
| 路由 Agent | light-orchestrator |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | spec-workflow(archive 动作) |
| 权限 | 读写 |
| template | Load the spec-workflow skill and run its archive action for the requested completed change. Fold its delta specs into openspec/specs/<capability>/spec.md (apply ADDED/MODIFIED/REMOVED/RENAMED), then move openspec/changes/<change-id>/ to openspec/changes/archive/YYYY-MM-DD-<change-id>/. Confirm openspec/specs/ reflects reality before finishing. |
用途:将已完成的变更归档。将 delta specs 合并到主规格文件,然后把整个变更目录移入存档。
归档步骤:
- 读取
openspec/changes/<change-id>/specs/中的 delta specs - 将 ADDED/MODIFIED/REMOVED/RENAMED 标记的内容合并到
openspec/specs/<capability>/spec.md - 移动变更目录到
openspec/changes/archive/YYYY-MM-DD-<change-id>/ - 确认
openspec/specs/反映当前实际状态
适用场景:
- 变更已合并到 main 分支后
- 变更已部署到生产环境
- 确认不再需要回退到变更前的状态
使用示例:
/archive openspec/changes/add-oauth-login/
注意事项:
- 仅在变更完成且确认无误后执行
- 归档后 delta specs 已合并到主规格,变更目录移入 archive 保留历史
- Flash 模型适合这个轻量级的文件操作任务
/update —— 修订已有提案
| 属性 | 值 |
|---|---|
| 路由 Agent | planner |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | spec-workflow(update 动作) |
| 权限 | 读写 |
| template | Load the spec-workflow skill and run its update action. Read the current proposal/specs/tasks, apply the requested update, and mark changed items. |
用途:在提案已被创建但尚未完成实施时,对提案进行修订。修订可能源于审查反馈、新发现的需求、或实施过程中暴露的设计缺陷。
适用场景:
- 审查反馈要求修改提案
- 需求在实施前发生了变化
- 实施过程中发现提案需要补充边界情况
- 拆分或合并任务项
使用示例:
/update openspec/changes/add-oauth-login/ 根据审查反馈:1) 在 tasks.md 中增加 session 迁移的步骤;2) 更新 delta specs 增加 session 表的字段变更
注意事项:
- 仅适用于尚未
/archive的活跃提案 - 修订后需要重新审批(如果有审批流程的话)
- planner 负责修订规划和设计,不涉及代码实现
7.2.6 前端命令
/ui —— 前端与 UI 工作
| 属性 | 值 |
|---|---|
| 路由 Agent | ui-builder |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | 无 |
| 权限 | 读写 |
| template | Build or modify the UI as requested. |
用途:专用于前端和 UI 相关的任务——组件开发、样式调整、布局设计、交互实现。ui-builder 具备前端领域的专业能力,了解现代前端框架(React、Vue、Next.js 等)和 CSS 方案(Tailwind CSS、CSS Modules、styled-components 等)的最佳实践。
适用场景:
- 创建新的 UI 组件
- 调整页面布局和响应式设计
- 修改样式和主题
- 实现交互动效
- 前端状态管理和数据流
使用示例:
/ui 在 dashboard 页面加一个数据概览卡片组件,包含图表、趋势箭头和加载骨架屏。使用项目已有的 shadcn/ui 组件
/ui 把 settings 页面的表单布局从单列改为双列响应式,移动端自动切换为单列
注意事项:
- 虽然 ui-builder 聚焦前端,但不限于纯 UI——也涉及前端逻辑和状态管理
- 如果任务是前后端都涉及的全栈改动,建议用
/deep而非/ui - ui-builder 使用 Pro 模型,适合需要设计判断的复杂 UI 任务
7.2.7 质量与清理命令
/rmslop —— 清理 AI Slop 和死代码
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | remove-deadcode |
| 权限 | 读写 |
| template | Load the remove-deadcode skill. Review the current diff and remove AI slop: filler/boilerplate comments that restate the code, commented-out code, needless defensive wrappers, dead code that verification proves is unreferenced. Follow AGENTS.md Comment Discipline. Do not change behavior; verify build/tests still pass and report what you removed. |
用途:清理当前改动中的 AI slop(AI 生成的冗余内容)和死代码。remove-deadcode 技能通过 LSP 验证确保每次删除都是安全的——被删除的代码必须确认未被引用。
清理内容:
- Filler comments:仅重述代码内容的注释(
// increment i在i++上面) - Bolerplate docstrings:自动生成的无信息量文档字符串
- Commented-out code:被注释掉的旧代码(git 历史已有记录)
- Needless defensive wrappers:不必要的防御性包装(如对确定非 null 值的 null check)
- Dead code:LSP 验证未被引用的函数、变量、导入
适用场景:
- 完成功能实现后清理开发过程中产生的冗余
- AI 辅助生成代码后的质量检查
- 代码审查后统一清理注释掉的代码
- 定期维护时清理累积的死代码
使用示例:
/rmslop 清理我最新 commit 中的 AI slop,特别注意那些显而易见的注释和注释掉的代码
注意事项:
- 严格遵循 AGENTS.md 的 Comment Discipline:注释解释 WHY 而非 WHAT
- 每次删除前通过 LSP 验证引用关系,保证不误删
- 不改变代码行为——只做清理,不做重构
- 清理后必须验证构建/测试仍然通过
/simplify —— 行为保持的代码简化
| 属性 | 值 |
|---|---|
| 路由 Agent | oracle |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | simplify |
| 权限 | 读写 |
| template | Load the simplify skill. The user wants behavior-preserving simplification of specified code. Read the target file(s), apply the simplification patterns (early returns, inline single-use variables, remove single-caller functions, simplify conditionals), verify each change preserves behavior, and report what was simplified with before/after. Do not change public API signatures or remove error handling. |
用途:对指定代码进行行为保持的简化——减少复杂度而不改变代码行为。simplify 技能提供了结构化的简化模式,每种模式都会验证行为等价性。
简化模式:
- Early returns:用提前返回替代深层嵌套的 if-else
- Inline single-use variables:将只使用一次的变量内联到使用点
- Remove single-caller functions:移除只有一个调用者的函数,将其逻辑合并到调用处
- Simplify conditionals:简化复杂的条件表达式(如德摩根定律、冗余分支)
- Reduce nesting:通过合并守卫条件减少缩进层级
- Remove unnecessary abstraction:移除过度抽象(不必要的接口、包装类)
适用场景:
- 代码审查中发现某段逻辑过于复杂
- 重构遗留代码中的深层嵌套
- 清理过度设计的抽象层
- 提升代码可读性而不改变功能
使用示例:
/simplify src/services/order.service.ts 里的 processRefund 方法,嵌套太深了
/simplify 简化 utils/validation.ts 中的条件逻辑,现在有 5 层嵌套的 if
注意事项:
- 不改变公共 API 签名(函数名、参数、返回值类型不变)
- 不删除错误处理逻辑(只简化表达方式)
- 每次简化后验证行为等价性
- 与
/rmslop的区别:/rmslop删除无用的东西,/simplify重写复杂的东西使其更简洁
7.2.8 Git 与发布命令
/commit —— 生成规范提交信息
| 属性 | 值 |
|---|---|
| 路由 Agent | light-orchestrator |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | conventional-commits |
| 权限 | 读写(仅 stage + commit) |
| template | Load the conventional-commits skill. Here is the current state:\n\nStatus:\n!git status --short\n\nDiff (staged + unstaged):\n!git diff HEAD\n\nStage the relevant changes and write a single Conventional Commits message whose subject explains WHY the change was made from the user's perspective. Do not push. |
用途:分析当前的 git 状态和 diff,生成符合 Conventional Commits 规范的提交信息,并自动执行 git add 和 git commit。
产出格式:
<type>[optional scope]: <description — WHY, from user's perspective>
[optional body — WHAT changed and WHY]
[optional footer(s) — breaking changes, issue references]
支持的 type:feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert
适用场景:
- 每次完成一个逻辑单元的工作后提交
- 需要规范提交信息以配合自动化工具(semantic-release、changesets)
- 不确定如何描述本次改动时让 Agent 生成
使用示例:
/commit
注意事项:
- Agent 会自动运行
git status和git diff HEAD来分析改动 - 只 stage 相关文件,不会把所有改动无脑添加
- 提交信息以 WHY 为主(而非 WHAT),例如
fix: prevent race condition in session renewal而非fix: add mutex - 不会 push——提交后需要手动 push 或另行操作
- Flash 模型足够胜任这个分析→生成的轻量任务
/release —— 准备 Tag 发布
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | git-release |
| 权限 | 读写 |
| template | Load the git-release skill and prepare a tagged release: draft release notes from merged PRs, propose a SemVer bump, and produce the gh release command. |
用途:准备一个完整的带 tag 的版本发布。自动分析自上次 tag 以来的变更,生成发布说明,推断 SemVer 版本号,并输出可复制的 gh release 命令。
发布流程:
- 分析自上次 tag 以来的 commits 和 merged PRs
- 按 Conventional Commits 的类型自动推断 SemVer 版本号(MAJOR/MINOR/PATCH)
- 生成发布说明(release notes):按类型分组(新功能、修复、破坏性变更等)
- 输出完整的
gh release create命令供人工执行 - 不会自动执行发布——最终确认权在用户
适用场景:
- 定期版本发布(如每周/每两周发版)
- 热修复版本的快速发布
- 首个版本的正式发布
使用示例:
/release
/release 这是一个 patch 版本,只包含 3 个 bug fix
注意事项:
- Agent 会提出版本号建议,但用户可以覆盖
- 生成
gh release命令后不会自动执行,需要人工确认 - 确保
ghCLI 已认证且仓库权限正确 - 版本号推断基于 Conventional Commits 的类型(feat→MINOR,fix→PATCH,BREAKING CHANGE→MAJOR)
7.2.9 配置与管理命令
配置与管理命令用于持续改进 OpenCode 配置本身——知识沉淀、会话交接、技能管理、验证规划。
/reflect —— 配置反思与优化
| 属性 | 值 |
|---|---|
| 路由 Agent | oracle |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | reflect |
| 权限 | 读写 |
| template | Load the reflect skill. Review recent sessions and work patterns to identify recurring friction points — places where agents repeatedly waste tokens, make the same mistakes, or produce known anti-patterns. Propose minimal, durable improvements to the opencode config (agents, skills, commands, or AGENTS.md rules). Follow the reflect skill's discipline: one friction → one root cause → one minimal fix. Never propose sweeping rewrites or new models. |
用途:回顾近期的会话记录,识别反复出现的摩擦点,并提出最小化的配置改进建议。reflect 技能遵循严格的纪律:一个摩擦点 → 一个根因 → 一个最小修复。禁止大范围重写或引入新模型。
反思范围:
- Agent prompt 中的冗余或模糊指令
- AGENTS.md 中需要增强或修正的规则
- 技能(skills)中需要调整的流程
- 命令(commands)中不合理的路由
- 模型中不匹配的任务分配
适用场景:
- 在多个会话后,感觉 Agent 反复犯同样的错误
- 团队使用一段时间后,希望配置”进化”以适应项目特点
- 发现某个 Agent 的路由策略不合理(如总是把轻量任务发给 Pro 模型)
- 发现 AGENTS.md 的某条规则经常被误用
使用示例:
/reflect 回顾最近 5 个会话,看看 deep-worker 是不是经常做了应该由 oracle 做的探索性工作,有没有配置层面的改进空间
注意事项:
- 遵循”一个摩擦点 → 一个根因 → 一个最小修复”的纪律
- 不会做大范围重写——如果问题根因需要大幅改动,会先报告并请求确认
- reflector 的输出是改进建议,不是自动执行——需要人工审批后才能应用
/learn —— 沉淀项目知识
| 属性 | 值 |
|---|---|
| 路由 Agent | light-orchestrator |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | 无 |
| 权限 | 读写 |
| template | Review this session for durable, non-obvious facts about this codebase — conventions, gotchas, build/test commands, structural relationships — that would help future sessions. Append only genuinely reusable, long-lived facts (no task-specific or ephemeral notes, no secrets) to the appropriate section of AGENTS.md. Keep entries concise. If nothing qualifies, say so and change nothing. |
用途:回顾当前会话,将持久的、非显而易见的项目事实沉淀到 AGENTS.md 中,帮助未来的会话更好地理解项目。只写入真正可复用的、长期有效的事实——不写入任务特定的、临时的笔记,不写入密钥和敏感信息。
沉淀内容:
- 项目特有的编码约定(如”这个项目所有的 API 错误都用
AppError类包装”) - 非显而易见的”坑”(如”
User.findById在事务外调用会返回过期数据”) - 构建/测试命令的特殊参数(如”测试必须加
--runInBand否则时序依赖会失败”) - 模块间的结构关系(如”
auth.middleware.ts依赖redis.service.ts的 session store”)
不沉淀的内容:
- 临时任务上下文
- 显而易见的事实(如”这是 React 项目”)
- 密钥、token、密码
- 一次性的调试发现
适用场景:
- 在会话中发现了项目特有的隐蔽约定或陷阱
- 新项目启动后逐步建立团队知识库
- 每次重要发现后让 Agent 记录
使用示例:
/learn
注意事项:
- Agent 会判断是否有值得沉淀的内容——如果没有,会明确说明并跳过
- 内容追加到
AGENTS.md的适当章节,保持文件结构清晰 - 条目保持简洁(通常 1-3 行),不展开长篇说明
- 如果 AGENTS.md 中已存在类似内容,Agent 会更新而非重复
/handoff —— 会话交接
| 属性 | 值 |
|---|---|
| 路由 Agent | light-orchestrator |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | handoff |
| 权限 | 读写 |
| template | Load the handoff skill. Compact the current conversation into a handoff document saved to the OS temp directory. Reference existing artifacts (specs, plans, diffs) by path — never copy their content. Include a suggested-skills section for the next session. Redact sensitive information. |
用途:将当前会话压缩为一份交接文档,保存到系统临时目录。下一个会话可以读取这份文档无缝接续工作。文档引用已有工件(specs、plans、diffs)的路径而非复制内容,避免 token 浪费。
交接文档包含:
- 当前任务的上下文和进度
- 已完成的步骤和待办事项
- 关键决策和未解决的问题
- 建议下一个会话加载的技能
- 相关文件路径(引用,不复制内容)
- 脱敏处理后的必要信息
适用场景:
- 长会话接近 token 上限,需要换一个新会话继续
- 想把当前进展交接给同事
- 计划中断工作,后续恢复时快速回到状态
- 使用
/deepwork后,将阶段性成果传递给下一阶段
使用示例:
/handoff
注意事项:
- 文档保存到 OS 临时目录(
/tmp或%TEMP%),路径会在输出中显示 - 已有机密信息自动脱敏
- 引用已有工件路径而非复制内容(路径引用是 token 高效的关键策略)
- 包含
suggested-skills部分,帮助下一个会话快速加载正确的技能
/skill —— 管理 Agent 技能
| 属性 | 值 |
|---|---|
| 路由 Agent | light-orchestrator |
| Agent 模型 | deepseek/deepseek-v4-flash |
| 触发技能 | gh-skill |
| 权限 | 读写 |
| template | Load the gh-skill skill and manage agent skills as requested. |
用途:管理 Agent 技能的完整生命周期——搜索、预览、安装、更新、发布。gh-skill 是 GitHub 官方提供的技能管理工具,支持通过 GitHub 生态发现和分享技能。
支持的操作:
- 搜索:在 GitHub 上搜索可用的 Agent 技能
- 预览:查看某个技能的详细内容和用法
- 安装:安装远程技能到本地
skills/目录 - 更新:更新已安装的技能到最新版本
- 发布:将本地技能发布到 GitHub 供他人使用
适用场景:
- 发现社区贡献的新技能
- 安装适用于特定技术栈的技能(如 React、Python、Rust)
- 更新已有技能到最新版本以获取新功能和修复
- 将自己团队开发的技能分享到社区
使用示例:
/skill search react testing
/skill install github.com/someone/react-testing-skill
/skill update code-review
注意事项:
- 需要 GitHub CLI 认证
- 安装技能前建议先用 preview 查看内容
- 本配置的 18 个技能已覆盖常见场景,安装额外技能前确认是否与现有技能重叠
/verify-plan —— 实现前规划验证路径
| 属性 | 值 |
|---|---|
| 路由 Agent | deep-worker |
| Agent 模型 | deepseek/deepseek-v4-pro |
| 触发技能 | verification-planning |
| 权限 | 读写 |
| template | Load the verification-planning skill. Plan the narrowest verification path before implementing the requested change. |
用途:在开始实现之前,规划最优(最窄)的验证路径。verification-planning 技能帮助确定:需要运行哪些测试、检查哪些调用链、覆盖哪些边界条件——用最小的验证成本保证改动正确性。
规划内容:
- 需要运行的单元测试和集成测试
- 受影响的调用链(callers)清单
- 需要手动验证的边界条件
- 无需验证的安全区域(未被改动的代码路径)
- 推荐的验证顺序(先快后慢,先关键后次要)
适用场景:
- 复杂改动的实现前准备
- 不确定改动影响范围时先规划验证
- 作为
/deepworkPlan 阶段的验证部分 - 团队 code review 前确认验证覆盖
使用示例:
/verify-plan 我准备重构 src/services/payment.ts 的支付流程,先帮我规划一下验证路径,确保不遗漏任何调用链
注意事项:
- 这是实现前的规划步骤,不会执行改动
- 规划结果可以作为
/deep或/deepwork实现时的验证清单 - 如果项目没有测试框架,Agent 会规划手动验证步骤
7.3 命令组合工作流
单个命令解决单个问题,组合命令构成完整工作流。以下是几个经过验证的高效命令组合模式:
开发新功能(规约驱动)
/explore → 探索相关模块现状,了解改动范围和切入点
/propose → 起草正式提案(proposal.md + tasks.md)
/apply → 按 tasks.md 清单逐项实现
/review → 审查改动,输出分级报告
/archive → 归档变更,合并 delta specs 到主规格
在
/review发现问题后,可以插入/review-loop做自动修复循环,然后再/archive。
排查 Bug
/oracle → 分析代码根因,不做任何修改
/deep → 根据 oracle 的分析结论实施修复
/rmslop → 清理修复过程中产生的冗余注释和死代码
/commit → 生成规范的 fix 类型提交信息
如果 Bug 难以复现,在
/oracle之前可以用/search查找类似问题的社区讨论。
代码审查工作流
# 场景A:审查 PR 并回帖到 GitHub
/review-pr → 审查 PR diff、生成 review 报告、逐行评论回帖
# 场景B:本地审查修复循环
/review → 审查本地改动
/review-loop → 自动修复审查发现的问题(最多5轮)
/review-pr不回帖自动审核通过与拒绝(Never auto-approve),最终审核决定由人工控制。
探索与分析(无代码改动)
/explore → 广度探索代码库结构
/oracle → 对关键模块做深度分析
/consult → 基于分析结果讨论方案选项
/plan → 将讨论结论转化为正式计划
/deep → 执行计划
这个流程全程只读直到
/deep,适合需要大量前期调研的复杂需求。
知识沉淀
/learn → 将会话中的重要发现沉淀到 AGENTS.md
/reflect → 回顾多会话的摩擦点,提出配置优化
/commit → 提交 AGENTS.md 的更新
建议定期(如每周)运行一次
/reflect,保持配置持续进化。
版本发布流程
/review → 发布前最后审查
/rmslop → 清理 slop 和死代码
/commit → 提交最终改动(如果还有未提交的)
/release → 准备 tag 发布:生成发布说明 + 推断版本号
7.4 命令设计原则
本配置中的 27 个命令遵循以下设计原则,理解这些原则有助于你自定义命令或评估新命令的合理性:
1. 一个命令只做一件事(Single Responsibility)
每个命令聚焦一个明确的意图,不混合不相关的功能:
/review只审查不修改,/review-loop审查并修复。两者职责分明/deep实现,/deepwork实现加门控。复杂度分层,不合并
2. 命令名反映意图(Intention-Revealing Names)
命令名即用户意图的最短表达,不需要记忆映射关系:
- 看到
/commit就知道是提交,看到/release就知道是发布 - 使用动词(
/apply、/propose)和动名词(/review、/search) - 避免缩写和内部代号(如
/dw、/r1)
3. 自动加载所需技能(Auto Skill Loading)
命令不应要求用户手动加载技能。所有技能依赖在 template 中通过 Load the xxx skill 自动触发:
"/review": {
"agent": "reviewer",
"template": "Load the code-review skill. ..."
}
4. 模型自动匹配(Auto Model Selection)
Agent 绑定了模型,命令通过 Agent 间接绑定模型:
- Pro 模型(deep-worker、planner、oracle、reviewer、consultant、ui-builder)用于推理密集型任务
- Flash 模型(light-orchestrator、explore、librarian)用于检索和轻量执行
路由时无需用户关心模型选择,只要选对命令即可。
5. 权限边界清晰(Clear Permission Boundaries)
只读 Agent 的命令不会意外修改文件:
- 只读命令:
/review、/review-pr、/oracle、/search、/docs、/explore、/codemap - 读写命令:
/deep、/deepwork、/quick、/ui、/apply、/rmslop、/simplify、/commit、/release
6. Template 即指令(Template as Instruction)
命令的 template 字段不是简单的描述文本,而是可执行的指令:
- 包含明确的动作动词(
Load、Scope、Review、Implement) - 包含约束条件(
Do not modify code、Do not push、Never auto-approve) - 可以嵌入 shell 命令(
!git status --short、!git diff HEAD)
7. 命令覆盖但不重复(Coverage Without Overlap)
每个使用场景都有对应命令,但同一场景不提供多个等价命令造成选择困难:
| 场景 | 命令 | 不用的替代 |
|---|---|---|
| 复杂实现 | /deep |
不用 /quick |
| 审查 PR | /review-pr |
不用 /review + 手动发帖 |
| 核对 API | /docs |
不用 /search 开放式搜索 |
7.5 如何自定义命令
你可以根据自己的项目需求,在 opencode.jsonc 的 command 字段中添加、修改或删除命令。
命令的 JSON 结构
每个命令是一个 JSON 对象,包含三个字段:
"<命令名>": {
"description": "<命令的用途说明,显示在 TUI 命令列表中>",
"agent": "<路由到的 Agent 名称>",
"template": "<注入给 Agent 的具体指令模板>"
}
字段说明:
| 字段 | 必填 | 说明 |
|---|---|---|
description |
是 | 在 TUI 中输入 / 时显示的提示文字,帮助用户理解命令用途 |
agent |
是 | 目标 Agent 的名称,必须与 agent 配置块中定义的 Agent 名称一致 |
template |
是 | 注入给 Agent 的指令模板。支持三种特殊语法: 1. Load the xxx skill ——自动加载技能2. !shell command ——执行 shell 命令并将输出注入上下文3. 纯文本指令 ——直接作为 Agent 的初始指令 |
自定义命令示例
示例一:添加一个”代码格式化”命令
"format": {
"description": "运行 Prettier 和 ESLint 自动格式化当前改动的文件",
"agent": "light-orchestrator",
"template": "Run the project's code formatter on the changed files:\n\nChanged files:\n!git diff --name-only HEAD\n\nFor each changed file: run prettier --write, then eslint --fix. Report which files were formatted and any remaining lint errors."
}
示例二:添加一个”生成测试”命令
"test-gen": {
"description": "为当前 diff 中新增或修改的函数生成单元测试",
"agent": "deep-worker",
"template": "Load the test-driven-development skill. Review the current diff for new or modified functions. For each untested public function, write unit tests covering: happy path, edge cases, error handling. Follow the project's existing test patterns and naming conventions."
}
示例三:添加一个”依赖审计”命令
"audit": {
"description": "审计项目依赖:检查过期、已知漏洞和替代方案",
"agent": "librarian",
"template": "Audit the project's dependencies:\n\nPackage.json:\n!cat package.json\n\n1. List all dependencies with their current and latest versions\n2. Check npm audit / GitHub advisory for known vulnerabilities\n3. Flag packages that are unmaintained or have better alternatives\n4. Recommend a prioritized upgrade plan"
}
示例四:修改现有命令的 template
如果觉得某个命令的默认行为不够精确,可以直接修改其 template。例如,让 /commit 使用中文提交信息:
"commit": {
"description": "使用中文 Conventional Commits 格式提交",
"agent": "light-orchestrator",
"template": "Load the conventional-commits skill. Here is the current state:\n\nStatus:\n!git status --short\n\nDiff (staged + unstaged):\n!git diff HEAD\n\nStage the relevant changes and write a single Conventional Commits message in Chinese. The subject should explain WHY from the user's perspective. Body (if needed) should explain WHAT changed. Do not push."
}
命名规范建议
- 使用 kebab-case:
/test-gen而非/testGen或/test_gen - 名称反映动作:动词优先(
/review、/search、/commit),名词用于查询类(/docs、/codemap) - 避免过短的缩写:
/c不清晰,/commit清晰(即使输入多几个字符,TUI 的自动补全也只需/co+ Tab) - 保持与已有命令风格一致:查看本章已有命令的命名,选择相似的风格
- 不要创建”超级命令”:一个命令只做一件事。如果新需求需要多步操作,设计为多个命令的组合而非一个命令
删除命令
直接移除 command 块中对应的条目即可。删除前确认:
- 是否有团队成员依赖该命令
- 该命令的功能是否已被其他命令覆盖
- 删除后是否需要更新团队文档
调试自定义命令
如果自定义命令不工作,按以下步骤排查:
- Agent 名称正确:确认
agent字段的值与agent配置块中定义的名称完全匹配 - Template 语法正确:确认 JSON 中的特殊字符正确转义(
\n、\"等) - 技能存在:如果 template 中有
Load the xxx skill,确认skills/xxx/SKILL.md文件存在 - 重启 OpenCode:修改
opencode.jsonc后需要重启 OpenCode 会话才能生效 - 查看日志:如果命令执行但结果异常,检查 OpenCode 的日志输出
命令速查表
| 命令 | 用途 | Agent | 模型 | 权限 |
|---|---|---|---|---|
/deep |
重型实现 | deep-worker | Pro | 读写 |
/deepwork |
审查门控分阶段执行 | deep-worker | Pro | 读写 |
/quick |
快速处理简单任务 | light-orchestrator | Flash | 读写 |
/ui |
前端/UI 工作 | ui-builder | Pro | 读写 |
/review |
多维度代码审查 | reviewer | Pro | 只读 |
/review-loop |
审查→修复循环 | deep-worker | Pro | 读写 |
/review-pr |
审查 PR 并回帖 | reviewer | Pro | 只读 |
/plan |
制定技术方案 | planner | Pro | 读写 |
/search |
外部搜索查文档 | librarian | Flash | 只读 |
/oracle |
深度分析问题溯源 | oracle | Pro | 只读 |
/consult |
方案讨论最佳实践 | consultant | Pro | 读写 |
/docs |
编码前核对 API 文档 | librarian | Flash | 只读 |
/explore |
提案前代码库探索 | explore | Flash | 只读 |
/codemap |
生成仓库结构图 | explore | Flash | 只读 |
/propose |
起草变更提案 | planner | Pro | 读写 |
/apply |
按清单实施变更 | deep-worker | Pro | 读写 |
/archive |
归档并合并 delta spec | light-orchestrator | Flash | 读写 |
/update |
修订变更提案 | planner | Pro | 读写 |
/rmslop |
清理 AI slop 和死代码 | deep-worker | Pro | 读写 |
/simplify |
行为保持的代码简化 | oracle | Pro | 读写 |
/commit |
生成规范提交信息 | light-orchestrator | Flash | 读写 |
/release |
准备 Tag 发布 | deep-worker | Pro | 读写 |
/reflect |
配置反思与优化 | oracle | Pro | 读写 |
/learn |
沉淀项目知识到 AGENTS.md | light-orchestrator | Flash | 读写 |
/handoff |
会话交接 | light-orchestrator | Flash | 读写 |
/skill |
管理 Agent 技能 | light-orchestrator | Flash | 读写 |
/verify-plan |
实现前规划验证路径 | deep-worker | Pro | 读写 |
下一章:第八章:配置文件完全参考