[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"pack-detail-refactor-heavy-codebase-zh":3,"seo:pack:refactor-heavy-codebase:zh":99},{"code":4,"message":5,"data":6},200,"操作成功",{"pack":7},{"slug":8,"icon":9,"tone":10,"status":11,"status_label":12,"title":13,"description":14,"items":15,"install_cmd":98},"refactor-heavy-codebase","🔨","#DC2626","stable","稳定","重构重型代码库","10 件套，给要拆 god class、切分单体、迁移到强类型的工程师。先盯死测试覆盖率，再批量 codemod，再丢给 AI agent，最后人工 diff 复核 — 上线不炸。",[16,28,36,44,54,61,68,75,82,88],{"id":17,"uuid":18,"slug":19,"title":20,"description":21,"author_name":22,"view_count":23,"vote_count":24,"lang_type":25,"type":26,"type_label":27},832,"905bfdbf-dbb4-45e5-b3e3-601ab52d9ef1","tidy-first-ai-code-refactoring-skill-agents-905bfdbf","Tidy First — AI Code Refactoring Skill for Agents","Skill teaching AI agents Kent Beck's Tidy First methodology. Make small structural improvements before behavior changes to keep codebases clean and maintainable over time.","Skill Factory",169,0,"en","skill","Skill",{"id":29,"uuid":30,"slug":31,"title":32,"description":33,"author_name":34,"view_count":35,"vote_count":24,"lang_type":25,"type":26,"type_label":27},4410,"6285fca6-68a4-4b43-bbdc-0fc70327a3ef","claude-code-agent-technical-debt-manager-6285fca6","Claude Code Agent: Technical Debt Manager","Expert technical debt analyst for code health, maintainability, and strategic refactoring planning. Use PROACTIVELY when codebase shows complexity growth, when planning...","TokRepo精选",82,{"id":37,"uuid":38,"slug":39,"title":40,"description":41,"author_name":42,"view_count":43,"vote_count":24,"lang_type":25,"type":26,"type_label":27},2640,"0a991711-47d7-11f1-9bc6-00163e2b0d79","ast-grep-structural-code-search-rewrite-tool-0a991711","ast-grep — Structural Code Search and Rewrite Tool","A fast CLI tool for searching and transforming code using abstract syntax tree patterns instead of regex, supporting JavaScript, TypeScript, Python, Rust, Go, and more.","AI Open Source",193,{"id":45,"uuid":46,"slug":47,"title":48,"description":49,"author_name":50,"view_count":51,"vote_count":24,"lang_type":25,"type":52,"type_label":53},853,"a414acda-33ca-11f1-9bc6-00163e2b0d79","codemod-ai-powered-code-migration-cli-a414acda","Codemod — AI-Powered Code Migration CLI","Scaffold, share, and run large-scale code migrations with AI. First-class ast-grep support, multi-step YAML workflows, community codemod registry. Apache-2.0, 970+ stars.","Script Depot",168,"script","Script",{"id":55,"uuid":56,"slug":57,"title":58,"description":59,"author_name":50,"view_count":60,"vote_count":24,"lang_type":25,"type":52,"type_label":53},3184,"df1ae063-451e-4b1f-9061-4867afc21ce4","gritql-declarative-code-rewrite-cli","GritQL — Declarative Code Rewrite CLI","GritQL is a declarative language + CLI for searching and rewriting codebases with snippet-like patterns, making large refactors repeatable and reviewable.",49,{"id":62,"uuid":63,"slug":64,"title":65,"description":66,"author_name":34,"view_count":67,"vote_count":24,"lang_type":25,"type":26,"type_label":27},4407,"8ffed3e3-b6ce-4df9-9c21-7487570c766f","claude-code-agent-refactoring-specialist-8ffed3e3","Claude Code Agent: Refactoring Specialist","Use when you need to transform poorly structured, complex, or duplicated code into clean, maintainable systems while preserving all existing behavior. Specifically:\\ \\ \\...",68,{"id":69,"uuid":70,"slug":71,"title":72,"description":73,"author_name":22,"view_count":74,"vote_count":24,"lang_type":25,"type":26,"type_label":27},2273,"1304ff4c-1890-40b4-aa89-ca2963a90d67","code-simplifier-anthropic-official-cleanup-subagent-1304ff4c","code-simplifier — Anthropic Official Cleanup Subagent","Anthropic's open-source post-task cleanup agent that Boris Cherny runs after every Claude Code session. Refactors for clarity without changing behavior.",281,{"id":76,"uuid":77,"slug":78,"title":79,"description":80,"author_name":34,"view_count":81,"vote_count":24,"lang_type":25,"type":26,"type_label":27},4414,"fb99be5d-d29e-4460-a3d5-ebdc2c07d132","claude-code-agent-unused-code-cleaner-fb99be5d","Claude Code Agent: Unused Code Cleaner","Detects and removes unused code (imports, functions, classes) across multiple languages. Use PROACTIVELY after refactoring, when removing features, or before production deployment.",66,{"id":83,"uuid":84,"slug":85,"title":86,"description":87,"author_name":34,"view_count":67,"vote_count":24,"lang_type":25,"type":26,"type_label":27},4505,"dccb0175-e306-4c4b-ba7c-039b28f8847b","claude-code-agent-legacy-modernizer-dccb0175","Claude Code Agent: Legacy Modernizer","Use this agent when modernizing legacy systems that need incremental migration strategies, technical debt reduction, and risk mitigation while maintaining business continuity. Specifically:\\\\n\\\\n\u003Cexample>\\\\nContext: A development team has a 15-year-old mono...",{"id":89,"uuid":90,"slug":91,"title":92,"description":93,"author_name":94,"view_count":95,"vote_count":24,"lang_type":25,"type":96,"type_label":97},3685,"4127b8de-72ce-5cc8-8f3e-8f0367e64cd2","code-review-graph-mcp-context-for-smarter-reviews","code-review-graph — MCP Context for Smarter Reviews","code-review-graph builds a Tree-sitter code graph and exposes minimal review context via MCP; verified 16,364★ and claims ~8.2× token reduction on 6 repos.","MCP Hub",160,"mcp","MCP","tokrepo install pack\u002Frefactor-heavy-codebase",{"pageType":100,"pageKey":8,"locale":101,"title":102,"metaDescription":103,"h1":104,"tldr":105,"bodyMarkdown":106,"faq":107,"schema":123,"internalLinks":129,"citations":142,"wordCount":155,"generatedAt":156},"pack","zh","重构重型代码库 — 10 个 AI 工具的安全大规模重构流水线","Tidy First \u002F ast-grep \u002F GritQL \u002F Codemod \u002F Refactoring Specialist agent \u002F code-simplifier \u002F Unused Code Cleaner \u002F Legacy Modernizer \u002F code-review-graph MCP。真正在线上重构 god class、拆单体、迁强类型的工程师用的流水线。含安装顺序与踩坑提醒。","重构重型代码库 — 一条覆盖率门禁的流水线","10 件套，按精心设计的顺序用：先写测试锁死爆炸半径，再用 AST codemod 完成机械改动，剩下需要判断的外科手术丢给 refactoring agent，最后用结构化 diff review 拦在合并之前。别让 LLM 从头重写一个 4 千行的文件。","## 这个 pack 解决什么问题\n\n你接手了一个文件。4,300 行，叫 `OrderService.ts`，团队里没人敢碰。你要拆它、给它加类型、或者干脆杀掉它 — 而现有测试覆盖率是 18%。让 LLM 听个 prompt 整个重写，是凌晨 2 点 prod 挂掉的路径。让自己手撸，是一个季度消失的路径。\n\n这个 pack 是工程师真正用的**流水线**替代方案：先建覆盖率门禁，机械改动用结构化 codemod 解决 80%，剩下模棱两可的外科手术交给 AI agent，合并前用结构化 diff review 拦一道。每个工具对应一个特定阶段。**按顺序装，按顺序用。**\n\n## 五阶段流水线\n\n### 阶段 1 — 锁死行为（覆盖率门禁）\n\n1. **Tidy First**（Kent Beck 的纪律，打包成 skill）— 把*结构性*改动（重命名、抽取、移动）和*行为性*改动（逻辑）严格分开。纪律核心：永远不在同一个 commit 里同时做这两件事。这个 skill 强制执行。动手之前先看它。\n2. **Technical Debt Manager**（Claude Code agent）— 扫目标文件\u002F模块，输出一份排序清单：先修哪个、爆炸半径多大、覆盖率缺口在哪儿会藏回归。用这份输出，在你动任何东西之前，给*当前*行为写 characterization tests。如果被动到的路径覆盖率 \u003C 80%，停下来先补测试。这就是门禁。\n\n### 阶段 2 — 机械改动（codemod，不是 LLM）\n\n3. **ast-grep** — 基于 tree-sitter 的结构化搜索替换。一条命令把 2,000 个文件里所有 `getUserById(string)` 调用点改成 `getUserById({ id: string })`，零字符串匹配误伤。**80% 的机械重构活儿就该用这个。**\n4. **GritQL** — 声明式 pattern 改写，比 ast-grep 抽象一点。涉及代码在块之间搬运（抽取方法、内联变量）时更好用。规则读起来像「如果 X 出现在 Y 附近，重写成 Z」就选 GritQL。\n5. **Codemod** — AI 驱动的迁移 CLI。用于开源社区已经写好的迁移（React class→hooks、Mocha→Vitest、Node http→fetch）。先查 registry 再考虑自己写 codemod。\n\n### 阶段 3 — 模棱两可的外科手术（AI agent）\n\n6. **Refactoring Specialist**（Claude Code agent）— 安装路径 `development-tools\u002Frefactoring-specialist`。把那个有失败测试的文件交给它，清楚地告诉它：「把这三个方法抽出去成 `PricingPolicy` 类，`OrderService` 的对外接口不变，不要动行为。」agent 给你一个 diff，你 review。\n7. **code-simplifier** — Anthropic 官方清理 subagent。agent 做完重活之后，对 diff 跑 code-simplifier 收掉那些无谓的啰嗦（嵌套三目、重复 guard）。外科级，限定范围。\n\n### 阶段 4 — 收尸\n\n8. **Unused Code Cleaner**（Claude Code agent）— 拆完之后，diff 里会到处是死掉的 import、没人用的 export、孤儿 helper。这个 agent 用交叉引用找它们，不是 regex。**最后一步跑** — 永远不要中途跑，因为重构进行中那些「没用」的东西常常马上要被重新接上。\n9. **Legacy Modernizer**（Claude Code agent）— 专门对应迁强类型这一支：无类型 JS → TS、Python → 类型化 Python、callback → async。如果重构包含语言\u002F范式升级，阶段 2 codemod 跑完后用。\n\n### 阶段 5 — 合并门禁（结构化 diff review）\n\n10. **code-review-graph MCP** — 给你的 code review agent（或你本人）提供图感知的 diff 视图：哪些 caller 受影响、对外接口改了什么、测试覆盖缺口现在落在哪儿。这是合并前最后一道门。如果图显示 diff 里有未覆盖的路径，打回阶段 1。\n\n## 它们怎么协同\n\n```\n[阶段 1] Tidy First ──> Technical Debt Manager ──> characterization tests\n                                                          │\n                                                          ▼（覆盖率 ≥80%）\n[阶段 2] ast-grep \u002F GritQL \u002F Codemod  ◀─── 80% 机械改动\n                                                          │\n                                                          ▼\n[阶段 3] Refactoring Specialist ──> code-simplifier  ◀─ 模糊外科手术\n                                                          │\n                                                          ▼\n[阶段 4] Unused Code Cleaner ──> Legacy Modernizer（如有强类型迁移）\n                                                          │\n                                                          ▼\n[阶段 5] code-review-graph MCP  ─────────────────> 合并\n```\n\n关键铁律：**别跳过阶段 1**。所有「AI agent 把代码库重构成废墟」的恐怖故事，开头都是缺一个 characterization test。agent 搬走了看起来死掉的代码，结果那段在生产里是承重的。测试能抓住这种事，别的都抓不住。\n\n## 你会遇到的取舍\n\n- **ast-grep vs GritQL** — ast-grep 更快、更简单、随处可装。GritQL 在 pattern 需要控制流时更强。默认 ast-grep；规则要表达「赋值之后、return 之前」时换 GritQL。\n- **Refactoring Specialist vs 自己写 diff** — 200 行以下的拆分，用 agent 是杀鸡用牛刀。1,000 行以上的拆分，手撸是慢性自杀。甜点区：200-1,500 行外科级抽取，你心里已经有目标结构。\n- **Unused Code Cleaner 的时机** — 阶段 2 跑它，它会删掉阶段 3 马上要接上的代码。最后跑。永远最后。\n- **Codemod registry 覆盖范围** — 流行迁移（React\u002FMocha\u002FNode）registry 是金矿。你公司内部 API 改名你得自己写 ast-grep 规则。别跟它较劲。\n\n## 常见踩坑\n\n- **覆盖率当虚荣指标** — 80% 指被动到的文件，不是整个 repo。agent 只关心爆炸半径。repo 全局覆盖率是给经理看的数字。\n- **让 LLM 整个重写文件** — 把文件粘进 Claude，拿到「更干净」的代码，提交。这是凌晨 2 点收 page 的路径。上面这条流水线就是替代方案：小、可 review、有门禁的 diff。\n- **阶段之间忘记 commit** — 每个阶段产出一个可 review 的 diff。每个阶段边界都要 commit。后面 bisect 全靠这个。\n- **重构没做完就跑 Unused Code Cleaner** — 它会把阶段 3 马上要调用的 helper 删掉。每次都最后一步。",[108,111,114,117,120],{"q":109,"a":110},"这套流水线适合多大规模的重构？","甜点区是 5-50 个文件、500-5,000 行变更。再小，手动改 + 一个 AI agent 就够。再大，得把重构拆成多次过这条流水线 — 别想着一次性合一个 5 万行的 diff，没有任何 review 流程在这种规模上能抓住问题。流水线靠重复 scale，不靠放大单次规模。",{"q":112,"a":113},"为啥用 ast-grep 而不是直接让 Claude 重写文件？","因为 ast-grep 是确定性的、幂等的、除非你明说否则不会引入任何行为变化。LLM 重写文件可能悄悄把 `===` 改成 `==`、丢掉一个 try\u002Fcatch、或者只改了 import 没改 usage 的变量名。ast-grep 做不到 — 它只做 pattern 说的事。LLM 留给那 20% 需要判断的活，机械的 80% 别让它碰。",{"q":115,"a":116},"我代码库覆盖率几乎为零怎么办？","那阶段 1 就是第一个 sprint 的全部工作。针对*当前*行为（什么样就什么样，含 bug）写 characterization tests。爆炸半径里有了测试，重构本身就是轻松活儿。跳过这一步是重构灾难最常见的单一原因。",{"q":118,"a":119},"10 个工具必须全装吗？能不能挑 3 个？","大部分重构只动 6 个：Tidy First（心智模型）、Technical Debt Manager（划范围）、ast-grep（机械改动）、Refactoring Specialist（外科手术）、Unused Code Cleaner（清场）、code-review-graph MCP（门禁）。另外 4 个是特定场景：GritQL 用于控制流改写、Codemod 用于已知迁移、code-simplifier 用于啰嗦清理、Legacy Modernizer 用于强类型迁移。挑阶段必装的那几个，剩下的按需。",{"q":121,"a":122},"动了 80 个文件的重构 diff 怎么 review？","别一个文件一个文件看 — 按 transformation 分组：「这 40 个文件是 `getUserById` 改名 `findUser`、这 25 个是抽出 `PricingPolicy`、这 15 个是死代码清理」。code-review-graph MCP 帮你生成这种分组。如果你在 PR 里要滚 80 个文件，说明那个 diff 没过流水线 — 打回去。",{"@context":124,"@type":125,"name":13,"description":126,"numberOfItems":127,"inLanguage":128},"https:\u002F\u002Fschema.org","ItemList","10 个 AI 工具组成的五阶段重构流水线：覆盖率门禁、codemod、AI agent 外科手术、清场、结构化 diff review。",10,"zh-CN",[130,134,138],{"url":131,"anchor":132,"reason":133},"\u002Fzh\u002Fai-tools-for\u002Fcode","代码类 AI 工具","TokRepo 上更广的代码类 AI 资产目录",{"url":135,"anchor":136,"reason":137},"\u002Fzh\u002Ftopics","浏览其他主题 pack","还有 AI agent \u002F MCP server \u002F 工程师工具包等多个主题 pack",{"url":139,"anchor":140,"reason":141},"\u002Fzh\u002Ffeatured","TokRepo 精选资产","这 10 个工具属于更大的精选目录",[143,147,151],{"claim":144,"source_name":145,"source_url":146},"ast-grep 是基于 tree-sitter 的结构化代码搜索与改写工具","ast-grep 官网","https:\u002F\u002Fast-grep.github.io\u002F",{"claim":148,"source_name":149,"source_url":150},"Tidy First 强调把结构性改动与行为性改动分开","Tidy First by Kent Beck (O'Reilly)","https:\u002F\u002Fwww.oreilly.com\u002Flibrary\u002Fview\u002Ftidy-first\u002F9781098151232\u002F",{"claim":152,"source_name":153,"source_url":154},"GritQL 是一种用于搜索与改写源代码的声明式查询语言","GritQL 文档","https:\u002F\u002Fdocs.grit.io\u002Flanguage\u002Foverview",900,"2026-05-22T10:00:00Z"]