我来入职新公司两个月了,为什么只写了100行代码?

如题所见,为什么来这么久只写了100行代码,但是git统计我写了10000行代码呢?这期给大家带来了一个"工具":openspec

openspec是个什么东西?

openspec介绍:lzw.me/docs/OpenSp...

OpenSpec 是 AI-Native 的规范驱动开发系统,为 AI 编码助手提供轻量级规范层。 在第一行代码编写之前,先与 AI 对齐需求,让开发过程更可预测、更高效。

他不是一个模型,也不是一个IDE,可以把他理解为一个框架,他能让ai输出更准确,规范ai的输出,让人与ai直接沟通更规范化,把平时的与ai直接的问答模式进行开发的模式改为使用命令+问答 的模式进行开发,让ai 更加理解人需要做什么,让人更加知道ai在做什么。

安装 Node.js

安装Node.js教程(linux)

官网下载安装包安装(Windows)

bash 复制代码
# 验证 Node.js 版本
node --version

全局安装 OpenSpec

cmd命令执行

perl 复制代码
# 使用 npm(推荐)
npm install -g @fission-ai/openspec@latest

验证安装

bash 复制代码
# 检查版本
openspec --version

OpenSpec默认提供4个标准命令:/opsx:propose/opsx:explore/opsx:apply/opsx:archive

如果还想要更多的命令,可以执行下面的配置向导(全局执行)

提示 :配置向导选择 Delivery and workflows 可获得更多扩展命令(/opsx:new/opsx:continue/opsx:verify 等)

bash 复制代码
# 启动配置向导
openspec config profile


# 交互式选择配置: 
# 1. Delivery and workflows - 基础命令
# 2. Both (skills + commands) - 创建技能和命令
# 3. Custom Profile - 自定义配置(全选,使用↑↓+空格进行选择,[x]表示选中)

这个是针对电脑的openspec安装与配置,但是openspec是项目级别的,所以需要进入到项目中执行初始化 OpenSpec脚本

bash 复制代码
# 进入项目目录 
cd your-project  
# 初始化 OpenSpec 
openspec init

按回车键继续下一步,上下键选择,空格键选定

选择好trae之后按回车键完成选择,这个时候进入到项目里面就会发现多了两个文件夹,一个是.trae\skill 这个文件夹是因为执行了上面的init命令之后让trae拥有的skill能力,里面具体的命令就是上面运行配置向导的时候第三步选择的命令,这些命令即是在trae中能执行的命令。还有一个文件夹叫做openspec,这个就是openspec的主文件夹

初始化后的目录结构

bash 复制代码
openspec/
├── specs/              # 主规范(当前系统行为的权威基准)
│   └── <domain>/
│       └── spec.md
├── changes/            # 提议中的变更(每个变更独立文件夹)
│   └── <change-name>/
│       ├── proposal.md    # 为什么做、做什么
│       ├── design.md      # 如何实现
│       ├── tasks.md       # 实现任务清单
│       └── specs/         # Delta 规范(正在变化的部分)
│           └── <domain>/
│               └── spec.md
└── config.yaml         # 项目配置(可选)

openspec完整的流程图如下:

但是在trae中用到的命令分别是:第一步:openspec-propose,第三步:openspec-apply-change,第四步:openspec-verify-change,第五步:openspec-verify-change

但是如果你想让ai写出来的东西更精确更好,还可以在第一步之前执行:openspec-explore 命令(在提交变更之前,思考想法、调查问题、澄清需求。)这命令会做一些事情:理解需求,和你确认需求,甚至会扫描整个项目的代码等等操作,是比较耗费token的。

实战操作

会从一个需求的提出,到代码的结束完整演示少些代码或者说一行代码不写让ai完成需求的开发

openspec-explore

这个命令可用可不用,如果需求比较模糊,或者需求比较大,甚至说你自己都不理解这个需求,可以在执行第一步:openspec-propose前先执行这个命令,期间如果ai也理解不了你的需求之后,他会问我们和我们确定一些需求的细节,并且我们也可以进行补充(例如和产品经理和同事确认)

这个命令不会产生任何文件,他输出的结果也只会存在ai问答的上下文中,后面执行openspec-propose命令的时候会把确定好的问题代入到下一个命令中,让openspec-propose输出的产物更准确

示例:

markdown 复制代码
You: /openspec-explore 这是我的需求文档,帮我为移动端应用处理身份验证 (贴上你的需求文档)

AI:  让我来研究你当前的认证设置...
     [分析代码库]

     我看到你在 Web 端使用了基于 session 的认证。
     对于移动端,我们有三种主要选择:

     1. JWT 令牌(无状态,支持离线)
     2. OAuth2(如需第三方登录)
     3. 扩展当前 session(更简单,但需要连接)

     你的 API 已经配置了 CORS。你对哪个方向感兴趣?

You: 让我们用 JWT。能开始一个变更吗?

AI:  准备好了。运行 /opsx:propose add-jwt-auth 开始。

实战: 如果在禅道上面有对应的需求并且已经配置好mcp服务之后,就可以直接使用下面的提示词让ai开始理解这个需求:

bash 复制代码
/openspec-explore mcp获取任务id:2213913,使用getUserTaskList

新增两个接口:diff 和 log ,log用于列表的查询,diff用于详情的查询

如果禅道上面没有对应的需求或者任务,则直接把prd给ai,这里因为禅道上面有任务,我们直接用mcp去获取

它会扫描我们的项目的代码:

最后他会输出他的思考结果:

如果ai对我们的需求有疑问,他就会向我们提问,因为这个需求ai没有疑问,所以ai没有问我们,接下来他让我们创建 OpenSpec change proposal ,所以我们进入下一步。

openspec-propose

创建新变更并一步生成所有规划产物。

示例

bash 复制代码
You: /openspec-propose 自然语言

AI:  已创建 openspec/changes/add-dark-mode/
     ✓ proposal.md
     ✓ specs/ui/spec.md
     ✓ design.md
     ✓ tasks.md
     准备好实现。运行 /opsx:apply。

实战:

我们可以直接执行openspec-propose 命令,也可以和他补充一些东西,正常和他沟通就行了:

bash 复制代码
/openspec-propose 补充几个点:用户点击日志的时候调用log接口,就会进入到第二个图,点击查看的按钮就会调用diff接口

开始创建四个文件:

任务已完成:

输出已结束:

这个命令它会输出四个文件(proposal.md、specs/细项变更名称/spec.md(这里可以是多个)、design.mdtasks.md):

他输出的四个文件叫做变更 (Changes)。变更是对系统的提议修改,打包为一个包含理解和实现所需一切的文件夹:

变更文件夹结构

bash 复制代码
openspec/changes/cost-config-diff-log/
├── proposal.md           # 为什么做、做什么
├── design.md             # 如何实现(技术方案)
├── tasks.md              # 实现任务清单(带复选框)
├── .openspec.yaml        # 变更元数据(可选)
└── specs/                # Delta 规范
    └── cost-config-xxx/
        └── spec.md       # cost-config-xxx/spec.md 中正在变化的内容

这个文档输出来主要是给我们看的,而看的顺序为:

如果我们看完之后对他的变更产物有疑问,我们可以和他补充:

复制代码
变更的产物加几个补充点:

1.编码的风格要按照现有的代码进行编码

2.与数据库相关的操作都写在Repository类

3.我问了产品经理,他说外面列表数据可能会有很多条变更记录

这里面可以使用自然语言描述,最终的目的是我们可以更加地去规范ai做什么以及怎么做,以及补充一些细节点,让下一步openspec-apply-change命令写出来的代码更加规范与精准

会改ai产生的变更文件,补充细节

还会根据我们之前提供的ui,生成我们自己都漏掉的细节:

最后输出修改文件结果,让我们进行下一步:

这里注意,创建变更的时候不要一次性创建一个很大的变更(即一次把一整个大功能让他创建一个变更)原因有以下几个点:

  1. 运行时间长,结果不可控

  2. 如果功能比较复杂会消耗巨量的token

  3. 后期维护,修改bug困难

  4. ......

所以每次只提一个小变更,把大需求人工分成a,b,c...几个小需求,让他颗粒度更小,例如一个小功能或者一个接口执行一个openspec-propose命令:

openspec-apply-change

实现变更中的任务。逐步处理任务列表,编写代码并勾选完成项。

示例:

ini 复制代码
You: /openspec-apply-change

AI:  实现 add-dark-mode...

     读取 tasks.md:
     - [ ] 1.1 创建 ThemeContext
     - [ ] 1.2 添加 CSS 自定义属性
     - [ ] 1.3 实现 localStorage 持久化

     处理 1.1: 创建 ThemeContext...
     [创建 src/context/ThemeContext.tsx]
     ✓ 1.1 完成

     处理 1.2: 添加 CSS 自定义属性...
     [更新 src/styles/globals.css]
     ✓ 1.2 完成
     ...

实战:

直接执行命令,如果还有补充的话,也可以在命令后面用自然语言告诉ai

然后他就开始自动执行这17个任务,这个时候尽量不要操作代码,等他自动完成

17个任务完成之后,openspec会自动进行编译并且修复:

最终会把tasks.md文件修改为每个任务都完成了:

这个时候可以看到代码已经改变了:

这个时候如果我们的代码有什么bug,或者要改什么东西,我们也可以通过自然语言和他讲:

openspec-verify-change

验证实现是否与变更产物匹配。从完整性、正确性和一致性三个维度检查。

示例

makefile 复制代码
You: /openspec-verify-change

AI:  验证 add-dark-mode...

     完整性
     ✓ tasks.md 中的所有 8 个任务都已完成
     ✓ 规范中的所有需求都有对应代码
     ⚠ 场景"系统偏好检测"没有测试覆盖

     正确性
     ✓ 实现与规范意图匹配
     ✓ 场景中的边缘情况已处理

     一致性
     ✓ 设计决策在代码结构中有体现
     ⚠ 设计提到"CSS 变量"但实现使用了 Tailwind 类

     总结
     关键问题: 0 | 警告: 2 | 可以归档: 是(有警告)

这个命令可用可不用,如果想检查一下代码与产物是否一致可以直接执行该命令,使用的时候建议再把prd再次丢给ai

openspec-archive-change

归档已完成的变更。完成变更并将其移至归档文件夹。

示例:

makefile 复制代码
You: /openspec-archive-change

AI:  归档 add-dark-mode...

     产物状态:
     ✓ proposal.md 存在
     ✓ specs/ 存在
     ✓ design.md 存在
     ✓ tasks.md 存在 (8/8 任务完成)

     Delta 规范: 尚未同步
     → 现在同步?(推荐)

You: 是

AI:  ✓ 已将规范同步到 openspec/specs/ui/spec.md
     ✓ 已移至 openspec/changes/archive/2026-03-10-add-dark-mode/

     变更归档成功。

实战:

lua 复制代码
/openspec-archive-change openspec\changes\cost-config-diff-log

当我们确定这个需求已经完成的时候可以使用这个命令,如果想让openspec的产物更规范化的话,可以改了bug之后在对话框让ai改一下openspec的产物,然后再运行这个命令。这个命令会把openspec\changes\cost-config-diff-log 文件夹移动到 openspec\changes\archive\2026-07-13-cost-config-diff-log 说明这个需求已经完成了,这个时候就可以推送到git上面或者push到远程仓库让团队小伙伴一起使用变更(可选)

其实也可以手动移动到openspec\changes\archive文件夹下面,和这个命令的效果是一样的,如果后期我们要改bug,直接和ai说:

lua 复制代码
openspec\changes\archive\2026-07-13-cost-config-diff-log 有个bug:前端传入超长文本,后端报错

这个时候ai就会直接找到对应的变更产物,修改对应的bug:

至此,我们一行代码都没有写,完成了这个需求的代码层面的开发

拓展

mcp

文中用到的mcp服务,如果大家的公司有的话就这样配置: 可以把他理解为自然语言去获取第三方系统的数据的服务,如果没有也没关系,直接把产品文档丢给openspec就行了,如果大家感兴趣,后期作者可以教大家开发mcp服务,欢迎关注

rule

我们可以使用工具级别的rules和skills,一般在放在 C:\Users\用户名\.trae-cn 文件夹下,他就会根据使用的工具去生效对应的rules和skills

智能体

我们可以自己创建智能体,让ai输出跟专业化

其他编程软件

可以使用其他编程软件吗? 前面我们也说了,openspec只是一个ai流程框架而已,市面上主流的IDE基本都支持。 但是命令会不同,例如在trae中叫做 /openspec-apply-change 但是在其他软件中叫做 /opsx:apply ,具体就看初始化 openspec init 的时候选择的ide是啥,然后去对应ide项目文件中的skills文件夹下面的skill文件的名称 最后,博主在深度使用openspec两个月以来,写过的代码不超过100行,这数据真的很夸张,现在已经完全改变了作者的开发模式,相信ai也会慢慢地改变大家的开发模式,如果没有openspec的话,可能还有openspring 总会出现类似的工具或者框架,ai在慢慢的改变世界,学起来吧,少年。。

注:本篇文章非广告,很久没写博客了,只是想分享一些东西,感谢你观看,下次再见

相关推荐
ZzT1 小时前
别把锅甩给AI
ai编程
从零开始的代码生活_1 小时前
C++ 内存管理:从内存分区到 new/delete 底层原理
开发语言·c++·后端
31535669131 小时前
Superpowers:GPT-5.6 时代下的流程毒瘤
前端·后端
程序员老刘2 小时前
腾讯混元Hy3在Flutter项目中的实战体验
flutter·ai编程
skiyee3 小时前
换个底座的 Wot Starter 居然让 AI 更懂项目!
前端·ai编程
神奇小汤圆3 小时前
2026 Java岗面试题库(已收录GitHub),覆盖所有考点
后端
ArixBit3 小时前
用 Go 手撸 Agent 框架 #4:工具定义与契约——让 Agent 学会调用多工具
后端
枕星而眠3 小时前
【数据结构】红黑树入门指南
运维·数据结构·c++·后端
神奇小汤圆3 小时前
JDK 8 → 17 → 21 → 25:一次性讲清四代版本的关键跃迁
后端