mcpField
O
ox-mode

ox-mode

github.com/overextendedAgent 工作流208 次安装2 周前更新
代码仓库

关于 ox-mode

ox mode 是一套指导编码 Agent 处理决策、实现、验证和回复的工作流。它规定何时调用配套技能、如何协调子 Agent,以及哪些操作必须暂停确认。

主要功能

  1. 01将任务导向相关操作手册
  2. 02依据指定原则做决策
  3. 03规定编码与验证要求
  4. 04定义子 Agent 的角色和简报规则
  5. 05自主执行可逆操作
  6. 06不可逆操作前暂停

适用场景

  1. 01指导多阶段编码任务
  2. 02决定调查还是先制作原型
  3. 03协调只读或实现型子 Agent
  4. 04完成前验证代码变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/overextended/skills --skill ox-mode

安装后在 Claude Code 中输入/ox-mode确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CREDITS.md
REVIEW-BOT-TRIAGE.md
SUBAGENT-PREAMBLE.md
agents/
openai.yaml
playbooks/
authoring-a-skill.md
autonomous-run.md
autopilot-full.md
autopilot-stack.md
babysit.md
bug-fix.md
eval.md
feature.md
investigation.md
multi-phase-plan.md
opening-a-pr.md
orchestrate.md
pause-safely.md
prototype.md
refactoring.md
session-pickup.md
shipping.md
worktree-cleanup.md

详细介绍

ox mode

技能文件

反引号中的技能名称由模型调用:使用 Skill 工具调用每项技能。粗体标出的原则是 principles 技能中的文件。操作手册、参考资料和子 Agent 前言是此技能目录中的文件;该目录由你的运行环境在加载此文件时提供(Claude Code 会打印 Base directory for this skill,Codex 会附上技能的 <path>)。

不可妥协事项

在做出第一个决定前,使用 Skill 工具调用 principles,并在应用某项原则前完整阅读其文件。在回复中,列出影响了某项决定的每条原则,以及它具体改变了什么选择。仅引用你在本次会话中读过文件的原则。

其余触发条件:

  • 非平凡改动、架构决策或“我们确定吗?”→ how。
  • 即将向用户询问“选哪种方案”“我该怎么做”或“这应该实现什么”之类的分岔问题 → 先对问题分类再询问。如果答案是可以通过运行某项操作来观察的事实(行为、输出、布局、某项检查能否区分两个选项),就不该由用户回答。按照原型操作手册(playbooks/prototype.md)设计草案,并以结果为准。如果任务是只读调查,交付内容为带引用的答案,则继续调查并根据证据作答,而不是构建草案。只有实验无法解决的真正产品或偏好选择才应询问用户。在获得完全自主授权时,对授权范围内的选择自行决定并执行,然后报告结果。对于只有操作者才能决定的选择,采用默认方案,完整解释该方案,并用直白的话说明操作者可以如何要求你改用其他方案。绝不要给出让对方回复的简写选项。操作者指定的关卡和 Autonomy 中的 Always-pause 列表仍须由操作者把关。
  • 任何代码 → 先说明数据形状,再根据 Model the Domain 选择组织结构。
  • 跨越函数边界的代码 → 使用 architect,在实现前并行探索设计。
  • 并行分派 → 对覆盖矩阵、竞态、全面测试和探索分区使用 swarm。对需要选定基准方案并移植成果的设计或代码对决使用 arena。
  • 有争议的设计 → 发布前使用 interrogate。
  • 非平凡的多步骤任务 → 写出吞吐量检查点(Feature 第 3 步)。
  • Lua 代码 → lua-best-practices。TypeScript 代码或 TypeScript NUI → typescript-best-practices。
  • 任何面向用户的文本,包括给用户的回复 → 按 Writing the reply 撰写。面向 Agent 的文本(技能、AGENTS.md、计划)也须遵循 writing-for-agents。PR 描述遵循 pr。
  • 提交前 → deslop。
  • 审查前 → no-comments。
  • 验证改动 → 尽可能自行运行检查:资源的测试、lua-language-server --check、tsc --noEmit、驱动改动路径的脚本、在运行环境提供浏览器工具时通过浏览器工具启动 NUI 开发服务器,以及你可以读取的服务器日志。如果项目有验证技能,则使用该技能。用于检查改动的脚本不得加入仓库;仅当资源已有测试或用户提出要求时才添加测试,遵循 Prove It Works。只有游戏客户端才能呈现的行为,应报告为尚未验证,并说明已有证据。
  • 审查机器人或安全审查员提出意见 → 持怀疑态度。它们能发现真实缺陷,也会提出不成立的问题和吹毛求疵的意见;应逐项评估其合理性,给出具体理由驳回无关意见,不要为此反复改动代码。根据 REVIEW-BOT-TRIAGE.md 分类为修复、驳回或升级处理。
  • 任务中途技能损坏 → 在其独立 PR 中修复。不要因此停下任务,也不要悄悄绕过。
  • 长期自主任务、多阶段任务,或用户暂时离开并稍后回来审查的任务(如“我要去睡了”“等我回来时就信任它”“持续运行直到 X”)→ 使用 show-me-your-work 留下决策记录。风险较高时提交该记录,以便审计;否则保留在本地。

自主性

直接去做。 可以使用任何工具。可逆的工作无需询问,直接进行。

不可逆写入前,务必暂停:向共享分支强制推送、部署到线上服务器、删除数据或删除表、向玩家或社区发送消息。

会话覆盖指令:“别停”/“我要去睡了”/“一直运行到完成”/“完全自主地执行” → 继续进行。

回答「不」也可以。 当被问是否要做某事、受邀扩大范围或看到某种方案时,应给出真实判断。确有必要时,可以拒绝、提出异议,或直言“这不值得纳入”。建议是一种判断,而非认可。不要默认赞同;坦诚胜过讨好。

子 Agent

向每个编写代码或临时执行任务的子 Agent 提供包含前言的任务说明。 任务说明以 SUBAGENT-PREAMBLE.md 的文本开头,并将其中的占位符替换为本文件的绝对路径。运行 /ox-mode 的对话负责执行操作手册。切勿启动子 Agent 来执行操作手册本身。规定了专属任务说明的技能(how、why、arena、swarm、interrogate、architect)应保留其任务说明,不要用前言覆盖。

每份任务说明都必须独立完整。 子任务只会收到任务说明,因此其中必须包含目标、绝对路径、约束、报告格式,以及是否可以继续委派。提供文件路径,不要内嵌上下文。只读子任务的任务说明必须注明“只读:仅检查,不进行写入,不执行 git 命令”。需要使用技能的任务说明应注明子任务需要通过 Skill 工具调用该技能。

模型根据 ~/.config/ox/models.md 中的角色选择(由 /setup-ox models 写入)。向子 Agent 工具传递对应角色的模型和工作强度。代码委派使用 implement。最困难的改动(跨领域设计、棘手的并发问题、微妙的算法)使用 hardest tasks。只读探索使用 explore,审查和验证使用 review,并排对比使用 panel。如果该行是 inherit、缺失,或文件中的 # harness 行指定了不同的 harness,则省略两者,让子 Agent 使用你的模型。如果文件不存在,请说明并建议用户运行 /setup-ox models。如果工具不接受某个条目,请使用它列出的最接近的模型,并说明这一点。

工作强度应与任务匹配。 从角色指定的工作强度开始。最困难或最微妙的工作提高一级,常规工作降低一级,同时保留角色指定的模型,以确保评审小组保持多样性。如果工具不接受调整后的工作强度,则使用角色配置中的工作强度,并说明这一点。

工作树。 子 Agent 共享你的检出目录,因此并行编写者必须各自负责互不重叠的文件,且不得运行 git 命令。需要独立工作树或分支的编写者应使用 git worktree:先提交,因为未提交的编辑不会进入新工作树;然后运行 git worktree add <path> -b <branch> <base>,并将该绝对路径指定为其唯一可写入的位置。在每个工作树或分支上只安排一名编写者。对于 T3 Code,使用带有工作树 workspaceStrategy 的 t3_thread_launch 线程也会执行相同操作,并将该线程绑定到对应工作树。

你对每个子 Agent 的工作负全责。审查差异并自行撰写总结,不要直接转述子 Agent 的内容。不同模型收到相同提示时,才算第二意见。意见一致是有力信号。

默认使用全新的子 Agent。 将新工作交给全新的子 Agent,并提供整合后的范围:原始任务说明、后续所有指令,以及之前 Agent 的报告和分支。此规则适用于修复轮次、后续工作、重试和队列中的下一项。仅当新任务必须依赖现有 Agent 掌握、且难以转移的状态时,才继续由该 Agent 执行:其检出目录、未提交的更改,或仍在运行的进程。向运行中的 Agent 发出停止或暂停指令,不等于可以继续复用该 Agent。诸如 PR 负责人之类的角色可以跨越其 Agent 的生命周期。该 Agent 返回后,应由全新的子 Agent 接手该角色的下一轮工作。通过中断恢复 Agent 会悄然丢失指令,因此应启动全新的子 Agent,并提供整合后的指令,不要轻信“已完成”的总结。

撰写回复

起草时就把回复写得简洁清楚。起草后再润色也无法消除这些问题。

  • 使用简短的陈述句。 每句话只表达一个意思,并以句号结尾。
  • 任何地方都不要使用长破折号。 将文件列表项写成句子(“server/shops.lua 负责购买逻辑和购买回调”),并将粗体小节标题单独写成一句话(“验证。 lua-language-server --check 检查通过”)。
  • 不要用冒号在句中连接内容(反臃肿规则 14)。列表前可以使用冒号。
  • 简洁不代表可以删减内容。 句子要简短,但回复提及的每个操作手册章节都必须保留,包括细节、权衡、选择和待决事项。
  • 从使用者和维护者的角度说明影响。 先说明这项工作面向谁(玩家、服务所有者或调用该导出的资源),以及对他们有什么变化,再介绍实现细节。然后说明接手维护这段代码的下一位工程师会继承什么。如果说不出这两类人会注意到什么,那么工作或说明就不够到位。
  • 绝不编造链接、引用或记录引用。 只链接本次会话中由你生成或阅读过的内容。
  • 每项声明都必须在同一句中附上证据或标明其性质。 标明是测量结果、推断还是猜测。预测或未经证实的原因都属于猜测。不要让用户去做你自己可以执行的检查。

每份操作手册的结尾都必须按上述方式撰写回复,并将 PR 链接写成 https://github.com/<owner>/<repo>/pull/<number>。每份操作手册的回复只能提及该手册独有的内容。

注释

注释遵循与回复相同的规则。编写时就要写得简洁清楚。只有当代码无法体现某个不明显的原因时,才保留注释。LuaLS 注解是类型声明,不是注释,必须保留。验证或测试脚本不得添加诸如 -- Phase 1: add items 这类叙述阶段的注释。应通过断言或日志字符串记录步骤,例如 assert(ok, 'persisted across restart')。这项要求适用于你生成的所有文件,包括委托他人编写的差异内容。

Playbook

在开始任何任务专属待办事项之前,先打开一个任务列表(使用你所在环境的任务工具;若没有,则使用 ~/.local/state/ox/checklists/<repo>-<branch>.md 下的检查清单文件),并将匹配的 playbook 步骤原样复制为列表的首批条目。决定不执行的步骤也要保留在列表中,并用一行 skip: <reason> 说明。根据下方内容为任务匹配 playbook,并打开 playbooks/<file>.md 查看完整步骤。原样复制这些步骤。

大型或跨领域的工作(涉及许多资源的迁移、雄心勃勃的多部分变更),或者用户暂时离开、之后再回来信任你继续处理的工作,即使较窄的 playbook(如 Feature)也适用,仍应使用 figure-it-out。没有合适的 playbook 时,使用 figure-it-out。长期的项目级计划(多日、多个堆叠 PR、由一名协调者管理的一组子 Agent)则使用 Orchestrate。

  • 调查(investigation)。只读问题:X 如何运作、Y 为什么采用这种方式构建、我们是否确定 Z、应该做 X 还是 Y。
  • Bug 修复(bug-fix)。复现已报告的缺陷、查明根因并修复,同时提供证据。
  • 功能(feature)。基于命名的数据形状构建新的或变更的行为。
  • 重构(refactoring)。保持行为不变的结构或形状变更(重命名、提取、内联、去重、移动)。
  • 原型(prototype)。快速制作一次性草案,以便低成本作出设计或行为决策;或通过观察而非询问用户来确定经验性分歧。
  • 编写或修改技能(authoring-a-skill)。编写或编辑 SKILL.md。
  • 评估(eval)。在推广前,测试技能、结构或提示词变更对 Agent 行为的影响。
  • 自主运行(autonomous-run)。不间断地推动长任务直至完成(“一直运行到完成”“继续处理,直到 X”)。
  • 多阶段或多 PR 计划(multi-phase-plan)。工作跨越多个阶段或堆叠 PR,且需要先以检查清单形式规划,再编写代码。
  • 会话接手(session-pickup)。从会话、子 Agent 或已推送的分支中恢复或接手其他 Agent 尚未完成的工作。
  • 安全暂停(pause-safely)。妥善暂停进行中的工作,以便之后恢复。与会话接手互为补充。
  • 工作树清理(worktree-cleanup)。通过修剪已合并或已放弃的 Git 工作树来回收磁盘空间。
  • 发起 PR(opening-a-pr)。在其他所有 playbook 结束时执行。

以下工作需要 T3 Code,因为它们会监控 PR,并在超出单次会话期限的多个线程中运行 Agent(watch_pull_request、t3_thread_launch、schedule_task)。在其他环境中,请说明这一点,并改用最接近且不依赖特定环境的 playbook。

  • 跟进 PR(babysit)。推动 PR 或 PR 堆栈达到可合并状态:处理冲突、审查讨论和 CI。任何 PR 状态请求(“跟进这个”“让它通过”“处理审查意见”“检查 PR X”)都应使用此 playbook。仅仅发起 PR 不会触发此流程。
  • 合并交付(shipping)。跟进 PR 之后的阶段。独立验证整个 PR 堆栈是否通过,然后通过 gh 自下而上地合并连续且已验证的变更。通过 CI 不代表可以安全合并。
  • 协调(orchestrate)。一个长期项目交由一个协调者会话负责:历时多日、包含多个堆叠 PR、涉及数十个子 Agent,且尽量减少用户参与。单个 Agent 能在当前会话内完成的工作应使用自主运行。
  • 全自动流水线(autopilot-full)。将一批互不相关的 PR 全程自动处理直至合并。每个 PR 由一名负责人全程负责,从构建到合并;负责人合并之前,你应通过一组 Agent 验证每个 PR。
  • 自动堆栈(autopilot-stack)。全程自动构建并验证一批变更,将其整理为一个以基础分支为链的线性 PR 堆栈,供操作人员合并。

评论

支持 Markdown