当前实现保留分层,并在已验证运行时上增加 SDK 门面,而不是把 Agent 塞进 Kernel。
| 层 | 代码 | 职责 |
|---|---|---|
| 插件运行时 | src/caploom/{api,plugin,fiber,context,kernel,errors}.py |
实例、依赖、状态、资源所有权和回滚 |
| 业务能力 | src/caploom/capabilities/ |
契约、候选提供方、显式绑定、校验和调用 |
| 接入 SDK | src/caploom/sdk/ |
Provider Builder、Client、单次 Runtime 生命周期及测试工具 |
| 安装包接入 | src/caploom/plugins.py |
不导入代码的元数据检查,显式信任后返回普通 Plugin |
| 协议适配 | src/caploom/adapters/ |
固定 HTTP Provider、官方 MCP 出口,复用原有调用管线 |
| 演示应用 | src/caploom/demo/ |
旧业务适配、配置、人工入口、可选 Agent 和 Inspector |
Plugin 是定义,Fiber 是一次运行。Service 硬依赖由 Kernel 协调:缺失时等待, 提供方下线时消费者先停,恢复时创建新实例。Effect 逆序回收资源,异常保留诊断。
消费者调用 Capability ID → 统一 Invoker → 输入校验与确认 → 固定一次调用的 Provider → 超时内执行 → 输出校验 → 记录元数据。能力与 Plugin 不等价,一个 Plugin 可提供多项能力, 同一能力也可有多个候选提供方,但必须显式选择绑定。
DemoHost 只使用公开 Kernel 接口,预注册已知插件,按内置 Profile 启停并设置绑定。 变更被串行化,正常调用可并发。提供方移除关闭整个适配器的新调用入口,并排空已接收调用。
Web 和 CLI 是带生命周期的消费者服务。HTTP 路由是固定传输壳,消费者停用后拒绝调用, Inspector 仍能解释和恢复状态。Agent 是第三个可选消费者,不是业务提供方。
SDK Runtime 为简单嵌入提供较小的装配入口。DemoHost 继续示范包含 Profile、Inspector 和诊断插件的高级组合。两者使用同一 Kernel 和 Capability 管线,没有第二套业务运行时。 Demo Provider 和消费者共享 SDK 的注册、资源和调用管理实现。
Kernel 提供不可变 Plugin/Fiber/Effect 快照;Capability 层提供复制的候选、绑定和可用性元数据。 全局调用记录有 200 条上限且不保存参数、输出或凭据。Agent 单次响应另显示实际工具结果, 供演示核对,不等于持久化审计。模型摘要不能代替业务返回凭据。
Schema:Pydantic;HTTP:FastAPI/Uvicorn;CLI:Typer/HTTPX;Agent:Pydantic AI; 浏览器验证与录像:Playwright。核心不依赖以上应用库。Agent SDK 只在启用 Agent 时导入。 独立分发包使用 Python Entry Points 和 packaging;MCP 使用官方 SDK 而非自己实现 JSON-RPC。新适配器仍依赖 SDK/Capability,不允许 Kernel 反向依赖协议或 Agent。
独立库存包同时提供本地实现和不依赖 Caploom 的 HTTP 服务。薄 HTTP 适配器接入同一 业务契约,标准 MCP 客户端只是另一个消费者。Provider 替换只改变显式 Binding。 远端写入后响应丢失必须报告待核对,不把取消或超时视为业务回滚;幂等和状态查询由 原业务负责。共享语义测试可以发现同一 JSON 形状但数量、单位或错误含义不一致的实现。
没有在线插件安装、任意不可信代码执行、MCP 输入适配、TypeScript 生成、分布式工作流、 真实支付、多租户、生产授权或沙箱。原有 Profile 与 UI 继续使用本地虚构演示数据。 互通验收使用真实进程/套接字,但业务仍是虚构样例;不是外部用户接入成本的实测。