乐于分享
好东西不私藏

OpenClaw 跑通之后:prompt 调优、插件开发、监控告警三件事

OpenClaw 跑通之后:prompt 调优、插件开发、监控告警三件事

凌晨三点。 Bot 又给我发了一条不知所云的消息。

“根据您的要求,我已经完成了相关操作。”——什么操作?我明明问的是”明天北京天气怎么样”。

这是 OpenClaw 跑通之后的第二个星期。桥确实通车了,但开上去才发现,路比我想象的颠。模型回复经常跑偏、插件时不时抽风、服务挂了半天我才发现。

上一篇结尾我埋了个伏笔:”剩下的——prompt 调优、插件开发、监控告警——是下一篇的事。” 今天来填这个坑。

三件事,每一件都是”能用”和”好用”之间的分水岭。

Prompt 调优:你的 Agent 为什么总是”已读乱回”

先说最烦人的问题——模型回复质量不稳定。有时候聪明得像你肚子里的蛔虫,有时候蠢得让人怀疑人生。

原因 90% 出在 prompt 上。不是模型不行,是你的 system prompt 没写好。

OpenClaw 里,每个 Agent 都有一个 systemPrompt 字段。这个字段决定了 Agent 的”人格”和”行为边界”。我一开始写的是:

systemPrompt:"你是一个helpfulAI助手。"

现在回头看,这相当于告诉一个新人”你去把工作做了”——说了等于没说。

后来改了好几版,发现有效的 prompt 有这几个规律:

第一,角色要具体,不要抽象。 “你是一个技术客服”比”你是一个 helpful 助手”好一百倍。角色越具体,模型的行为越收敛。

第二,给输出格式下指令。 如果你希望回复是三段式(总结+细节+下一步),就直接写:”你的回复必须包含三个部分:①一句话总结 ②详细说明 ③下一步建议。” 不要让它猜。

第三,设边界比设目标更重要。 告诉它”不要做什么”往往比”要做什么”有效。比如:”不要编造数据”、”不要推荐你没验证过的工具”、”如果用户问题不清楚,先反问确认。”

我现在的客服 Agent prompt 大概长这样(节选):

systemPrompt:|你是「青城源码」技术团队的值班助手。你的职责是:1. 回答用户关于 OpenClaw / AI Agent 的技术问题2. 如果问题超出你的知识范围,诚实说"我不确定",不要瞎编3. 涉及代码的问题,优先给出可运行的示例,不要只给思路4. 语气友好但专业,不要用"亲""宝贝"等客服用语5. 每次回复控制在 200 字以内,除非用户明确要求详细说明

改完之后,回复的”信噪比”明显高了。之前经常有那种说了三百字但核心信息就一句的废话,现在基本没有了。

图 1 :左边是”你帮我看看这段代码”后的胡言乱语,右边是加了角色限定和格式指令后的精准回复——同一个模型,不同的 prompt ,天差地别

请在微信客户端打开

插件开发:让 Agent 长出你的手

Prompt 调好了,回复质量上来了。但 Agent 还是只能”说”,不能”做”。

OpenClaw 的插件系统叫 ClawHub ,社区已经有一些现成插件。但说实话,真正解决你业务问题的插件,大概率得自己写。

写插件没有想象中难。 OpenClaw 的插件本质上就是一个 JavaScript/TypeScript 模块,暴露一个标准的接口:

exportdefault{name:'my-plugin',version:'1.0.0',// 插件能力声明:告诉 Agent 这个插件能干什么tools:[{name:'queryDatabase',description:'查询用户订单数据库,返回订单详情',parameters:{type:'object',properties:{orderId:{type:'string',description:'订单号'}},required:['orderId']}}],// 实际执行逻辑asynchandler({tool,parameters}){if(tool==='queryDatabase'){const{orderId}=parameters;// 你的业务逻辑:查数据库、调 API、读文件……constresult=awaitdb.query(`SELECT * FROM orders WHERE id = ?`,[orderId]);returnresult[0];}}};

核心就两步:声明能力(让 Agent 知道什么时候该调用你)和执行逻辑(实际干活)。

我自己写了一个查内部数据看板的插件, Agent 现在可以直接回答”上周转化率多少”这种问题,不用我手动去后台截图。还有一个对接公司 Slack 的插件,遇到需要人工介入的问题, Agent 会自动把上下文发到指定频道并 @ 相关同事。

写插件有几个坑提前提醒你

超时控制:如果插件执行时间超过模型的 timeout (通常是 30-60 秒), Agent 会以为调用失败了。耗时的操作要异步处理,或者先做 polling 。
错误处理:插件抛异常的时候, Agent 收到的错误信息要友好。不要直接堆栈跟踪甩给用户,包装成一句”查询服务暂时不可用,请稍后重试”。
权限最小化:给插件的权限能小则小。如果一个插件只需要读权限,千万别给写权限。 Agent 被 prompt 注入攻击的案例已经有不少了。

图 2 :插件的本质——给 Agent 装上”手”和”脚”,让它能从”说话”变成”做事”

请在微信客户端打开

监控告警:别等用户来告诉你服务挂了

这是三件事里最不起眼、但生产环境最重要的一件。

OpenClaw 默认没有监控面板。你如果不自己配,服务挂了只能靠用户私信骂你才知道。

我现在的监控方案是三层的:

第一层:容器健康检查。 Docker 自带的 healthcheck ,在 docker-compose.yml 里加几行:

healthcheck:test:["CMD","curl","-f","http://localhost:3000/health"]interval:30stimeout:10sretries:3

容器崩了会自动重启,至少保证服务在。

第二层:应用层指标。 OpenClaw 本身暴露了几个有用的 Prometheus 指标(前提是你在配置里启用):

openclaw_messages_total:消息总量
openclaw_message_duration_seconds:单条消息处理耗时
openclaw_errors_total:错误总数

我用 Grafana 搭了一个简单的面板,盯着两个核心指标:平均响应时间错误率。响应时间超过 5 秒或者错误率超过 1%,我就认为出问题了。

第三层:业务层告警。 这才是真正有用的。比如:

连续 10 分钟没有消息流入(可能 Bot 掉线了)
某个 Agent 的错误回复率突然飙升(可能 prompt 出问题了,或者模型 API 异常)
插件调用失败次数增多(可能下游服务挂了)

这些业务指标需要你在插件代码里自己埋点,然后走 Prometheus + Alertmanager 发通知。我配的是 Telegram 告警频道 + 邮件双通道,确保不会漏。

图 3 :监控不是”锦上添花”,是生产环境的底线——这张图是我现在每天扫一眼的习惯

三件事的优先级:先调 prompt ,再写插件,最后补监控

如果你时间有限,按这个顺序来:

Prompt 调优是 ROI 最高的。 改几行字就能显著提升体验,零成本。

插件开发是价值最大的。 它决定了 Agent 到底能不能融入你的工作流,而不是停留在”高级聊天机器人”的层面。

监控告警是底线保障。 没有它,前面两件事做得再好,服务挂了也白搭。但只要跑通了,维护成本不高。

我大概的时间线是:第一周跑通部署,第二周调 prompt ,第三周写第一个插件,第四周搭监控。现在回头看,这个顺序是对的。

图 4 :三件事的优先级排序——prompt 调优是”立竿见影”,插件开发是”深度定制”,监控告警是”兜底保障”

写到这,三篇文章的闭环算是完成了

第一篇讲选框架( OpenClaw vs Hermes ),第二篇讲搭起来(部署+多账号),第三篇讲用好它( prompt+插件+监控)。

三篇看完,应该够你从零搭一个能跑、能用、能放心的 Agent 网关。

但说实话, OpenClaw 只是个起点。真正有趣的事情——多 Agent 协作、自主规划、长期记忆——还在后面。这些话题,等我有更多实战经验了再写。

先把这三件事做好吧。

桥通车了,路修平了,监控装好了。

可以安心开夜车了。


💡 温馨说明 本文内容由「青城源码」团队结合 AI 辅助创作与人工校对整理而成,所有核心观点与实操步骤均经过人工验证。

        如果你也对 AI 自动化内容生成、 AI Agent 框架搭建、技术落地实操感兴趣,或是有相关项目开发、学习交流的需求,欢迎在后台私信咨询,我们会为你提供专属的技术交流与学习建议。

摘要: OpenClaw 部署完成后, prompt 调优、插件开发、监控告警是让 Agent 从”能跑”到”好用”的三道分水岭。附真实配置和踩坑记录。

标签: #OpenClaw #AI Agent #Prompt 工程 #插件开发 #监控告警

关键词: OpenClaw 进阶、 AI Agent prompt 调优、 OpenClaw 插件开发、 Agent 监控告警、 Docker 健康检查