# Beaver Backend 这是 `Beaver` 后端。 当前已经落地的主线: 1. 以统一 `engine` 为核心,让主 agent 和 sub-agent 共享同一套运行内核。 2. 聊天入口支持 Main Agent 自动 Task 化、验证、反馈门控。 3. skills 已有版本化、receipt/effect 记录、学习候选门控,以及后台 assisted learning pipeline。 4. Agent Team v1 已支持内部 `sequence / parallel / dag` coordinator。 5. Task mode 已能通过 `TaskExecutionPlanner` 按需调用 sub-agent/team;team node 由 `TaskSkillResolver` 绑定 published skill,缺失时生成 ephemeral guidance,最终仍由主 Agent synthesis 生成用户回答。 6. Skill Learning 已支持后台 run-once/worker 自动生成 draft、safety report、eval report、人工审核发布和前端审核工作台;worker 不会自动 approve/publish。 ## 当前结构 - `beaver/foundation`:底层公共设施 - `beaver/engine`:统一 agent 内核 - `beaver/coordinator`:多 agent 协调层 - `beaver/tools`:工具系统 - `beaver/skills`:技能系统 - `beaver/memory`:记忆与经验沉淀 - `beaver/permissions`:权限与治理 - `beaver/services`:应用服务层 - `beaver/interfaces`:CLI / Web / Gateway / Channels 薄入口 - `beaver/integrations`:外部系统与协议集成 ## 说明 后端已切到 Beaver 主线,不再保留旧实现、vendored 第三方 runtime 或迁移期旧命名兼容入口。所有 agent 运行都复用 `beaver.engine`,多 agent 协调通过 Beaver 自有 coordinator 和 `ExecutionGraph` 表达。 ## Memory Gateway Curated memory 始终启用:每轮仍会冻结并注入 `MEMORY.md` / `USER.md`,原有 `memory` 工具也保持可用。`hybrid` 模式会额外启用独立的 Memory Gateway 层, 每轮先调用 `/memories/search`,正常完成后调用一次 `/memories/add`,成功后再调用 一次 `/memories/flush`。两套存储不会互相同步、覆盖或去重。 共享 Gateway 配置放在: ```text app-instance/backend/memory/config.json ``` 当前默认内容: ```json { "memory": { "mode": "hybrid", "gateway": { "baseUrl": "http://172.19.207.37:8010", "appId": "default", "projectId": "default", "scope": ["current_chat", "resources", "all_user_memory"], "topK": 8, "timeoutSeconds": 10 } } } ``` 每个实例自己的 Gateway 用户凭证放在: ```text /root/.beaver/memory_gateway_users.json ``` 格式示例: ```json { "users": { "tom": { "userId": "tom", "userKey": "uk_xxx" } } } ``` - 前端 `POST /api/auth/register` 会用 Beaver 登录用户名调用 Gateway `POST /users`,并把返回的 `userId/userKey` 写入实例凭证文件。 - REST `/api/chat` 和 WebSocket `/ws/...` 只使用登录 token 解析出的 Beaver 用户名来选择 Gateway 凭证,请求体里的 `user_id` 不参与 Gateway 身份选择。 - 某个登录用户还没有 Gateway 凭证时,这一轮只走 curated memory,不会报 chat 级错误。 - `BEAVER_MEMORY_CONFIG_PATH` 可覆盖共享 memory 配置路径,`BEAVER_MEMORY_GATEWAY_USERS_PATH` 可覆盖实例凭证路径。 - `userKey` 是密钥,不应写入日志、状态响应或提交到版本库。 - 修改共享 memory 配置后需要重启 runtime,因为 Gateway 相关对象在 `EngineLoader` 启动时装配。