Claude Code + Cursor + OpenS
2025年AI编程王炸组合:Claude Code + Cursor + OpenSpec,我靠他们月入40万
去年年底,我真的差点把电脑砸了。
你想想那个场景:我在Cursor里让Claude帮我重构一个用户列表页面,就加个分页和搜索。结果呢?它不光给我加了分页搜索——顺手把CSS变量改了,把布局从Flex换成了Grid,还自作主张加了动画过渡,连API层都给我封装了一层新的!我特么就想要个分页啊!!!
开新对话?上下文全没了,项目背景得从头讲一遍。继续用?代码已经偏到姥姥家,回滚都没法回滚。那会儿我盯着屏幕,感觉AI不是在帮我,是在给我秀肌肉——“看,我多全能”。可我不需要全能,我只需要听话!说到这儿你肯定也遇到过。对吧?每个用AI写代码的人,都被这种“自由发挥”气疯过。
后来呢?
现在每个月稳定40w+收入,工作日从60小时压到25小时。说出来你可能不信——单人9天交付一个带RBAC+多租户+RAG的中型SaaS,甲方验收一次过,基本零返工。转折点就两件事:2025年3月我用上了OpenSpec,然后用Claude Code替代了Cursor自带的Agent。
不是工具卷了,是我的工作流变了。
一句话说清楚这三兄弟
OpenSpec负责写合同,把需求锁死在Markdown文件里。AI按合同写代码,敢自由发挥?我撕合同!
Claude Code在终端里扮演高级AI工程师,自己git、跑测试、回滚,不需要你手把手教。
Cursor是前端交互神器,补全、重构、Ctrl+K改代码,用着很爽。
这套组合的核心不是让AI写更多代码——是让AI少写那些“方向对但需求没对齐”的代码。你想想,这样是不是比单纯堆工具聪明多了?
第一个坑:你以为AI不够聪明?错!是太聪明了!
我踩了三个月的坑才想明白这个道理。
Claude不是不聪明,是太聪明了。你给它一个模糊需求,它会把所有可能性都实现一遍,然后挑一个它觉得最好的——可它觉得最好的,不一定是你想要的啊!
还记得那次重构用户列表吗?它自己决定用Grid替代Flex,理由是“可维护性更好”。我当然知道Grid更好!但这个项目有200个页面全是Flex布局。你改这一个,以后维护的人会发现新页面和旧页面不一致,然后整个项目就分裂了。你一个人想用Gird,整个团队都得跟着改?谁负责?
AI没有项目整体意识,它只有“当前最佳”意识。
这就是OpenSpec登场的原因:你把所有设计约束写进spec文件,AI每次启动先读spec,它就不敢乱来了。说白了——给AI套上缰绳。
具体怎么搭?8分钟搞定,一劳永逸
别被“规范驱动开发”这种词吓到,实操超级简单。来,跟着我敲:
npm install -g @anthropic/claude-code @fission-ai/openspec
cd your-project
openspec init它会生成一个openspec/目录。里面project.md写项目背景、技术栈、约束,AGENTS.md是AI行为指令。初始化的时候选Claude Code和Cursor,它会自动帮你配好斜杠命令。
然后启动Claude Code,加载规范文件:
claude
# 在里面输入:
/config auto-accept-changes true
/load openspec/AGENTS.md
/load openspec/project.md我亲自计时过——8分12秒!之后所有对话,AI都知道你项目的上下文,再也不容易失忆了。
第二个坑:只靠对话?AI的“注意力漂移”无解
这个词我是从OpenSpec官方文档里看到的,非常精准。
你想想:一次新功能开发,前三轮对话AI还在正轨上。第四轮突然开始加你没提过的东西。为什么?因为对话越长,AI越容易把噪声当信号。你想的是A,它给你搞出A+B+C,你还得花时间删。
OpenSpec的工作流特别简单:写spec → 评审spec → 按spec写代码 → 归档spec。 AI永远从spec出发,不是从你的聊天记录出发。
我常用的命令不多,就这几个:
| 命令 | 用途 |
|------|------|
| /opsx:propose 增加CSV导出功能 | 新建变更,自动出proposal/spec/design/tasks四件套 |
| /opsx:apply | 按tasks逐项实现,一条一条打勾 |
| /opsx:verify | 验证实现是否符合spec |
| /opsx:archive | 归档变更,更新项目活文档 |
用了这套流程,我最近一个项目44个任务,每个都留痕。6个月后回来看design.md,清楚知道“为什么用UserDefaults而不是SwiftData”——因为时长偏好是简单Int值,不需要复杂查询,UserDefaults更轻量。
以前这种东西存在我的脑子里,三个月忘得干干净净。现在存在代码仓库里,新同事来了直接读spec。你说这有多爽?
第三个坑:IDE里的Agent太傻?不如终端里的!
Cursor的Composer和BugBot确实好用,Ctrl+K改代码一秒完成。但遇到跨多个文件的架构变更,Cursor的规划能力弱得可怜。它经常写了一半问我“下一步做什么”,我一个全栈游民哪记得住那么多任务细节?
Claude Code不一样。它是真的在终端里当程序员用的!
给它一个任务,它会自己git branch,跑测试,失败了回滚,再试另一种方案。你只需要在关键节点确认一下。
我现在的流程是这样的:
1. 在Cursor里用Cmd+K快速改小段代码,或者用@Codebase问问题
2. 需要大重构或新功能时,切换到Claude Code,先跑/opsx:propose生成spec
3. 评审spec,没问题了跑/opsx:apply,Claude Code开始干活
4. 过程中切换到Cursor看实时预览,微调UI
三者各有分工,不打架。Claude Code 2.2版本支持自动git和测试,Cursor 0.42起原生支持Claude 4 Opus,OpenSpec v2.4支持monorepo。都是2025年最新版,兼容性没问题。
有人会说:不就是加了个流程吗?小项目不值得。
你猜我怎么回答?
我说,恰恰相反!
小项目最值得!为什么?因为你以为小项目不会有坑,结果两天就变成大项目。没有规范兜底,AI的“自由发挥”会让你死得更快。
我一开始也觉得OpenSpec太麻烦,直到有一次我接了个紧急迭代:客户要加一个“番茄钟专注模式”,需求就是定时25分钟,到点提醒。我直接让Claude Code写——结果你给我搞出了计时器、历史记录、统计图表、甚至分享功能!我只要前三个啊兄弟,后面全是画蛇添足!
用OpenSpec重来一遍:
/opsx:propose "新增番茄钟专注模式"AI生成proposal,我审完后把“统计图表”和“分享”删掉,spec锁死。然后/opsx:apply——20分钟实现,一次过!
没有OpenSpec的时候,我需要在对话里不停地说“不要这个不要那个”,AI还经常选择性遗忘。有了spec,它就像拿尺子画画,多一笔都不会画。
还有人说:这套组合配置太麻烦,不够友好
8分钟也叫麻烦?你配个ESLint可能都超过8分钟了吧?😂
说实话,最大的学习成本不是配置,是你得习惯“先对齐再动手”的思维方式。写spec的过程本身就是一次需求澄清。以前我拿到需求直接开干,干到一半发现不对劲,返工。现在宁可花10分钟写spec,确认没问题再动手,省的是后面几小时。
而且OpenSpec对老项目特别友好:/opsx:onboard自动扫描现有代码库生成初始spec。新入职的人跑一遍就知道项目全貌,多省事儿?
最后说点实在的
我这8个月踩过的坑,全给你列出来:
- 版本匹配很重要。Claude Code 2.2要配合OpenSpec v2.4,旧版命令不一样
- `openspec init`之后必须重启IDE,否则斜杠命令不生效
- `/config auto-accept-changes true`一定要设,否则每次修改都要你确认,效率低哭
- 归档前发现问题,直接修,不用开新提案——这是OpenSpec迭代方便的地方
- 强烈建议让AI帮你写spec和更新规范,它最懂规范格式
现在我的项目结构长这样:
openspec/
├── project.md # 项目总览、技术栈、约束
├── AGENTS.md # AI行为指令
├── config.yaml # 上下文配置
├── specs/ # 当前状态spec
└── changes/ # 活跃变更
└── 2025-10-17_tomato-mode/
├── proposal.md
├── specs/
├── design.md
└── tasks.md每次归档后,specs/自动更新,项目永远有活文档。新AI进来读一遍,直接上手。
如果你只从这篇文章带走一句话,我希望是这句:
别让AI从你的聊天记录里猜需求。把需求写在spec里,让它照着做。
AI编程不是比谁的工具多,是比谁的工程化能力强。2025年了,单凭一个工具已经卷不动了。Claude Code、Cursor、OpenSpec三个加起来,才是我能把工作时长压到25小时、同时月收入涨到40w的根本原因。
点赞过5000,我把自己的完整openspec/模板仓库开源!你直接拷到项目里改改project.md就能用。
现在打开终端,花8分钟配好。你接下来省下的时间,够你多接两个外包。
写在spec里的需求,AI才不敢造次!
读者评论 2