用 knip 和独立工作树批量清理死代码
先用 knip 识别未使用代码,再用 jq 按包拆分报告,交给编码 Agent 在独立工作树中清理。流程以类型检查和测试验证删除结果,并要求保留动态导入及按路径加载的文件。
原文暂未完整获取,基于公开信息的快读
清理死代码,可以先让工具列清单,再让编码 Agent 动手。dev.to 上的一篇文章给出了具体流程:用 knip 找出未使用代码,借助 jq 按包拆分报告,再把任务交给独立 Git worktree 中的 Agent。删除结果要通过类型检查和测试;动态导入、按路径加载等可疑项则保留并说明原因。
目前能确认什么
作者把删除范围的决定权交给 knip。它会读取 package.json,通过插件寻找入口,报告未使用的文件、导出、类型和依赖。但正式交给 Agent 前,开发者需要先检查报告,补齐配置缺口,确保需要分析的生成文件已经存在。
这轮清理只包含文件、导出和类型。依赖留到最后统一处理,因为删除依赖会改动共享锁文件,容易让多个任务碰到同一处。
jq 负责按包过滤报告。每个包对应一个 Agent、一个分支和一个 worktree。Git worktree 可以让同一仓库的不同分支拥有各自的工作目录,便于隔离修改。
Agent 只能处理清单中的目标,不能修改其他包,也不能添加忽略配置来消除告警。每轮删除后重新分析,直到清单为空,并通过 tsc --noEmit 和测试。遇到动态导入、公共 API 或按路径加载的文件,需要保留并报告。
我的判断
这套流程最有用的地方,是把 Agent 的删除权限变成可核对的清单。
对多包仓库,按包拆任务有助于缩小审查范围。但目录隔离不等于依赖隔离:一个包导出的接口,可能由其他包或仓库外的使用者调用。
类型检查和测试通过,仍不能证明所有删除都安全。
静态分析依赖入口与引用关系,测试也只能覆盖已有用例。节选尚未展示后续 worktree 操作和合并流程,跨包改动如何汇总验证还不清楚。另外,可疑项必须保留,却又要求清单最终为空;这些例外如何结束任务,仍需后文说明,不能为了达标强行删除。