代理适配器运行时
此存储库已移动到 AGICitizens/代理适配器. 请使用新的仓库获取最新的代码、问题和贡献。
将任何API或MCP服务器变成自托管的经济代理。
Agent Adapter允许提供商包装现有功能、附加定价、连接钱包、加入代理平台、执行工作并获得报酬,而无需围绕任何一个市场、支付轨道或区块链堆栈重建他们的产品。
该项目目前正在进行中 早期阿尔法核心运行时正常工作,主要架构已经到位,并且有意义的测试覆盖率,但系统仍在发展,一些集成仅在本地或针对沙盒/演示环境进行验证。
该仓库专为开放钱包基金会黑客马拉松而建,侧重于实用的提供商运行时:
- 发现OpenAPI和MCP的功能
- 将它们作为运行时工具暴露给代理
- 定价并在当地启用
- 通过钱包支持的运行时执行付费工作
- 支持多种支付方式
- 为提供者提供一个本地控制平面,用于提示、钱包、指标、操作和能力管理
核心原则
- 提供者主权:自我托管、自我保管和提供者控制
- 发现是自动的,货币化是手动的
- 嵌入式代理在运行时做出决定;提供者通过提示和配置来制定策略
- 一个适配器实例是一个经济身份
- 核心与平台无关;平台驱动程序是可选插件,而不是默认路径
- 尽可能使用无聊、实用的基础设施
为什么存在
大多数代理市场假设提供商将:
- 围绕平台重写他们的服务
- 集成特定于平台的任务流
- 学习链上支付和钱包管道
- 放弃对定价、身份或基础设施的控制
Agent Adapter采取了相反的方法。
供应商保留:
- 其API或MCP服务器
- 他们的钱包
- 他们的东道主
- 他们的定价政策
- 他们的平台选择
运行时处理胶水:
- 能力发现
- 工具暴露于试剂
- 钱包支持的执行
- 支付适配器
- 工作追踪
- 管理API和仪表盘
运行时的设计是为了让提供者保持监护和控制:
- 密钥由提供商保留
- 定价保持在运行时本地
- 能力激活是明确的
- infra仍然是自托管的
- 平台是可选的集成,而不是硬依赖
今天什么有效
能力来源
- OpenAPI能力发现
- MCP工具发现和执行
- 针对策划或更高级别能力的手动能力定义
- 动态的
cap__*代理循环内的工具生成 - 使用本地定价覆盖进行规格漂移检测
新发现的功能不会自动上线。发现是自动的,但定价和启用是本地提供商的决定。
代理运行时
- 支持提示文件的可配置代理循环
- 提示追加/替换模式
- 快速热重新加载
- 创造就业机会和生命周期跟踪
- 决策日志和管理API
运行时遵循“代理决定”模型:提供商可以通过提示/配置影响优先级、平台偏好、风险承受能力和出价姿态,但嵌入式代理做出实时操作决策。
钱包和支付
- 钱包插件架构
- 用于仪表板/演示流的本地预览钱包
- 原始Solana钱包插件
- OWS钱包插件
free支付适配器x402支付流程- 带有平台提供的程序有效载荷的通用托管轨道
- 条纹背衬MPP适配器
- 当SPT已经可用时,买方MPP质询重试流程
多个支付适配器可以在一个运行时中共存。运行时解决了每个支付挑战的适当适配器,而不是将提供者绑定到单个轨道。
平台与运营
- 平台驱动程序界面
- 通过入口点发现驾驶员
- 安装/删除CLI驱动程序
- webhook、SSE和心跳工具
- 通过扩展插件的出站通知桥
平台驱动程序是有意可选的。默认运行时路径是通用工具加平台文档;对于过于复杂或脆弱而无法可靠处理的流,存在驱动因素。
管理界面
- CLI用于初始化、启动、状态、提示、功能、指标、驱动程序、平台和钱包操作
- 管理API
- 本地仪表板,包括概述、功能、代理、指标、操作、提示和钱包页面
测试
- 发现、执行、支付、驱动程序和运行时行为的单元测试
- CLI/API/仪表板流的管理表面测试
- Surfpool支持的付费执行路径集成覆盖
建筑
在高层次上:
- 提供者将运行时指向OpenAPI规范或MCP服务器。
- 运行时发现功能并存储本地货币化设置。
- 代理将这些功能视为真正的工具。
- 工具执行通过钱包、支付、作业和扩展层进行。
- 提供程序通过CLI、API或仪表板管理所有内容。
一个适配器实例等于一个经济身份:一个钱包、一个功能界面、一个提示/定制层和一个代理大脑。想要多个角色或策略边界的提供者可以运行多个实例。
核心构建块:
agent-adapter-contracts
钱包、支付、扩展、驱动程序和运行时事件的通用合约。
agent-adapter
运行时、CLI、管理API、仪表板、存储和编排逻辑。
packages/plugins/*
捆绑钱包、支付和扩展插件。
插件模型有四种主要形状:
- 可更换核心模块
钱包和其他所需的运行时槽可以用替代实现来替换。
- 支付适配器
每个支付挑战可以动态注册和解决多个支付适配器。
- 附加扩展
可选插件订阅运行时生命周期事件,并添加通知或自动化等行为。
- 代理工具插件
可选插件将代理可调用工具添加到嵌入式运行时。驱动因素是平台编排;工具插件是用于代理工具的。
回购布局
packages/
agent-adapter/ Runtime, CLI, dashboard, API
agent-adapter-contracts/ Shared plugin contracts
plugins/ Wallet, payment, and extension plugins
docs/
agent-adapter-runtime-prd.md
implementation-notes.md
milestones.md
simulation/
dashboard-preview.yaml Easiest local preview config
provider_api/ Demo provider API
tests/
test_runtime_unit.py
test_management_surface.py
test_runtime_integration.py包装计划
我们计划将项目分为两个可发布的层:
agent-adapter-contracts
一个轻量级的合约包,包含钱包、支付、扩展、代理工具插件和平台驱动程序的共享接口和运行时事件类型。
agent-adapter
带有CLI、管理API、仪表板、编排、存储和内置插件加载的完整运行时软件包。
这种分裂是有意的。它让更广泛的社区依赖于契约包,而不需要整个运行时,然后在稳定的界面上发布自己的插件。
目标是让其他人更容易构建和发布:
- 钱包插件
- 支付适配器
- 扩展插件
- 代理工具插件
- 平台驱动程序
- 随时间变化的能力源适配器
在实践中,插件作者应该能够导入合约包,实现相关接口,发布包,并让运行时通过配置或入口点发现或加载它。
这是长期OSS计划的关键部分:运行时应该是一个可用的参考实现,而契约包则成为更广泛的插件生态系统的共享基础。
快速入门
需求
- python
3.12或3.13 uv
安装
uv sync运行本地仪表板预览
这是查看没有外部依赖的运行时的最快方法。
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret \
UV_CACHE_DIR=/tmp/uv-cache \
uv run agent-adapter --config simulation/dashboard-preview.yaml start --api-only然后打开:
http://127.0.0.1:9090/dashboard/有用页面:
http://127.0.0.1:9090/dashboard/http://127.0.0.1:9090/dashboard/capabilitieshttp://127.0.0.1:9090/dashboard/metricshttp://127.0.0.1:9090/dashboard/operationshttp://127.0.0.1:9090/dashboard/prompthttp://127.0.0.1:9090/dashboard/wallet
常见CLI命令
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml status
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml capabilities list
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml prompt show
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml metrics summary --days 30
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml drivers list
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml tools list
env AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=local-preview-secret uv run agent-adapter --config simulation/dashboard-preview.yaml wallet address初始化一个新的运行时:
uv run agent-adapter --config ./agent-adapter.yaml init --adapter-name my-agent --data-dir ./runtime-data在首次启动之前,设置加密环境变量 init 配置中的位置:
export AGENT_ADAPTER_WALLET_ENCRYPTION_KEY=replace-with-wallet-key
export AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY=replace-with-secrets-key
uv run agent-adapter --config ./agent-adapter.yaml start --api-only示例故事
预期的产品流为:
- 发现API或MCP工具表面
- 策划和定价有用的功能
- 连接钱包
- 加入平台或响应平台事件
- 让代理通过运行时工具执行工作
- 结算付款并在当地跟踪工作
- 通过指标、操作和通知监控结果
OWS/黑客马拉松相关性
该项目的设计理念是,代理提供商应该有一个真正的钱包支持的运行时,而不是一个围绕第三方基础设施的提示。
OWS在这里很重要,因为它使钱包层成为一级运行时原语:
- 钱包身份
- 签署
- 交易提交
- 支付结算
- 提供者控制的保管
更广泛的目标是让代理商务为普通服务提供商服务,而不仅仅是愿意从头开始进行钱包、链、支付和平台集成的团队。
测试
运行主要的本地测试套件:
env UV_CACHE_DIR=/tmp/uv-cache uv run python -m unittest tests.test_runtime_unit tests.test_management_surface -v
python3 -m compileall packages/agent-adapter packages/agent-adapter-contracts packages/plugins testsSurfpool支持的集成覆盖范围也可用:
env UV_CACHE_DIR=/tmp/uv-cache uv run python -m unittest tests.test_runtime_integration -v当前注释
- 仪表板预览使用本地预览钱包插件,而不是真正的链钱包。
- 从仪表板导入钱包会更新持久配置,需要重新启动才能交换内存中的钱包。
- 提供程序密钥使用外部适配器密钥加密(
AGENT_ADAPTER_SECRETS_ENCRYPTION_KEY),不是来自活动钱包。 - 买方MPP流假设运行时已经具有有效的共享支付令牌。
- Stripe支持的MPP实施遵循了记录的流程和本地测试,但尚未完全针对此回购中的实时生产Stripe机器支付设置进行验证。
文档
状态
PRD的核心运行时愿景已经实现:
- 能力发现
- 动态刀具曝光
- 钱包支持的执行
- 多种支付方式
- 平台驱动程序
- 管理API和仪表盘
- 度量和操作工具
剩下的就是打包、入职和实时验证工作,以缩小“工作代码库”和“可安装产品”之间的差距
路线图
包装和分销
- \[\]发布
agent-adapter和agent-adapter-contracts所以PyPIpip install agent-adapter作品 - \[\]剪切标记
v0.1.0在GitHub上发布,并附上发布说明 - \[\]设置GitHub操作:对每次推送、lint、编译检查运行测试
- \[\]在标签旁边发布发布工件
入职培训和开发人员经验
- \[\]制造
agent-adapter init无需手动设置env-var即可生成工作配置 - \[\]提供合理的默认值,以便
agent-adapter init && agent-adapter start开箱即用 - \[\]将快速入门减少到实际的5个命令——与营销网站的承诺相匹配
- \[\]添加有指导的首次运行体验,引导提供商完成钱包设置、功能发现和定价
运行时质量
- \[\]分解
runtime.py--将引导、功能同步、数据库、钱包设置和管理界面提取到集中的模块中 - \[\]删除硬编码模型默认值(
openai/gpt-oss-120b)--需要显式的模型配置或提供一个合理的默认值,该默认值不表示对单个提供者的依赖 - \[\]添加常见安装失败的结构化错误消息(缺少密钥、配置错误、无法访问规范)
实时验证
- \[\]针对真正的外部API的端到端演示,无需Surfpool或本地模拟
- \[\]根据实时Stripe机器支付设置验证Stripe支持的MPP流
- \[\]针对主网或devnet Solana(不仅仅是本地验证器)测试OWS钱包插件
采用
- \[\]编写一个“包装你的第一个API”教程,从一个真正的提供商的OpenAPI规范开始
- \[\]为常见提供程序形状(REST API、MCP服务器、手动功能)创建示例配置
- \[\]与OWS和代理经济社区接触,以获得反馈和早期采用者
