每次长会话跑完,仓库里就多几个 PLAN.md 、SUMMARY.md 、HANDOFF-xxx.md 。写的时候都有用,会话一结束就没人管了。
一是乱糟糟的。再就是是这些文件会被下一个会话当成项目现状读进去浪费 Token ,我在自己仓库里挖出一份 126KB 的交接文档,51 天没动过,还挂着入站引用,新会话顺着引用链读进去,就把 51 天前的状态当成现在。攒得越多,agent 的上下文越来越乱。
花一天写了个 mdsweep:684 行的单文件 Node CLI ,零依赖。
思路:
- 三个信号认领 agent 产物:文件名模式、git 历史里的 Co-Authored-By: Claude 、frontmatter 标记
- 按 git 活跃度 + 入站引用分三级:active (最近动过)、stale (老但还有引用,不动)、orphan (老且零引用)
- 只对 orphan 动手,挪进 .mdsweep/trash/ 带 manifest ,undo 字节级还原。scan 和默认的 quarantine 都是 dry-run ,不加 --apply 不挪一个文件。整个工具没有删除逻辑。
拿自己 14 个仓库跑了一遍:1879 个 md/txt ,317 个被三个信号认领,54%已经陈旧,115 个孤儿文件约 0.9MB 。最活跃那个仓库标了 130 个、该隔离的 0 个:都在用,工具就得收手。全量扫完不到 5 秒。
顺便交代:这工具本身也是 Claude Code 写的。拿它扫自己的仓库,10 个 commit 全带 Co-Authored-By trailer ,信号②满分命中。
仓库: https://github.com/szp2005/mdsweep
文件名模式是最弱的一环,我只收录了自己见过的( PLAN/SUMMARY/HANDOFF/FINDINGS 这类)。不知道你们的 agent 还会留什么名字的文件?
纯新手分享想法并交流学习,各位大神勿喷。。。🙏🙏🙏