进阶
常见问题
使用 Anydocs 时最常见的几个疑问,以及对应的排查方向。
这页不是完整教程,而是排障入口。先判断你遇到的是发布状态问题、reader 预览行为,还是初始化 / 导入方式的问题。
最常见的误判是:在 Studio 里看得到,就以为 reader、preview、搜索索引和 AI 产物里也一定看得到。公开边界实际由 `published` 状态决定。
为什么刚写的页面在 reader 或 preview 里看不到?
短答案:最常见原因是页面还不是 `published`。`draft` 和 `in_review` 会留在 Studio 里继续编辑,但不会进入 reader、搜索索引、`llms.txt` 或 `mcp/` 产物。
先检查:
- 页面状态是不是已经切到 `published`
- 页面是否已经出现在对应语言的导航里
- 如果是通过 AI 或 MCP 写入,是否已经完成状态切换,而不只是更新正文
为什么 preview 启动了,却没有自动打开浏览器?
短答案:`preview` 会启动本地 reader 服务并打印访问地址,但不会主动替你打开浏览器。
你应该看到:
- 终端输出里的 Preview URL
- 默认入口会指向默认语言下的第一个已发布页面
- 如果当前还没有已发布页面,入口会落在 `/{lang}`
为什么 Studio 能看到页面,preview 却看不到?
短答案:这不是数据不同步,而是两个界面的职责不同。Studio 是作者界面,会显示全部工作流状态;preview 是读者界面,只暴露 `published` 内容。
区分方法:
- Studio 用来看全部源内容,包括 `draft` 和 `in_review`
- preview 用来看读者最终能访问到的公开内容
为什么导入后的页面默认是草稿?
短答案:`convert-import` 会先把导入内容转换成 canonical `draft` 页面,避免历史文档未经检查就直接公开。
导入后建议立即做这几步:
- 检查 slug 是否符合目标语言和 URL 规划
- 检查正文和 metadata 是否需要清洗或补全
- 确认导航位置后,再决定哪些页面要发布
`search-index` 和 `llms.txt` / `mcp/` 有什么区别?
短答案:它们都是公开产物,但面向的消费方不同。
- `search-index.<lang>.json` 主要用于站内搜索
- `llms.txt`、`llms-full.txt` 和 `mcp/` 更适合外部 AI 或机器读取
- 如果某篇文档没有进入这些产物,先回到页面状态检查它是否已经发布
为什么项目里有时是 `skill.md`,有时是 `AGENTS.md` 或 `CLAUDE.md`?
短答案:这取决于 `init` 时是否指定了 `--agent`。
- 默认不指定 `--agent` 时生成 `skill.md`
- `--agent codex` 生成 `AGENTS.md`
- `--agent claude-code` 生成 `CLAUDE.md` 和 `.claude/commands/`
如果你看到更早的示例与此不一致,以当前 CLI 实际生成结果为准。
`init` 为什么会失败?
短答案:如果目标目录里已经存在 `anydocs.config.json`,CLI 会拒绝覆盖已有项目。
最稳妥的处理方式:
- 换一个空目录重新初始化
- 如果你本来就在已有项目里工作,直接打开它,而不是再次执行 `init`