在AI技术持续迭代的当下,一支团队能否真正进化为“AI全栈开发”形态——即同时维护APP、后台、网页等多端代码——这不仅关乎技术能力,更是组织效率的试金石。本文将继续深入探讨这一课题,分享一套经过验证的实践路径,帮助团队在AI时代实现高效协同。
AI时代,程序员不应被单一技术栈所局限,而需具备顶层架构思维,清晰把握整个系统的设计与数据流向。这不仅能拓展个人的知识广度,还能让你独立高效地完成某个模块,产品迭代速度自然显著提升——想验证一个想法,无需再等待后端、前端和联调环节。
一、顶层设计思维
要实现AI全栈能力,首先需要完成两件事:
- 将全栈项目统一汇总管理,避免代码散落在各个角落。
- 让AI真正理解每个子项目的代码风格、框架分层与设计理念,并将这些信息有效沉淀。
这样才能达到以下效果:
- 无论使用何种模型,AI都能快速理解你的需求,精准定位需要修改的端。
- 生成的代码符合该端的技术风格,避免出现低级错误。
- 修改完成后,能够自动启动各个端,执行跨端的端到端全流程测试。
二、基于 git submodule 的项目结构
在全栈协作场景中,APP、后端、网页端通常各自拥有独立的代码仓库,迭代节奏与分支管理也各不相同。因此,建议先维护一个组合根仓库,通过Git submodule将业务子项目汇聚到一起。典型的项目结构如下:
fullstack-workspace/
├── cow-harness/ # 全栈入口与通用 Harness
├── .ai-harness/
│ └── workspace-map.md # 业务模块地图
├── apps/mobile/ # APP 端代码(git submodule)
├── services/backend/ # 后端代码(git submodule)
├── apps/web/ # 网页端代码(git submodule)
│ └── .gitmodules
.gitmodules 记录了每个子仓库的远程来源与本地路径,根仓库则锁定每个子仓库当前应使用的分支。这样一来,团队任何成员拉取根仓库后,拿到的都是同一组前后端代码版本。submodule本身不会影响子项目的分支策略,各子仓库的提交习惯与代码目录依然可以独立维护。
workspace-map.md 则扮演“项目地图”的角色,盘点每个子项目所属领域及初始化状态,解决“这个任务该先去哪里”的问题。
三、让 AI 深度读懂整个项目
“读懂”并非让AI简单扫描整个仓库并生成一份看似专业的总结,而是要它精准掌握每个项目的设计、风格、规范约束以及安全性能指标。为此,我们编写了一个名为 domain-init 的SKILL。
这个SKILL具备完整的项目识别能力,既接入了cow-harness,也独立开源(开源地址:github.com/MinLeeV5/domain-init)。
1. 前置介绍
domain-init 会首先进行领域识别:从构建文件、依赖、入口、测试工具和目录结构中提取信号,判断当前项目属于哪个端(例如更接近React前端、Go后端、移动端或CLI)。确定领域后,它会采样真实代码,识别项目当前使用的架构设计、组件规范、接口分层、测试夹具及验证命令,并将这些事实转化为可 review 的规则草案。
核心原则:代码是事实源,规则只是对事实的结构化表达。
2. 四大原则
| 原则 | 它解决的问题 |
|---|---|
| 信号优先 | 先根据项目中的依赖、入口和构建文件判断领域,避免将前端规范误用到后端或客户端。 |
| 证据先行 | 每条约定都需能在项目代码中找到出处,避免模型凭记忆生成“理论正确、项目错误”的规则。 |
| 按领域过滤 | 前端重点看设计系统、状态和可访问性;后端重点看接口、数据和可观测性。只有相关的内容才进入上下文。 |
| 人不缺席 | 领域判断、扫描范围、规则草案和最终写入都有确认环节。AI负责归纳,人负责判断哪些是约定、哪些只是历史包袱。 |
3. 最佳实践
如果仅从已有项目中抽取规则,会面临另一个风险:项目本身可能设计不够完善,AI照着这套规范越写越糟。因此,domain-init 还提供了一些最佳实践参考。
| 参考文件 | 设计作用 | 避免 |
|---|---|---|
detection-signals.md | 定义领域识别的优先级、降级路径和人工确认机制。 | 把项目类型猜错。 |
domain-matrix.md 与 dimension-pool.md | 用领域矩阵过滤规则、Skill 和 Agent 的适用维度。 | 把所有治理维度一次性塞给每个项目。 |
project-index.md | 为不同问题指定开源质量标杆和应参考的关键文件。 | 只会套用空泛的“最佳实践”。 |
output-formats.md | 规定 rule、skill、agent 的结构、代码示例和证据要求。 | 生成只有口号、没有执行性的产物。 |
project-index.md 是关键的品质索引,引用了大量优秀实践。针对不同问题,可以查找不同的标杆:
- 编码约定可参考
everything-claude-code的分语言规则; - 前端性能和组件架构可参考 Vercel 的 agent skills;
- 测试策略和验证门控可参考
get-shit-done; - 安全审查则可参考
gstack和 Trail of Bits 的工作流。
使用这些实践时,并非直接复制他人仓库的内容。核心在于让AI学习如何组织规则、如何表达硬约束、如何将验证融入流程,然后结合当前项目的代码事实,生成适合自身的内容。
四、初始化产物
初始化完成后,每个子项目内都会生成一组可供后续任务反复读取的资产。这些资产存放在各自的业务子项目中,而非组合根仓库。
services/backend/
├── AGENTS.md # AI 进入项目的入口
├── cow-harness/
│ └── skills/domain-init/ # 嵌套的领域初始化 skill
├── .ai-harness/
│ ├── project.profile.md # 项目画像
│ ├── context-map.md # 模块、入口与边界
│ ├── verification.md # 验证方式与命令
│ └── domain-init-report.md # 检测依据、确认范围和结果
├── .agents/ # 当前项目选择的平台规则、skills、agents
└── .ai-runtime-artifacts/ # 需求、计划、验证与决策记录
project.profile.md 回答“这是什么项目、关键约束是什么”;context-map.md 回答“代码应该改在哪里、边界在哪里”;verification.md 回答“改完怎么证明它没问题”。
此外,还会生成一些模型层入口:domain-init-report.md 将领域判断依据、用户确认过的范围和生成结果保留下来,避免这些结论变成无从追查的黑盒;.agents/ 是该项目真正会被AI加载的规则、skills和agents;.ai-runtime-artifacts/ 保存需求分析、计划、验证记录和架构决策。
五、初始化后,如何执行任务
当一个任务从全栈组合根目录进入时,执行流程如下:
- AI首先读取
workspace-map.md。 - 任务中若出现明确的项目路径、模块名、接口名或界面名,则利用这些证据定位对应的业务子项目。
- 结合多个相关项目,判断任务体量,决定是否需要进行spec拆解。
- 项目选定后,读取顺序固定:先通过
AGENTS.md进入项目,再加载cow-harness/core/的通用流程,以及当前项目的project.profile.md、context-map.md和verification.md。 - 随后,AI遵循harness的规范,使用superpower和omx开始执行任务。
六、快速接入
- 维护好全栈组合仓库,先将所有子模块拉到组合根仓库锁定的版本:
git submodule update --init --recursive
git submodule status --recursive
- 将
cow-harness也作为submodule加入到你的项目中:
git submodule add git@github.com:WxqKb/cow-harness.git cow-harness
git submodule update --init --recursive
- 接下来让
cow-harness开始为你初始化子项目:
请先读取 cow-harness/README.md、cow-harness/init/fullstack-bootstrap.prompt.md 和 cow-harness/skills/domain-init/SKILL.md。
这是一个由多个业务子项目组成的全栈项目。
请先运行 git submodule status --recursive,区分业务子项目、Harness 和第三方依赖;
展示候选业务子项目并等待我选择。
只初始化我确认的子项目,不要在组合根目录生成混合的领域规则,也不要自动改写未选择的子项目。
七、写在最后
实际上,各大基础模型在编码能力上的持续发力,对程序员行业的冲击是深远的——在大公司中感受尤为明显。例如,一个简单的需求,可以让AI全面理解、拆分,快速搭建出A/B方案,并发布给天使用户进行测试。这一流程以往可能需要投入一周时间,但借助AI+harness,两天即可完成。这种效率提升对个人和业务都将产生不可忽视的价值,而且早已不再是天方夜谭。
Harness全栈的开发模式,无疑也会淘汰一部分人。但在当前的大环境下,我们应尽量快速成长。当编码技术不再是壁垒时,更应高效地利用AI,让AI全面拓宽我们的知识面和业务边界,沉淀为自身的核心竞争力。当环境好转时,你依然是那个炙手可热的人才。
下一篇,我们将继续深入讲解harness中如何使用openspec和omx工作流,进行高质量的项目交付。
