Foundation

底座模块提供配置、事件、cron 数据模型和 embedding 检索。它不直接处理业务请求,而是让上层 runtime 有稳定的配置来源、轻量事件通道和通用相似度检索能力。

大模块流程

环境/文件配置Config.load()
->
运行目标解析main / auxiliary / embedding target
->
能力底座MessageBus / EmbeddingRetriever / Cron models
->
上层消费EngineLoader、SkillAssembler、ToolAssembler、CronService

小模块拆分

config

负责把环境变量和配置文件收敛为 runtime 可用的 provider、embedding、workspace、数据库、MCP、cron 等配置。上层不会直接散读环境变量,而是通过配置对象解析目标。

读取环境/默认值,形成配置对象。
入口传入 model/provider_name 时,覆盖或补充默认 provider target。
resolve_provider_target()resolve_embedding_target() 输出 provider factory 能消费的字典。

关键文件:beaver/foundation/config/*

events

轻量消息总线,给内部组件做事件发布/订阅。当前核心链路更多依赖 session event 记录,MessageBus 是后续异步投影、通知、可观察性的扩展点。

组件注册 handler。
业务动作发布消息。
订阅者异步消费,不反向污染核心执行逻辑。

cron models

定义 cron job、run record、payload、状态等结构。Services 层用这些模型创建计划任务、记录触发历史,并把结果映射成 notification 或 Task。

CronJob 保存用户配置、调度表达式和 payload。
CronRunRecord 保存单次触发、输出、错误、关联 task/run。
CronService 负责状态迁移,AgentService 负责真正执行。

embedding

通用 embedding retriever 被 skill 和 tool 装配共用。它输入 query 和候选项,输出 top-k 候选;当远程 embedding 不可用时,有 fallback top-k 机制保证链路不完全中断。

候选项统一渲染为 name/description/text。
调用 embedding runtime 计算相似度。
按 top-k 输出候选,供 LLM 二次选择或直接加入工具集。

核对点

这个模块主要是“稳定输入”。后续如果修改 provider、embedding 或 cron 行为,优先核对配置解析是否继续保持单一入口,避免在 Service 或 Engine 中散落环境变量读取。