iamkentzhu/lark-bot2bot

GitHub: iamkentzhu/lark-bot2bot

飞书多机器人协作讨论编排器,通过 CLI 或 HTTP API 调用不同 AI 框架的 LLM,让多个 bot 以各自身份在群聊中进行结构化讨论。

Stars: 41 | Forks: 3

# lark-bot2bot 飞书/Lark 的多机器人讨论编排器。编排器通过 CLI 调用各 bot 的 LLM,然后以各 bot 的身份发送消息——零噪音、零框架改动。 飞书多机器人协作讨论编排器。编排器通过 CLI 调用各 bot 的 LLM,以各自 bot 身份在群里发消息——零噪音、零侵入。 ## 演示 / 效果 ``` [Lucie] RAG is better for customer service: real-time KB updates, low cost... RAG 更适合客服:知识库可实时更新,成本低... └─ [Lumi] Disagree, Fine-tuning is better: stable tone... _(1/3 · Lumi)_ 不同意,Fine-tuning 更适合:话术稳定... └─ [Lucie] On the cost issue... _(2/3 · Lucie)_ 关于成本问题... └─ [Lumi] Overall... _(2/3 · Lumi)_ 综合来看... [System / 系统] ⏹ Discussion ended / 讨论结束 ``` ## 特性 / 特性 - **零噪音 / 零噪音** — 聊天中只显示 bot 的观点,无中继消息 / 群里只有 bot 的观点内容,没有中继消息 - **零侵入 / 零侵入** — 无需修改 bot 框架代码 / 不修改任何 bot 框架代码 - **回复链 / 回复链** — 消息自动回复上一条,形成连贯的讨论 / 消息自动引用上一条,形成连贯讨论 - **四种模式 / 四种模式** — 辩论、评审、头脑风暴、自由对话 / 辩论、评审、头脑风暴、自由对话 - **自动停止 / 自动停止** — 轮次限制、共识检测(Ctrl+C 中断) / 轮次上限、共识检测(Ctrl+C 可手动中断) - **跨框架 / 跨框架** — OpenClaw + Hermes, OpenClaw + OpenClaw, Hermes + Hermes ## 支持的场景组合 / 支持的场景组合 ### 本地 (local-cli) / 同机器 编排器和所有 bot 在同一台机器上运行。 编排器和所有参与 bot 在同一台机器上。 | 组合 / 组合 | 支持 / 支持 | 说明 / 说明 | |---------------------|-----------------|-------------| | OpenClaw + Hermes | ✅ | 默认场景,两个不同框架 / 默认场景,两个不同框架 | | OpenClaw + OpenClaw | ✅ | 需使用不同的 agent ID / 需使用不同的 agent ID | | Hermes + Hermes | ✅ | 需使用不同的 session / 需使用不同的 session | ### 远程 (http-api) / 异地 编排器在本地运行,通过 OpenAI 兼容的 HTTP API 调用远程 bot。 编排器在本地,远程 bot 通过 OpenAI 兼容 HTTP API 调用。 | 组合 / 组合 | 支持 / 支持 | 说明 / 说明 | |---------------------|-----------------|-------------| | OpenClaw (本地) + Hermes (远程) | ✅ | 本地 CLI + 远程 HTTP API | | Hermes (本地) + Hermes (远程) | ✅ | 本地 CLI + 远程 HTTP API | | OpenClaw + OpenClaw 远程 | ❌ | OpenClaw 尚不支持 HTTP chat API / OpenClaw 暂不支持 HTTP chat API | 远程 Hermes 需要在 `.env` 中启用 API server: 异地场景需在远程 Hermes 的 `.env` 中启用 API server: ``` API_SERVER_ENABLED=true API_SERVER_KEY=your-secret-key ``` ## 前置条件 / 前置条件 - 本地运行 bot 框架 (OpenClaw / Hermes Agent) / 两个 bot 框架在本地运行 - 每个 bot 的飞书 App ID + App Secret / 两个 bot 的飞书 App ID + App Secret - 两个 bot 在同一个飞书群 / 两个 bot 在同一个飞书群 - Python 3 + PyYAML (`pip3 install pyyaml`) - jq (`brew install jq`) ## 安装 / 安装 ``` git clone https://github.com/iamkentzhu/lark-bot2bot.git # As a Claude Code skill / 作为 Claude Code skill cp -r lark-bot2bot ~/.claude/skills/ # Or as an OpenClaw skill / 或作为 OpenClaw skill cp -r lark-bot2bot /path/to/openclaw-skills/ ``` ## 配置 / 配置 创建 `~/.bot2bot/config.yaml`: 创建 `~/.bot2bot/config.yaml`: ``` chat_id: "oc_your_group_chat_id" participants: - name: Lucie bot_app_id: "cli_xxx" bot_app_secret: "xxx" type: local-cli command: "openclaw agent --agent main --message '{message}' --json" parse: "jq -r '.result.payloads[0].text'" - name: Lumi bot_app_id: "cli_xxx" bot_app_secret: "xxx" type: local-cli command: "hermes chat -q '{message}' -Q" parse: "grep -v '^session_id:' | grep -v '^$'" defaults: max_rounds: 3 timeout_seconds: 90 hard_limit: 30 ``` ## 使用方法 / 使用 ### 命令行 / 命令行 ``` bash scripts/arena.sh \ --topic "RAG vs Fine-tuning" \ --mode debate \ --rounds 3 \ --role-a "Pro RAG" \ --role-b "Pro Fine-tuning" ``` ### 作为 Skill / 作为 Skill 在 Claude Code / OpenClaw / Hermes 中,说: 在 Claude Code / OpenClaw / Hermes 中说: ### 参数 / 参数 | 参数 / 参数 | 说明 / 说明 | 默认值 / 默认 | |-----------------|-------------------|---------------| | `--topic` | 讨论话题 / 讨论话题 | 必填 / 必填 | | `--mode` | debate / review / brainstorm / freeform | freeform | | `--rounds` | 轮数 / 讨论轮数 | 3 | | `--role-a` | Bot A 的角色 / Bot A 的角色 | 参与者 / 参与者 | | `--role-b` | Bot B 的角色 / Bot B 的角色 | 参与者 / 参与者 | | `--first` | 谁先发言 / 谁先发言: a / b | a | | `--config` | 配置文件路径 / 配置文件路径 | ~/.bot2bot/config.yaml | | `--timeout` | CLI 调用超时 (秒) / 超时秒数 | 90 | ## 讨论模式 / 讨论模式 | 模式 / 模式 | 说明 / 说明 | |-------------|-------------------| | **debate** | 双方各持立场,结构化论证 / 双方各持立场,结构化论证 | | **review** | 一方提出方案,另一方质疑挑战 / 一方出方案,另一方质疑挑战 | | **brainstorm** | “Yes, and...”原则,在想法上构建 / Yes, and 原则,互相延伸 | | **freeform** | 开放式对话,无固定结构 / 开放式交流,无固定结构 | 自定义模式:在 `templates/` 目录下添加 Markdown 文件。 自定义模式:在 `templates/` 目录下添加 Markdown 文件。 ## 架构 / 架构 ``` arena.sh (orchestrator / 编排器) ├── openclaw agent CLI → Bot A reply / Bot A 回复 ├── hermes chat CLI → Bot B reply / Bot B 回复 └── Feishu API (curl) → Post as each bot's identity / 以各自 bot 身份发消息 ``` 编排器与框架无关——它只是一个 shell 脚本。 编排器不依赖任何特定 AI 框架,核心是一个 shell 脚本。 ## License MIT
标签:LLM, SOC Prime, Unmanaged PE, 多智能体编排, 工作流自动化, 应用安全, 开发工具, 逆向工具, 飞书机器人