惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
D
DataBreaches.Net
D
Docker
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Martin Fowler
Martin Fowler
U
Unit 42
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Vercel News
Vercel News
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog

程序员

V2EX 看到讨论"跨域"的帖子,那个她好像回来了 codex 今天真的是不稳定呀。 火山方舟 Coding Plan 慎买 刚问了大家 openclaw 和 hermes 在什么机器上面玩,求推荐一个机器 GPT-image-2 生成 AI 图片防伪有感 codex pro 5 小时限制已经严重缩水 逆天 Antigravity 动态 JSON 序列化对强类型语言很难吗? 自建了 GPT Coding Plan,遇到了定价问题,请教大家 大家都是在什么设备上玩 openclaw 以及 hermes 的呀? 软考还有一个月就考试了,你们学习了吗? 大伙用 AI 会考虑在 user scope 的 CLAUDE.md/AGENTS.md 里交代 AI 说中文吗 我发现程序员这个群体很大部分其实挺抠的 最近使用 cc 总会莫名其妙的返工, codex 不会 目前体验最好的远程 vibe 工具 想知道大佬们抓包遇到 ssl pinning 都是咋优雅的 解决的? 工业软件的大佬们是怎么 vibe coding 的 最近 chrome 是不是有 bug 啊,一搜索就卡住 分布式异步系统在 vibe coding 下的困境 PHP Native AOT 编译器,支持将 PHP 代码编译为可执行文件,运算性能提高 150 倍 没想到 2026 年,还要浪费大量时间在跨域问题上 DeepSeek V4 这周会出吗? 中转站正式试营 欢迎试用 不掺不假 小米 mimo 升级 v2.5,并且重置了额度 Jenkins, SCM 轮询完全不工作是啥问题啊 赛博斗蛐蛐, AI 模型的简单对比(白嫖版) 使用中转站要擦亮眼睛!不说别的,倍率计算 充值好乱。 买了火山的 Coding Plan 测试得出计费模式 给我的 AI 生成了简历和状态卡, 大家帮忙看下 Ta 能找到啥样的
我把 OpenSpec 揉进开发流程里了,让 Claude Code 自己学着用
fennu2333 · 2026-05-18 · via 程序员

最近想把 OpenSpec 集成进自己的 coding agent 工作流项目,让 Claude Code 自己用,省得我还得手动调 skill 或者敲命令行(其实就是工具太多了学不过来,丢在工作流里让他自己 drive 哈哈,正好社区里也有呼声把 OpenSpec 支持加进去)。做完感觉挺好使的,给大伙唠唠

之前我自己做了几个月一个开源项目叫 Chorus,本质上是一个带前端的 agent harness ,负责驱使 Claude Code 跑完整条开发流程:你扔一个粗糙的想法进去,它先和你聊清楚想做什么,接着写计划、拆任务、自己干活、自己 review ,最后把验收完的成果交回来。整个过程它在 drive ,人只在关键节点拍板。

为什么想接 OpenSpec

OpenSpec 是社区一个 spec-driven 开发 CLI ,思路很清爽。所有 spec 都以文件形式躺在仓库里,用一个固定的目录约定组织。每次 change 是 openspec/changes/<slug>/,里面 proposal.mddesign.mdspecs/<capability>/spec.md 各自一份 markdown 。spec 不写完整状态,写 delta ,用 ## ADDED Requirements 这种块表达"这次改了什么"。change 落地后跑一次 openspec archive <slug>,CLI 自己把 delta 合进长期 spec 。

挺好的工具,但用起来有个挺现实的问题,每一步都得人去推。开新 change 要记得 openspec new change,写完要记得 openspec validate,change 完成后要记得 openspec archive。忘做一步就整段垮掉,下一次 change 写出来跟前一次接不上。

而 Chorus 本来就在驱动整条开发流程,它知道现在是在和用户聊想法、还是在写计划、还是任务全部干完准备收尾。这些信号天然就是 OpenSpec 命令该不该触发的依据。让 Chorus 一边驱动流程,一边在合适的节点提醒 agent 跑 OpenSpec 命令,用户就不用学一套新的工具。从他的视角看,他还是在跟 Chorus 用同样的方式聊天写代码,只是中间生成的文档变成了仓库里规范的 spec 文件。

我想达到的最终效果是 Chorus 在 drive 流程,OpenSpec 在管文档,Claude Code 把两边串起来自己跑。

如何不占用 LLM token 的同时完成文档同步?

具体怎么串?真正的设计难点在这一步:Chorus 是个外部服务,文档存在它的数据库里然后在前端展示,可 OpenSpec 写出来的 spec 文件躺在本地仓库里。怎么把本地文件同步到 Chorus 那边?

最朴素的做法是让 LLM 调 MCP tool 把 markdown 灌到参数里。试了一下发现一份完整的 spec 同步一次 content tokens 可能会用一二十 K ,整个 markdown 要先从 LLM 输出一次再被它重新打字进参数,又费钱又不靠谱,没办法保证 LLM 1:1 完整输出整个文档。

那走 CLI 就好了,写一个同步命令,LLM 只调命令、不碰文件内容。但我又不想让用户额外装一个 cli 。

翻了下 Claude Code 文档,发现插件 bin/ 目录下所有 shell 脚本都会被自动加进 session 的 PATH。Chorus 本来就有个 Claude Code 插件,那直接把同步脚本放插件 bin/ 里就行了。用户装好 Chorus 插件,脚本就跟着到位,agent 在任何路径下都能直接 chorus-api.sh mcp-tool <tool> "$PAYLOAD" 调到,不用关心装哪了。再写一个 skill 文件教 CC 什么时候该调它,集成就成立了。

插件结构大概长这样:

chorus-plugin/
├── bin/
│   └── chorus-api.sh        # 自动加进 $PATH ,agent 直接按名字调
├── hooks/
│   └── hooks.json           # 注册各种生命周期 hook
└── skills/
    └── openspec-aware/
        └── SKILL.md         # 教 CC 什么时候用 chorus-api.sh 同步文档

chorus-api.sh 完整代码在 仓库里,核心就是 jq -Rs '.' 把文件流成 JSON 字符串后塞进 MCP payload ,从头到尾 LLM 看不到文件正文。

什么时候触发 OpenSpec 的操作?

OpenSpec 的流程从开新 change 到最后 archive ,每一步都得在合适的时机被触发。让 agent 自己记得这些时机不靠谱,但 Chorus 本来就在 drive 流程,时机的信号都有,关键是把信号转成对 agent 的提醒。

session 启动是第一个时机。Chorus 插件的 SessionStart hook 顺手检测一下仓库里有没有 openspec/ 目录、openspec CLI 在不在 PATH 上,两个都满足就给 session 注入一个标记,skill 文件读到标记就走 OpenSpec 路径,否则维持原来的自由 markdown 路径,老项目完全不受影响。

任务全部验收完是另一个时机,也是我自己最喜欢的一个。OpenSpec 要求每个 change 完成后跑一次 openspec archive <slug>,把这次的 delta 合进长期 spec ,忘了的话下次写 change 就跟这次接不上。让 agent 自己记得实在不现实,"完成"是好几个 turn 之后才发生的事,agent 早就在想下一件事了。但 Chorus 知道什么时候算完成,所有任务都被验收的那一刻嘛。所以挂了个 PostToolUse hook ,每次有任务被验收,hook 顺手查一下这一波相关的任务是不是都 done 了。是的话,就往 agent 的最终回复里注入一条提醒,让它去跑 openspec archive <slug> -y 并把生成的长期 spec 同步回 Chorus 。

整个流程对用户是隐形的。你只是和 Claude Code 一起完成了一个 feature 的开发,agent 自己就把 OpenSpec 那边该开的开了、该归档的归档了。

工具越来越多,人也越来越累

我记得 React 18 和 Vue 3.0 刚出的时候社区一片哀嚎:求求别再出新东西了,学不动了。当时肯定想不到 2026 年工具每周甚至每天都在出,虽然代码是 CC 写的,但为了用好 CC 还是得学一大堆东西。我自己也被铺天盖地的工具烦得不行,像 OpenSpec 这种确实好用,但架不住要学啊。

这次试着把这些工具放进一套流程里,让 CC 自己判断什么时候用、怎么用,自己用下来其实挺舒服的。那是不是之后团队配一套共享的开发流程,直接分发给每个成员就行了?

代码都在 Chorus 仓库,OpenSpec 项目在这: https://github.com/Fission-AI/OpenSpec