本地CLI工具,通过置信度标签(verified至insufficient)追溯文件由哪个脚本、Notebook或AI Agent生成。
AI 编码 Agent 生成文件的速度远超人工记忆来源的能力。Git 记录版本;DVC 和 OpenLineage 记录你预先声明的流水线;但无人记录计划外的产出——Agent 在任务中途写入的 CSV、重新生成的 PNG、静默访问了数据文件的 notebook。
trace-file-lineage(MIT 协议,~361★,v0.7.0)是一个本地 CLI 工具,用五个置信度标签——verified、strong-candidate、candidate、weak-signal、insufficient——来回答"这个文件是由哪个脚本、notebook、数据、命令或 AI Agent 生成的?",并对猜测进行明确标注。我没有测试或运行过这个工具;以下所有内容均来自阅读 README 和源码。
两种模式,一次诚实的划分。回顾模式(Retrospective):对于已有的文件,从代码、文档元数据和 Git 历史中重建最可能的来源——"附带推理过程的排名猜测"(README 原话)。前瞻模式(Prospective):lineage run --task "..." -- python sweep.py 包装一个命令,捕获任务边界,运行时变更的文件会被标记为 verified——"这些答案是证据"(README 原话)。工具从不移动、重命名或删除文件;lineage layout --suggest 仅提出目标建议。
源码中 verified 的含义。在 evidence.py 中,每个事实都携带一个 basis(observation / declaration / inference / confirmation)、一个 assurance 字段(精确匹配时为 verified,否则为 candidate)、它来自的源路径和行号,以及一个确定性 id(uuid5(NAMESPACE_URL, canonical_json)),因此重新扫描同一事实会得到相同的 id。关于证据的证据,附带位置信息——这个设计值得直接抄过去。
信任层级与隐私。README 中对来源的排序是:你的亲自确认 → 记录的运行 → 导入的溯源 → 声明 → 静态代码 → 内容 → 名称/时间戳。提取的文本存储在 .file-lineage/ 中(SQLite 后端,默认被 git 忽略)。隐私声明:不上传任何内容,无需账户或 API key;扫描从不执行你的代码——只有 lineage run 才会运行 -- 后的明确命令,且看起来像密码的参数会从记录的命令中剥离。
刻意的限制。JS/TS 是"谨慎的静态扫描,不是真正的语言理解"(README);其他语言是搜索而非解析;运行时构建的路径无法解析。性能数据声称可复现,但我没有实际运行:tests/benchmark.py 在 macOS / Python 3.14 上的报告显示:1,000 个文件 → 冷扫描 0.5 秒 / 热扫描 0.1 秒;10,000 个文件 → 16.5 秒 / 1.1 秒;单独查询在毫秒级。
结论。如果你跑 Python/notebook 工作流,且一堆 Agent 生成的文件已经变成了无法回答的冷知识,那值得评估——lineage enable 甚至能把追踪规则写入 CLAUDE.md 和 AGENTS.md(是 instruction 不是 enforcement,见 README)。如果你没有 Agent 生成的文件,或者无法忍受项目中的 git 忽略文本索引,那现在还为时过早。与 Git/DVC/OpenLineage 的对比在 docs/comparison.md。