Agent 批量索引
OINK 已经支持每页 Markdown、语言内 llms.txt、HTML discovery link 与 Copy Markdown。
当前不发布 llms-full.txt 或导航 JSON。本页只提议这两类剩余输出。
当前基线
站点可以为 page 与 section 启用 Hugo 的 Markdown 输出,并为 home 启用生成 llms.txt 的 LLMS
输出。OINK 把 shortcode 渲染成语义化 Markdown,保留源码 URL 和语言内 LLMS 索引发现信息,Copy
Markdown 也读取同一个 alternative output URL。主题声明输出格式,但不强迫站点选择哪些 outputs。
导航已经存在权威链:有显式 data/docs_nav.json 树时使用它,否则使用内容树与 weight。侧栏、
pager 与已声明 section index 共用这一权威。机器导航输出必须从同一棵树派生,不能再造排序。
目标与非目标
目标:
- 为小型站点可选装配语言内全文包,为大型站点可选按顶层 section 分包;
- 可选发布带版本的导航 JSON,供 Agent 与外部工具使用;
- 复用人工站点的同一 Markdown 页面渲染器、页面纳入规则与导航权威;
- 所有输出仍通过 Hugo output 配置 opt-in;
- 验证链接、语言隔离、media type 与确定性顺序。
非目标:
- 替换每页 Markdown 或
llms.txt; - 新建
params.oink.*配置树; - 在 Hugo 构建期间抓取生成好的
public/文件; - 嵌入私有源码路径、草稿页面或跨语言回退;
- 承诺一个巨型全文包适合所有模型上下文。
全文包
提议的 llms-full.txt 输出拼接每页输出所用的同一份语义化 Markdown。页面之间使用稳定、可见的
分隔符与来源 URL。站点从两种部署形态中选择:
| 形态 | 位置 | 适用场景 |
|---|---|---|
| 全站包 | 每种语言在语言根下一个文件 | 小型、聚焦站点 |
| section 分包 | 每个显式启用的顶层 section 一个文件 | 大型参考站与书籍 |
由 Hugo output 配置决定哪些页面获得该格式,而不是由主题参数决定。主题可以提供检查器,报告意图 与实际输出不一致,但不能修改站点输出集合。
全文包在 Hugo 内部通过共享页面渲染 partial 组装,不读取 public/ 中的兄弟产物,也不依赖输出
构建顺序。文件大小作为证据报告;任意阈值不能通过警告让 --panicOnWarning 拒绝原本合法的发布。
导航 JSON
提议的 JSON 包含 schema 版本、语言、根节点与递归有序节点。页面节点包含稳定 ID、标题、HTML URL、 启用时的 Markdown URL、kind/type、weight 与 children。显式外部导航节点只包含标签、URL 与 external kind。
输出遵循渲染侧栏相同的可见性与排序规则,排除 draft、headless resource、隐藏导航项与当前语言 不可用页面,永不序列化本机文件名。
该格式拥有自己的 JSON Schema 与 golden 夹具,并标记为 notAlternative,避免 Hugo 把它广告为
页面级 alternate。
发现信息与输出边界
llms.txt 可以链接已经启用的全文包与导航 JSON。HTML head 继续发现每页 Markdown 和语言内 LLMS
索引,不把每个批量产物塞进每一页。
shortcode、Landing section、Book 目标与交互组件继续使用当前 Markdown 降级。新输出无权增加组件 HTML、脚本、评论、反馈控件或导航 chrome。
验收标准
- EN 与 ZH 输出只包含各自语言的页面和 URL。
- 每个列出的 Markdown URL 都存在;每个导航 URL 都可解析,或明确标记为外部节点。
- 同一根下的顺序与渲染侧栏、pager 一致。
- 固定 Hugo 版本与输入时,相同源码重建得到字节稳定输出。
- 新格式关闭时,HTML、Markdown、Print、RSS 与 LLMS golden 均无回归。
- 大站夹具能证明按 section 分包,而不是为每个嵌套 section 都生成文件。
待决问题
- 两种全文部署形态是否都需要,还是只按 section 分包更安全?
- 导航 JSON 应当是 home output,还是由 resource template 支撑的专用内容页?
- 哪些节点元数据足够稳定,可以进入 schema version 1?
- 导航 JSON 存在时,
llms.txt是否默认列出它? - 检查器应报告哪些体积证据,又不武断执行某个模型上下文上限?