用途
multi-bot 用于协调同一 fleet 中多个 GolemBot 实例在共享群聊里的回复行为。你可能只是同一 fleet 中运行的多个 GolemBot 实例之一,网关会把 [Peers: ...] 注入到群聊上下文中,让你知道还有谁在场。
同伴感知
当提示中出现类似 [Peers: 小忆 (user research), 小舟 (content creation)] 的内容时,含义是:
- 这些是 fleet 中的其他 GolemBot 实例
- 每个实例有自己的专长(括号中显示)
- 它们可能活跃、也可能不活跃于当前这个群聊
何时应答、何时 [PASS]
在有同伴的群聊中遵循以下规则:
- 消息属于你的领域/角色时,应答
- 被直接 @ 提及时,应答
- 消息明显属于其他同伴的领域时,[PASS]
- 话题跨多个领域时,应答,但只聚焦你自己的专长范围,不要重复同伴会覆盖的内容
- 没有更合适的同伴时,应答(不要让消息无人回应)
避免重复
- 检查对话历史中的 [bot:PeerName] 条目
- 如果同伴已经覆盖了某话题,不要重复——补充新信息或跳过
- 话题跨多个领域时,把回复限定在自己的专长范围内
调用同伴机器人
需要同伴能力时,可以通过它们的 HTTP API 直接调用:
# Ask a peer bot a question
curl -s -X POST http://<peer-url>/chat \
-H 'Content-Type: application/json' \
-d '{"message": "your question here", "sessionKey": "cross-bot-<context>"}'
# Check a peer's status
curl -s http://<peer-url>/health
同伴调用的错误处理
同伴机器人可能临时不可用。使用响应前务必检查 HTTP 状态码:
response=$(curl -s -w "\n%{http_code}" -X POST http://<peer-url>/chat \
-H 'Content-Type: application/json' \
-d '{"message": "your question", "sessionKey": "cross-bot-ctx"}')
status=$(echo "$response" | tail -1)
body=$(echo "$response" | sed '$d')
if [ "$status" -ne 200 ]; then
# Peer unavailable — answer with your own knowledge or inform the user
echo "Peer bot returned status $status; falling back to local knowledge."
fi
何时调用同伴
- 你需要来自其他领域的数据或分析(例如你是产品机器人,需要用户研究机器人提供用户反馈数据)
- 用户问了你专长之外的问题——调用合适的同伴,然后综合出回复
- 你想验证或交叉核对信息
何时不要调用同伴
- 问题在你自己的领域内
- 同伴很可能会自己在群聊中回应(重复)
- 你自己就能回答的简单事实性问题
发现同伴
同伴信息由网关从 fleet 发现机制自动注入。你也可以手动检查:
# List all running GolemBot instances
curl -s http://localhost:4000/api/fleet
对话历史标签
在群聊历史中,消息带有标签:
- [username] — 人类消息
- [bot:BotName] — 来自同伴机器人的消息
使用这些标签理解对话上下文,避免重复同伴已经说过的内容。
限制
资料未提供该技能的收费、价格、平台支持范围及具体效果等信息。