先封装业务能力,再选择消费者。Agent 可以后装,也可以卸载。
Caploom 是一个早期 Python 可组合能力运行时。当前 Phase 1 提供可运行的 企业客服演示:Web、CLI 和可选 Agent 使用同一份客户、订单、政策和支付契约; 更换支付提供方不需要修改消费者,卸载 Agent 不影响人工业务。
新增 caploom.sdk 接入层:Provider Builder、Runtime、允许列表 Client 与测试工具。
旧业务无需导入 Agent;SDK 复用既有的生命周期、契约和调用管线。
uv run --extra capabilities python examples/sdk_quickstart.py这个库存示例只有一个独立适配文件,不需要手工装配 Kernel、Registry 和 Invoker。 详见 SDK 接入手册。在 SDK 之上,现已增加可信已安装插件的导入前检查、 显式 HTTP Provider 和 MCP 工具出口;TypeScript 生成及更广泛的生态工作仍未完成。
uv sync --all-extras --frozen
uv run --all-extras python scripts/verify_interop_install.py这项验证在仓库外安装 Caploom 和独立库存插件,通过真实 HTTP 与标准 MCP stdio 客户端完成调用、批准范围、重复请求、提供方替换和超时后结果核对。另有不依赖 Caploom 的原生 MCP 对照,普通业务调用两边均可完成,不将它宣传成 Caploom 的独有能力。 详见 互通接入与对照说明。本轮仍使用虚构业务,不是实际企业落地。
Python 3.12+,使用 uv 管理环境。在仓库根目录执行:
uv sync --all-extras --frozen
uv run --all-extras caploom-demo serve --port 18765浏览器打开 http://127.0.0.1:18765。默认配置 support-human 不启用 Agent。
CLI 默认端口是 8765;本例显式选用 18765,避免与本机其他服务冲突。
完整演示步骤见 演示手册,旧业务接入方式见 集成说明,当前分层见 架构概览。
- 人工查客户、看订单、检查规则、确认模拟退款、查询结果。
- 同一运行进程中的 Web 和 CLI 共享业务状态、契约与调用记录。
- 运行时启用 Agent,它通过 Pydantic AI 工具适配调用相同能力。
- 卸载 Agent 后,Web、CLI 和业务提供方继续运行。
- 支付 v1 → 不可用 → v2,消费者不修改、不重建。
- 查看 Plugin/Fiber/Effect、候选提供方、显式绑定和调用记录。
- 主动演示依赖等待、加载失败、清理失败及其诊断结果。
默认 Agent 是明确标注的离线脚本模型(FunctionModel),不是实际 LLM 推理。
它运行真实 SDK 工具调用链,用于稳定展示框架。可选 live 模式使用显式配置的
兼容模型服务;没有配置时不会自动请求外部模型,失败时不会假装成功或切回脚本。
所有客户、订单、金额和支付均为虚构本地数据。重启进程重置数据。 这不是生产支付系统,也不是不可信插件沙箱或已完成的企业身份认证平台。
另开一个终端:
uv run --all-extras caploom-demo call customer.search@1 \
--input '{"query":"张三"}' --url http://127.0.0.1:18765
uv run --all-extras caploom-demo snapshot --url http://127.0.0.1:18765
uv run --all-extras caploom-demo payment v2 --url http://127.0.0.1:18765也可以单独验证无 Web、无 Agent 的确定性业务场景:
uv run --extra demo caploom-demo scenarioscenario 明确创建一个独立临时业务进程;网络命令不会每次偷偷重置业务数据。
Web / CLI / 可选 Agent
↓ 同一契约、同一 Invoker
Capability Schema / 显式 Binding / Provider
↓ 薄适配
已有业务 API(不导入 Agent SDK)
Plugin / Fiber / Context / Effect / Kernel
管理运行实例、依赖与资源生命周期
基础 Kernel 保持标准库实现、无第三方运行时依赖。可选 extras:
| Extra | 功能 |
|---|---|
capabilities |
Pydantic 契约适配、候选提供方、绑定与调用 |
demo |
客服业务适配、Typer CLI、FastAPI Web |
agent |
可卸载的 Pydantic AI 消费者及兼容模型适配 |
plugins |
标准 Entry Point 发现、导入前 Manifest 检查及显式可信加载 |
http |
固定端点的 HTTPX Provider,资源排空及远程写入不确定性 |
mcp |
官方 MCP SDK 工具出口,默认拒绝写操作,支持可信宿主批准 |
普通人工演示可以只安装 demo;未安装 agent 时启用 Agent 会明确报缺少可选依赖,
人工业务不受影响。all-extras 用于完整开发和演示验证。
uv run python examples/hello_kernel.py
uv run python examples/reactive_fibers.pyPlugin 是不可变定义,Fiber 是一次运行世代。服务依赖缺失会进入 PENDING;
提供方停用时消费者先排空再清理;恢复时使用新的运行实例。Service、Listener 和
Effect 都归属于精确 Fiber,快照不暴露实际服务或清理函数。
业务 Capability 不等于内部 Service。Demo 消费者保持运行,通过可用性检查和类型化 错误表达业务提供方暂时缺失;核心 Service 硬依赖仍遵守 Kernel 的 PENDING 契约。
uv sync --all-extras --frozen
uv lock --check
uv run --all-extras ruff format --check .
uv run --all-extras ruff check .
uv run --all-extras mypy src tests examples
uv run --all-extras pytest --cov=caploom --cov-report=term-missing
node --check src/caploom/demo/static/app.js
uv build完整联合验收可以自行启动数据全新的临时服务,不占用或重置现有 Demo:
uv run --all-extras playwright install chromium
uv run --all-extras python examples/verify_enterprise_demo.py它使用实际浏览器和 CLI 检查人工退款、Agent 装卸、支付切换、实例不变、幂等重放和
故障诊断,并保存截图、录像、版本及源码哈希到 artifacts/phase1-demo/。
使用 CAPLOOM_EVIDENCE_DIR 可指定其他证据目录。测试固定使用离线模式,不读取模型凭据。
对已经启动、数据全新的服务,也保留较轻量的浏览器冒烟检查:
uv run --all-extras python scripts/browser_demo.py \
--with-agent --base-url http://127.0.0.1:18765 --artifacts artifacts/demo脚本执行实际点击并保存截图、视频和 JSON 验证记录。artifacts/ 不进入 Git。
Runtime 仍是单进程,支持可信已安装插件及固定 HTTP 服务;MCP 是独立适配层。 写操作批准回调不是生产身份认证。默认客服 Demo 保持本地虚构数据与有限内存记录。 暂不提供任意插件下载执行、热更新、MCP 输入适配、A2A、持久化工作流、多租户、 生产授权、分布式高可用或通用旧系统自动兼容。公共 API 仍是早期版本。