Openclaw 在topic话题Telegram group电报群组中 使用多Agent协同完成任务

前言

那么我想, 如果在Telegram group电报群组中, 用Telegram电报消息来在不同的Agent之间传递信息, 达到多Agent协作的方式, 会怎么样呢?

思路

需要一个 tgbot (向 @botfather 申请) 用来实现方案 (1), 
需要一个 userbot (从 my.telegram.org 申请api_id, api_hash) 来实现方案 (2). 
需要一个tg账号, 被这个userbot操控.

结合我们实验过的多Agent团队协作方案 最终方案如下:

部署 Openclaw

完成安装 Openclaw
完成 openclaw onboard 部署
在部署过程中, 设置了模型, 设置了 telegram bot token
以上过程略.

Openclaw 学习 telethon 技能

参考 之前这一篇教程 本文略

设置 Telegram group 电报群组

新建一个Telegram group 电报群组, 
把 topic 话题 功能 打开.
把你的Telegram bot 电报机器人 拉进来,
把你的Telegram bot 电报机器人 设置为群组管理员admin.
以上过程略.

查询一些ID数据

搜索 @getidsbot (userid 186675376) 这个bot

发送 /start 知道你自己账户的userid
6607181826

把 @getidsbot (userid 186675376) 这个bot拉进你的群组 就能知道群组的id
-1003548837972


建立 topic 和 agent 并绑定消息路由

在openclaw tui 或者 webui 里面, 用自然语言发送以下指令
(蓝色的部分你自由发挥)

请建立 telegram group 中 不同 topic 与 你所在的 openclaw 系统中 不同 agent 之间的 binding关系

你需要的信息如下:
telegram group id = -1003548837972
该group 已经打开 topic 功能
你已经是 该group 的admin, 你已经有 管理topic 的权限 
该group 中有一个用户 userid = 6607181826

你要做的工作如下:
1.a telegram group 中新建一个 topic, 名称 = topic-watch
1.b openclaw 系统中新建一个 agent, 名称 = agent-watch
注意是新增agent, 当前的agent main要保留
1.c 建立 1.a 中的 topic 与 1.b 中的 agent 之间的 binding关系

用同样的方式, 建立 designcodetest 的 topic 和 agent 以及 binding关系

最后
设置 6607181826用户 使用 / new 等命令 的权限 
设置用户在这个telegram group以及topic里不需要 @ tgbot 发言

等待一段时间, openclaw完成了.

参考之前的教程, 检查一下完成的效果.

把agent建立成工作团队

在openclaw tui 或者 webui 里面, 用自然语言发送以下指令
(蓝色的部分你自由发挥, 绿色的部分注意与上一步对应)
组建一个agent协作团队, 利用已经存在多个agent.
注意, 这些agent已经存在, 不要新增agent.
设置agent的配置文件, 以及agent之间的协作关系

为了agent之间可以查看任务进展, 注意修改 openclaw.json 文件的参数
tools.sessions.visibility = all

组成团队的agent是:
agent-watch, agent-design, agent-code, agent-test
注意, 不包括当前的 agent main

1号 agent
名称 = agent-watch
身份 = 你是任务调度员, 为团队中各agent分配任务, 并跟踪各agent的任务进展 
收到"新任务"时, 马上发给 agent-design 进行分析, 将总任务拆解为小任务. 注意, 你自己不要分析.
然后将拆解后的小任务分配给合适的agent执行.
维护一份 `任务名.md` 文件, 记录任务列表 和 完成进度
当团队中的agent提问时, 你将疑问转发给 agent-design 思考, 再将解答转发给提问的agent. 注意, 你只做信息的传递, 不要修改信息.
知识 = 知道团队中其它agent的全量信息(包括身份和知识)
知道团队中其它agent的session, 可以直接读取

2号 agent
名称 = agent-design
身份 = 从其它agent接受任务, 完成后通知任务发起者, 并提交成果
特别的, 你是设计师, 分析师
你将大任务拆解为适合本团队的成员执行的小任务.
你不要求用户提供补充信息, 总是给出在当前状态下的最优解决方案, 想办法把任务推进下去
知识 = 任务完成后的成果, 需要保存在 非workspace的目录下, 再交付出去
知道团队中其它agent的全量信息(包括身份和知识)
知道团队中其它agent的session, 可以直接读取

3号 agent
名称 = agent-code
身份 = 从其它agent接受任务, 完成后通知任务发起者, 并提交成果
特别的, 你是程序员
知识 = 任务完成后的成果, 需要保存在 非workspace的目录下, 再交付出去

4号 agent
名称 = agent-test
身份 = 从其它agent接受任务, 完成后通知任务发起者, 并提交成果
特别的, 你是测试员, 接受测试对象和测试标准, 交付测试报告
知识 = 任务完成后的成果, 需要保存在 非workspace的目录下, 再交付出去

公共知识:
这个团队里面都是已经存在的agent, 并且已经配置好了基于telegram group的 topic 工作, 所以不要用 sessions_spawn, 不要用 sessions_send.
这个团队里的agent可以从 openclaw.json 文件查询到 telegram group 的 id, 和 各自对应的topic 的 id
这个团队里的agent之间发消息用 telethon-session 技能
接收方agent自己主动回报, 并且发出方agent可以定时检查.

agent之间发消息的格式包括:
FROM:
TO:
CONTENT:
FROM: agent-watch
TO: agent-design
CONTENT: 
总任务: 开发一个生成随机密码的页面
核心功能参考:https://crazypeace.github.io/xkcd-password-generator/
视觉风格参考:https://onojyun.com/
请进行任务拆解,输出可直接分配给 agent-code / agent-test 的子任务列表。

试试开发任务

新任务: 开发一个生成随机密码的页面
核心功能 参考 https://crazypeace.github.io/xkcd-password-generator/
视觉风格 参考 https://onojyun.com/

========

后记

本次教程流程比较长, 说实话, 每一步的操作是否成功, 和prompt写得好不好有关, 也和你用的模型智能程度有关.
所以我建议, 每一大步完成后, 检查无误了, 就把 .openclaw 目录打包备份一下. 
万一新的操作不成功, 你可以从上一次的打包恢复, 然后想办法改进  prompt (比如, 你让TA先学习相关文档, 作为上下文, 再发指令. 比如, 你 /reset 清空上下文, 再发指令. 比如, 你在原有prompt中加入一些注意事项或调整顺序强调某些内容) 或 换用不同的模型.
也有情况是, 大部分工作完成了, 但是有小问题, 你可以在此基础上继续对话修正. (懂哥也可以自己动手改openclaw, 有时只是个别配置项或者目录名不符合要求而已)

打包备份
cd ~ && tar czf openclaw-"$(date +"%Y-%m-%d-%H-%M-%S")".tar.gz --exclude='*.log' --exclude='cache' --exclude='node_modules/.cache' .openclaw
解包恢复
rm -rf ~/.openclaw && tar xzf ~/文件名 -C ~/
然后 重启gateway
openclaw gateway restart

如果你实践的时候效果一直不好, 你可以参考一下我的Agent的配置文件.
说实话, 这些配置文件我也是人肉微调过的.

我的这次实验视频, 可以看到, 并不是很顺利, 有很多卡壳的地方, 需要人肉帮忙. 但是, 这些人肉操作都是不需要动脑筋的. AI的"智能"工作的部分都完成了.
有一些卡壳我认为是白嫖公益站提供的token供应不稳定造成的, 也有可能有模型的"智能"程度的问题. 而且, 如果想进一步优化, 是可以通过 agent-watch 的定时任务做到持续推动的.
在多Agent协作的流程方面, 有些Agent的行为有问题, 但其实我写在Agent的 .md 文件里面的描述是一样的. 

还有一点, 从视频中可以看到, 使用 telegram 作为agent间通信的框架, 好处是用户可以很方便地观察, 监控, 修复. 

本次实验基于 DediRock VPS 2.5G内存 年付$6.45

成文的当天, 上面的LA机房已经没货了.
NY机房还有货, 美东. 翻墙的话肯定要套CF CDN了, 玩 openclaw 没影响

评论

The Hot3 in Last 7 Days

Woiden IPv6 VPS 搭 V2ray 梯子 VLESS+Websocket+TLS 模式 免费 白嫖 全程手机操作 2022-4-19

极简一键脚本 搭NaiveProxy梯子 自定义端口 与Caddy V2前置的VLESS/Vmess V2Ray共存 可开CDN