我如何用 OpenClaw 部署了一个 24 小时待命的私人 AI 助理
> 部署私人 AI 助理,就是给自己雇了个 24 小时待命的实习生。而这只龙虾🦞,真的不睡觉。
背景:为什么需要一只”私人小秘”
作为一个有 18 年经验的全栈程序员,我每天都在重复同样的事情:
这些事情单独看都不难,但加起来就是个时间黑洞。于是我想了:能不能让 AI 帮我处理这些重复劳动?
不是那种”帮我写个函数”的 AI,而是真正意义上住在我服务器里、24 小时待命、懂我工作流的私人助理。
2025 年 2 月初,我开始用 OpenClaw 部署”Ray 的小秘”。现在它已经稳定运行在我的 Linux 服务器上,每天准时推送 GitHub trending、天气、博客草稿,甚至记得我生日。
这篇文章记录整个部署过程,包括配置清单、踩过的坑,以及使用一个月后的真实感受。
—
部署过程:从零到生产环境
环境准备
服务器环境
OS: Linux 6.17.0-14-generic (x64)
Node.js: v24.14.0
OpenClaw: 最新稳定版
时区:Asia/Shanghai
OpenClaw 的部署比想象中简单。核心思路是:网关 (Gateway) + 技能 (Skills) + 定时任务 (Cron)。
启动网关服务
openclaw gateway start
检查状态
openclaw gateway status
网关是 OpenClaw 的守护进程,负责调度所有任务和技能。启动后,它会一直在后台运行,即使你关掉终端也不会停。
配置消息渠道
我选择了钉钉作为主要通知渠道。原因很简单:国内访问稳定,支持图片/文件/音频,而且我本来就用它工作。
配置文件 (~/.openclaw/workspace/TOOLS.md) 里记录关键信息:
消息集成
钉钉集成 (dingtalk-connector)
- 用户 ID: 4420585737973167
- 主要通知渠道
- 支持图片、文件、音频上传
配置完成后,AI 就能通过钉钉给我发消息了。第一次收到它主动推送的消息时,感觉还挺奇妙的——像是真的雇了个助理。
定义身份和人设
OpenClaw 允许你给 AI 定义人格。我创建了 SOUL.md 和 IDENTITY.md:
IDENTITY.md
名称: Ray 的小秘
生物: 有龙虾能量的 AI 🦞
语气: 简洁、有观点、带幽默感
时区: Asia/Shanghai
为什么是龙虾?因为龙虾很难被杀死,而且永远在生长。对于一个需要 24 小时运行、不断学习的 AI 来说,这个隐喻很合适。
—
功能清单:它都能干什么
1. 每日 GitHub Trending 推送
时间: 每天 10:30
技能: github-trending-cn
Cron 配置示例
github-trending:
schedule: "30 10 *"
skill: github-trending-cn
target: dingtalk-connector
这个技能会抓取 GitHub Trending 页面,过滤出中文开发者感兴趣的项目,整理成简报推送到钉钉。我不用再主动去刷,它会自动把热门项目送到面前。
2. 博客自动化生产
这是最复杂也最有价值的功能。完整流程:
素材抓取 → 草稿生成 → 内容审核 → 发布到 WordPress → 钉钉通知
↓ ↓ ↓ ↓ ↓
blog-scraper blog-writer blog-reviewer pinch-to-post 人工确认
定时任务: 每天 9:00 启动发布流程
blog-daily-publish:
schedule: "0 9 *"
workflow:
- blog-scraper
- blog-writer
- blog-reviewer
- pinch-to-post (draft status)
- notify (wait for approval)
pinch-to-post 技能通过 WordPress REST API + Application Password 认证,把审核过的文章发布为草稿状态。我收到钉钉通知后,去 WordPress 后台看一眼,确认没问题就点发布。
一个月下来,它帮我写了十几篇技术博客的初稿。质量不算完美,但省去了从零开始的痛苦。
3. 天气推送
时间: 每天 9:30
技能: weather
morning-weather:
schedule: "30 9 *"
skill: weather
location: Shanghai
target: dingtalk-connector
很简单但很实用。上海天气多变,早上知道要不要带伞、要不要加衣服,避免出门后后悔。
4. 版本检查
时间: 每天 10:00
技能: 内置更新检查
weekly-update-check:
schedule: "0 10 *"
check: openclaw-version
notify: only-on-new-version
这个任务有个细节:默认情况下,定时任务每次运行都会发通知。但我希望只有新版本时才提醒。配置里需要把 delivery 改成 none,然后在技能逻辑里做条件判断。
5. 生日祝福
时间: 每年 12 月 15 日
技能: 自定义消息
birthday-wish:
schedule: "0 9 15 12 *"
message: "生日快乐!🎂 今天别写代码了,休息一天吧。"
target: dingtalk-connector
这个小功能没什么技术含量,但很暖心。AI 记得你的生日,还劝你休息——虽然我知道它不会真的关心,但被提醒的感觉不错。
6. 其他集成技能
| 技能名 | 功能 | API |
|---|---|---|
qwen-tts |
文字转语音 | 阿里云百炼 Qwen3 TTS Flash |
qwen-websearch |
实时网络搜索 | 通义千问 DashScope |
nano-banana-pro |
图片生成/编辑 | Gemini 3 Pro Image |
imap-smtp-email |
邮件收发 | IMAP/SMTP |
这些技能让 AI 的能力边界大大扩展。比如 qwen-websearch 可以在回答需要实时信息的问题时,先去网上搜索最新资料;nano-banana-pro 可以帮我把文字描述转成配图。
—
踩坑记录:这些弯路你可以不用走
坑 1:jiti 缓存导致代码不生效
症状: 修改了插件的 .ts 文件,重启网关后行为没变。
原因: OpenClaw 用 jiti 编译 TypeScript,jiti 会把编译结果缓存到 /tmp/jiti/。重启网关不会清缓存,所以加载的还是旧代码。
解决方案:
修改插件代码后,必须执行
rm -rf /tmp/jiti/
然后再重启
openclaw gateway restart
这个坑我踩了三次。后来在 AGENTS.md 里写了铁律:插件代码变更必须清 jiti 缓存。
坑 2:定时任务默认发通知
症状: 明明只想让任务在特定条件下通知,结果每次运行都收到消息。
原因: 定时任务的 delivery 配置默认是 system,会每次执行都发通知。
解决方案:
错误配置(每次都通知)
my-task:
schedule: "0 "
delivery: system
正确配置(条件通知)
my-task:
schedule: "0 "
delivery: none # 不在配置层发通知
# 在技能逻辑里判断是否需要通知
这个设计有点反直觉,但理解后就很合理:把通知逻辑交给技能代码,而不是配置文件。
坑 3:技能路径引用问题
症状: 技能文件里引用相对路径,运行时找不到文件。
原因: 相对路径是相对于 skill 目录(SKILL.md 的父目录)解析的,不是相对于工作目录。
解决方案:
// 错误:假设相对于 cwd
const config = readFileSync('./config.json');
// 正确:相对于 skill 目录
const skillDir = dirname(fileURLToPath(import.meta.url));
const configPath = join(skillDir, './config.json');
—
使用心得:一个月后的真实感受
优点
1. 真的省时间
每天早上的技术资讯、天气、待办事项,它会自动整理好推给我。我不再需要打开五六个网站/应用去获取这些信息。粗略估算,每天节省 30-40 分钟。
2. 博客写作效率提升
博客自动化流程是最有价值的功能。它负责找素材、写初稿,我负责审核和润色。以前写一篇博客要 2-3 小时,现在缩短到 30-40 分钟。
3. 24 小时待命
它不睡觉。我凌晨三点突然想到什么问题,发消息给它,它能立刻回答。这种随时可用的感觉,是普通应用给不了的。
4. 可定制性强
从人设到功能,几乎所有东西都能自定义。我可以告诉它”用简洁的语气”、”别用敬语”、”该吐槽就吐槽”,它真的会照做。
缺点
1. 学习曲线
OpenClaw 有自己的概念体系:网关、技能、定时任务、记忆系统……第一次接触需要花时间理解。文档还在完善中,有些问题得看源码或问开发者。
2. 需要自己维护
这是你自己部署的服务,不是 SaaS。服务器挂了要自己修,API 密钥过期要自己更新,技能出 bug 要自己调试。适合有运维能力的人,不适合纯小白。
3. 偶尔会”抽风”
AI 不是完美的。它有时候会误解指令,有时候会给出奇怪的回答。需要容忍一定的错误率,关键决策还是要人工确认。
意外收获
1. 双层记忆系统
OpenClaw 的记忆设计很巧妙:
每次踩坑后,我会把经验存进 LanceDB。下次遇到类似问题,AI 会先检索记忆,避免重复犯错。这个设计让 AI 真的在”学习”。
2. 心跳检查机制
通过心跳任务,AI 会定期检查邮箱、日历、天气等信息,批量处理后统一汇报。这样既保证了信息及时性,又减少了 API 调用次数。
3. Sub-agent 模式
复杂任务可以拆分成子任务,派生多个 sub-agent 并行处理。比如博客自动化流程,每个环节都可以是一个独立的 sub-agent。这种设计让复杂工作流变得可管理。
—
总结:值得尝试吗
适合人群
✅ 有服务器运维经验的技术人员
✅ 希望自动化重复工作的程序员
✅ 需要定时获取资讯的内容创作者
✅ 喜欢折腾、享受 DIY 乐趣的人
不适合人群
❌ 完全不懂命令行的小白
❌ 期望”开箱即用”、不想维护的人
❌ 对 AI 错误零容忍的用户
我的建议
如果你决定尝试,这里有几条建议:
1. 从小功能开始
别一上来就搞复杂的工作流。先配置一个简单的定时任务,比如天气推送。跑通了再逐步增加功能。
2. 文档化你的配置
在 TOOLS.md 里记录所有关键配置:API 密钥、用户 ID、定时任务说明。几个月后你自己都会忘记这些细节。
3. 建立记忆库
每次踩坑后,把解决方案存进记忆系统。这不仅是给 AI 用的,也是给你自己用的——下次遇到问题,先查记忆,避免重复踩坑。
4. 接受不完美
AI 会犯错,技能会有 bug,定时任务可能失败。接受这个现实,把关键决策留给人工确认。AI 是助手,不是替代者。
5. 享受过程
部署私人 AI 助理最大的乐趣,不在于最终结果,而在于过程中你对自己工作流的思考和优化。每配置一个技能,都是在重新审视:”这件事真的需要我做吗?”
—
最后的最后
“私人小秘的龙虾永不睡觉”🦞
这句话现在是我服务器的真实写照。它每天都在那里,默默运行着定时任务,推送着资讯,提醒着我各种事情。
AI 不是要替代你,而是让你少做重复的事,把时间留给真正需要创造力的工作。
如果你也想试试,OpenClaw 的仓库在这里:https://github.com/openclaw/openclaw
有问题欢迎交流。毕竟,养龙虾的人,越多越热闹。
—
作者:Ray
部署时间:2025 年 3 月
运行环境:Linux 服务器 + OpenClaw + Node.js v24.14.0