Cli 导读

一条命令诊断网关和通道,还能自动修

`openclaw doctor` 会检查网关、通道、状态完整性、cron 任务、Talk 配置等,并给出修复建议。最常用的是 `--fix`(自动修复)和 `--deep`(扫描多余网关安装)。注意:macOS 上如果之前设过 `launchctl setenv` 环境变量,会覆盖配置文件导致“unauthorized”,需要先 `unsetenv` 再跑 doctor。

先讲这一页到底在解决什么

一条命令诊断网关和通道,还能自动修

`openclaw doctor` 会检查网关、通道、状态完整性、cron 任务、Talk 配置等,并给出修复建议。最常用的是 `--fix`(自动修复)和 `--deep`(扫描多余网关安装)。注意:macOS 上如果之前设过 `launchctl setenv` 环境变量,会覆盖配置文件导致“unauthorized”,需要先 `unsetenv` 再跑 doctor。

原文共 9 节,先看 Start Here 路径:/cli/doctor 查看官方原文

第一站

🧭 先看它三种最常见的出诊方式

官方只给了三个例子,但其实已经把这位医生的脾气说清楚了。

👀

openclaw doctor

像先走一圈,看看哪里亮着红灯,哪里只是有点虚。

🩹

openclaw doctor --repair

像医生不仅检查,还会顺手给你贴创可贴、把歪掉的小零件扶正。

🔦

openclaw doctor --deep

像把手电筒开到最亮,不只看表面,还看抽屉、仓库、旧账本。

📌

一句话先记住

先检查,必要时修,怀疑有深处问题时就往里照。

第二站

🔧 --repair 像“先把能救的救回来,但会先给你留底稿”

这页最有价值的地方,是它不是乱修。它会先备份,再动手。

--repair / --fix

像医生先把原始病历复印一份,再开始改方案。--fix 只是 --repair 的别名。

~/.openclaw/openclaw.json.bak

像修东西前先把旧零件装进一个透明袋子里,万一要回头,还能找到。

未知配置键

医生会把它们清掉,但不会悄悄吞掉。它会告诉你“我拿走了什么”。

🎈 一句话

修复不是盲改,而是先留底,再修补。

第三站

🕳 有些毛病不是表面裂了,而是抽屉里留了“孤儿文件”

官方专门提到会检查 sessions 目录里的孤儿 transcript 文件。这个场景很像收拾房间时,发现角落里有几张没人认领的纸。

📄

孤儿 transcript

像聊天记录没跟上主线,自己飘在那儿,占地方。

🗃

.deleted.<timestamp>

像把旧纸先贴上日期标签,再挪到回收盒里。不是直接乱扔。

🧹

回收空间

这个动作的目标很朴素:让仓库别被没用的碎纸慢慢塞满。

📌

一句话

doctor 不只会看病,还会帮你打扫病房。

第四站

🗓 它还会偷偷看看旧日历:cron jobs 长什么样

有些问题不是今天才长出来的,是老日程表长歪了。doctor 会顺手扫一眼 `cron/jobs.json` 之类的旧格式。

~/.openclaw/cron/jobs.json

像一本老排班表。格式如果太旧,它会帮你翻成新的写法。

legacy cron shapes

像以前写成歪歪扭扭的小纸条,现在医生帮你改成能被新系统看懂的表格。

scheduler auto-normalize

官方说它会在 scheduler 自己动手前先修正一轮,像医生先整理病历,免得挂号处乱套。

🎈 一句话

旧日历不一定坏了,但格式歪了也会让后面的人看不懂。

第五站

🧠 这位医生还会问一句:“你的脑袋够不够准备好做记忆搜索?”

如果 embedding 之类的条件没配好,它会提醒你去把模型相关配置补上。它不是只盯着门口,也会看脑子能不能工作。

memory-search readiness

像医生在问:“你这台机器是不是已经准备好去找记忆了?”

openclaw configure --section model

像医生告诉你:“先去把脑子的药方配齐,再来做搜索。”

embedding credentials

像负责记忆的小钥匙。如果缺了,搜索这扇门就不会顺。

📌 一句话

doctor 不只看外伤,也会看看记忆系统有没有上脑力装备。

第六站

🪵 有些门禁钥匙不是放桌上,而是藏在 SecretRef 里

这页很细心的一点,是它知道有些钥匙不是明文放着的。找得到就修,找不到就别硬抄密码。

🔐

SecretRef 读得到时

医生就照着修,但不会把钥匙直接塞成明文留在地上。

👀

读不到时

它会改成只看不写,不会硬闯,也不会偷偷换成别的凭证。

🧩

Telegram `allowFrom` 自动解析

如果 token 能看见,它还会顺手把用户名解析一下;看不见就跳过,不装懂。

📌

一句话

钥匙看得见就修,看不见就别乱猜。

第七站

🧯 `--non-interactive` 这段很重要:不是每次都能叫醒人来点头

如果你是在 cron、Telegram、没有终端的地方跑,医生不会傻等你来点按钮。它知道有些夜班不能开提问会。

TTY 才能弹问题

像只有你真的坐在桌前,医生才会问你要不要修这个、要不要登录那个。

headless 跳过提问

像没有人的夜班室,医生不可能站着大喊“有人吗”。

--deep

像把巡逻范围再扩大一点,去看更远的楼层和更隐蔽的角落。

🎈 一句话

能问人的时候才问,不能问的时候就安静修。

第八站

🍎 macOS 上还有一个小陷阱:`launchctl` 可能偷偷盖过你的配置

这页最后讲了一个很实用的坑。你以为自己改了 config,但系统环境里旧钥匙还在,结果它继续把你带回老路。

launchctl getenv OPENCLAW_GATEWAY_TOKEN

像去看看系统外套口袋里是不是还藏着旧门票。

launchctl unsetenv ...

像把旧门票从外套里掏出来,免得它继续捣乱。

老环境变量优先级

如果你没清掉,doctor 可能会被它误导,继续报“未经授权”。

🎈 一句话

有时候不是配置错了,是老环境变量还在偷偷上班。

最后总结

🎈 把 openclaw doctor 压成一句话

openclaw doctor 像一位会巡检、会修补、会收拾孤儿文件、还会提醒你别被旧环境变量骗了的医生;你想快一点就先体检,想多一点就加上修复和深度检查。