
今天刷 Twitter 的时候,发现时间线被一个叫 ClawdBot 的东西刷屏了。
点进去看看,是个AI开源助手框架。能干的事情挺多:通过Telegram/WhatsApp远程控制电脑、自动处理邮件、定时运行任务、甚至能帮助和4S店砍价(有老外说靠它省了4200美元,虽然我觉得有点玄学)。
手上正好有台吃灰的VPS,咋不试试?
结果这一试,踩了一个晚上的坑。官方文档写得比较散,很多细节要自己摸索。顺手把过程记下来,给想折腾的朋友省点时间。

ClawdBot 是什么
简单来说,ClawdBot 是一个本地运行的 AI 助手网关。
它的核心是一个Gateway进程,负责:
- 连接各种聊天平台(Telegram、WhatsApp、Discord、iMessage 等)
- 调用AI模型(Claude、GPT、本地模型都行)
- 执行系统命令、读写文件、控制浏览器
- 管理定时任务和自动化流程
它可以把它理解成一个7×24小时在线的人工智能员工。它有记忆(知道你之前聊过什么),有手脚(能操作你的电脑),还能主动干活(定时任务、邮件监控)。
根据 Mashable 的报道,这东西火到了 Mac mini 都卖断货了——很多人专门买了一个小主机放家里,就是为了跑这个。
我觉得没必要这么激进。一台便宜的云服务器就够了,几十块钱,不过玩坏了也不心疼。
它能克
搭完之后我自己用了一下,体验确实不错:
- 随时随地发消息:手机上给Bot发消息,秒回。出门在外也能远程操作服务器
- 查服务器状态:做跑个
htop或者看 Docker 容器,截图发过来 - 定时任务:每天早上 7 点发一份服务器健康报告
- 写代码调试:把报错信息发给它,它能直接帮你改文件
网上还有人玩得更花:
邮件自动化:每15分钟检查一次收件箱,垃圾邮件自动归档,重要邮件重新活跃到手机上,还可以用你的口吻进行回复。
笔记整理:连接Obsidian,自动更新每日笔记,从会议记录里提取待办事项,生成每周回顾。
睡觉时写代码:睡觉前把一个Bug丢给它,它会持续调试、提交、测试,早上起来PR就准备好了。
智能家居控制:有人在沙发上看电视,用手机帮忙调节灯光、查天气、设置闹钟。
当然,这些高级玩法需要附加额外的技能和集成。先讲基础安装,能够聊天、能够执行命令甚至成功。



准备工作
你需要:
| 项目 | 说明 |
|---|---|
| 一个服务器 | 云服务器(我用的Ubuntu 24.04)、Mac mini、旧电脑、树莓派都行,最好是国外的,不然网络环境都有的折腾了! |
| 电报账号 | 用于创建机器人 |
| Claude/GPT API | 官方的或者中转站都行,后面会细说 |
关于设备选择
云服务器(推荐新手)
优点:便宜(最低几十块/月)、玩坏一点不心痛、7×24在线
缺点:需要Linux基础
Mac mini
优点:性能好、功耗低、能跑 macOS 独有功能(iMessage 等)
缺点:贵(4000+起步)、权限太高有安全风险
我的建议:
新手先用VPS试水。等熟悉了再考虑不要买专门的设备。如果真用Mac mini,别用日常工作的那台——万一配置出问题,或者钥匙丢失了,后果可能很严重。
安装方式
ClawdBot支持多种安装方式,我按推荐程度排序:
方式一:一键安装脚本(推荐)
官方提供的快速安装,会自动处理依赖和权限问题:
# Linux / macOS
curl -fsSL https://get.clawd.bot | bash
# 安装完成后运行引导向导
clawdbot onboard --install-daemon
该脚本会自动检测系统、安装Node.js 22+、处理npm权限、全局安装clawdbot。
方式二:手动npm安装
如果你已经有 Node.js 22+:
npm install -g clawdbot@latest
安装详细步骤
下面使用手动方式演示。虽然一键脚本更方便,但手动安装可以让你每一步都更清楚,出问题也很好排查。
第一步:安装 Node.js 22+
ClawdBot 要求 Node.js 22 以上。Ubuntu 自带的版本太旧,需要手动安装。
# 添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
# 安装
apt-get install -y nodejs
# 验证
node -v
# 输出 v22.x.x 就对了

踩坑 1:不同直接
apt install nodejs,那样安装的是旧版本(通常是 v12 或 v18),后面会报各种兼容性错误。
第二步:安装ClawdBot
npm install -g clawdbot@latest
安装完成验证:
clawdbot --version

踩坑2:如果报
EACCES权限错误,说明npm全局目录权限有问题。解决方法:mkdir -p ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc
第三步:创建 Telegram Bot
打开 Telegram,搜索@BotFather,发送/newbot。这里必须新建!
更多提示设置:
- 给机器人起一个名字(显示名称)
- 设置用户名(必须以
bot结尾,比如my_clawd_bot)
最后赠送你一串Token:
1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ1234567890
存好这个Token,后面用。

第四步:准备API
这一步最容易踩坑。
使用官方API
- 去console.anthropic.com注册
- 创建API Key(以
sk-ant-起始) - 充值一点余额
使用中转站API
如果用中转站,注意三点:
- 必须支持OpenAI兼容格式
- 必须支持工具调用(函数调用)
- 确认没有分组限制
踩坑3:这里我是直接用的CLI Proxy API这个开源舒项目中转的API,选择的gemini-3-flash模型,感觉非常畅!
第五步:写配置文件
创建配置目录:
mkdir -p ~/.clawdbot
nano ~/.clawdbot/clawdbot.json
根据您的API类型选择配置模板:
模板A:Anthropic官方API
{
"gateway": {
"mode": "local",
"bind": "loopback",
"port": 18789
},
"env": {
"ANTHROPIC_API_KEY": "sk-ant-你的密钥"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5-20261022"
}
}
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "你的Bot Token",
"dmPolicy": "pairing"
}
}
}
模板B:OpenAI兼容的中转站
{
"gateway": {
"mode": "local",
"bind": "loopback",
"port": 18789
},
"agents": {
"defaults": {
"model": {
"primary": "gemini/gemini-3-flash"
},
"elevatedDefault": "full" ,
"workspace": "/wangwang",
"compaction": {
"mode": "safeguard"
},
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
}
},
"models": {
"mode": "merge",
"providers": {
"gemini": {
"baseUrl": "https://你的中转站API/v1",
"apiKey": "test",
"api": "openai-completions",
"models": [
{
"id": "gemini-3-flash",
"name": "gemini-3-flash"
}
]
}
}
},
"channels": {
"telegram": {
"botToken": "你的TG Token"
}
},
"plugins": {
"entries": {
"telegram": {
"enabled": true
}
}
}
}
踩坑4:
api字段必须填openai-completions。我一开始填的openai-chat,死活启动不了。
踩坑5:
models仓库不能省,否则报错说缺少必填项。注意代理商中也有配置模型名,别忘了改!
第六步:启动测试
clawdbot gateway --verbose
看到这行就成功了:
[gateway] listening on ws://127.0.0.1:18789
[telegram] [default] starting provider (@你的Bot名字)

第七步:设施
第一次给Bot发消息,它会回复配置码:
Pairing code: X9MKTQ2P
Your Telegram user id: 123456789
在服务器上执行:
clawdbot pairing approve telegram X9MKTQ2P
底座完成后,只有你的账号能和机器人对话,别人发消息不会理。
记下你的 Telegram 用户 ID,后面设置权限白名单使用。
后续有啥需求就直接对话,让AI手机配置就行了!比如我帮我集成了exa的搜索功能!

设置开机自启动
用nohup跑的话,SSH一断就挂了。上systemd:
cat > /etc/systemd/system/clawdbot.service << 'EOF'
[Unit]
Description=ClawdBot Gateway
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/clawdbot gateway --verbose
Restart=always
RestartSec=5
Environment=HOME=/root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable clawdbot
systemctl start clawdbot
这样就完成了。开机自动启动,挂了5秒后自动重启。
日常维护
几个常用命令:
# 看运行状态
systemctl status clawdbot
# 看实时日志
journalctl -u clawdbot -f
# 重启
systemctl restart clawdbot
# 健康检查
clawdbot doctor
# 全面状态
clawdbot status --all
进阶:命令白名单
如果让某些命令自动执行,不用每次批准:
# 允许 docker 命令
clawdbot approvals allowlist add --agent "*" "docker *"
# 允许 systemctl
clawdbot approvals allowlist add --agent "*" "systemctl *"
# 允许 /usr/bin 下的程序
clawdbot approvals allowlist add --agent "*" "/usr/bin/*"
# 查看当前白名单
clawdbot approvals allowlist list
进阶:定时任务
ClawdBot 内置 Cron 功能。比如每天早上 7 点发送服务器状态:
clawdbot cron add --schedule "0 7 * * *" \
--timezone "Asia/Shanghai" \
--message "检查服务器状态,给我发个简报" \
--deliver telegram \
--to "你的TG用户ID"
或者写入配置文件:
{
"cron": {
"jobs": [
{
"id": "daily-report",
"schedule": {
"cron": "0 7 * * *",
"timezone": "Asia/Shanghai"
},
"sessionTarget": "isolated",
"payload": {
"agentTurn": {
"message": "检查服务器状态,生成简报"
}
},
"deliver": {
"channel": "telegram",
"to": "你的TG用户ID"
}
}
]
}
}
常见问题
clawdbot: command not found
npm PATH 问题。确认全局目录在 PATH 里:
npm config get prefix
echo 'export PATH=$(npm config get prefix)/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
端口被占用
默认端口18789冲突了:
lsof -i :18789 # 看谁在用
clawdbot gateway --port 18790 --verbose # 换个端口
机器人收到消息但不回复
按顺序查看:
- 网关在不在跑:
clawdbot status - 平台了没:
clawdbot pairing list telegram - API 还有没有资金
- 看日志:
journalctl -u clawdbot -f
all models failed
API配置问题:
- 关键对不对
- baseUrl格式不对(结尾有没有
/v1) - 型号 id 写对没
- 跑一下
clawdbot doctor
工具调用失败
你的API不支持函数调用。这种情况Bot可以聊天,但执行命令用不了。换一个支持工具调用的API。
完整配置示例
一个功能完整的配置,开箱即用:
{
"gateway": {
"mode": "local",
"bind": "loopback",
"port": 18789
},
"agents": {
"defaults": {
"model": {
"primary": "openai-compat/claude-sonnet-4-5-20261022",
"fallback": ["openai-compat/claude-haiku-3-5-20241022"]
},
"elevatedDefault": "full",
"thinking": "medium"
}
},
"models": {
"mode": "merge",
"providers": {
"openai-compat": {
"baseUrl": "https://你的API地址/v1",
"apiKey": "你的密钥",
"api": "openai-completions",
"models": [
{
"id": "claude-sonnet-4-5-20261022",
"name": "Claude Sonnet 4.5"
},
{
"id": "claude-haiku-3-5-20241022",
"name": "Claude Haiku 3.5"
}
]
}
}
},
"tools": {
"exec": {
"backgroundMs": 10000,
"timeoutSec": 1800,
"cleanupMs": 1800000,
"notifyOnExit": true
},
"elevated": {
"enabled": true,
"allowFrom": {
"telegram": ["你的TG用户ID"]
}
},
"allow": ["exec", "process", "read", "write", "edit", "web_search", "web_fetch", "cron"]
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "你的Bot Token",
"dmPolicy": "pairing",
"allowFrom": ["你的TG用户ID"],
"groupPolicy": "disabled"
}
},
"cron": {
"jobs": []
}
}
配置亮点:
fallback:主模型挂了自动切备用thinking: medium: 实现增值深度思考groupPolicy: disabled:只响应私聊,不进群- 双重白名单:elevated和channels都设置了allowFrom
总结
整个过程折腾了大半天,大部分时间花在排查配置格式上。
几个关键点:
- Node.js 版本:必须 22 以上
- API要通用:别用有分组限制的Key
- 配置格式严格:
api现场、models故障这些错误 - 使用systemd管理:别用nohup
- 安全第一:必须设置白名单,日志定期看
搭完之后确实方便。出门在外随时可以跟服务器交互,定时任务也不用自己写脚本了。
原创文章,作者:mantou,如若转载,请注明出处:https://v2ez.com/1597.html