OpenClaw-Agent对HZERO平台二开的研究(一)背景与准备
一、背景与准备
一、背景
背景:第一次玩OpenClaw,是在阿里云ECS服务器上一键安装的OpenClaw 2026.02.24版,并配置了一个钉钉机器人。这是个很便宜的供开发人员试用ECS 99元每年,配置较低,2核2G。玩了2天,让它写word文档,针对文档中的流程图,让它从文本改成更加美观、精致的图,也解决了图片生成中的中文乱码问题。
接着就想如何让OpenClaw来进行HZERO PaaS平台二次开发的问题。由于我的HZERO PaaS平台Demo版是安装在Windows的Linux子系统WSL虚拟机中的,阿里云上的OpenClaw访问不到这个服务器,于是就考虑在安装了HZERO PaaS平台的WSL中安装OpenClaw,这样就可以让OpenClaw访问PaaS平台了。那么是否要安装最新版的OpenClaw呢?还是说把阿里云上已经调教了几天的OpenClaw迁移过来?看到小红书上有人说3月几号的小龙虾更新后,再次使用出现了问题,然后折腾了一天才解决,想着这开源软件迭代速度太快,肯定每个版本都未经充分测试。如果要去紧跟每个新版本,估计大部分时候就花在新版本的问题解决和测试上去了,没法把重心放到自己关注的方向上去。于是决定不跟最新版本,先把2026.02.24这个版本迁移过来,先把这个版本玩明白再说(后来发现还是要及时升级到新版本2026.03.13,会有很多问题在新版本中被解决掉,2026.03.13还是稳定性差,又升到2026.03.24版稳定性好很多,然后再升到2026.04.02这个版本也相对稳定,唯一缺点就是启动慢了点,内存消耗大了点,但截止到2026.04.16尚未出现一个更稳定的版本)。
本次测试目标是:使用OpenClaw建立Agent团队,完成H0应用的开发工作。想象中未来的场景是:
1.需求调研依然是人来完成,因为涉及大量的人与人之间的沟通,可能是带个录音笔或者直接开个腾讯会议/飞书会议完成与客户的需求调研,然后借助现有的AI工具生成需求文档。这个人的角色是客户经理兼项目经理,设置一个由人担任的角色,Agent团队里面没有这个角色。
2.Agent团队中的角色包括:H0-总助、H0-项目产品经理、H0-项目开发经理、H0-开发助手、H0-测试助手、H0-部署运维助手、H0-培训助手。从需求分析分解到开发、测试、部署、培训手册编写及后续运维,让OpenClaw组建Agent团队完成。
H0-总助:负责Skills的筛选、审核和测试,确认没有问题才通知相应的其他助理安装,负责其他专属Agent不适合处理的杂事。备注:openclaw中通过对话让Agent安装的Skill默认都是Agent级别的,非全局的。全局的Skill要么是内置的,要么是通过命令行安装的。在跟Agent对话时强行告知绝对的全局Skill目录安装也能起到所有agent共享的作用,不过一般不推荐,谨慎使用。跟默认的Agent main对话安装的Skill也不是全局的,默认也是只有main可见,能用。
内置的Skill安装在: \usr\lib\node_modules\openclaw\skills
钉钉机器人-openclaw插件的说明书参考:
\usr\lib\node_modules\clawdbot-dingtalk\README.md
H0-项目产品经理: 对应新建的项目产品经理Agent,从人类客户经理/项目经理这里得到需求文档,进行需求分析和设计,输出产品设计文档。
H0-项目开发经理:从H0-项目产品经理 Agent这里得到产品设计文档,进行功能分解,分解成多个功能设计文档(含技术设计),输出单元功能设计文档。
H0-开发助手:负责从H0-项目产品经理 Agent这里得到单元功能设计文档,进行具体的开发。这个助手要熟悉H0的高低代码开发Skill,能用H0高低代码开发平台输出低代码的Json和高代码微服务模块,完成单元测试。
H0-测试助手:负责读懂需求文档、产品设计文档、单元功能设计文档,编写测试用例,对H0-开发助手完成的程序进行集成测试。
H0-部署运维助手:负责把已经完成开发、测试的产品部署到运行环境,负责监控日常的系统运行,发现问题及时修正。
H0-培训助手:负责读懂需求文档、产品设计文档、单元功能设计文档、场景集成测试用例,根据场景测试用例去操作系统,然后编写用户手册。用户手册是面向人类的,是给人类看的。
我是这个Agent团队的总指挥,我(人类项目经理)会花很多精力在跟H0总助这个Agent的沟通上,努力培养和提高这个Agent的能力,教会这个Agent像我一样去指挥其他Agent干活。最终把我解放出来,我只需要做好客户经理的角色。
3.系统的具体培训工作还是项目经理(人)来完成,系统使用过程中具体问题也是项目经理负责沟通收集,整理成文档后反馈给H0项目产品经理(Agent)
二、配置OpenClaw的记忆系统
OpenClaw的记忆系统,刚开始是给钉钉机器人一个指令,说“开启你的每日记忆系统”,然后它会在workspace目录下添加一个memory目录,然后每天在memory目录下写一个MD文件
但从实际执行结果来看,有时候会丢失某些天的记忆MD文件,直到再次提醒它,它才会去创建当天的记忆文件,感觉它有健忘症。
关于记忆检索:默认是关闭的,需要配置之后才会开启,在 /root/.openclaw/memory 下面有个main.sqlite小数据库,OpenClaw会把它当作记忆检索的向量库。
在Openclaw的文档中,有说明如何配置向量模型API:
我这里配置阿里的向量模型:
在 openclaw.json 文件中,没有配置memorySearch的时候,在agents段的配置是这样的:
“agents”: {
“defaults”: {
“model”: {
“primary”: “dashscope/kimi-k2.5”
}
}
},
然后我们先在配置界面填写内容:
保存后,再看openclaw.json文件内容的agents段的配置就变成这样了:
“agents”: {
“defaults”: {
“model”: {
“primary”: “dashscope/kimi-k2.5”
},
“memorySearch”: {
“enabled”: true,
“provider”: “openai”,
“remote”: {
“baseUrl”: “https://dashscope.aliyuncs.com/compatible-mode/v1”,
“apiKey”: “sk-******************”
},
“model”: “text-embedding-v4”,
“query”: {
“hybrid”: {
“enabled”: true
}
}
}
}
},
修改完成后重启 openclaw
systemctl restart openclaw
然后在钉钉问机器人,看是否已经成功。
Openclaw会为每个Agent生成一个sqlite记忆向量库,会把MEMORY.md和Memeory/*.md文件向量化存储,所以每个Agent的记忆向量是独立的:
然后看embedding_cache表中已经有内容了:
root@desktop-jacksen:~/.openclaw/memory# sqlite3 main.sqlite
SQLite version 3.37.2 2022-01-06 13:25:41
Enter “.help” for usage hints.
sqlite> SELECT * FROM embedding_cache LIMIT 5;
openai|text-embedding-v4|276e6f94020abed8088b5ce057c930ce515e022d4427e5271514cd8454496fe0|8130a66ade233348e7f6b27d82df8fe9f9671a1bee64b479bf08e653325e3a43|[-0.03580964356660843,0.001063261297531426,0.06607277691364288,-0.0539744570851326,0.020920734852552414,-0.025877926498651505,0.030592458322644234,0.003951887134462595,-0.018840795382857323,0.13082826137542725,0.009281734935939312,-0.008800748735666275,0.03813224285840988,0.04062817245721817,-0.019464777782559395,-0.002703922800719738,-0.006534480024129152,-0.057545021176338196,-0.0003791558265220374,-0.020608743652701378,-0.0369882769882679,-0.026207251474261284,0.03854823112487793,-0.022376693785190582,0.002420097589492798………
三、配置Agent团队
在OpenClaw的文档中有对多智能体的配置说明:
当前默认的Agent是H0-OpenClaw助手
- 创建H0开发助手
先看命令行创建Agent的帮助:
root@desktop-jacksen:~/.openclaw/memory# openclaw agents add –help
chunks_ftschunks_ftschunks_ftschunks_ftschunks_fts
�� OpenClaw 2026.2.24 (df9a474) — I run on caffeine, JSON5, and the audacity of “it worked on my machine.”
Usage: openclaw agents add [options] [name]
Add a new isolated agent
Options:
–agent-dir <dir> Agent state directory for this agent
–bind <channel[:accountId]> Route channel binding (repeatable) (default: [])
-h, –help Display help for command
–json Output JSON summary (default: false)
–model <id> Model id for this agent
–non-interactive Disable prompts; requires –workspace (default: false)
–workspace <dir> Workspace directory for the new agent
#创建h0开发助手Agent
openclaw agents add h0developer –workspace ~、~/.openclaw/workspace-h0developer –agent-dir ~/.openclaw/agents/h0developer –model dashscope/glm-5
root@desktop-jacksen:~/.openclaw# openclaw agents add h0developer –workspace ~/.openclaw/workspace-h0developer –agent-dir ~/.openclaw/agents/h0developer –model dashscope/glm-5
�� OpenClaw 2026.2.24 (df9a474) — Your terminal just grew claws—type something and let the bot pinch the busywork.
Config overwrite: /root/.openclaw/openclaw.json (sha256 590b82b50874e4515d258d7e5b78d16cf624d7b7a6d15aeb09878ddf68c92749 -> 89caf23f28a8330c8cd262961cb451aeac6ac01feda57721fd38775a40842e9c, backup=/root/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
Workspace OK: ~/.openclaw/workspace-h0developer
Sessions OK: ~/.openclaw/agents/h0developer/sessions
Agent: h0developer
Workspace: ~/.openclaw/workspace-h0developer
Agent dir: ~/.openclaw/agents/h0developer
Model: dashscope/glm-5
root@desktop-jacksen:~/.openclaw#
在配置界面可以看到:
备注:这里创建时用的模型我们从openclaw.json中可以查到,我这里用的是阿里云的套餐计划,里面包含了多种模型,因为这个是开发助手,我选用GLM5,评测机构评测结果这个模型目前是国内变成能力最强的,在国际上能排第5名(具体的评测报告可以参考aipy的第七期评测 AiPy大模型适配度测评第七期报告):
在钉钉开放平台新增一个机器人:h0开发助手
然后把新建的机器人的AppKey 和AppSecret 在openclaw.json文件的 “channels”: 段依葫芦画瓢添加进去之后,在配置界面刷新一下后,界面上看到不是增加了一个机器人账号,而是覆盖了原来的机器人账号。
所以这个问题待继续研究。
现阶段,针对openclaw的问题,豆包自我发挥太过度,经常误导,所以改用元宝,问元宝:“openclaw开启多个代理分别对接多个钉钉机器人要怎么配置?”,按照元宝的说法,多个钉钉账号配置可以在openclaw.json中用accounts数组设置,不过完全按照元宝的格式写,会让Openclaw的配置界面判断配置文件无效,可以参考openclaw文档中对飞书渠道的描述,写多账号配置,改了之后配置界面判断有效:
“channels”: {
“clawdbot-dingtalk”: {
“enabled”: true,
“replyMode”: “markdown”,
“defaultAccount”:”h0assistant”,
“aliyunMcp”: {
“timeoutSeconds”: 60,
“tools”: {
“webSearch”: {
“enabled”: false
},
“codeInterpreter”: {
“enabled”: false
},
“webParser”: {
“enabled”: false
},
“wan26Media”: {
“enabled”: false,
“autoSendToDingtalk”: true
}
}
},
“accounts”: {
“h0assistant”: {
“enabled”: true,
“clientId”: “ding6w8g3wXXXXXXXX”,
“clientSecret”: “oQtZuOH3Ig5P-F9pD9BL35nrtXXXXXXXX”,
“botName”: “H0-OpenClaw助手”
},
“h0developer”: {
“enabled”: true,
“clientId”: “dingsu0XXXXXXXX”,
“clientSecret”: “Cw2NNdK8OBIGvv8UAjDXikXXXXXXXX”,
“botName”: “H0-开发助手”
},
“h0devManager”: {
“enabled”: true,
“clientId”: “dingzXXXXXXXX”,
“clientSecret”: “Y7XbShsjDlZp_xvSvLpXXXXXXXX”,
“botName”: “H0-开发经理”
}
}
}
},
可以看到我配置成功的三个钉钉机器人账号:
接下来要让Openclaw中新增的Agent:H0开发助手 h0developer 跟钉钉机器人:H0-开发助手 绑定,先看没绑定时的情况:
界面上是无法操作绑定某个机器人的,还是要改openclaw.json的配置:
“bindings”: [
{
“agentId”: “main”,
“match”: {
“channel”: “dingtalk-connector”,
“accountId”: “h0assistant”
}
},
{
“agentId”: “h0developer”,
“match”: {
“channel”: “dingtalk-connector”,
“accountId”: “h0developer”
}
}
],
更改后看配置界面显示是有效的配置。但是再看代理界面,没有变化,并未显示代理和渠道账号的一对一绑定关系。
接下来重启openclaw gateway 看看是否生效:
openclaw gateway restart
重启成功,测试:
给H0开发助手,问他工作目录,期望是 /root/.openclaw/workspace-h0developer ,但它实际返回的是/root/.openclaw/workspace,没有分开。
元宝说如果需要每个钉钉账号有独立的私聊历史,可以在openclaw.json中配置会话隔离:
{
“session”: {
“dmScope”: “per-account-channel-peer”
}
}
也可以在界面上配置:
配置后重启gateway : openclaw gateway restart
再次测试: 依然没有分开:
看了一些文档,之前可能是我理解错了,站在Openclaw的角度看问题,有各种来源渠道,有多个代理,能做的就是看消息来自哪个渠道,进一步区分消息来自哪个渠道的哪个用户,从而决定把消息路由给哪个代理。由于钉钉机器人没有用户ID,所以没法区分。
看到openclaw文档上飞书的绑定是这样写的,可以区分不同的用户ID。
{
// 用户 A 的私聊 → main agent
agentId: “main”,
match: {
channel: “feishu”,
peer: { kind: “dm”, id: “ou_28b31a88…” },
},
},
匹配用的是peer: { kind: “dm”, id: “ou_28b31a88…” }, 这样的格式
接下来实验一下,群里面的两个真人用户分别绑定到Openclaw的不同agent,看看是否能成功。
“bindings”: [
{
“agentId”: “main”,
“match”: {
“channel”: “dingtalk-connector”,
“peer”: { “kind”: “dm”, “id”: “035603295730701206” }
}
},
{
“agentId”: “h0developer”,
“match”: {
“channel”: “dingtalk-connector”,
“peer”: { “kind”: “dm”, “id”: “07672664-281161922” }
}
}
],
保存后重启openclaw-gateway ,再测试,还是没效果,两个人实际对应的都是默认的Agent:
那在Openclaw中创建多个Agent有啥用呢?怎么才能让另一个新创建的Agent开始工作呢?
日志发给元宝,元宝眼尖,说绑定配置的地方有关键错误:
你的配置中有一个关键不一致。
钉钉渠道在 channels中配置为 “clawdbot-dingtalk”
但在 bindings中却使用 “channel”: “dingtalk-connector”
必须保持完全一致。
更改后重启gateway再测,还是一样,没有对应到另一个Agent,全部对应到defaut的Agent了。
看日志,其实不管是私聊还是群聊,你@任何钉钉机器人,消息到openclaw gateway ,日志中的sessionkey都是一样的:sessionKey”:”agent:main:dingtalk:dm:07672664-281161922
Openclaw无法区分,也就是它不会根据你@的不同机器人而进行不同的路由。
整个日志链路是 “接收消息 -> 放入既定会话队列 -> 由既定Agent处理”,中间缺失了“根据消息的accountId匹配bindings规则,从而决定目标Agent和生成对应sessionKey” 这个关键的路由判断环节。
是不是要升级到最新版本?
执行:openclaw 升级到最新的 2026.03.10 版本
几分钟后
openclaw status
显示gateway没起来,执行openclaw gateway start
Gateway起来后,打开界面可以看到升级成功:
升级后准备再配置要给飞书机器人,然后把飞书机器人绑定到H0开发助手,看是否能路由到H0developer那个Agent
看OpenClaw的官方文档,在飞书部分说最新版本的已经内置飞书渠道了(钉钉还没内置)。
执行命令 :openclaw channels add
按提示,选择飞书,直到等待输入飞书Appkey的地方:
去飞书创建机器人,按照openclaw的飞书文档操作即可。
登录飞书,选择个人账号,创建应用可以自助审批,比较方便。
创建应用后,把App Secret 和 App ID填到这里,然后按向导,会提示是否要绑定Agent,选择绑定到h0developer 那个Agent,继续按向导操作,最后选择finish完成。
这里完成后,再回到飞书应用开发界面,按照openclaw的飞书渠道文档继续操作,完成socket连接配置,然后可以发布第一个版本,完成飞书机器人上线。上线后,在飞书消息对话中找到h0-开发助手这个机器人,给它发一条消息,它会给出一个在open claw后台运行的命令行,是一个审批动作,拷贝执行就行。执行完就可以正常给机器人发消息了。
不过我给飞书机器人发消息,也没有按期望路由到h0developer 这个Agent,而是被路由到默认的defaut 那个全局默认agent:main了。
后来我跟飞书机器人聊这个事情,说是两方面原因:
- 原有的会话要删除掉。原来有main Agent和渠道飞书配对的会话,以后再有来自飞书的消息,默认不会起一个新的会话,而是用这个会话来承接,所以要维护会话,删除原来的持久化的会话文件。
# 清理过期会话(自动维护)
openclaw sessions cleanup
# 手动删除特定会话文件(直接操作文件系统)
rm /root/.openclaw/agents/main/sessions/sessions.json
rm /root/.openclaw/agents/main/sessions/*.jsonl
- 绑定配置中,路由找不到具体的飞书的某个账户,匹配不到,要改成*,这样就能匹配到了。
{
“agentId”: “h0developer”,
“match”: {
“channel”: “feishu”,
“accountId”: “*”
}
}
这样处理之后,来自飞书的消息,确实被路由到 h0developer这个Agent来承接了:
这么看来,我要指挥同一台服务器上的多个openclaw Agent干活的话,就要分别在钉钉、飞书等不同的IM渠道去跟不同的机器人对话了。 没法实现我在同一个钉钉群里@不同机器人,让它们对应不同Agent干活。
但是我之前匹配不成功的原因是,我实际使用的是h0developer-company, 但是配置中写了h0developer-personal 导致匹配不成功转而路由到默认的Agent main了。 实际是可能匹配飞书渠道具体的account也不用* 通配符。
于是我改成了精确匹配h0developer-company,也路由到h0developer这个agent处理了,那我明天就准备在飞书中另外建一个机器人,绑定到另外要给agent试试看。
待续。
2026/03/15
Agent团队中的角色包括:H0-总助、H0-项目产品经理、H0-项目开发经理、H0-开发助手、H0-测试助手、H0-部署运维助手、H0-培训助手。从需求分析分解到开发、测试、部署、培训手册编写及后续运维 让OpenClaw组建Agent团队完成。
默认的Agent main留给其他渠道对接,所有非飞书渠道来的其他机器人要接入这几台机器,都对接到main这个默认Agent
H0-开发助手Agent已经创建好了,接下来创建其他Agent
#创建H0-总助Agent
openclaw agents add h0assistant –workspace ~/.openclaw/workspace-h0assistant –agent-dir ~/.openclaw/agents/h0assistant –model dashscope/kimi-k2.5
#创建H0-项目产品经理 Agent
openclaw agents add h0prdmanager –workspace ~/.openclaw/workspace-h0prdmanager –agent-dir ~/.openclaw/agents/h0prdmanager –model dashscope/kimi-k2.5
#创建H0-项目开发经理 Agent
openclaw agents add h0devmanager –workspace ~/.openclaw/workspace-h0devmanager –agent-dir ~/.openclaw/agents/h0devmanager –model dashscope/glm-5
#创建H0-测试助手 Agent
openclaw agents add h0tester –workspace ~/.openclaw/workspace-h0tester –agent-dir ~/.openclaw/agents/h0tester –model dashscope/kimi-k2.5
#创建H0-部署运维助手 Agent
openclaw agents add h0deployops –workspace ~/.openclaw/workspace-h0deployops –agent-dir ~/.openclaw/agents/h0deployops –model dashscope/kimi-k2.5
#创建H0-培训助手 Agent
openclaw agents add h0trainer –workspace ~/.openclaw/workspace-h0trainer –agent-dir ~/.openclaw/agents/h0trainer –model dashscope/kimi-k2.5
增加飞书渠道机器人账号
openclaw channels add 命令在增加飞书渠道时,会提示已经有飞书渠道配置,让你选择修改或者放弃跳过,所以如果要增加多个飞书机器人,不能通过这个命令添加,要通过修改openclaw.json这个配置文件在飞书下面的accounts数组中添加。
步骤:
- 先在飞书开放平台,把这几个机器人都建好(创建、导入openclaw官方飞书渠道说明文档中的json脚本设置权限、添加 获取通讯录基本信息 contact:contact.base:readonly)
- 然后把这些机器人的账号名(与Agent名保持一致,后缀用-personal表示来源于个人飞书,可以与公司机器人区别开来)、botName(与飞书机器人名保持一致,后缀用-个人表示来源于个人飞书,可以与公司机器人区别开来)、appkey 和appsecret都添加到openclaw.json中去,并完成绑定关系:
飞书渠道机器人账号列表:
“feishu”: {
“enabled”: true,
“defaultAccount”: “h0assistant-personal”,
“connectionMode”: “websocket”,
“domain”: “feishu”,
“groupPolicy”: “open”,
“accounts”: {
“h0assistant-personal”: {
“enabled”: true,
“appId”: “cli_a9************”,
“appSecret”: “lDNTy************”,
“botName”: “H0-总助-个人”
},
“h0prdmanager-personal”: {
“enabled”: true,
“appId”: “cli_a9************”,
“appSecret”: “KmQ4************”,
“botName”: “H0-项目产品经理-个人”
},
“h0devmanager-personal”: {
“enabled”: true,
“appId”: “cli_a93************”,
“appSecret”: “vqyEDd************”,
“botName”: “H0-项目开发经理-个人”
},
“h0developer-personal”: {
“enabled”: true,
“appId”: “cli_a9************”,
“appSecret”: “focu************”,
“botName”: “H0-开发助手-个人”
},
“h0tester-personal”: {
“enabled”: true,
“appId”: “cli_a9************”,
“appSecret”: “zgTmG************”,
“botName”: “H0-测试助手-个人”
},
“h0deployops-personal”: {
“enabled”: true,
“appId”: “cli_a9************”,
“appSecret”: “sV1Rc1************”,
“botName”: “H0-部署运维助手-个人”
},
“h0trainer-personal”: {
“enabled”: true,
“appId”: “cli_a93************”,
“appSecret”: “KHyrlc************”,
“botName”: “H0-培训助手-个人”
}
},
“appId”: “cli_a93c************”,
“appSecret”: “lDNTyr************”
}
},
飞书机器人与open claw Agent绑定列表:
“bindings”: [
{
“agentId”: “h0assistant”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0assistant-personal”
}
},
{
“agentId”: “h0prdmanager”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0prdmanager-personal”
}
},
{
“agentId”: “h0devmanager”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0devmanager-personal”
}
},
{
“agentId”: “h0developer”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0devmanager-personal”
}
},
{
“agentId”: “h0tester”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0tester-personal”
}
},
{
“agentId”: “h0deployops”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0deployops-personal”
}
},
{
“agentId”: “h0trainer”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0trainer-personal”
}
}
],
改完之后验证下配置文件的json有效性:
root@desktop-jacksen:~/.openclaw# openclaw config validate
�� OpenClaw 2026.3.13 (61d171a) — More integrations than your therapist’s intake form.
Config valid: ~/.openclaw/openclaw.json
root@desktop-jacksen:~/.openclaw#
- 然后再重启openclaw gateway,这样可以让这些渠道账号都跟飞书建立好socket连接。4. 然后回到飞书开放平台,去配置事件与回调(依赖socket连接已经成功),添加im.message.receive_v1事件,然后创建版本,发布应用。
发布后,会收到飞书开发助手发来的消息
5. 打开这个应用就可以,可以给这个机器人发一条消息,飞书机器人会回复一条信息,包含要在openclaw后台授权的命令行,执行这条命令行完成授权。
命令完成,显示Approved ,成功授权。
全部完成后,机器人全部上线:
测试看每个机器人对应的open claw Agent是否都正确,发现基本都正确。
唯有H0-开发助手没反馈。检查配置,发现绑定错误了: 缺少了h0developer-personal的路由:
{
“agentId”: “h0developer”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0devmanager-personal”
}
},
改成
{
“agentId”: “h0developer”,
“match”: {
“channel”: “feishu”,
“accountId”: “h0developer-personal”
}
},
修改之后重启openclaw gateway,再次测试发现还是没反应。
看openclaw log 发现 说是跟飞书的通信超时了。
然后通过钉钉渠道测试,也是没反应。这种情况一般不是钉钉或者飞书自己的服务有问题,大概率是本地的Gateway服务有问题,重启Gateway服务之后就正常了。
测试:
用了几分钟,又出现了崩塌(任务渠道无法响应)。
元宝分析是上游服务超时。
综合日志判断,导致“网关几分钟就无法正常使用”的直接原因是上游服务(如Kimi AI模型服务)响应极慢或完全无响应,触发了网关侧的请求超时机制。可能的原因包括:
上游服务不稳定:dashscope(阿里云灵积)提供的 kimi-k2.5模型服务端存在性能问题或临时故障。
网络连接问题:网关服务器到上游服务提供商的网络存在高延迟、丢包或中断。
配置问题:当前10秒的超时时间(timeout: 10000)对于该上游服务来说可能不足,尤其是在服务负载较高时。
重启Gateway,告诉这些Agent们自己的角色定位,并通知他们开启记忆系统。
这次gateway没有很快崩溃,已经运行了一个半小时没有崩溃。不过在一小时40分钟时崩溃了,日志错误信息:AxiosError: timeout of 10000ms exceeded。
循环出现下面错误:
10:23:04 info [error]: [
AxiosError: timeout of 10000ms exceeded
at RedirectableRequest.handleRequestTimeout (/usr/lib/node_modules/openclaw/node_modules/axios/lib/adapters/http.js:908:13)
at RedirectableRequest.emit (node:events:519:28)
at Timeout._onTimeout (/usr/lib/node_modules/openclaw/node_modules/follow-redirects/index.js:221:12)
at listOnTimeout (node:internal/timers:585:17)
at processTimers (node:internal/timers:521:7)
at Axios.request (/usr/lib/node_modules/openclaw/node_modules/axios/lib/core/Axios.js:46:41)
at processTicksAndRejections (node:internal/process/task_queues:103:5) {
isAxiosError: true,
code: ‘ECONNABORTED’,
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 10000,
xsrfCookieName: ‘XSRF-TOKEN’,
xsrfHeaderName: ‘X-XSRF-TOKEN’,
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [Object [AxiosHeaders]],
method: ‘get’,
url: ‘https://open.feishu.cn/open-apis/bot/v3/info’,
params: {},
allowAbsoluteUrls: true,
data: undefined
},
request: Writable {
_events: [Object],
_writableState: [WritableState],
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 0,
_requestBodyBuffers: [],
_eventsCount: 3,
_onNativeResponse: [Function (anonymous)],
_currentRequest: [ClientRequest],
_currentUrl: ‘https://open.feishu.cn/open-apis/bot/v3/info’,
_timeout: null,
[Symbol(shapeMode)]: true,
[Symbol(kCapture)]: false
}
}
]
openclaw服务在尝试向一个外部API(日志中显示为飞书开放平台的机器人信息接口 https://open.feishu.cn/open-apis/bot/v3/info)发送请求时,在10秒(10000毫秒)内未收到响应,因此触发了超时错误。
飞书机器人的后台日志没看到啥错误,open claw日志里面有个调用飞书机器人的日志:
11:19:09 info [error]: [
AxiosError: timeout of 30000ms exceeded
at RedirectableRequest.handleRequestTimeout (/usr/lib/node_modules/openclaw/node_modules/axios/lib/adapters/http.js:908:13)
at RedirectableRequest.emit (node:events:519:28)
at Timeout._onTimeout (/usr/lib/node_modules/openclaw/node_modules/follow-redirects/index.js:221:12)
at listOnTimeout (node:internal/timers:585:17)
at processTimers (node:internal/timers:521:7)
at Axios.request (/usr/lib/node_modules/openclaw/node_modules/axios/lib/core/Axios.js:46:41)
at processTicksAndRejections (node:internal/process/task_queues:103:5) {
isAxiosError: true,
code: ‘ECONNABORTED’,
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 30000,
xsrfCookieName: ‘XSRF-TOKEN’,
xsrfHeaderName: ‘X-XSRF-TOKEN’,
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [Object [AxiosHeaders]],
method: ‘post’,
url: ‘https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal’,
data: ‘{“app_id”:”cli_a********cd3″,”app_secret”:”KmQ4S*****12Yk”}’,
allowAbsoluteUrls: true
根据这个app_id 可以判断是产品经理机器人,看产品经理机器人的日志,没有错误,但是在半小时之前就没有任何请求日志了,如果是触发API额度限制,应该返回额度限制的错误码,但是也没有,猜测可能是被飞书的WAF策略给挡掉了。
头条上有篇文章写:Openclaw对飞书的健康检查频率太高,消耗了过多的API额度,后来飞书修复了程序,缓存时间拉长到10分钟,降低了90%的次数消耗,另外每日额度从1万提高到50万;看了飞书插件最新的程序:
\\wsl.localhost\Ubuntu-22.04\usr\lib\node_modules\openclaw\extensions\feishu\src\probe.ts
const PROBE_SUCCESS_TTL_MS = 10 * 60 * 1000; // 10 minutes
const PROBE_ERROR_TTL_MS = 60 * 1000; // 1 minute
正常缓存10分钟,错误缓存1分钟,文章作者的做法是把正常缓存设置成了1小时;但可能也不是主要问题。
我停止Gateway半小时后重启Gateway,然后发现日志中依然是原来那种超时错误, 然后我 尝试在钉钉和Web控制台给Openclaw发消息,也是没有响应,从openclaw logs –follow的实时监控日志看不到任何反应。
看起来单纯的重启Gateway没有用。
使用openclaw doctor 诊断,提示Gateway服务在运行,但是timeout了,提问是否要重启,选择重启:
然后它自己 去运行 openclaw doctor –fix ,修复Gateway了。
Health check failed: gateway timeout after 10000ms
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /root/.openclaw/openclaw.json
Bind: loopback
│
◇ Gateway port
◇ Gateway
│
◇ Restart gateway service now?
│ Yes
Restarted systemd service: openclaw-gateway.service
◇ Gateway ──────────────╮
│ │
│ Gateway not running. │
│ │
├────────────────────────╯
│
◇ Gateway connection ────────────────────╮
│ │
│ Gateway target: ws://127.0.0.1:18789 │
│ Source: local loopback │
│ Config: /root/.openclaw/openclaw.json │
│ Bind: loopback │
│ │
├─────────────────────────────────────────╯
Run “openclaw doctor –fix” to apply changes.
│
└ Doctor complete.
root@desktop-jacksen:# openclaw doctor
再次运行openclaw doctor, 显示正常了:
◇
DingTalk: configured
Feishu: ok
Agents: main (default), h0developer, h0assistant, h0prdmanager, h0devmanager, h0tester, h0deployops, h0trainer
Heartbeat interval: 30m (main)
Session store (main): /root/.openclaw/agents/main/sessions/sessions.json (5 entries)
– agent:main:feishu:default:direct:ou_5023659b3cf490011f9cdd48a4aa782b (8m ago)
– agent:main:main (74m ago)
– agent:main:dingtalk:dm:07672664-281161922 (254m ago)
– agent:main:feishu:h0developer-personal:direct:ou_d82d012e8cc0f83e5dc1c10ecc767e47 (366m ago)
– agent:main:feishu:h0developer-company:direct:ou_7834c03dd85aa5b45e5ae5e27b244146 (1438m ago)
Run “openclaw doctor –fix” to apply changes.
│
└ Doctor complete.
root@desktop-jacksen:#
不过看openclaw logs 还是异常
干脆重启openclaw服务, 重启之后正常了。
2026/03/16下午 ~2026/03/17 上午,Openclaw连续运行了近20个小时还没崩溃,飞书机器人沟通也都正常,这次稳定运行时间比较长。
Agent团队配置完成。
四、配置 self-improving-agent
#安装 Skill
$ cd ~/.openclaw/skills
$ clawdhub install self-improving-agent
安装后在~/.openclaw/skills目录下 会有个self-improving-agent目录
#安装 Hook
$ mkdir -p ~/.openclaw/hooks
$ cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
$ openclaw hooks enable self-improvement
# 创建学习文件
# 为默认Agent创建学习文件
$ mkdir -p ~/.openclaw/workspace/.learnings
$ cp ~/.openclaw/skills/self-improving-agent/.learnings/* ~/.openclaw/workspace/.learnings/
# 为H0-项目开发经理 Agent创建学习文件
$ mkdir -p ~/.openclaw/workspace-h0devmanager/.learnings
$ cp ~/.openclaw/skills/self-improving-agent/.learnings/* ~/.openclaw/workspace-h0devmanager/.learnings/
注入提示文件:向 ~/.openclaw/workspace-h0devmanager/目录下的AGENTS.md,SOUL.md,TOOLS.md 三个文件中注入提示词(参考openclaw-integration.md文件)
# 为H0-总助 Agent创建学习文件
$ mkdir -p ~/.openclaw/workspace-h0assistant/.learnings
$ cp ~/.openclaw/skills/self-improving-agent/.learnings/* ~/.openclaw/workspace-h0assistant/.learnings/
#检查安装效果:
$ openclaw skills list
可以看到 ✓ ready │ �� self-improvement
#查看 ~/openclaw.json
可以看到:
“hooks”: {
“internal”: {
“enabled”: true,
“entries”: {
“self-improvement”: {
“enabled”: true
}
}
}
},
说明 这个Skill 和 hooks配置都生效了。
$ openclaw gateway restart
Restarted systemd service: openclaw-gateway.service
问题:重启网关后,web端控制台出现了问题,没响应:但钉钉和飞书渠道都能正常响应。
运行 openclaw doctor, 提示要运行fix
Run “openclaw doctor –fix” to apply changes.
│
└ Doctor complete.
#运行fix
$ openclaw –fix
DingTalk: configured
Feishu: ok
Agents: main (default), h0assistant, h0devmanager
Heartbeat interval: 30m (main)
│
└ Doctor complete.
不过还是没解决问题,web控制台还是没响应。
这个似乎是2026.03.13的一个老问题,先不管它了。之前是过了十几分钟自己恢复的。
过了12分钟,果然他自己恢复了。
恢复后在web控制台看到一条日志似乎跟这个问题有关:
14:52:17
error
gateway
shutdown timed out; exiting without full cleanup
网关重启的时候,关闭动作出现了超时。
关于作者:
| 昵称:Jack.shang 档案信息:jack.shang 程序员->项目经理->技术总监->项目总监->部门总监->事业部总经理->子公司总经理->集团产品运营支持 联系方式:你可以通过syfvb@hotmail.com联系作者 点击查看Jack.shang发表过的所有文章... 本文永久链接: http://blog.retailsolution.cn/archives/5700 |
对本文的评价:
