AI项目工程化

why-挑战

  • 共性问题:忽视人的现实工作模式
    问题 1:忽视认知负担管理两个工具都假设人能理解并遵循复杂流程、维护大量结构化文档、记住所有规范和约束。但现实是:土办法最管用。工具应该适配人的工作模式,而不是强行改变它。

问题 2:忽视"执行过程"的价值只关注"规范"和"结果",忽视"过程"中的知识价值。

问题 3:忽视复利效应的关键性传统工具:帮你"做事"
复合工程:帮你"越做越快"
传统工具:每次都是新的开始
AI 工程化:每次都站在上次的肩膀上

问题 4:Spec 详细程度的悖论规范驱动开发有一个根本性的矛盾:
Spec 越详细 → 越接近代码本身 → 维护两份"代码"
Spec 越简略 → 越难指导 AI → 失去规范的意义
详细 Spec 的问题:当 Spec 详细到可以精确指导 AI 生成代码时,它本身就变成了另一种形式的"代码",你需要同时维护 Spec 和 Code 两套产物,且要保持同步代码改了 Spec 要改,Spec 改了代码要改——双倍维护成本

开发者工作 / 人能做到AI不能做到的事

  • 需求的理解
    深入理解业务需求,识别核心功能点和约束条件;
    技术需求与业务需求的关联分析,确保技术实现与业务目标一致;

  • 代码仓库的理解
    项目架构与模块划分的理解,确保新代码与现有架构保持一致
    关键接口与数据流理解,确保新功能与现有系统良好集成;

如何提升和审核ai识别代码仓库中相关文件,了解现有实现和架构设计;
如何升和审核ai建立需求与代码的映射关系,为后续提示词设计提供依据

  • 提前审核ai代码
    要求AI Coding结合这些信息生成开发概要或大纲,先不生成代码
    人工审核生成的开发概要,对不正确或不完善的部分进行指正,审核时应重点关注架构设计的合理性、技术选型的恰当性

上层

AI 工程化的解法:不追求详细 Spec,而是分层概要 + 代码指针
概要层帮助 AI 快速定位到代码索引,避免维护一份"像代码一样详细的 Spec 文档"
细节层直接读代码

架构设计

  • spec文档维护
    以.md文件作为核心文档进行开发指导,确保文档与代码保持同步更新
    文档不仅是信息载体,更是开发过程的重要指导工具

原则 1:分层式信息组织
AGENTS.md # 项目记忆入口(每次会话自动加载)
.codebuddy/ # AI 自动化配置
│ ├── agents/ # Agent 定义(决策层)
│ ├── commands/ # 命令入口
│ └── skills/ # Skill 定义(执行层)

requirements/ # 需求管理
│ ├── INDEX.md # 需求索引
│ ├── in-progress/ # 进行中需求
│ └── completed/ # 已完成需求

context/ 项目知识库
├── business/
│ └── 活动业务边界.md ← 概要层(意图识别时加载)
├── tech/
│ └── Apollo配置规范.md ← 技术层(方案设计时加载)
└── experience/
├── 商品发放历史问题.md ← 经验层(实施前加载)
└── 雅典娜配置注意事项.md ← 详细层(配置时加载)

沉淀格式:记录什么?
具体触发点:
├── 需求完成时 → 提取可复用经验
├── 遇到问题解决后 → 记住这个坑记录
├── 代码提交时 → 检查是否有值得记录的代码设计
└── 流程优化时 →检查是否有值得记录的优化设计

沉淀格式:记录什么?

context/experience/商品发放-钱包选择问题.md

问题描述

商品发放时选错钱包类型,导致用户领取失败

触发条件

  • 需求涉及商品发放
  • 商品类型为虚拟商品

解决方案

虚拟商品必须发到虚拟钱包,实物商品发到实物钱包
具体判断逻辑见 Apollo 配置:xxx.wallet.type

校验方式

检查 goods_type 与 wallet_type 的匹配关系

关联文档

  • context/tech/Apollo配置规范.md
  • context/tech/services/商品服务技术总结.md

agent的分布式计算

复杂任务长对话超出了单一agent的上下文
将复杂任务进行拆分成多个子任务,多个agent分布式处理
agent之间如何沟通:
方法1)由主agent作为桥梁沟通,本质上是获取子agent的对话上下文
方法2)通过结构化状态文件来进行信息传递

多人开发协作代码合并问题

多feature功能点并行开发

项目级文档沉淀,其他人新开会话能快速基于项目级文档了解项目规范风格
代码划分模块,改动一个feature不影响到其他模块
抽象公用skill,减少冗余代码

知识积累沉淀
传统开发:累积技术债务 → 每个功能增加复杂性 → 代码库越来越难维护
复合工程:每个功能产出文档模式 → 创建可复用组件 → 建立减少决策疲劳的约定 → 知识在团队中复合增长

开源组件问题

  • speckit 的核心缺陷问题
    问题1:流程过于理想化speckit 的 Constitution → Specify → Plan → Tasks → Implement 流程假设:需求是清晰的可以一次性规划按阶段线性推进但企业真实场景是:需求动态变化多方并行博弈持续扯皮调整
    问题 2:无法处理"考古"需求speckit 从零开始定义,但真实开发必须"考古":历史坑点在哪?现有能力有哪些?配置规范是什么?
    问题 3:知识不会沉淀
    缺失机制:❌ 实施过程中发现的坑不会被记录❌ 排查信息丢失❌ 下次遇到类似问题还得重新排查
    问题 4:宪章系统的僵化9 条不可变原则固然保证质量,但:✅ 适合标准化项目(Demo、开源库)❌ 不适合企业定制场景(历史债务、框架限制、合规要求)

  • openspec 的核心缺陷
    问题 1:Delta 机制的理论美好与现实骨感假设需求可以"提案化",但企业真实场景是多线并行、动态调整、持续扯皮。
    问题 2:Fail-Fast 的代价理论上保证一致性,实际上成为阻塞点。人的认知窗口有限,很难手动解决复杂冲突。
    问题 3:强依赖命名的脆弱性产品、运营、研发对同一个需求有不同表述,命名不一致导致归档失败。
    问题 4:Archive 只是"合并",不是"学习"F(CurrentSpec, DeltaSpec) → NewSpec

缺失的维度:
F(CurrentSpec, DeltaSpec, Context, Lessons) → NewSpec + Knowledge
↑ ↑
实施上下文 经验教训

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容