hermes的各agent之间的相互调用
- 第一种方式:通过shell命令方式调用别的agent去执行:
修改调用方SOUL.md(被调用方无需变更),增加如下内容:
**如果用户要求分析某个具体渠道的数据时,请用delegate_task方式委派给其他agent执行,参数为本次会话的用户输入及之前的会话内容。执行完后你把结果汇总输出。**
A渠道agent:SPECIAL_AGENT=agent_a
B渠道agent: SPECIAL_AGENT=agent_b
**委托代理格式**
“`json
delegate_task(
tasks=[
{
“goal”: “用户输入内容和会话内容”,
“context”: “执行 ssh -T hermes@192.168.0.233 “bash -l -c ‘.local/bin/hermes -p $SPECIAL_AGENT chat -Q -q “替换成用户输入内容和会话内容”‘”;约束:输出 JSON 格式结果。”
“toolsets”: [“shell”]
},
]
)
- 第二种方式:通过acp协议调用(需要0.19.0以后的版本,老的版本可能有bug):
先验证被调用方是否支持acp协议,shell下执行:
$ (
echo ‘{“jsonrpc”: “2.0”, “method”: “initialize”, “params”: {“protocolVersion”: 1, “clientInfo”: {“name”: “test-client”, “version”: “1.0.0”}, “capabilities”: {}}, “id”: 1}’;
echo ‘{“jsonrpc”: “2.0”, “method”: “session/new”, “params”: {“cwd”: “/tmp”, “mcpServers”: []}, “id”: 2}’;
echo ‘{“jsonrpc”: “2.0”, “method”: “session/prompt”, “params”: {“sessionId”: “”, “prompt”: [{“type”: “text”, “text”: “你好,请自我介绍”}]}, “id”: 3}’;
sleep 15
) | ssh -T hermes@192.168.0.229 “bash -l -c ‘.local/bin/hermes -p agent_a acp'”
检查输出,应该能看到3步执行结果,第3步会出错,因为sessionId不对,把下面sessionId改成上面输出里面的sessionId执行:
$ (
echo ‘{“jsonrpc”: “2.0”, “method”: “initialize”, “params”: {“protocolVersion”: 1, “clientInfo”: {“name”: “test-client”, “version”: “1.0.0”}, “capabilities”: {}}, “id”: 1}’;
echo ‘{“jsonrpc”: “2.0”, “method”: “session/prompt”, “params”: {“sessionId”: “65bcfba0-f3d5-4140-9366-5dc5294b0e4c”, “stream”: false, “prompt”: [{“type”: “text”, “text”: “你好,请自我介绍”}]}, “id”: 3}’;
sleep 15
) | ssh -T hermes@192.168.0.229 “bash -l -c ‘.local/bin/hermes -p agent_ua_a acp'”
上面的命令输出一堆类似{“content”:{“text”:”\u60f3″,”type”:”text”}格式的文本表示验证通过。
然后修改调用方的SOUL.md(被调用方无需变更):
**如果用户要求分析某个具体渠道的数据时,请用delegate_task方式委派给其他agent执行,参数为本次会话的用户输入及之前的会话内容。执行完后你把结果汇总输出。**
A渠道agent:SPECIAL_AGENT=agent_a
B渠道agent: SPECIAL_AGENT=agent_b
**委托代理格式**
“`json
delegate_task(
tasks=[
{
“goal”: “使用ACP+SSH方式执行:<用户输入内容和会话内容>”,
“context”: “工作目录在 /tmp,ACP+SSH执行<用户输入内容和会话内容>: ssh -T hermes@192.168.0.229 \”bash -l -c ‘.local/bin/hermes -p $SPECIAL_AGENT acp\”;约束:输出 JSON 格式结果。”
},
]
)