Skip to content

Repository files navigation

Caploom

先封装业务能力,再选择消费者。Agent 可以后装,也可以卸载。

Caploom 是一个早期 Python 可组合能力运行时。当前 Phase 1 提供可运行的 企业客服演示:Web、CLI 和可选 Agent 使用同一份客户、订单、政策和支付契约; 更换支付提供方不需要修改消费者,卸载 Agent 不影响人工业务。

用 SDK 接入旧业务

新增 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 模式使用显式配置的 兼容模型服务;没有配置时不会自动请求外部模型,失败时不会假装成功或切回脚本。

所有客户、订单、金额和支付均为虚构本地数据。重启进程重置数据。 这不是生产支付系统,也不是不可信插件沙箱或已完成的企业身份认证平台。

CLI 与 Web 共用运行进程

另开一个终端:

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 scenario

scenario 明确创建一个独立临时业务进程;网络命令不会每次偷偷重置业务数据。

分层与依赖

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 用于完整开发和演示验证。

Kernel 示例

uv run python examples/hello_kernel.py
uv run python examples/reactive_fibers.py

Plugin 是不可变定义,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 仍是早期版本。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages