OpenClaw 文档站实测:15,484 条 sitemap 里,中文读者能打开的只有一半
一、先说结论:三个数字
2026 年 10 月 15 日 06:0x,我用脚本把 docs.openclaw.ai 的整份 sitemap 逐条下载下来,跑了 3,300 多次 HTTP 请求,只为回答一个问题:一个中文用户打开 OpenClaw 官方文档,会看到多少英文?
三个数字先放在这里:
- 15,484 — sitemap 里的 URL 总条数
- 1,381 — 英文原版页面的实际条数(每种语言一份,× 20 种语言 ≈ 15,000)
- 701 — 中文(zh-CN)真实存在的页面条数
也就是说,zh-CN 覆盖率 = 701 / 1,381 = 50.8%,英文页有 49.2%(680 页)在中文站根本不存在。我没有停在 sitemap 上——那 680 条我逐条发了请求,结果是 680/680 全部 HTTP 404,没有一个例外。同一批页面在英文站 /start/why-openclaw、/ci/capacity、/gateway/security/dependency-locking 全部 HTTP 200、20 万字节以上的内容页。
这不是翻译滞后,这是站点没有为这 680 页生成中文版。
下面这两张截图是本文最核心的证据。同一个页面 /start/why-openclaw,英文站正常打开,中文站直接 404:


左边那张的右上角状态栏明确写着 status 404,正文区显示请求的路径 /zh-CN/start/why-openclaw,并配了一句提示:「The docs router is online, but this exact page is not in the current published bundle.」——文档路由本身在线,只是这一页不在当前发布的中文包里。这句话几乎就是本文结论的官方确认。
二、口径说明:我说的”页”到底是什么
先把方法讲清楚,否则下面所有数字都会被质疑。
抓取对象:docs.openclaw.ai/sitemap.xml,实测 HTTP 200 / 1,142,323 字节 / 1.6 秒。 解析方式:sitemap 共 15,484 个 节点,逐条取 URL,剥掉 docs.openclaw.ai/ 前缀,按路径首段切出语言前缀。
20 种语言前缀:de es fa hi ja-JP nl tr zh-CN zh-TW id th vi ru fr ko pt-BR ar it uk pl。
拆完之后结构非常干净:14,103 条带语言前缀 + 1,381 条不带前缀(即英文核心站)= 15,484。这也顺带回答了一个常见疑问——为什么打开 sitemap 会有 1.5 万条 URL,答案就是同一份文档被复制了 20 份语言版本。
“页面存在”的判定标准:不是看状态码,而是看响应体。因为这里有一个坑,稍后第五节会展开——本站在部分路径上返回 HTTP 200 但只有 323~511 字节的跳转桩。我的判定规则是:
- 响应体 > 1KB 且不含
Redirecting字样 →content(真实内容页) - 响应体首部含
+Redirecting→stub(跳转桩,非内容页) - HTTP 404 →
404 - 其余异常 →
ERR
请求方式:Python urllib + 自定义 User-Agent,10~14 线程并发。所有数字都由脚本产出,可原样复跑。
本文正文引用的每一个官方页面的完整地址,都列在第九节的来源表中,均可点击直接核验。
三、总账:15,484 条里,中文命中 701 条
把探测结果汇总成一张总账:
| 集合 | 条数 | 占 sitemap 比例 | 探测结果 |
|---|---|---|---|
| 英文核心站(无语言前缀) | 1,381 | 8.9% | 1,380/1,380 内容页 HTTP 200 ✅ |
| zh-CN 已覆盖页 | 721 | 4.7% | 720/720 内容页 HTTP 200 ✅ |
| zh-CN 缺失页(EN 独有) | 680 | 4.4% | 680/680 HTTP 404 ❌ |
| zh-CN 反向多余(仅语言站有) | 20 | 0.13% | 19 跳转桩 + 1 个多出的桩页 |
注:1,381 减去根页面
/本身 = 1,380 个可探测路径;zh-CN 721 减去对应根 = 720 个可探测路径。所以上表”探测结果”列的分母是 1,380 / 720,而不是 1,381 / 721。
一句话:英文站 1,380 个页面,100% 可访问;中文站只覆盖了 701 个,另外 680 个全部 404。
四、分板块账本:谁缺得最狠
680 个缺口不是均匀分布的。按章节拆开看,ci 和 releases 两个板块几乎全军覆没:
| 章节 | 英文页数 | 中文缺失 | 缺口率 |
|---|---|---|---|
| ci | 19 | 19 | 100.0% |
| releases | 39 | 37 | 94.9% |
| automation | 17 | 14 | 82.4% |
| help | 40 | 31 | 77.5% |
| gateway | 160 | 111 | 69.4% |
| channels | 109 | 65 | 59.6% |
| reference | 77 | 45 | 58.4% |
| nodes | 24 | 14 | 58.3% |
| tools | 109 | 46 | 42.2% |
| plugins | 346 | 153 | 44.2% |
| cli | 100 | 39 | 39.0% |
| concepts | 80 | 31 | 38.8% |
| install | 42 | 13 | 31.0% |
| providers | 89 | 24 | 27.0% |
| start | 21 | 9 | — |
三个结论直接从这张表里读出来:
1. CI / 发布流水线文档,中文为零。 ci 板块 19 页,中文站 0 页。这意味着想了解 OpenClaw CI 容量规划、流水线行为的开发者,只能读英文。

图里同样明确标出 status 404 和请求路径 /zh-CN/ci/capacity。
2. 历史发布说明(releases)中文几乎没有。 39 页里中文只有 2 页,37 页缺失。对已经升级到某个版本、想查”这个版本修了什么”的用户,这是最常被需要的路径。
3. Gateway 是最大的绝对缺口。 111 页缺失——绝对数量全场最高。Gateway 恰好是自托管部署最核心的部分,也是最需要中文的场景。
顺手给个正向对照:specs(1/1)、announcements(1/1)、diagnostics(1/1)、maturity(2/2)、platforms(23/25)这几个小板块是 100% 覆盖的。所以官方并非不做中文,而是中文覆盖的优先级和文档的实用价值不匹配。
五、最技术的一层:中文站有 20 个”幽灵链接”
前面说 zh-CN 覆盖了 701 页,但方向是反的——有 20 个路径是”只有中文站有、英文核心站没有”的。这 20 个长什么样?
我逐条探测了它们的英文根 URL,结果是 19 个跳转桩 + 1 个直接 404:
| 仅语言站存在的路径 | 英文根 URL 实际返回 | 跳转到 |
|---|---|---|
/cli/tasks |
200 但仅 483B 跳转桩 | /automation#background-execution-and-workflows |
/plan/swarms |
200 但 347B 跳转桩 | /tools/swarm |
/automation/taskflow |
200 但 355B 跳转桩 | /tools/lobster |
/concepts/channel-docking |
200 但 463B 跳转桩 | /concepts/session#retired-channel-docking |
/cli/fleet |
404(7,257B) | — |
/gateway/multi-tenant-hosting |
404(7,276B) | — |
/plugins/reference/webhooks |
404(7,274B) | — |
/plan/path3-sqlite-session-artifact-family |
404(7,289B) | — |
/reference/path3-live-sqlite-e2e-harness |
404(7,287B) | — |
15 个跳转桩页面的 HTML 长这样——状态码是 200,但对内容、对爬虫、对用户都不是一个页面**:
<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="robots" content="noindex">
<meta http-equiv="refresh" content="0; url=/automation#background-execution-and-workflows">
<link rel="canonical" href="/automation#background-execution-and-workflows">
<title>Redirecting - OpenClaw</title>
<script>location.replace("/automation#background-execution-and-workflows")</script>
</head><body><a href="/automation#background-execution-and-workflows">Redirecting</a></body></html>
这 20 个「幽灵链接」有三个可验证的特征:
- HTTP 200 但带
noindex——对己方爬虫规则是自洽的(不让索引跳转桩),但对外部抓取工具(SEO 审计脚本、死链检测、统计工具)而言,200 = “有效链接”,会把它们误判为有效页面。 noindex没有跟随跳转——noindex标在跳转桩上,真正落地的/automation#background-execution-and-workflows页面本身没有noindex。- 这段 HTML 只有 323~511 字节——任何按”响应体 > N 字节”判断页面是否存在的启发式规则都会在这里翻车。我这次就踩了这个坑:第一次用
curl批量探测时,HTTP %{http_code}全是 200,差点得出”这些页面都存在”的错误结论。
所以本文所有”页面存在”判定都用响应体特征,不看状态码。
为了对照,这个路径在中文站确实有一份完整内容(zh-CN 210,218 字节):

截图里可以看到中文页面完整的「用法 / 根选项 / 子命令(list、show、notify、cancel、audit、maintenance)」结构。也就是说,「中文站有 20 个英文站没有的路径」不等于「中文站内容更全」——恰恰相反,这些路径在英文根上是跳转壳,在中文站才保留着完整正文,属于典型的「退役页面内容只留在本地化分支上」现象。
六、更严重的一层:20 种语言被劈成了两批
这一层是我在探测过程中完全没有预料到的。
把探测范围扩大到全部 20 种语言 × 全部 24 个「语言站独有」路径(zh-CN 多出 20 个 + ru/pl/it 等 8 种语言多出 4 个),共 504 次请求,结果干净地裂成两批,一页不多一页不少:
| 语言组 | 语言 | 数量 | 24 个路径的结果 |
|---|---|---|---|
| A 组(较旧快照) | de es fa hi ja-JP nl tr zh-CN zh-TW id th vi | 12 | 20 个真实内容页 + 4 个跳转桩 |
| B 组(较新快照) | ru fr ko pt-BR ar it uk pl | 8 | 23 个真实内容页 + 1 个跳转桩 |
两组差别的精确形态:
A 组多出 4 个桩(12/12 种语言全部是桩,无一例外):
/web/workspaces→ 447~459B 桩 →/{locale}/web/dashboards#retired-workspaces/plugins/reference/workspaces→ 447~459B 桩 →/{locale}/web/dashboards#retired-workspaces/providers/qwen-oauth→ 511~523B 桩 →/{locale}/providers/qwen#retired-qwen-portal-authentication/reference/code-mode→ 375~387B 桩 →/{locale}/tools/code-mode
B 组恰好把这 4 个做成了真实内容页(而这 4 个路径在英文根 URL 上全都是跳转桩——即这些页面在英文站已下线,却在 8 种语言里仍以完整内容页存在)。
反过来,A 组还多出 1 个真实页:/plan/swarms 在 A 组 12 种语言全部是真实内容页(zh-CN 210,218B / zh-TW 211,835B / de 212,071B / ja-JP 226,781B),而在 B 组 8 种语言全部是 347B 跳转桩 → /tools/swarm。
所以两组差异是双向的:A 组有 B 组没有的 /plan/swarms 真页面,B 组有 A 组没有的 4 个真页面。这排除了「单方向翻译滞后」的解释,指向两条各自独立推进的本地化分支。
这个现象的含义:文档站的语言版本不是「从英文源翻译一次、20 种语言同时发布」,而是分批推送。B 组(俄语 + 7 种欧洲语言)拿到了比 A 组更新的页面快照,A 组(包含中文简体和繁体)停在更早的一版。
中文简体和繁体都停在 A 组,也就是较早的那一批。
七、再验一层:这 680 页在别的语言里也救不回来
一个自然的质疑是:既然中文缺,那俄语、日语、德语有没有?如果其他语言有,就可以建议用户换语言。
我随机抽了 40 个中文缺失页,对每一页遍历 20 种语言,共 800 次请求。结果:
- 在至少一种语言里存在真实内容页:0 / 40
- 在全部 20 种语言里都是 HTTP 404:40 / 40
比如 /start/why-openclaw,我单独用 curl 验证过:
https://docs.openclaw.ai/zh-CN/start/why-openclaw → HTTP 404 7,272 B
https://docs.openclaw.ai/zh-TW/start/why-openclaw → HTTP 404
https://docs.openclaw.ai/ja-JP/start/why-openclaw → HTTP 404
https://docs.openclaw.ai/ru/start/why-openclaw → HTTP 404
https://docs.openclaw.ai/start/why-openclaw → HTTP 200 273,722 B
结论是确定的:这 680 页只存在于英文站,20 种语言没有一个补上。换语言救不了,只能读英文。
八、给中文读者的操作建议
写这篇不是为了批评谁,落地建议比结论更有用。
1. 判断一篇文档有没有中文版,不要靠试。 直接查 sitemap 交集:把你要看的英文路径拿到 /zh-CN/ 前缀下访问即可,200 且响应体大于 10KB 才是真页面;返回 200 但只有几百字节、 是 Redirecting - OpenClaw 的,说明这一页根本没有中文内容,只是留了个跳转壳。
2. 这三类页面务必留英文书签。 按缺口率排序:CI 流水线(0 页中文)、历史发布说明(2/39)、automation 定时任务(3/17)。这三类恰好是排查问题和追溯变更时最需要查的。
3. 警惕 sitemap 里带 noindex 的 200 响应。 如果你在做 SEO 审计或死链检测,纯状态码检查会把 20 个跳转桩判为”有效链接”。本文第五节给了完整特征,你可以直接照着判断。
4. 别把”页面缺失”和”翻译滞后”混为一谈。 从证据看是根本没生成(680/680 全 404,且 40 页 × 20 语言交叉验证无解),而不是”翻译了但没跟上”。这两个问题的解法完全不同。
5. 想帮上游做贡献,这是明确的可执行入口。 中文覆盖率 50.8% 意味着还有 680 页待补,按缺口率排序的话,gateway(111 页)和 plugins(153 页)回报最大。
九、可核验来源
本文全部数字来自 2026-10-15 06:0x~06:1x(Asia/Shanghai)的实测请求,每一条都可原样复跑:
| 用途 | 链接(均为 docs.openclaw.ai 官方域) |
|---|---|
| sitemap 原文(15,484 条,本文全部数字的来源) | docs.openclaw.ai/sitemap.xml |
| 官方爬虫策略(8 组 UA 规则 + Sitemap/LLMS 声明) | docs.openclaw.ai/robots.txt |
| 官方 Agent 文档索引(1,383 条链接) | docs.openclaw.ai/llms.txt |
| 中英文对照示例:英文存在 | docs.openclaw.ai/start/why-openclaw |
| 中英文对照示例:中文 404 | docs.openclaw.ai/zh-CN/start/why-openclaw |
| 中英文对照示例:英文存在 | docs.openclaw.ai/gateway/security/dependency-locking |
| 中英文对照示例:中文 404 | docs.openclaw.ai/zh-CN/gateway/security/dependency-locking |
| 中英文对照示例:英文存在 | docs.openclaw.ai/ci/capacity |
| 中英文对照示例:中文 404 | docs.openclaw.ai/zh-CN/ci/capacity |
| 中文站真实内容页(对照 200 大页) | docs.openclaw.ai/zh-CN/cli/tasks |
| 英文根同名路径(跳转桩,483B) | docs.openclaw.ai/cli/tasks |
| 官方仓库入口(对照文档与源码) | github.com/openclaw/openclaw |
独立复现命令(curl 版本,逐条看状态码与字节数):
# 英文有、中文无
curl -s -o /dev/null -w "en %{http_code} %{size_download}\n" \
https://docs.openclaw.ai/start/why-openclaw
curl -s -o /dev/null -w "zh %{http_code} %{size_download}\n" \
https://docs.openclaw.ai/zh-CN/start/why-openclaw
# sitemap 总条数
curl -s https://docs.openclaw.ai/sitemap.xml | grep -o '<loc>' | wc -l
数据文件:本文所用的解析与探测脚本、逐条探测结果 JSON 保存在本地分析目录,可对照复核。
十、口径与未知项
诚实标注这一篇里没有验证的部分:
- HTTP 404 不等于”未翻译”,也不等于”不会翻译”。 我只能证明 2026-10-15 这天,这些 URL 在中文站返回 404。官方内部的翻译流水线状态我看不到,这属于 UNKNOWN。
- 20 种语言分成 A/B 两批的具体时间点未知。 我只能证明 A 组和 B 组当前状态不同,推不出哪天分的批、下一批什么时候到。
- 我没有抓取
llms-full.txt的正文做内容层比对。 该文件可达(HTTP 200 / 25,400,348 字节),但 2,540 万字节的内容层对照属于另一篇文章的范围,本文只做 URL 存在性层。 - 响应体字节数会随站点更新变化。 1,142,323 字节的 sitemap 和各项页面大小都是 2026-10-15 06:0x 的快照。
- 未登录任何后台。 本文全部为公开 URL 的只读 GET,未使用凭据、未提交任何表单、未访问认证端点。
一句话总结:OpenClaw 的文档站把同一份文档复制成了 20 个语言版本,15,484 条 sitemap 里英文原版只有 1,381 条;中文站覆盖了 701 条,剩下 680 条在 20 种语言里全部 404。想让中文用户读齐,剩下的路还很长。








