Seedbot¶
适用对象:渠道机器人开发者 / Seedbot 维护者 / 应用集成者
是否必读:否
相关模块:apps.seedbot, skill, guard, tool
相关示例:apps/seedbot/README.md, tests/test_seedbot_app.py
1. 应用定位¶
Seedbot 是一个渠道型 bot 应用,目前重点是 DingTalk 场景。它展示的不是多 Agent 产品,也不是工作流编排,而是:
- 渠道消息接入
- 会话持久化
- SkillNode 驱动的 agent loop
- 外部消息发送工具
换句话说,Seedbot 更像“把 jianmu 变成一个可落地渠道机器人后端”的参考实现。
2. 关键后端入口¶
apps/seedbot/__main__.pyapps/seedbot/backend/config.pyapps/seedbot/backend/gateway.pyapps/seedbot/backend/agent_loop.py
__main__.py¶
负责:
- 加载项目
.env - 解析
--config - 调用
load_config() - 启动 uvicorn
config.py¶
负责 app 私有配置模型,主要包括:
DingTalkConfigAgentConfigSessionConfigGatewayConfigGuardConfigAppConfig
并把 app 级 guard 配置转换成框架级 Constraints。
gateway.py¶
是 Web 应用装配入口,负责:
- 构建
MessageBus - 构建
SessionManager - 构建 DingTalk channel/client
- 构建
DingTalkAgentLoop - 暴露 health、status、session、debug、webhook 等 API
agent_loop.py¶
是真正的业务运行核心。它会:
- 消费 inbound message
- 读取并维护会话历史
- 构建
ConversationState - 用
SkillNode作为主 agent - 注入 builtin tools / channel message tool / DingTalk tools
- 运行
ReactiveRunner - 抽取最终回复并发回渠道
3. 运行模型¶
flowchart TD
A[Channel inbound message] --> B[MessageBus]
B --> C[DingTalkAgentLoop]
C --> D[SkillNode + ReactiveRunner]
D --> E[Outbound message]
E --> F[Channel send]
这说明 Seedbot 的主运行单元并不是 swarm runtime,而是单会话、单 agent、Skill 驱动的 loop。
4. 与框架层的关系¶
Seedbot 主要复用了这些能力:
SkillNodeReactiveRunnerStateManagerRunContextConstraints- builtin tool registry
应用层负责的是:
- 渠道协议
- inbound/outbound bus
- session 存储
- debug console
- app config
5. 配置模型¶
Seedbot 的配置相对完整,涵盖:
- 渠道连接参数
- agent 模型与技能配置
- session 存储目录
- gateway host/port
- guard / sandbox
这让它非常适合作为“如何把 jianmu 接进真实业务配置体系”的参考。
6. 如何运行¶
安装 DingTalk stream SDK:
启动:
可选启动诊断:
默认网关:
http://<host>:<port>
常用入口:
GET /consoleGET /healthzPOST /dingtalk/webhook
7. 测试与验证¶
tests/test_seedbot_app.pytests/test_app_config_loaders.py
8. 约束与注意事项¶
- 目前实现明显偏 DingTalk 场景,不应误当作通用多渠道抽象
- agent loop 依赖会话历史和渠道 metadata,扩展到新渠道时要先定义会话语义
- app 级
GuardConfig到框架级Constraints的映射是关键桥接点