RE:CZ

CZON链接检查功能与AI修复的挑战与解决方案

故障排除

👤 软件开发人员、AI工具使用者、技术文档维护者
本文详细记录了CZON链接检查功能的开发过程,从最初实现死链接检查到发现AI修复时的问题。作者指出AI在修复链接时存在两个主要问题:一是不会默认扫描整个项目文件,二是对相对路径理解不足。这导致AI修复链接时出现了错误,如将链接改到编译输出目录或创建符号链接等。作者通过分析问题根源,提出了解决方案:为AI提供基于问题文件的相对路径候选方案列表,避免AI扫描整个项目或自行理解相对路径。最终,CZON 0.9.1版本成功修复了500个链接错误,作者总结出编译检查需要与AI修复相辅相成,并设计出适合AI的检查输出格式。
  • ✨ CZON实现了链接检查功能,但AI修复时出现错误
  • ✨ AI对相对路径理解不足,且不会默认扫描整个项目
  • ✨ 解决方案是为AI提供基于问题文件的相对路径候选方案列表
  • ✨ 编译检查需要设计成对AI友好的格式
  • ✨ CZON 0.9.1版本成功修复了500个链接错误
📅 2026-02-09 · 737 字 · 约 3 分钟阅读
  • CZON
  • 链接检查
  • AI修复
  • 相对路径
  • 编译检查
  • MiniMax M2.1
  • OpenCode

现在是 2026 年 2 月 9 日,下午。

正如我之前说的,CZON 实现了链接检查功能,但是中间有一些小插曲。 一开始我只实现了死链接检查,和不允许超出项目范围的链接的检查。成功检测出了一些死链接,然后我把这些错误信息丢给 OpenCode + MiniMax M2.1 去修复。

比较典型的 case 是:在 .czon/AIGC/SUMMARY/summary-popular.md 里面,引用了 ../LOGS/25.md,实际上这是一个 AI 幻觉,这个链接并不存在。 真实的文件在 LOGS/25.md,使用相对路径引用应该是: ../../../LOGS/25.md

结果,MiniMax M2.1 修复的很蠢,一开始它扫描了整个项目,发现 .czon/src/zh-Hans/LOGS/25.md 存在,然后就把引用改成了 ../src/zh-Hans/LOGS/25.md

这是将链接改到了编译输出目录下,显然是不对的。

于是,我新增了链接检查的规则,要求不允许引用 .czon/src 下的文件。

结果,AI 开始去搜索 .czon/dist 下的文件,这更是输出后的输出了 (HTML 静态资源文件)。经过我打断之后,AI 显然疯了,它开始创建符号链接,甚至将我的原始文件到处复制,以求通过链接检查。但实际上环境已经越来越糟,新的文件创建了更多的链接错误。我只好全部打断,恢复整个环境。对不起,AI,我不该骂你是傻逼,我也只是一时生气。

好吧,真正的问题在于,

  1. AI Agent 不会默认扫描整个项目的文件,这个可以归结于 OpenCode 的设计场景,往往需要处理一个非常大的项目,不可能默认扫描所有文件。
  2. AI 本身对于 相对路径 的理解是不足的。这一点我在它的 Thinking 链路中看到,它在尝试运行一些脚本,通过实验,来掌握相对路径的概念。(顺便一提,我也总是不能直觉性地理解很多个 ../.. 之后的结果)

解决方案是:

我需要给它一个修复链接的候选方案列表,并且以基于问题文件的相对路径形式给出,这样 AI 就不需要扫描整个项目了,也不需要自己理解相对路径了。

npx czon@latest check

链接检查这个功能已经在 CZON 0.9.1 版本中可用了,并且成功令 MiniMax M2.1 修复了 500 个链接错误,效率还可以。

这件事情让我意识到,编译检查和 AI 修复是需要相辅相成的,编译检查需要对 AI 友好。但是对 AI 友好的前提就是,需要知道 AI 的局限性在哪里,然后设计出适合它的检查输出格式。

See Also

Referenced By