OPEN SOURCE · MIT LICENSE · v0.2.20+

AI 写代码,
团队审计每一次变更。

8 阶段门禁 · 子Agent 对抗验证 · PreToolUse 钩子 · 多工具共存 · Route 分级。 给 Claude Code、OpenCode、Cursor 与 Codex 装上同一套规范、审计与交付流程。

本地运行无 API KeyNode.js 20+多工具共存PreToolUse 钩子
~/workspace/todo-app LIVE PIPELINE · 07 / 07
$npx opsx-dev-pipeline init --tool claude --stack backend --yes
Pipeline complete · 2 blocked · 2 fixed · 0 bypassed
WHYWHATHOWREVIEWSHIP

01 / THE PROBLEM

AI Agent 越来越自主,
但你管不了它每一步怎么决策。

速度前所未有的快,问题也跟着前所未有的多:决策链断裂、敏感文件漏网、规则形同虚设……下面八条是团队最常踩到的坑。

01

Agent 自主失控

Agent 自己写代码、调试、部署,决策速度远超人类 review 能力。

02

交互黑箱

Agent 之间的交互你根本看不到,不知道它们做了什么决定。

03

Review 变成猜测

变更没有 proposal,reviewer 只能从代码 diff 猜意图。

04

决策链断裂

三个月前的变更没有一条完整记录,为什么这样写没人知道。

05

敏感文件漏网

Agent 把 .env 提交了,安全扫描没拦住,规则对 Agent 不起作用。

06

规则形同虚设

"下次设个规则"→ 下次换了个 Agent,规则没用上。口头约定无法规模化。

07

工具碎片化

团队一半人用 Claude Code、一半用 Cursor,脚本、门禁、命名约定全部割裂。

08

危险命令被默许

Agent 顺手 rm -rf、push --force、chmod 777——prompt 写了也拦不住。

AI AGENT 失控快,但不可控
OPSX PIPELINE速度可以被验证

02 / HOW IT WORKS

8 个阶段,一条流水线。
从一句需求到可信交付。

每一步都有状态记录,每个关键节点都由你确认。中断后从断点恢复,不是从头开始。

真实场景演示

给 Todo 应用添加 dueDate 字段

PHASE 0 / Preflight

预检

确认 OpenSpec、Git、Manifest 与 Route 选择均可用。

状态写入完成,允许进入下一阶段
pipeline / add-todo-due-date

$ node preflight.mjs --json

passopenspec 1.7+

passgit repository clean

doneroute: standard

03 / CORE POWER

统一团队的标准,
追溯每一次变更的完整身份。

可持久化状态机把团队规范变成每次变更都必须经过的工程事实。创建者、机器指纹、需求关联、阶段耗时——完整身份链永久可追溯。

pipeline-state.jsonSaved
{
  "phase": 4,
  "gate": "tests",
  "status": "passed",
  "tools": ["claude", "opencode"]
}
01

门禁校验

测试未通过,状态机拒绝进入归档。

02

状态持久化

流程中断后,精确回到上一个决策点。

03

原子写入

临时文件加 rename,崩溃不留下半份状态。

04

重试上限

三轮仍未通过则暂停,主动呼叫人工介入。

05

决策审计

跳过、合并策略与关键确认永久可追溯。

06

事实校验

恢复时交叉核对 Git、文件系统与 OpenSpec。

07

身份追溯

git config + 机器指纹 + 时间戳 —— 完整身份链。

08

阶段耗时

每个 Phase 的开始/结束时间精确记录,定位瓶颈。

09

需求关联

关联 JIRA/外部需求 ID,代码变更有业务上下文。

010

混合执行

独立命令与 pipeline 混合使用,状态自动对齐。

011

并发控制

多 Agent 操作时乐观锁检测冲突,拒绝覆盖。

012

多工具追踪

manifest.tools 记录每个工具的资产归属,sync/upgrade 逐个刷新。

这不是 AI 的"建议"

这是工程的"验证"

04 / ADVERSARIAL REVIEW

AI 写的代码,
由另一个 AI 独立审查。

AI 写代码很快,但它审查自己时有天然的确认偏差。子Agent 对抗验证——独立上下文、盲审、结构化输出,让 AI 互相挑战。

盲审Blind Review

子Agent 只收到 raw diff + 项目规范原文,不收到主Agent 的任何评价。

独立身份Independent Identity

提示词明确 'You did NOT write this code. The author is someone else.'

结构化输出Structured Output

子Agent 返回 JSON findings,主Agent 可以验证但不能软处理或删除。

两种审查策略

策略 A(默认)— 单Agent 综合审查

主Agent 写代码 → 1 个子Agent 盲审(正确性/安全/性能/可维护性/规范一致性)→ 有争议 → 升级到第二个独立子Agent 裁决 → 两个子Agent 意见一致 → 按有问题处理,主Agent 不得推翻

策略 B(高风险触发)— 3Agent 并行审查

认证/授权/支付/敏感数据/加密领域 → 3 个子Agent 并行:安全审计 + 正确性审查 + 规范审查 → 投票机制:≥2 票认为有问题 → 按有问题处理

子Agent 发现 finding主Agent 验证
可自动验证 → 读代码确认事实
需判断 → 升级到第二个子Agent

两个子Agent 一致 → 按有问题处理,主Agent 不得推翻

两个子Agent 不一致 → 标记为"需人工判断"

05 / SPEC-DRIVEN

先对齐"做什么",
再让 AI 决定"怎么做"。

规范是 AI 与人类之间的合同。AI 按合同交付,你按合同验收,分歧在写代码前就被看见。

比较项Prompt-Driven Spec-Driven
输入一段话proposal + spec + design + tasks
AI 理解"我觉得你想要……""根据 spec 第 3 条……"
验证肉眼对比openspec validate 自动校验
追溯Prompt 淹没在聊天里完整制品链永久存档
恢复重新描述一遍从 archived change 继续

DELTA SPECS

只记录这次改变了什么。

新增、修改、移除都有明确语义;归档时自动合入主规范,文档永远与代码同步。

## ADDED Requirements
### Requirement: Todo 支持到期日

## MODIFIED Requirements
### Requirement: Todo 创建接口

## REMOVED Requirements
### Requirement: 旧版导出接口

06 / AI TOOLS

4 款 AI 工具,
统一门禁,统一资产归属。

Claude Code 与 OpenCode 享受 PreToolUse 钩子自动注入;Cursor 与 Codex 按文档手动接入。一套模板、一致的门禁逻辑、各自的原生体验。

01推荐

Claude Code

Skill 原生集成,Agent 架构天然支持独立子Agent 对抗验证,PreToolUse 钩子自动写入 settings.json。

钩子自动注入
02AUTO HOOKS

OpenCode

与 Claude Code 同级的 4 号工具适配器,PreToolUse 钩子由 opsx 自动注入 opencode.json。

钩子自动注入
03MANUAL

Cursor

按需加载项目规则,不打断日常编码;hooks.json 由你按文档手写一份。

钩子按文档手动接入
04MANUAL

Codex

完整 agent 配置,通过 prompt 入口一键启动;Codex hook 仍属 feature flag,按文档手动接入。

钩子按文档手动接入

内置 5 套 tech-stack 模板

  • backendjava-spring-bootJava 17+ / Spring Boot 3.x / Maven+Gradle
  • backendpython-fastapiPython 3.10+ / FastAPI / Pydantic / SQLAlchemy / pytest / Ruff / mypy
  • frontendreact-viteReact 18+ / TypeScript / Vite / Vitest + RTL
  • fullstackjava-reactMonorepo: Java Spring Boot + React 18+
  • fullstackpython-reactMonorepo: Python FastAPI + React 18+
npx opsx-dev-pipeline list-tools

07 / MULTI-TOOL

同一仓库,
多套 AI 工具并存。

Schema v2 把 manifest.tools 升级为数组;你可以为不同成员分别安装 Claude Code / OpenCode / Cursor / Codex,第二次 init 不再覆盖前者的资产。 sync / upgrade / doctor 都按多工具维度工作。

MANIFEST 工具追踪

同一仓库,多套工具栈并存。

每次 init 只安装选中工具的资产,sync / upgrade 会按manifest.tools 逐个刷新;doctor 会列出全部已装工具与active tool

  1. 1
    Claude CodePreToolUse 钩子自动注入
  2. 2
    OpenCodePreToolUse 钩子自动注入
  3. 3
    CursorHook 需手动接入
  4. 4
    CodexHook 需手动接入
~/workspaceSTEP 1 / 4

$ opsx-dev-pipeline init --tool claude --stack backend --yes

renderclaude skills & commands

render settings.json + scripts/hooks/

state{ "tools": ["claude"], ...

renderpreparing next tool...

命令manifest.tools结果
init --tool claudeclaude安装 Claude Code 资产
init --tool opencodeclaude, opencode补装 OpenCode,不覆盖前者
doctor --jsontools: [claude, opencode], active: claude诊断时列出全部已装工具
uninstall --tool cursorclaude, opencode按工具粒度卸载
01

团队混用,但门禁统一

Claude Code 用户和 Cursor 用户在同一仓库里写代码,OpenSpec schema、状态机、Hook 脚本共用同一份。

02

重复 init 不再覆盖

已经 init 过 Claude Code,再 init OpenCode 不会覆盖前者资产;manifest.tools 会同步记录 ["claude", "opencode"]。

03

按工具卸载

opsx-dev-pipeline uninstall --tool cursor 只删 .cursor 下的托管文件,Claude Code 的 skills/commands 保持原样。

04

升级同步所有工具

sync/upgrade 遍历 manifest.tools 中的每个 ID,逐个重新渲染受管文件,多工具资产同步刷新。

08 / ROUTE 分级

按风险等级,
自动选择流水线重量。

Phase 0 会根据需求描述推荐 trivial / standard / full 三档 Route。 错别字走最短路径,核心业务全流程覆盖。Route 写进状态文件,只能向上升级、不能降级。

01

琐碎route.trivial

错别字、格式化、注释、import 清理

最佳入门
Phase 026
可向上升级到 standard / full只能升级
02

标准route.standard

新功能、Bug 修复、重构

团队默认
Phase 01256
可向上升级到 full只能升级
03

完整route.full

核心业务、数据库迁移、安全相关

高保障
Phase 01234567
顶级 Route,不可降级只能升级

trivial 跳过 Phase 1/3/4/5/7;standard 跳过 3/4/7;full 完整执行 8 个 Phase。

09 / PIPELINE HOOKS

规则下沉到宿主层,
不是写在 prompt 里。

PreToolUse 钩子由 opsx 自动注入 Claude Code 与 OpenCode 的宿主配置,Cursor / Codex 按文档手动接入。危险命令、敏感文件——从根上拦下。

危险 Bash

AUTO
block-dangerous-bash.sh

敏感文件写入

AUTO
block-sensitive-write.sh

block-dangerous-bash.sh

PreToolUse · Bash
  • rm -rf /、rm -rf ~、rm -rf .destructive-rm-blocked
  • git push --force / --force-with-leaseforce-push-blocked
  • git branch -Dforce-branch-delete-blocked
  • chmod 777 / chmod -R 777world-writable-chmod-blocked
  • curl <url> | sh、wget <url> | bashremote-pipe-shell-blocked
  • mkfs.ext4 /dev/sda1filesystem-format-blocked
  • dd if=/dev/zero of=/dev/sdaraw-disk-write-blocked

block-sensitive-write.sh

PreToolUse · Write / Edit
  • .env / .env.* / *.envsensitive-env-blocked
  • *.key / *.pem / *.p12 / *.pfx / *.secretsensitive-key-blocked
  • credentials.json / service-account.jsonsensitive-credentials-blocked
  • openspec/.pipeline-state/*.jsonpipeline-state-write-blocked(请用 dev-pipeline-state.mjs)
  • .git/ 内部文件git-internal-write-blocked

按工具的接入方式

工具模式注入位置
Claude CodeAUTO.claude/settings.json + scripts/hooks/
OpenCodeAUTO.opencode/opencode.json + scripts/hooks/
CursorMANUAL按 docs/hooks/cursor.md 手写 .cursor/hooks.json
CodexMANUAL按 docs/hooks/codex.md 手写 ~/.codex/config.toml

不需要钩子?init --feature no-hooks 即可关闭;--feature hooks / --feature no-hooks 互斥。

10 / SAFETY GATES

交付之前,
安全检查不会沉默。

高风险操作不会被揉成一个"确认"按钮。每一道防线都给出明确事实、独立决策和可审计记录。

LOCAL ONLY代码与状态不会上传
01

敏感文件扫描

.env、私钥块与 credentials.json 自动检测并警告

02

危险操作禁用

拒绝 git add -A、push --force 与 branch -D

03

分步确认

commit、push、merge、删分支与 tag 各自确认

04

冲突协议

逐文件解决,禁止全局 --ours / --theirs 覆盖

05

Fast-forward Only

发现分叉立即暂停,不自动 rebase 或静默覆盖

06

尊重 Git Hooks

Hook 失败必须修复或显式确认 --no-verify

11 / QUICK START

30 秒,
从零到 AI-Ready。

前置条件只有 Node.js 20+ 与 OpenSpec CLI。初始化不会覆盖已有文件,支持先预览安装计划;钩子按工具 auto / manual 自动选择。

  1. 1
    安装 OpenSpec全局安装规范引擎
  2. 2
    初始化 Pipeline选择 AI 工具、stack 与 tech-stack
  3. 3
    补装其它工具init --tool opencode 等可叠加安装
  4. 4
    开始首个变更从 proposal 开始,而不是从代码开始
INSTALL.sh

01# 安装 OpenSpec CLI

02npm install -g @fission-ai/openspec@latest

03

04# 初始化 Claude Code 流水线

05npx opsx-dev-pipeline@latest init --tool claude --stack backend --yes

06

07# 叠加 OpenCode,hooks 由 opsx 自动注入

08npx opsx-dev-pipeline init --tool opencode --stack backend --yes

09

10# 启动第一个变更

11/opsx-dev-pipeline "给 Todo 添加 dueDate"

manifest.tools = ["claude", "opencode"]READY
交互安装 / init静默安装 / --yes计划预览 / --dry-run健康诊断 / doctor模板升级 / upgrade清理卸载 / uninstall按工具卸载 / uninstall --tool

12 / BUILT FOR REAL WORK

< 30s初始化耗时
8Phase 0–7 门禁
4AI 工具适配器
5tech-stack 模板
13E2E 测试场景
3Route 风险等级
2PreToolUse 钩子
MIT开源协议

13 / FAQ

你可能想问的,
都在这里。

还有未覆盖的问题?带上 doctor --json 的结果来 GitHub Issues。

前往 Issues
01团队成员使用不同 AI 工具,能统一管理吗?

能。一份 OpenSpec schema、共享状态机和门禁规则。manifest.tools 会同时记录 claude / opencode / cursor / codex 中已安装的若干个;sync / upgrade 都会逐个刷新。

02需要安装什么?

需要 Node.js 20+ 和 OpenSpec CLI 1.6+。安装 OpenSpec 后,一条 npx 命令即可完成初始化。

03已有项目还能使用吗?

可以。init 可安装到任意已有项目,默认不覆盖现有文件;.gitignore 等可追加文件智能合并,README.md 也会保留你的修改。

04适合什么规模?

个人项目、小团队与开源项目都适用。价值会随协作者数量和变更频率增加而更明显。中小型功能开发(< 500 行 diff)最佳适配;大型重构建议拆分为多个小变更;一次性脚本可用 trivial Route。

05必须使用 Claude Code 吗?

不必。Claude Code、OpenCode、Cursor 与 Codex 均受支持,共用同一套流水线逻辑。Claude Code 因 Agent 架构天然支持对抗验证,推荐追求最强审查保障的用户使用;OpenCode 同样获得 auto 钩子集成。

06和直接写 prompt 有什么区别?

Prompt 只描述当下任务;pipeline 让 prompt 在有 proposal、spec、测试门禁、安全策略、归档规则与 PreToolUse 钩子的系统里运行。

078 个 Phase 都是强制的吗?

审查与单测允许显式跳过,但决定会被记录。提案和归档不可跳过,分别保证目标对齐与变更不失忆。Route 决定哪些阶段被跳过:trivial 跳过 1/3/4/5/7,standard 跳过 3/4/7,full 完整执行。

08Route 选错了怎么办?能降级吗?

Route 只能向上升级:`trivial → standard → full`。如果低估了风险,可以用 `dev-pipeline-state.mjs route <change> upgrade <route>` 升档。降级会被拒绝,避免跳过已发生的审查门。

09流程跑一半中断怎么办?

状态保存在 openspec/.pipeline-state。再次触发时会核对 Git 与文件事实,并从断点继续。多工具场景下 manifest.tools 同时记录每个工具的状态归属。

10为什么修复重试最多三轮?

三轮仍未通过通常意味着需求或设计需要重新判断。状态机会暂停并让人介入,避免 AI 无限循环。

11可以自定义各阶段行为吗?

可以。每个 Phase 的行为由 references 下的 Markdown 定义,测试、验证和构建命令可在 openspec/config.yaml 配置。

12支持 Python / Django / Vue 吗?

python-fastapi 与 react-vite、python-react 已内置;从最接近的内置模板开始,再修改项目上下文、规则和 schema。Vue 需自行替换 schema 片段。

13能多装几个 AI 工具吗?

可以。init 支持重复执行:先 `init --tool claude` 再 `init --tool opencode` 即可叠加工具,manifest.tools 会累积记录。Cursor/Codex 也可按相同模式补装。

14可以只卸载某一个工具吗?

可以。`opsx-dev-pipeline uninstall --tool cursor` 只删除 .cursor 下的托管资产;manifest.tools 同步收敛,但其他工具的 skills/commands 不会被影响。

15PreToolUse 钩子会拦截所有 AI 操作吗?

钩子只在 Claude Code 与 OpenCode 中自动安装;Cursor 需要按 docs/hooks/cursor.md 手写 .cursor/hooks.json;Codex 0.141+ 需开启 `[features] hooks = true`。钩子纯 Node.js,无外部依赖。

16会上传我的代码吗?

不会。逻辑与状态均在本地 Git 仓库运行,不需要 API Key,也不会把代码发送到额外服务。

17和裸用 OpenSpec 有什么区别?

OpenSpec 提供规范引擎;opsx-dev-pipeline 在其上增加阶段顺序、状态持久化、AI 工具适配(含多工具组合)、安全钩子与交付门禁。

18能替代人工 code review 吗?

不能。子Agent 对抗验证是在人工 review 之前的第一轮自动化交叉验证——让 AI 先相互挑战,把可自动检测的问题消灭在人工 review 之前。

19商业使用有限制吗?

没有。项目使用 MIT 协议,可用于商业项目、私有部署与二次开发。

20遇到问题如何排查?

先运行 opsx-dev-pipeline doctor --json,它会列出已安装工具、active tool 以及模板版本诊断,再把结果提交到 GitHub Issues。

21子Agent 对抗验证和普通 AI 审查有什么区别?

普通 AI 审查是同一个模型审查自己写的代码——存在确认偏差。子Agent 对抗验证启动一个独立 Agent,它有独立的上下文,不知道主Agent 的判断,收到的只是 raw diff 和项目规范原文。它被明确告知"你没有写这些代码,作者是别人,你的任务是找出问题"。

22我用独立命令写了提案,能用 pipeline 继续吗?

可以。独立命令执行时会自动记录到 .pipeline-state 的 phaseHistory 中。当你后续触发 pipeline 时,Hermes 会检测已有状态,通过 Gate 补偿策略自动对齐——不需要从头开始,也不会丢失之前的决策记录。

23混合模式下,如果我跳过了一些门禁怎么办?

Gate 补偿策略分三级处理:① 可推断的 Gate→ 自动通过;② 需重检的 Gate;③ 必须确认的 Gate → 无论如何都会询问你。

24状态文件能告诉我谁在什么时候做了什么吗?

能。状态文件包含:创建者身份(git config + 邮箱)、机器环境信息(OS/Node 版本)、需求追溯 ID、唯一指纹、阶段耗时。完整链路:Who → When → Where → Why → What → How → Review → Test。

25支持英文本地化吗?

支持。`init --lang en` 会切换模板、prompt、commit message 与面向用户的错误提示,默认仍为 zh。manifest.lang 字段会持久化偏好。

READY TO STANDARDIZE?

让团队的 AI 编码从"各凭本事",
变成 "统一标准"

npx opsx-dev-pipeline@latest init