大模块流程
外部请求HTTP / CLI / MCP / Channel
->
Schema/参数整理session、model、thinking、routing
->
调用 ServicesAgentService / CronService / SkillHubService
->
返回响应chat result、task state、skill artifacts、cron history
小模块拆分
web
Web 应用是主要产品入口,集中提供 chat、task acceptance、cron、session、skill draft/review/publish 等 API,并服务前端静态资源。
请求进入 FastAPI route,解析 body/query/path。
根据功能调用 AgentService、CronService、SkillHubService 或 SessionProcessProjector。
把内部 dataclass/model 转成 JSON payload,并在必要时补充 session/run/task 元数据。
关键文件:beaver/interfaces/web/app.py、beaver/interfaces/web/files.py
cli
CLI 入口用于本地命令行运行 Beaver。它复用同一套 AgentService/AgentLoop,因此 CLI 不是第二套 runtime,只是更薄的协议层。
读取命令行参数。
构造 session/source/model 参数。
调用 agent run,打印最终输出。
gateway 与 channels
Gateway 和 channels 是多渠道接入边界,把渠道消息抽象为统一的内部消息。当前代码中通道能力较轻,主要服务未来接入不同聊天来源。
渠道事件进入 adapter。
规范化 user_id、channel、chat_id、content。
转给 AgentService,最终仍落入同一个 session/run 体系。
mcp_servers
对外暴露 MCP server 能力,让 Beaver 的部分能力可以被其他 MCP client 调用;这和 Beaver 作为 MCP client 使用外部工具是两条边界。
MCP client 调用 server tool。
接口层解析 MCP 参数。
转调内部服务或数据访问层。
修改影响点
入口层新增字段时,要同步核对 Services 层是否需要进入 prompt:例如 thinking_enabled 会影响 router、skill assembler、provider chat kwargs;execution_context 会进入 ContextBuilder 的 system prompt。