为了给开发者提供更加多元的开发体验,CoStrict在自研的Strict模式之外,正式集成 OpenSpec,将AI Coding与规范化工作流深度融合,为开发团队提供一套高效、简洁且规范的AI Coding方案。

在软件开发中,我们常常面临这样的困境:项目初期充满激情,但随着功能迭代、团队成员变动,代码库逐渐变得臃肿、难以维护规范文档形同虚设, Review 成本高昂,新成员上手缓慢……这些问题严重制约着项目从“能用”到“好用”的演进,使得从 1 到 100 的开发比从0到1更加困难。

CoStrict作为一款为企业严肃开发场景打造的AI编程工具,践行“质量驱动开发”理念,其自研的Strict模式借助SDD(Specific-Driven-Development,规范驱动开发)、测试修复自循环等能力生成更懂业务的高质量代码,为“老代码加新特性”等从1到100的任务场景提供有力支持。

OpenSpec为代表的规范驱动开发工作流爆火多款AI编程工具如Claude Code、Cursor、GitHub Copilot均已集成OpenSpec。为了给开发者提供更加多元的开发体验,CoStrict在自研的Strict模式之外,正式集成 OpenSpec,将AI Coding与规范化工作流深度融合,为开发团队提供一套高效、简洁且规范的AI Coding方案。

欢迎大家踊跃体验,并与我们分享其亮点~

什么是 OpenSpec?

OpenSpec 是一个专为软件开发项目设计的规范化和自动化工作流程系统它提供了一套完整的工具和方法论,帮助开发团队高效地管理项目生命周期。团队中的每一位成员,无论是资深工程师还是新人,都在同一个频道上协作,写出风格统一、质量较高的代码。

为了让代码规范OpenSpec遵循几个重要工作原则

  • 需求澄清明确需求AI达成一致开始代码
  • 有据可依OpenSpec明确规定项目的技术栈、目录结构、API 接口规范、组件规范、代码风格,AI遵循规范编写代码
  • 自动校验:OpenSpec提供的 CLI 工具可以自动生成项目脚手架、检查代码是否符合规范、甚至自动化执行测试和构建流程确保在开发流程的各个关键节点,代码都能符合预期
  • 完整留档OpenSpec 的存档功能,远不止是简单的文件备份。能够文档规范代码版本绑定消除歧义还能记录项目演进过程决策过程形成组织知识资产

基于上述特点,OpenSpec精准地命中了 LLM 时代规模化软件开发的痛点。它通过标准化来消除歧义,通过自动化来提升效率,并最终通过AI赋能 来放大团队的整体能力非常适合从 1 到 100 的项目规模化发展。

CoStrict 支持 OpenSpec 产生什么价值

CoStrict 是深信服内网开发+高质量要求严肃开发场景打造企业AI 编程助手,能够准确理解业务需求并生成高质量代码。通过与 OpenSpec 结合,产生 1+1 > 2 的效果

1. 上下文感知与规范性增强

CoStrict 能够读取 OpenSpec 的规范,使其对当前项目的架构和约束有更深的理解。当它为你提供代码补全、修复建议或解答问题时,其答案的准确性和规范性都得到了提升。

2. 存档与校验能力得到优化

集成OpenSpec后,CoStrict 建立了完整的版本追溯机制,每次代码提交都会自动关联对应版本的规范存档,确保历史代码的规范上下文可还原此外系统能基于对应的规范版本进行精准验证,有效防止因规范演进导致的理解误差。

3. 降低使用门槛,提升体验

开发者无需再在 IDE 和 OpenSpec CLI 之间频繁切换。你可以在 CoStrict 的交互界面内,直接触发符合 OpenSpec 规范的代码生成和检查任务,体验更加流畅。

熟悉CoStrict朋友可能会问OpensSpecCoStrictStrict模式什么相同不同之处

事实上,两者目标一致——通过规范驱动开发模式让AI编程更可靠不同之处在于Strict模式严格按照开发流程操作任务拆解详实细节更丰富大代码项目理解更准确OpenSpec生成的文档简洁执行一些轻量级任务高效两者各有所长适合场景不同

三、如何快速上手?在 CoStrict 中部署 OpenSpec

只需简单几步,即可在CoStrict中使用OpenSpec工作流开发:

1. 克隆 OpenSpec 仓库:

 git clone https://github.com/Fission-AI/OpenSpec
 cd OpenSpec

2. 构建并链接本地 OpenSpec CLI:

pnpm install    # 安装依赖
pnpm build      # 构建项目
npm link        # 将 CLI 链接到全局,方便在任何地方使用

3. 在项目中初始化 OpenSpec 并选择 CoStrict:

进入你的项目根目录,运行:

openspec init

完成以上步骤后,你的 CoStrict 助手就已经具备了 OpenSpec 的“火眼金睛”,可以通过/openspec-proposal/openspec-apply/openspec-archive命令调用OpenSpec进行规范化编程了。

四、实战案例:快速创建一个符合规范的 User API

让我们通过一个真实的场景,感受 CoStrict + OpenSpec 的魅力

场景: 在一个 Node.js + Express 后端项目中,需要增加一个获取用户列表的 GET 接口。

第一步:发出指令

你直接在 CoStrict 的聊天界面中输入:

根据 OpenSpec 规范,为我们项目创建一个获取用户列表的 GET API 端点,路径是 `/api/v1/users`。

第二步:CoStrict 的规范响应

CoStrict 不会随意生成代码。首先创建文件描述为什么需要这个API端点列出具体变更内容影响范围其次创建任务文件列出详细实现步骤子任务接着创建规范文件定义获取用户列表API完整需求相应6场景

### Requirement: 获取用户列表API
系统 SHALL 提供一个GET API端点 `/api/v1/users` 用于获取系统中的用户列表。

#### Scenario: 成功获取用户列表
- **WHEN** 客户端向 `/api/v1/users` 发送GET请求
- **THEN** 系统返回用户列表和总数
- **AND** 响应状态码为200 OK
- **AND** 响应包含用户基本信息(ID、用户名、邮箱、创建时间)

#### Scenario: 分页查询用户列表
- **WHEN** 客户端向 `/api/v1/users?page=2&limit=10` 发送GET请求
- **THEN** 系统返回第2页的用户列表
- **AND** 每页包含最多10个用户
- **AND** 响应包含分页信息(当前页、总页数、总记录数)

#### Scenario: 按用户名过滤用户列表
- **WHEN** 客户端向 `/api/v1/users?search=john` 发送GET请求
- **THEN** 系统返回用户名包含"john"的用户列表
- **AND** 响应状态码为200 OK

#### Scenario: 处理无效的分页参数
- **WHEN** 客户端向 `/api/v1/users?page=-1` 发送GET请求
- **THEN** 系统返回400 Bad Request错误
- **AND** 错误消息指示无效的分页参数

#### Scenario: 处理未授权访问
- **WHEN** 未认证的客户端向 `/api/v1/users` 发送GET请求
- **THEN** 系统返回401 Unauthorized错误
- **AND** 错误消息指示需要身份验证

#### Scenario: 处理权限不足
- **WHEN** 普通用户向 `/api/v1/users` 发送GET请求
- **THEN** 系统返回403 Forbidden错误
- **AND** 错误消息指示权限不足

CoStrict生成规范文件

随后,读取项目根目录下的 `openspec.yaml`,然后生成完全符合规范的代码。

假设你的 `openspec.yaml` 中定义了:

  • API 控制器文件存放于 `src/controllers/` 目录。
  • 控制器使用异步函数。
  • 统一的响应格式为 `{ success: boolean, data: any, message: string }`。
  • 错误处理有固定的中间件。

CoStrict 会生成如下代码节选

文件:`src/controllers/userController.js`

// CoStrict 自动引入了项目约定的依赖和工具函数
const { UserService } = require('../services/userService');
const { sendSuccess } = require('../utils/responseHandler');

const userController = {
  /**
   * 获取用户列表
   * @route GET /api/v1/users
   * @group User - 用户管理
   * @returns {object} 200 - 成功响应 { success: true, data: User[], message: 'Users fetched successfully' }
   */
  getUsers: async (req, res, next) => {
    try {
      // 使用 Service 层处理业务逻辑,这也是 OpenSpec 所倡导的分层结构
      const users = await UserService.getAllUsers();
      // 使用统一的成功响应工具函数
      sendSuccess(res, users, 'Users fetched successfully');
    } catch (error) {
      // 错误会自动被 OpenSpec 定义的全局错误中间件捕获
      next(error);
    }
  },
};

module.exports = userController;

同时,它可能还会提醒你:

我已根据 OpenSpec 规范在 `src/controllers/` 下创建了 `userController.js`。请注意,你还需要在路由文件 `src/routes/userRoutes.js` 中注册该路由:`router.get('/users', userController.getUsers);`

第三步:验收成果

可以看到,我们无需花费时间调整代码风格、目录结构或响应格式,CoStrict 就像是一位严格遵守团队规范的老队员,生成的代码可以直接运行和提交。

总结起来,CoStrict 与 OpenSpec 的集成,能进一步帮助开发者专注于业务逻辑和创新,而非纠结于规范和格式。无论是项目负责人,还是追求极致效率的独立开发者,不妨立即尝试 CoStrict + OpenSpec 这一热门组合,亲身体验规范化、自动化、智能化编程所带来的提质增效,让AI编程更简单、更规范。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐