Nader Dabit(Session.ai)分享了用云端 autonomous coding agent 处理技术债的实战模式。
技术债为什么越积越多
工程团队总有一堆技术债计划要还,但技术债总是被优先砍掉——因为处理每个债务意味着某个工程师要停下来不做更紧急的事。
Linter、SonarQube、Dependabot 降低了识别债务的成本,但修复还是要靠人。工程师本来就只有不到 20% 的时间在写代码,技术债能分配到的时间池永远很小且被争抢。
Cloud Agent 的核心优势
Autonomy:不需要人盯着,在自己云端环境里跑。团队发起 session,回来就是完成好的 PR,不管有没有人在线。
Parallelism:一个团队可以同时跑多个 agent session。
Scheduling:技术债工作按自己的节奏跑——每天 triage、每周维护、或者和特定事件绑定的一次性清理。
Long horizons:跨数十个 session 持续工作于同一个项目,保持状态并适应每个 session 揭示的内容。需要多周持续努力的现代化工作变得 tractable,因为 agent 不会被中途拉去做别的事。
9 种实用模式
1. 大规模迁移
给 agent 一个 prompt 让它:先划分子项目表面范围,提出无冲突的工作包,然后每个包启动一个并行 session,全部遵循共享 playbook 保持输出一致。PR 在接下来几天陆续合并。
适用:JavaScript → TypeScript、REST → GraphQL、MongoDB → Postgres、Angular 16 → 18。
2. 依赖保持最新
每周一 scheduled session 自动跑。Patch 和 minor 版本 bump 打包成一个带测试结果的 PR。每个 major 版本 bump 单独开一个 PR,附上 changelog 的 breaking change notes 和已应用好的兼容性修改。工程师只在需要判断的情况下介入。
3. Feature flag 按计划退役
Flag 上线当天,schedule 一个 30 天后的一次性 session。日期到了,agent 追踪 flag 的所有使用,保留 enabled 路径,删除 disabled 路径,更新测试,开一个总结 PR。
4. 测试覆盖率批量填补
让 agent 找到覆盖率最低的模块,每个模块 dispatch 一个并行 session,每个 session 写到模块跨越 80% 覆盖率线。8 个 session 过夜跑,一轮把代码库从 44% 干到 68%。
5. 生产错误 Daily Triage
每天 scheduled session 集成 Sentry,拉取 top unresolved errors,获取 stack traces 和 breadcrumbs,定位 repo 里相关文件,识别 root cause,每个问题开一个带回归测试的针对性 fix PR。长期尾部的错误(本来不够格开 sprint ticket 的)同一轮全清。
6. 设计系统 drift 检测
每天 scheduled session 扫描已合并的 PR,标记硬编码的 hex 值、缺失的 spacing token、重复共享库的 one-off 组件,对每个问题开 auto-fix PR。
7. 单体文件拆分
从 Slack、IDE 或 agent web UI 发起 ad-hoc session,prompt 描述目标结构。2000 行的 Express router 被拆成按域分的 route 文件,共享 middleware 提取成独立模块,原有 URL path 保持不变,现有测试套件验证 refactor。周末一个 PR 完成。
8. 文档与代码同步
每天 scheduled session diff 昨天合并的 PR 和 docs repo,对已重命名的 endpoint、已废弃的选项、行为已变化的功能开纠正 PR。
9. Bug 报告自动调查
给 Linear、Jira 或 GitHub issue 加上特定 label 触发 agent session,在浏览器尝试复现问题,附上屏幕录制和复现步骤,把复现结果 post 回 ticket。
核心转变
这些模式清掉现有债务,同时防止新债务形成。Agent 跑的 PR review 把这个过程推到了上游——bug、标准违规、缺失测试在 PR 本身就被发现和修复。
一旦这些节奏建立起来,技术债维护就变成了 standing process(持续性流程),而非 periodic cleanup(周期性大扫除)。
原文:A Practical Guide to Paying Down Tech Debt with Agents — Nader Dabit