openspec-agents
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- execSync — Synchronous shell command execution in .github/scripts/publish-marketplaces.mjs
- process.env — Environment variable access in .github/scripts/publish-marketplaces.mjs
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
OpenSpec 的配套插件,兼容 Claude Code / Codex / ZCode / DeepSeek Harness / OpenCode:提案标准更严(澄清在前、改动范围与契约变更逐条确认),实施由多 Agent 分工审查,按生产级标准把控到收口。
openspec-agents
openspec-agents 是 OpenSpec 的配套插件,兼容 Claude Code / Codex / ZCode / DeepSeek Harness / OpenCode:提案阶段把标准钉得更死(澄清在前、改动范围与契约变更逐条确认),实施阶段由多 Agent 分工——写、查、验收、质量审查各由不同 Agent 担任,按生产级标准把控到收口。
前提:项目正在使用 OpenSpec 管理需求。
| 适合 | 变更需要真正落进代码库、有验收标准、需通过检查、过程可追溯的团队与项目 |
| 不适合 | 希望快速产出 demo、不走检查与验收的场景 |
| 代价 | 比单个 AI 直接修改更慢,Token 消耗更高 |
| 模型选型 | 实施用 flash 类模型,提案用旗舰模型 |
常见痛点
- AI 一次改一大片,改完声称「完成了」——能编译、测试也通过,但其中夹带的空实现与伪成功未被发现。
- 共用逻辑被改动后,其他调用入口仍在使用旧写法,无人察觉。
- 出了问题想复盘,只能翻到大量对话记录,看不出当时按什么标准放行。
与工具自带工作流的区别
Claude Code 和 DeepSeek Harness 自带的工作流能力擅长并行完成大量独立任务。这个插件解决的是另一件事,两者可以叠加使用。
| 工具自带的工作流 | 本插件 | |
|---|---|---|
| 擅长 | 并行完成大量独立任务 | 单个变更按阶段推进,逐层把关 |
| 如何放行 | 由脚本中的判断决定 | 由程序强制:检查未完成、问题未闭环时无法以「通过」提交 |
| 跨工具 | 各家私有 | 同一套流程跨工具通用 |
| 中断之后 | 进度依附于对话或单次运行 | 进度记录在仓库中,换会话、换工具均可继续 |
一句话:原生工作流负责把任务做完,这个插件负责判定产出是否达到生产级。
局限
使用前请先确认以下三条边界。
存量项目需要一次收敛成本。 判据按理想状态定义(方法不超过 50 行、类职责单一、核心域不依赖框架、构建产物需忽略、覆盖率需达标),且工具检查覆盖全量代码——存量违规同样按原级别上报并阻塞。存量项目首次运行会暴露大量存量问题,只能逐个修复,或逐个走豁免裁定;裁定通过的会沉淀进项目级清单,后续变更不再重复阻塞。
Java 之外只有通用规范。 23 份 skill 中 10 份技术栈无关、11 份为 Java 后端配套(含具体构建与检查命令、ArchUnit 规则、Spotless / PMD / SonarQube 配置)。非 Java 项目审查照常执行,但编译、格式、静态分析、覆盖率这几项确定性检查没有现成命令,需自行补充一份技术栈 skill,否则只能按降级申报跳过。
架构规范只有 DDD 一套。 包组织有两种等价的合法风格——四层分层(domain / application / infrastructure / interfaces)与六边形(内核 + 入站 / 出站适配器),采用哪种由项目声明,未声明时按四层认定。不按 DDD 组织的项目(例如 MVC + Service + DAO 直写)没有对应规范,会被判定为偏离规范并报出问题;项目已有自己的架构规范时以项目规范为准,但该规范需自行写入。
快速开始
项目还没用 OpenSpec 的话,先装 CLI(初始化由插件代做):
npm install -g @fission-ai/openspec
在项目里调用 /openspec-standard 时,项目还没有 openspec/ 就会先以 Core Profile 初始化,项目根随即出现 openspec/ 目录。
第一步:安装
按你用的工具选一种,装完重启该工具。
Claude Code
claude plugin marketplace add https://github.com/ifrankwang/claude-code-plugins
claude plugin install openspec-agents@ifrankwang
Codex
codex plugin marketplace add https://github.com/ifrankwang/codex-plugins
codex plugin add openspec-agents@ifrankwang
ZCode
打开 ZCode 插件页,添加市场 ifrankwang/zcode-plugins,然后安装 openspec-agents。
DeepSeek Harness(DSH)
dsh plugin --profile web add @ifrankwang/openspec-agents
web 是 profile 名,换成你自己的(~/.dsh/profiles/ 下的目录名)。装完重启该 profile;作用项目随当前会话所属项目自动确定,同一个 profile 下切换项目不必重装或改配置。编排工具需要在一个项目会话里使用。
要求 DSH 0.2.1 及以上。子代理的角色提示词与工具集由 Agent Preset 承载,profile 需包含 web 应用 bundle(desktop / web 模板都满足)。子代理委派为异步:分派后等完成通知,再继续下一步。
OpenCode
要求 OpenCode 2.x(1.x 的插件接口不兼容)。
npm install -D @ifrankwang/openspec-agents
然后在 OpenCode 配置的 plugins 中登记 @ifrankwang/openspec-agents:
// opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugins": ["@ifrankwang/openspec-agents"]
}
配置项须写作 plugins(复数),旧版的 plugin(单数)在 OpenCode 2 中不被识别。
首次加载时,插件会在项目 .opencode/agents/ 下生成三个代理定义文件。这些文件带生成标记,插件每次加载都按当前版本重写;要自己改,先删掉文件里的生成标记。
第二步:确认安装成功
重启后查看可用 skill 列表:openspec-standard、orchestrator 是插件自带的两个入口,它们和一批规范类 skill 一起出现在列表里,就说明插件已经生效。这些 skill 可以像命令一样唤起(DSH 里输入 / 即可看到并调用)。
第三步:开始使用
- 项目里还没提变更时,调用
/openspec-standard,把提案标准装进项目。 - 提变更用 OpenSpec 官方命令:
/openspec-propose {具体需求描述},生成openspec/changes/<变更名>/下的文档;装过提案标准后,这些文档会按更严的标准产出。 - 然后调用
/orchestrator {change-id}开始编排。{change-id}就是那个目录名,openspec list能看到当前有哪些变更。
不同工具里 skill 的呈现形式可能不同,以各工具实际显示为准。
默认无人值守
各安装方式默认都开启无人值守:流程里需要人拍板的环节(方案怎么选、无法自动验证的部分)由编排 AI 自行决断,不会停下来问你——审查和门禁照常跑,变的只是「要不要来问你」。希望它在这些地方先问你,让它关掉无人值守模式即可。
将以下两行加入 .gitignore
.worktree/
openspec/states/
两者都不该进版本库:前者是变更(以及独立审查)的独立工作副本,后者是流程进度。
提案标准化
OpenSpec 官方默认的流程是 proposal → specs → design → tasks,给出文档骨架与写作要求。这套标准在它前面加一道澄清与确认关,并把改动范围、契约变更、文档语言钉得更死。
OpenSpec 官方 spec-driven |
插件提供的 spec-driven-standard |
|
|---|---|---|
| 阶段 | proposal → specs → design → tasks | 最前面多一个 clarify(澄清) |
| 需求澄清 | 澄清不强制,靠 explore 用法自行把握 | 决策树逐轮提问,每题附推荐答案;事实类疑问自己查代码,不抛给你 |
| 动笔门禁 | 无 | 疑点问完 + 你确认方案,才允许开始写文档;确认必须文字回复,点选项不算 |
| 改动范围 | proposal 里一句 Impact 描述 | 关联场景清点:把用到这块逻辑的入口、复用链路、数据上下游全列出来,每条附代码位置,逐条跟你确认纳入还是排除;共用逻辑的所有入口必须同一变更里一起改 |
| 规则边界推演 | 无 | 新增或改动规则、校验、拦截逻辑时,先推演这条规则本身站不站得住:该拦的条件与例外、功能上合法却会被误伤的合法反例(各对应 spec 一条「应当放行」场景)、同一业务意图的等价执行路径与判定挂载点(挂在业务意图层的动作上,不落在被别的流程复用的底层动作上);变更新增或改了执行路径时,逐条核对既有规则在新路径上是否仍该生效 |
| 契约变更 | 无专门要求 | 逐条列:建表到列(名/类型/可空/默认值/用途)、接口到字段与方法路径、兼容性影响 |
| 文档语言 | 要求 spec 避免类名、函数名 | 方案摘要与实施逻辑也必须用人话,禁止类名、方法名这类代码黑话(契约事实与技术设计文档除外) |
| 任务划分 | 分组 + 每条带验证方式 | 追加:每组必须有真实代码改动(禁止「收尾组」凑数)、测试跟着实现同组、只覆盖本仓库 |
| 归档 | 官方归档命令本身会同步主规格 | 追加写作纪律:主规格只写终态,不留「原 X 改为 Y」;废弃项显式删除并补 REMOVED;同语义合并去重 |
用法:在目标项目的普通会话里调用 /openspec-standard(不要在被编排流程占用的会话里调用,那种会话不能改文件)。项目还没有 openspec/ 时,它先以 Core Profile 执行 openspec init --profile core --tools agents:建 openspec/ 骨架,并在 .agents/skills/ 下生成 propose、explore、apply、update、sync、archive 六个 workflow skill;随后写入 openspec/config.yaml(指定 spec-driven-standard schema)与 openspec/schemas/spec-driven-standard/。
装好之后提变更不必换命令,仍走 OpenSpec 官方用法:调用 /openspec-propose {具体需求描述},生成的 proposal / specs / design / tasks 就会按这套标准产出,再由 /orchestrator {change-id} 接手实施与把关。
已经装过标准的项目重跑就是升级:标准更新到插件当前版本,你自己加的规则条目和项目背景会保留。
质量把关机制
「生产级」不是靠提示词要求的,而是逐层校验出来的。
审查分工
完整模式 方案预检 → 实现 → 工具检查 → 独立验收 → 五维质量审查 → 收口
精简模式 实现 → 合并审查 → 收口
最终判定不由实现者自己作出。完整模式下,检查、验收、质量审查由彼此独立的角色承担;精简模式由开发者执行确定性检查,再由一名审查者独立复核。
工具与 AI 的分工
确定性检查全部交给工具执行:编译、代码格式、架构约束、静态分析、单元测试与覆盖率、深度扫描,以及质量工具配置有没有被弱化。AI 审查只负责工具覆盖不到的部分——业务行为是否真实生效、关键数据是否真的落库、测试断言有没有放水、设计与规则边界是否站得住,并把其中可工具化的发现反过来沉淀成规则。判据锚在 skill 上,不是让模型现场发挥,所以非旗舰模型(flash 类)的产出下限同样有保障。
通过标准
- 五级定级:Critical / High / Medium / Low / Info,各级判例锚定规范 skill;Info 仅为建议,Low 及以上未修复不得推进。
- 问题闭环:审查报出的问题挂在变更上,修复后由报出该问题的审查者复核通过方为终结;确实无法修复的提交豁免申请,由同一审查者裁定,被驳回则退回重修。
- 程序强制:检查未完成、问题未闭环时,无法以「通过」提交——由工具拦截,而非依赖提示词约束。
- 禁止规避:压制注解、关闭规则、修改扫描平台状态一律视为豁免申请,须写明理由并接受裁定;同一问题修复未过两次,须先完成根因分析再修改。
- 规则沉淀:可由工具检出的问题,要求同时提交业务问题与规则草案,将本次判定口径沉淀为后续的自动拦截规则。
其他特性
- 变更隔离:变更在独立分支与独立工作副本中进行,收口前基准分支上看不到这些改动。
- 可续跑:进度记录在仓库中,查询当前状态即可恢复;关闭工具、跨天、更换工具都能从上次位置继续。
- 规范驱动:直接消费 OpenSpec 的提案、规格、设计与任务清单,流程与规范一一对应。
初始化编排时选择流程模式,默认为精简模式:精简模式下小改动不必走全套流程;完整模式在开头增加一道方案预检,验收也拆得更细。
内置的规范库
插件自带 23 份 skill(含两个流程入口),安装后即可使用,无需自行编写提示词;审查 AI 会按当前任务自动加载对应的一组,作为判据的最低基准——审查者还需结合自身领域知识扩展覆盖,不限于清单所列条目。
两个入口
orchestrator—— 编排准则,主代理按它分派子代理、推进流程。openspec-standard—— 提案标准初始化。
10 份通用规范:DDD 分层与六边形、REST 接口约定、数据库设计约定、安全审查基线、确定性质量门、测试设计、技术债识别、架构演进审查、API 自动化测试、隔离环境清理。
11 份 Java 后端配套:在通用规范之上补齐 Java / Spring 的实现细节 —— Lombok、日志与命名约定、REST 接口的 Java 实现、MyBatisPlus 与 Flyway、DDD 的 Java 实现与 ArchUnit 规则、Maven / Spotless / PMD / SonarQube 质量门、工具规则改进、Java 开发实践、Java 安全实现、Java 性能与可维护性、Java 技术债形态。
Java 后端项目会自动带上配套那套;其它语言目前只有通用规范生效,具体的构建与检查命令由你项目的规范补充。
独立审查会话
除了绑定变更的编排,插件也支持不绑定任何变更的独立代码审查:对一个 PR 的改动区间、或整个代码库做一次完整审查。
初始化时说明三件事:
- 审查范围:
pr(两个本地分支之间的改动区间,远端分支名会被拒)或full(全量代码库)。 - 颗粒度:
thorough(工具检查 → 回归验证 → 风格 / 架构 / 性能 / 安全 / 可维护性五个维度的质量审查)或simple(一个审查者合并完成全部检查)。 - 修复策略:
fix(发现问题自动修复再重审)或none(只审不修,问题报告本身即交付物)。
审查在独立工作副本里进行。fix 模式全部通过后把工作分支合并回目标分支并清理环境;none 模式不合并,直接销毁工作环境并按严重级别、维度、文件位置归并给出审查结果。
对仓库的写入范围
编排流程只碰这几处,全在你的仓库内:
openspec/states/—— 流程进度;.worktree/<变更号>/ws—— 本次变更的独立工作副本;- 一条
change/<变更号>分支。
另外两处不在编排流程内:OpenCode 安装方式首次加载会在 .opencode/agents/ 放三个代理定义文件;调用 /openspec-standard 在项目尚未初始化时先以 Core Profile 建 openspec/ 骨架并生成 .agents/skills/ 下六个 workflow skill,再写 openspec/config.yaml 与 openspec/schemas/spec-driven-standard/。
变更的全部任务组完成后,才会把这条分支合并回基准分支,随后自动删掉工作副本和分支。合并前如果基准分支已经往前走了,插件先比对两边改动:只有文档、规划文件或版本号这类无害变化时直接合并;有实质冲突时退回做一次收尾回归,通过后才合并。
中途放弃:删除工作副本与 change/<变更号> 分支即可,基准分支不会留下该变更的任何代码。
开发
bun install # 安装依赖
bun test # 运行测试
bun run typecheck # 类型检查
bun run build:plugins # 构建各平台的插件包(发布用)
贡献
欢迎提交 Issue 与 Pull Request,也欢迎 Star 支持。
致谢
本项目基于 OpenSpec(openspec.sh)构建 —— 感谢 OpenSpec 团队带来的规范驱动开发方法:先写规范、再写代码,让 AI 开发有据可依。
许可证
MIT © 2025 ifrankwang
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found