个人vibe coding 重构大型项目的经验分享
程序员若叶睦
2026年04月13日 01:31
收录于文集
共5篇

对于那种上10万级代码的项目重构(特别是那种模块划分不清晰,一个代码文件3,4千行代码),即使你是高贵的claude ops4.6的使用者,也是没法一下子全梭哈的全塞到一个session的上下文里

虽然claude code有自动压缩机制,但有些事情如果不人工干预,会出现大问题。到最后claude code说完成了,然后你去review代码的时候,然后直呼人工智障,感叹Anthropic也不过如此。

大项目重构,肯定是跨session,特别你还是只是小小的claude Pro订阅者,五小时AI窗口休息五小时后起来继续蹬的践行者,更需要跨session能力

对于重构xx项目这种长任务最常见的失败,不是单步报错,而是 session 结束时任务还没做完,即使启用 compaction,也挡不住两类问题:一是在单个 session 里试图做完整个应用,结果上下文先耗尽,二是只做完一部分,下一轮又无法准确恢复现场,过早判断完成。

更稳定的做法,是把长任务拆成 Initializer AgentCoding Agent 两个角色协作,这种模式最适合代码生成、应用搭建、重构迁移这类单个 session 做不完、但又能拆成一批可验证子任务的工作。

Initializer Agent 只在第一轮运行一次,负责生成 feature-list.json、init.sh、初始 git commit 和 claude-progress.txt,先把任务变成可持久化的外部状态,

后面的多个 session 由 Coding Agent 循环执行,每次从 claude-progress.txt 和 git log 恢复现场,定位当前任务,实现一个功能,跑测试,更新 passes 字段,提交代码后退出,这样即使中途崩溃,也能直接从文件系统里的状态继续,而不是从头再来。

进度要放在文件里,不要放在上下文里,功能清单用 JSON,不用 Markdown,结构化格式更适合模型稳定修改(其实可以把更新抽出来变成tool,让到模型直接传参调用,省去每次大模型生成对应的脚本),当 feature-list.json 里所有功能都变成 passes: true,任务才算完成。

这里其实还可以做改进,Initializer agent肯定没法一下子把代码全读完然后列出来很具体的任务,可以采用树型思想。initializer agent定位到某个子模块,然后把阅读子模块具体代码,列出具体更详细的任务,以及代码编写交给coding Agent进行

下面为一个具体例子,把这段规范加到你的 claude.md文件里,配合你的skill和你的对原项目业务的理解等等

代码块
PlainText
自动换行
复制代码
Stateless 树状断点续传式 Multi-Agent 协作协议
为彻底解决大代码量导致的上下文过载、幻觉以及 Session 崩溃,本项目在进行 `Shanno` 编排层复刻时,严格采用基于外部状态文件(File-based State)的协作模式,并采用“渐进式初始化”策略:

### 🎬 角色一:Initializer Agent(只在 Session 1 运行一次)

**职责**:全局扫描、粗颗粒度任务拆解、状态持久化、环境初始化。

1. **模块比对**:宏观比对 `Shanno` 编排层模块与 `Nebula` 现状,识别出核心包结构与接口。
2. **生成任务清单 (`feature-list.json`)**:
   - 🚨 渐进式拆解红线:由于 `Shanno` 代码量庞大,Initializer 禁止一次性读取全部源码。
   - Initializer 仅按包结构/核心接口拆解至“模块级 TODO”,并将字段 `"sub_tasks_generated": false` 写入 JSON。
3. **初始化进度表 (`claude-progress.txt`)**:
   - 记录当前正在进行的任务索引、已完成列表、待完成列表。
   - 设定每个大模块的初步验收标准。
4. **环境准备 (`init.sh`)**:创建开发分支,进行初始的空提交或基础脚手架提交,确保 Git 树干净。
5. **交棒退出**:完成上述文件落盘后,Initializer 必须主动结束 Session,严禁继续向下编码。

### 🔄 角色二:Coding Agent(在后续 N 个 Session 循环执行)

**职责**:读取状态、局部精读与二次拆解、原子化编码、自动化测试、状态回写、Git 提交、主动退出。

1. **上下文恢复(Stateless Boot)**:
   - 每次启动时,首先读取 `claude-progress.txt` 和 `feature-list.json`。
   - 运行 `git log` 和 `git status` 校验当前代码真实状态,绝对不依赖上一个 Session 的任何记忆。
2. **原子化开发与动态拆解**:
   - 仅认领 `claude-progress.txt` 中标记为 `TODO` 的下一个单一模块。
   - 若该模块 `"sub_tasks_generated"` 为 `false`:Coding Agent 需先精读该模块下的 `Shanno` 源码,将其二次拆解为颗粒度极小的“原子子任务”,更新回 `feature-list.json`,并将该字段置为 `true`。
   - 开启内部子 Agent(或保持极简上下文)仅针对当前的原子子任务进行 1:1 的功能复刻与重构。
3. **闭环测试(Test Quality Skill 职责内化)**:
   - 为该功能编写/运行单元测试,确保其与 `Shanno` 逻辑完全一致。
4. **状态持久化与 Git 提交(Git Commit Skill 职责内化)**:
   - 测试通过后,更新 `claude-progress.txt` 中的 `passes` 字段及任务状态。
   - 按照规范格式进行 Git Commit(例如:`feat(shanno-orch): 复刻Session原子功能, pass test X`)。
5. **主动自毁(Session Rotation)**:
   - 完成且仅完成这一个子任务后,必须主动退出当前 Session。通过开启新 Session 来彻底清空上下文毒化,防止幻觉。
复制成功

小任务就有时候没啥必要,前提是模块清晰,描述好需求,你觉得上下文足够的话就直接一把梭哈。对于大任务,vibe coding的很多步都是得你人工审批的,大部分其实你都是在写文档,以及审批AI给你的TODOLIST,对齐你想要来实现的功能,防止AI走偏了

但有一说一,vibe coding真的就是开发周期大幅度缩减了,不过代码质量也是一个关,记得养成review的习惯,不然项目后期会很痛苦。up一般都是claude code编码,codex review。

想要更进一步的话,可以了解一下Harness工程