跳转至

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__.py
  • apps/seedbot/backend/config.py
  • apps/seedbot/backend/gateway.py
  • apps/seedbot/backend/agent_loop.py

__main__.py

负责:

  • 加载项目 .env
  • 解析 --config
  • 调用 load_config()
  • 启动 uvicorn

config.py

负责 app 私有配置模型,主要包括:

  • DingTalkConfig
  • AgentConfig
  • SessionConfig
  • GatewayConfig
  • GuardConfig
  • AppConfig

并把 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 主要复用了这些能力:

  • SkillNode
  • ReactiveRunner
  • StateManager
  • RunContext
  • Constraints
  • 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:

pip install dingtalk-stream

启动:

PYTHONPATH=. python -m apps.seedbot --config apps/seedbot/config.yaml

可选启动诊断:

PYTHONPATH=. python apps/seedbot/scripts/check_startup.py

默认网关:

  • http://<host>:<port>

常用入口:

  • GET /console
  • GET /healthz
  • POST /dingtalk/webhook

7. 测试与验证

  • tests/test_seedbot_app.py
  • tests/test_app_config_loaders.py

8. 约束与注意事项

  • 目前实现明显偏 DingTalk 场景,不应误当作通用多渠道抽象
  • agent loop 依赖会话历史和渠道 metadata,扩展到新渠道时要先定义会话语义
  • app 级 GuardConfig 到框架级 Constraints 的映射是关键桥接点

9. 相关文档