clawdbot
Clawdbot(clawd.bot)部署与远程连接
⚠️ 已废弃(2025-01-27) 这货一晚上就把额度造光了,已被开除。文档留作参考,不再维护。 如需清理 aws1 上的残留服务,见下方"清理命令"。
当前状态(2026-02-06):
aws1上clawdbot-gateway/clawdbot-taskboard已清理完成。
这份笔记记录 envvar 的 Clawdbot Gateway 在 aws1 的部署方式、配置位置、排障命令、以及 macOS 客户端如何远程连接。
部署现状(aws1)
- 服务器:
ssh aws1(AlmaLinux 9) - Tailscale:
<REDACTED_IP> - Gateway:
- WebSocket:
<REDACTED_TOKEN>(loopback) - Dashboard(HTTP):
<REDACTED_TOKEN> - 绑定:
gateway.bind = "loopback"(配合 macOS “Remote over SSH” 使用)
- WebSocket:
- Provider:
- 自定义 OpenAI-compatible:
chenrs - Base URL:
<REDACTED_TOKEN> - Key:当前写在
<REDACTED_TOKEN>(建议后续改成EnvironmentFile注入,避免明文落盘)
- 自定义 OpenAI-compatible:
关键文件路径(aws1)
- Clawdbot 配置:
<REDACTED_TOKEN> - Gateway token(给 macOS Remote 用):
<REDACTED_TOKEN> - Provider Key(建议改为 systemd EnvironmentFile):
<REDACTED_TOKEN> - systemd user service:
- 单元文件:
<REDACTED_TOKEN> - override:
<REDACTED_TOKEN>.d/override.conf
- 单元文件:
- 日志文件:
<REDACTED_TOKEN>
清理命令(aws1)
# 停止并禁用 user service
systemctl --user disable --now <REDACTED_TOKEN> <REDACTED_TOKEN>
# 删除 unit 与 override
rm -f <REDACTED_TOKEN> ~/.config/systemd/user/<REDACTED_TOKEN>
rm -rf <REDACTED_TOKEN>.d ~/.config/systemd/user/<REDACTED_TOKEN>.d
systemctl --user daemon-reload
systemctl --user reset-failed
# 卸载全局包(如已安装)
npm rm -g clawdbot
# 清理配置/日志/工作目录
rm -rf ~/.clawdbot /tmp/clawdbot ~/clawd
常用运维命令(aws1)
说明:目前 provider key 是写在 clawdbot.json 里,所以不强制 source;如果你后续换成 env 注入,再按下面方式 source。
# 基本信息
~/.npm-global/bin/clawdbot --version
~/.npm-global/bin/clawdbot status --plain
~/.npm-global/bin/clawdbot health --plain
# 模型列表(当前只配置了 3 个)
~/.npm-global/bin/clawdbot models list --plain
# 服务状态/重启(优先用 systemctl,避免 CLI 因 env 未加载而报错)
systemctl --user status <REDACTED_TOKEN> --no-pager
systemctl --user restart <REDACTED_TOKEN>
# 看端口是否监听(tailnet IP 上)
ss -lntp | grep -E ':18789\\b'
# 看日志
tail -n 200 /tmp/clawdbot/clawdbot-*.log
# 实时看日志(systemd)
journalctl --user -u <REDACTED_TOKEN> -n 200 --no-pager
journalctl --user -u <REDACTED_TOKEN> -f
Telegram Bot(待你提供 token 后开通)
在 Telegram 的
@BotFather创建 bot,拿到 token。在
aws1上添加 Telegram channel(默认 account):
source <REDACTED_TOKEN>
# Telegram 插件默认是 disabled,需要先启用一次
~/.npm-global/bin/clawdbot plugins enable telegram
systemctl --user restart <REDACTED_TOKEN>
# 把 token 放进文件(避免出现在 shell history)
install -m 600 /dev/null ~/.clawdbot/telegram.token
cat > ~/.clawdbot/telegram.token <<'EOF'
<TELEGRAM_BOT_TOKEN>
EOF
~/.npm-global/bin/clawdbot channels add --channel telegram --token-file ~/.clawdbot/telegram.token --name 'envvar-bot'
~/.npm-global/bin/clawdbot channels status --probe
实际部署(aws1)使用的是 --token-file ~/.clawdbot/telegram.token,并且 bot 为 @tingt1bot。
- 配对(如果 DM policy 要求 pairing):
~/.npm-global/bin/clawdbot pairing list telegram
~/.npm-global/bin/clawdbot pairing approve telegram <PAIR_CODE> --notify
macOS 客户端远程连接(你本机)
前提:Mac 能 ssh aws1(或能用你配置的 SSH Host)。
方式 A:macOS 客户端 “Remote over SSH”
- Host:
aws1 - Remote port:
18789 - Token:从
aws1的<REDACTED_TOKEN>获取
方式 B:手动 SSH tunnel(通用)
ssh -N -L 18789:127.0.0.1:18789 aws1
然后在本机连接:
- Remote URL:
<REDACTED_TOKEN> - Token:同上
Control UI / Webchat 需要 token(常见坑)
如果你在 <REDACTED_TOKEN> 看到 unauthorized / gateway token mismatch:
- 在
aws1上打印 tokenized dashboard URL:
source <REDACTED_TOKEN>
~/.npm-global/bin/clawdbot dashboard --no-open
- 在本机先开 SSH tunnel(上面方式 B),然后用浏览器打开输出里的:
http://localhost:18789/?token=...
页面首次加载会把 token 存进 localStorage(随后 URL 会被 UI 自动去掉 ?token=)。
(如果还是不行:在 Dashboard 的 Settings 里手动粘贴 gateway.auth.token。)
如果你要我帮你把 token 发给你,请你告诉妈妈你希望用哪种方式拿(你自己 ssh aws1 看一眼也行)。
踩坑备忘
curl https://clawd.bot/install.sh | bash在非交互 SSH 里最后会尝试读/dev/tty,会报No such device or address;这不影响安装,后续用clawdbot onboard --non-interactive --accept-risk ...或手工写配置即可。- 如果出现
MissingEnvVarError: CHENRS_API_KEY:- 先
source <REDACTED_TOKEN> - 或者直接用
systemctl --user restart <REDACTED_TOKEN>重启服务
- 先
Config invalid: gateway.bind: Invalid input(导致端口不监听 / RPC probe 失败):gateway.bind允许值:loopback/tailnet/lan/auto/custom(any是无效值)- 修复:把
<REDACTED_TOKEN>里的gateway.bind改回loopback,然后systemctl --user restart <REDACTED_TOKEN>
- Telegram 回复“空白/看不见”:
- 现象:日志里出现
can't parse entities(Telegramparse_mode=HTML不接受某些标签嵌套),然后会 retry 发送 plain text,但某些 chunk 可能会变成“只有空白/不可见字符”,导致你在 Telegram 里看到空白气泡。 - 处理(aws1 热修,2026-01-26):修改这两个文件让它在
htmlText为空时强制走 plain text,并且对 fallback 做trim()防止发空白:~/.npm-global/lib/node_modules/clawdbot/dist/telegram/send.js~/.npm-global/lib/node_modules/clawdbot/dist/telegram/bot/delivery.js
- 注意:
npm i -g clawdbot@...升级会覆盖这两个dist文件;需要重新打补丁或固定版本。
- 现象:日志里出现