Server Doctor 是一个面向运维与故障排查的技能,用于审计和修复运行 OpenClaw 网关、Telegram 机器人、后台自动化任务、Docker 化机器人服务、用户态进程以及 systemd 或 launchd 服务的 Linux 或 macOS 主机。该公开版本有意保持通用,不假设任何具体的主机名、用户、IP、机器人用户名、聊天 ID、目录或凭据。
用途
该技能的核心用途是帮助运维者建立可用的环境地图与访问地图,然后再进行深入诊断或修复。它适用于以下场景:检查运行 OpenClaw 网关的服务器、排查 Telegram 机器人故障、梳理 Docker 化机器人服务、审计 systemd 或 launchd 托管的自动化任务,以及在本地工作站而非服务器上运行机器人时的检查。
需要明确的是,若无法访问相关机器人、服务器、容器或本地项目目录,该技能的能力将严重受限。如果运维者无法展示机器人所在位置,或无法提供安全的检查方式,技能仍可帮助推理可能的原因,但会处于部分盲区状态,且在操作上往往较弱。这一点应在开始时明确说明。
主要能力
技能围绕以下目标展开:建立主机、本地机器、机器人、运行时和安全访问路径的可用地图;识别每台可达机器上实际运行的内容;确定每个机器人或服务由哪个 Unix 用户拥有;对运行时风格进行分类,包括 systemd、launchd、Docker/Compose、直接用户态进程、终端复用器会话;定位日志、配置、重启路径和依赖;在不泄露密钥的前提下记录运维风险。
使用方式
工作流程从访问与清单预检开始。在运行常规诊断之前,技能会向运维者索取最小必要的地图信息,包括:哪些服务器、VPS、Mac、PC、NAS 设备或本地笔记本在范围内;每台机器上被认为运行哪些机器人或自动化;每个运行时由哪个 Unix 用户、容器、服务账户或本地配置文件拥有;已知的工作目录、Compose 项目、单元名称、launch agent、cron 任务或仓库检出位置;以及代理如何安全地访问每个目标(ssh、tailscale、本地 shell、docker exec、kubectl exec、systemctl --user、终端复用器、跳板机/堡垒机,或仅由运维者提供的命令输出)。技能不建议要求运维者将密钥粘贴到公开聊天中,要求的是访问权限而非凭据泄露。
随后技能声明地图状态,区分「已映射」(主机、运行时和访问路径已知)、「部分映射」(部分事实已知,但所有权、位置或访问方式缺失)和「不可达」(目标存在但当前没有安全访问路径)。在部分映射模式下,技能会继续处理可达部分,同时列出阻碍可靠修复的缺失事实。
接下来建立主机上下文,进行低风险检查,例如 hostname、whoami、uname -a、uptime、pwd;在 Linux 上检查 df -h、free -h、ps、ss 等;在 macOS 上检查 sw_vers、df -h、ps aux、launchctl list。随后发现运行时,检查服务管理器和容器,例如 systemctl、docker ps、docker compose ls、launchctl、tmux、screen 以及直接进程。
技能还会定位项目状态和机器人目录,常见区域包括 ~/.claude-lab、~/workspace、/opt/... 以及包含 docker-compose.yml、compose.yaml、package.json、pyproject.toml、requirements.txt 的项目目录。对于与 Telegram 交互的服务,会记录主机、拥有用户、运行时风格、进程或服务名称、工作目录、安全访问路径、日志路径、重启命令,以及是否确认了 Telegram 机器人用户名。
最终构建运维地图,对每个发现的服务记录主机角色、主机或本地机器名称、用户、服务名称、机器人名称或功能、运行时、访问方式、启动机制、功能、依赖、已知故障模式、安全的状态/日志/重启命令,以及仍阻碍深入工作的未知项。
事件处理与文档规则
对于 OpenClaw 或 Telegram 事件,技能要求确认哪台主机或本地机器拥有故障运行时,确认安全访问路径确实存在,在做出强烈健康或中断声明前阅读相关参考文档,确认规范运行时目标,确认主进程是否运行,检查近期日志,在做出重大更改前对故障进行分类(进程停止、Telegram 传输中断、认证或模型回退、队列饥饿或提供商延迟、引导膨胀或启动税、依赖故障),并验证重启路径。声明纪律包括:不完整的可见性不等于中断证据;直接实时探测优于过时的旧检查;在中断措辞之前必须排除错误的运行时路径、旧端口、重复运行时或镜像副本;降级、部分失败、不稳定和停止是不同的标签;仅重启不等于恢复。
文档规则要求绝不发布密码、令牌、聊天 ID、会话字符串、私有 SSH 配置或提供商 API 密钥;绝不要求运维者将密钥粘贴到技能文档中;不要将 .env、openclaw.json、服务单元文件或机器人配置逐字复制到公开文档中;对 IP 地址、域名、电子邮件地址、Telegram 用户名、内部机器人名称、主机名以及能识别私有环境的用户名进行脱敏;建议使用如「主 OpenClaw 网关」「内容发布机器人」「维护机器人」「私有 Telegram 频道」等表述。
附带的辅助脚本与文档镜像
该仓库提供的公开辅助脚本包括:scripts/normalize-openclaw-models.py,用于规范模型默认值和可选的每代理绑定;scripts/openclaw-auth-profile-sync.sh,用于检查、同步和验证所选配置 id 的每代理认证配置文件漂移;scripts/openclaw-telegram-transport-hotfix.sh,用于在更新后重新应用主机本地 Telegram 传输兼容补丁;scripts/macos-single-openclaw-runtime.sh,用于将 macOS 主机收敛回单个规范的 OpenClaw 运行时。
在仓库检出可用时,优先使用 https://docs.openclaw.ai 的本地 Markdown 镜像而非实时浏览。工具链包括子模块 tools/chip-docs-local、源清单 sources/openclaw.yaml,以及从仓库根目录执行的刷新命令 npm run sync-openclaw-docs。物化快照根目录为 references/openclaw-docs/,预期镜像产物包括 references/openclaw-docs/current/、references/openclaw-docs/FILELIST.md 和 references/openclaw-docs/state.json。操作规则要求:如果 tools/chip-docs-local 缺失,应说明本地文档工具链不可用,而不是假装镜像存在;如果子模块中未安装依赖,先运行 npm --prefix tools/chip-docs-local install;在诊断期间默认使用本地镜像作为文档来源;首先检查 references/openclaw-docs/FILELIST.md 进行页面发现;如果镜像缺失或过时且存在本地 shell 访问,用 npm run sync-openclaw-docs 刷新;如果刷新失败,应如实说明并回退到实时公开文档。
适用场景与限制
该技能适用于需要审计和稳定运行 OpenClaw、Telegram 机器人及后台自动化任务的主机环境,尤其是当运维者需要梳理主机、机器人、运行时和访问路径的映射关系时。其限制在于:若无法访问相关机器人、服务器、容器或本地项目目录,技能将处于部分盲区,操作能力有限;技能不假设任何具体的主机名、用户、IP、机器人用户名、聊天 ID、目录或凭据;在信息不足时必须明确说明处于部分映射模式。技能的输出期望包括:逐主机或逐机器的地图、机器人到主机的映射、逐用户的运行时清单、显示每个机器人如何启动的运行时地图、显示每个可达目标如何被安全检查的访问地图、每个机器人的角色、重启/日志命令、当前风险、仍需深入访问的已知未知项,以及在部分映射模式下工作的明确声明。结果应可读、对运维有用,并可安全公开分享。