AI Native 大型代码库开发工作流
边界声明
本 skill 是通用工程化工作流,不定义任何产品定位、产品方向、业务范围或验收细节。
业务目标、使用场景、优先级、验收标准、约束条件都必须由业务方或需求提供方输入。Agent 只负责把这些输入转化为可执行、可验证、可交接的工程任务。
适用场景
当任务具备以下任一特征时启用:
- 涉及大型代码库、多 repo、多 package 或跨模块调用。
- 需求来自业务方描述、现有使用流程、问题反馈或跨模块改动,尚未明确改动文件。
- 同时涉及多个技术层,例如界面层、服务层、数据层、接口契约、配置、权限或监控。
- 单次会话上下文可能过长,需要拆分 session 或 sub-agent。
- 用户希望产出可复用的 spec、方案、测试闭环,而不是只改一处代码。
不适用于非常明确的小改动,例如“把某个文案从 A 改成 B”。
核心原则
-
先定位,再实现 不要直接从需求跳到改代码。先找到入口、依赖、契约和必须修改的文件。
-
wiki 做索引,代码做真相 repowiki、RAG、搜索结果只用于定位。最终判断必须回到当前分支源码、类型、测试和配置。
-
先 contract,再并行 跨技术层或多模块任务,必须先统一接口契约,再拆 session 或 sub-agent。
-
上下文是预算 只把决策信息留在主上下文。搜索结果、日志、候选文件用完后压缩进 spec 或丢弃。
-
输出必须可验证 每次实现都要绑定测试、构建、接口调用、页面检查、日志或监控中的至少一种验证方式。
标准流程
1. 需求澄清
先用最少问题确认任务边界。
必须明确:
- 业务方或使用方要验收的目标是什么。
- 本次要做什么,不做什么。
- 是否涉及兼容性、权限、灰度、国际化、埋点、缓存或其他项目级约束。
- 成功验收标准是什么。
如果信息不足,但可以安全默认,直接声明默认假设并继续。
2. 代码图谱定位
按最短路径检索,不做全量阅读。
优先顺序:
- 使用入口:页面、路由、命令、任务流、外部调用或系统事件。
- 调用入口:组件、状态、hooks/composables、API client、SDK 或任务调度。
- 接口契约:route/controller、DTO/schema、错误码、权限或协议定义。
- 实现入口:service/domain/model/repository、job、handler 或 adapter。
- 数据与配置:table、migration、feature flag、env、cache 或配置项。
- 测试入口:unit、integration、e2e、fixture、mock。
输出应控制在“必须读”和“可能相关”两类,不要把无关文件塞进上下文。
3. 产出 Change Spec
在动代码前生成一份短 spec,后续 session 和 sub-agent 都以它为准。
# Change Spec
## Goal
一句话说明业务方或使用方要验收的目标。
## Scope
- In:
- Out:
## Entry Points
- Client/UI layer:
- Service/API layer:
- Data/config:
- Tests:
## Current Behavior
当前实现如何工作,引用关键文件和函数。
## Target Behavior
目标行为、边界条件、异常处理。
## Contract
- Request:
- Response:
- Error:
- Permission:
## Files
- Must change:
- Likely change:
- Read only:
## Validation
- Type/lint:
- Unit:
- Integration:
- E2E/manual:
## Open Questions
仍需确认的问题。
4. 拆分执行
根据任务复杂度选择执行方式。
| 任务类型 | 推荐方式 |
|---|---|
| 单模块小改动 | 一个 session 直接完成 |
| 跨模块但同一技术栈 | 主 session 维护 spec,局部实现 |
| 多技术层联动 | 先产出 contract spec,再按责任边界拆 session |
| 多 repo 或复杂排查 | Explorer 定位,Worker 实现,Reviewer 审查 |
| 长任务上下文接近上限 | compact 后用 spec 继续,不携带完整聊天历史 |
拆分时必须给每个 agent 明确:
- 负责范围。
- 禁止修改范围。
- 输入 spec。
- 预期输出格式。
- 必须运行或说明无法运行的验证。
5. 实现约束
实现时遵循项目已有模式。
- 优先复用现有组件、工具函数、类型、错误处理和测试结构。
- 不引入新依赖,除非 spec 明确需要。
- 不做无关重构。
- 不把临时定位信息写进代码注释。
- 不为了让测试通过而弱化类型、删除断言或跳过用例。
6. 验证闭环
实现后至少执行与变更相关的一种验证。
常见顺序:
- Typecheck 或编译。
- Lint。
- 相关单测。
- 相关集成测试。
- 关键入口或接口手动验证。
- 失败日志回读并修复。
如果验证失败,先判断是实现问题、测试 fixture 问题、环境问题还是既有问题。不要直接跳过。
7. Review 与交付
最终输出只保留高信号信息:
- 改了什么。
- 为什么这么改。
- 跑了什么验证。
- 还有什么风险或未覆盖项。
不要粘贴大量 diff、搜索结果或完整日志。
上下文预算规则
主上下文只保留:
- Change Spec。
- 已确认的 contract。
- 必须修改的文件摘要。
- 当前失败日志的最小片段。
- 最新验证结果。
以下内容用完即丢或压缩:
- 大量搜索结果。
- 候选文件列表。
- 完整日志。
- 已排除方案。
- 旧的中间推理。
当上下文明显膨胀时,先更新 Change Spec,再 compact 或拆 session。
Sub-agent 输出模板
每个 sub-agent 返回时使用以下格式:
## Scope
本 agent 负责什么。
## Findings
- 关键发现 1
- 关键发现 2
## Changes
- 修改文件:
- 行为变化:
## Validation
- 已运行:
- 结果:
- 未运行及原因:
## Risks
- 仍需主 agent 注意的问题。
禁止事项
- 禁止把 wiki 或 RAG 结果当作最终事实。
- 禁止在 contract 未统一前并行实现前后端。
- 禁止把大量搜索结果直接塞给主 agent 汇总。
- 禁止通过删除测试、放宽类型、吞掉错误来制造“通过”。
- 禁止在未说明风险的情况下跨 repo 做大范围重构。