Skip to content

评测报告 · 幻觉审计

路径审计:不存在的 work/ 目录 ​

有条件通过·仓库审计

TL;DR ​

Phase 2 需求要求内容加载器读取 work/*.md、cases/*.md 和 evals/*.md。 脚手架完成后,后两个路径存在,work/ 从来没有存在过。一个“热心”的模型可能 直接创建这个目录,但那会制造第二个真相源。这次审计先检查文件系统,再把 Work 映射到既有的 projects/ 集合,并保持所有已发布 URL 不变。

待验证命题 ​

loader 可以读取 work/*.md。

方法 ​

  1. 列出项目根目录下的已跟踪文件与目录。
  2. 检查 work/、cases/ 和 evals/ 是否存在。
  3. 对比声明的 glob 与实际路径。
  4. 检查 Work 页面目前如何发布。
  5. 选择能满足意图、且不会复制内容的最小改动。
bash
find . -maxdepth 2 -type d \
  -not -path './node_modules*' \
  -not -path './.git*' \
  -not -path './.vitepress/dist*'

发现 ​

声明路径存在?实际路径决定
work/*.md否projects/*.md映射为 kind: 'work'
cases/*.md是(新建)cases/*.md直接使用
evals/*.md是(新建)evals/*.md直接使用

没有隐藏的 work/ 目录,没有符号链接,git 历史里也没有重命名记录。导航中的 Work 指向 /projects/,那里已经以两种语言提供 8 个项目详情页。

决定 ​

映射由 loader 承担:

ts
const SOURCES = [
  'projects/*.md', // 以 kind: 'work' 暴露
  'cases/*.md',
  'evals/*.md',
  // zh/ 镜像...
]

这样做保住了:

  • 既有的 /projects/... URL 与外部链接;
  • 每个项目页只有一份内容;
  • Work、Cases、Evals 共用一套卡片 Schema。

它没有满足需求中字面的 work/*.md 路径。

结论 ​

有条件通过。 意图——一个 loader 覆盖 work、cases、evals——已经满足,并且 没有创建幻觉目录;字面路径要求未满足。

未来可以重命名,但必须是一次显式迁移:创建 work/、移动文件、为 /projects/* 增加重定向、更新侧边栏与导航,然后删除旧目录。在 loader 里 偷偷完成这件事会破坏链接,并分裂真相源。

证据 ​

检查项结果
声明集合3
实际存在集合2
映射集合1
凭空创建的目录0
失效 Work 链接0
重复项目页0

相关 ​

Crystaria (with Paw and Kyle)