8.7 KiB
已有项目初始化与应用拆分工作流
1. 适用范围
适用于已经存在源码、构建文件、模块、接口、数据库对象、任务或部署配置的项目。目标是在保护现有工作区的前提下建立可信项目上下文,识别真实运行与依赖边界,再形成可渐进实施、可回滚的应用拆分方案。
已有目录或模块名称不能直接视为正确应用边界;代码引用也不等于业务所有权。静态源码只能证明当前实现,运行拓扑、流量、数据规模和生产行为仍需配置、日志、部署资料或用户确认支持。
2. 输入与保护措施
开始时记录:
- 当前分支、HEAD、staged、unstaged 和 untracked 状态;
- 适用的
AGENTS.md、.craftkit/、项目说明和贡献规范; - 构建清单、锁文件、源码根、模块、测试和自动化配置;
- 数据库、消息、缓存、文件、定时任务和外部系统的非秘密元数据;
- 制品、部署单元、环境配置入口和运行依赖;
- 已知问题、迁移限制、兼容窗口和不能变更的范围。
不得读取或记录凭据、完整连接串和生产敏感数据。不能为了扫描而构建、启动、迁移或连接外部环境。
3. 执行阶段
E0:确认成熟项目模式
- 使用
init只读探测有效源码、构建文件、现有项目资料和代表性入口。 - 展示“成熟项目”判断、项目根、工作区状态和拟扫描范围。
- 多仓或多根目录时,先确认本次拆分主体及关联仓库只读范围。
- 到达 G0,等待用户确认模式、范围和可使用的运行资料。
E1:保守初始化项目资料
- 完整读取现有
AGENTS.md与.craftkit/,禁止覆盖未知用户章节。 - 从构建和锁文件提取语言、框架、精确版本、模块和依赖证据。
- 读取少量代表性的入口、接口、服务、数据访问和测试文件;多种风格并存时不按数量自动裁决。
- 展示当前项目事实、冲突、疑似历史结构和待确认项。
- 用户确认后由
init保守合并项目资料,并验证 JSON、索引和忽略规则。 - 使用
guidance或手工入口顺序验证一项真实项目规则。
E2:建立现状基线
从源码和可用运行资料分别建立视图:
- 构建视图:模块、依赖方向、公共库和循环依赖;
- 调用视图:入口、同步调用、异步消息、批处理和人工步骤;
- 数据视图:表、文件、缓存、主数据、写入方和共享访问;
- 部署视图:制品、进程、配置、扩缩容、故障域和发布方式;
- 组织视图:维护团队、变更频率、审批和支持责任;
- 质量视图:测试边界、发布验证、已知风险和观测能力。
每项结论注明证据来源和置信度。无法验证的生产拓扑与流量必须标为待验证。
E3:建立目标需求基线
- 使用
requirements区分当前行为、目标行为、必须保持的兼容和范围外事项。 - 明确拆分动因,例如独立发布、团队自治、容量、故障隔离、安全边界或技术替换。
- 为拆分目标设置可测指标,例如依赖减少、发布独立性、故障影响范围或迁移窗口,而不是只写“解耦”。
- 记录必须继续兼容的调用方、数据格式、作业、报表和运维流程。
- 到达 G1,由用户确认目标、约束、验收和允许改变的边界。
E4:识别候选边界与阻塞耦合
- 从业务能力和数据所有权出发提出候选边界,再映射当前模块,而不是按目录直接切分。
- 为每个候选应用列出入口、核心职责、不负责事项、依赖、数据、任务和部署现状。
- 识别阻塞拆分的耦合:共享写库、跨模块事务、循环调用、共享会话、共享缓存键、文件约定、定时任务、硬编码配置和公共类中的业务逻辑。
- 区分必须拆除的耦合、迁移期允许的兼容桥和可以长期保留的公共基础能力。
- 对证据不足的动态调用、反射、配置路由和外部任务安排专项验证。
E5:设计目标应用和过渡架构
至少比较以下方案:
- 保持现状,仅加强模块边界;
- 模块化单体并清理依赖;
- 抽取少量高收益独立应用;
- 按多个业务能力逐步形成独立应用。
对推荐方案逐项说明业务收益、数据和事务变化、接口成本、部署与观测成本、团队影响、迁移风险和不采用其他方案的理由。应用拆分清单必须包含职责、不负责事项、契约、数据所有权、运行和安全边界。
过渡架构应明确:
- 旧入口与新入口的流量切换方式;
- 同步接口、事件、批处理或文件交换的适用范围;
- 数据迁移、复制、校验、回放和最终切换责任;
- 迁移期读写权威、兼容适配层和弃用条件;
- 跨边界事务的幂等、补偿、重试和对账方式;
- 发生失败时回到旧路径的条件和数据处置方法。
到达 G2,由用户确认目标边界、过渡架构和明确不拆分的部分。
E6:细化专项设计
根据批准方案按需执行:
design-backend:目标应用内部模块、服务、事务、异常和观测边界;design-frontend:前端应用、路由、状态、共享组件和渐进切换边界;design-api、prepare-api:新旧接口、适配层、版本、字段映射和弃用计划;design-db:数据所有权、结构、双读双写风险、迁移、校验和回滚;design-workflow:跨应用状态、任务、超时、撤回、补偿和审计。
所有专项设计必须映射回现有调用方和测试,不得只描述目标结构。
E7:制定渐进迁移计划
使用 plan-change 将迁移拆为可独立验证的批次。通常按以下顺序评估,但不得机械套用:
- 增加观测、契约测试和现状回归基线;
- 收紧原系统内部模块边界并消除高风险循环依赖;
- 建立目标应用骨架和兼容适配层;
- 迁移低风险读取或旁路能力;
- 迁移写入、任务和数据权威;
- 分批切换调用方和流量;
- 完成对账、稳定观察、旧路径下线和资料更新。
每个批次必须记录:前置条件、涉及应用、代码与数据范围、兼容方式、验证、观测窗口、停止条件、回滚步骤和不可逆点。未经额外授权,不执行数据库迁移、环境部署或流量切换。
E8:形成交付基线
汇总并冻结本轮已批准的:现状事实、目标应用边界、决策记录、专项契约、迁移批次、验证矩阵、风险台账和待确认项。需要后续任务接续时使用 handoff 生成交接材料,不把未验证运行行为写成已完成结论。
4. 已有项目交付物
- 保守合并并验证的
AGENTS.md与.craftkit/项目资料; - 当前模块、调用、数据、部署、组织和质量视图;
- 拆分目标、兼容范围和可测验收指标;
- 候选应用、阻塞耦合和目标应用职责矩阵;
- 目标架构、过渡架构、数据权威和契约清单;
- 分批迁移、验证、观测、停止和回滚计划;
- 未验证运行事实、外部协调项和不可逆操作清单。
5. 停止条件
遇到以下情况时暂停:无法区分既有改动与本次产物、关键调用或数据写入方未知、生产运行资料与源码冲突、迁移需要未授权的外部系统访问、存在无法回滚的数据变更、关键调用方未纳入范围,或用户尚未批准对应审批门。
6. 可直接复制的总控提示词
请按《已有项目初始化与应用拆分工作流》推进当前项目。先保护现有工作区,使用 init 只读判断成熟项目模式,展示项目根、分支、已有改动、拟扫描范围和运行资料边界,在 G0 等待我确认。确认后保守合并 AGENTS.md 与 .craftkit 项目资料,建立构建、调用、数据、部署、组织和质量现状视图,再使用 requirements 确认拆分动因、兼容范围和可测目标。
基于真实业务能力、调用链、数据写入方和部署单元提出候选应用,识别共享写库、跨模块事务、循环调用、共享会话、缓存、文件和任务耦合。比较保持现状、模块化单体、抽取少量应用和多应用渐进拆分方案,形成目标架构、过渡架构、数据权威、契约、迁移批次、验证、观测、停止和回滚计划。全过程区分源码事实、运行事实、用户确认、项目规则、设计建议和待验证项;不把目录名称直接视为业务边界。只在 G0、G1、G2、G3、业务决策、权限扩大或高风险副作用处暂停。未经我另行授权,不修改业务代码,不连接外部环境,不迁移数据,不部署,不提交,不推送。