用 Bindu 打造 x402 付费墙 Agent:以 Premium Advisor(0.01 USDC/次)为例的完整实战
【免费下载链接】BinduBindu: The identity, communication, and payments layer for AI agents.项目地址https://gitcode.com/gh_mirrors/bin/Bindu点击查看免费下载本文以仓库中最小的 x402 付费 Agent 示例 examples/premium-advisor 为骨架完整讲解如何在 Bindu 上把一个普通的 Agno OpenRouter Agent 改造成「先付费、后回答」的可变现 Agent调用方不带支付头访问时收到 402 报价签名 USDC 转账并通过X-PAYMENT头重发后Agent 才开始真正干活。读完本文你将掌握execution_cost配置、402 报价解读、X-PAYMENT头签名流程、底层 x402 中间件的工作机制以及上线前必须注意的安全与生产要点。一、这个示例解决什么问题Premium Advisor 是 Bindu 提供的一个最小可运行示例验证了 x402 支付墙的完整闭环每个问题收费 0.01 USDCBase Sepolia 测试网只有付款到账后才返回市场洞察回答。技术栈是 Agno 框架 OpenRouter 模型全部逻辑放在一个文件里。示例演示的核心链路如下调用方curl 脚本、另一个 Agent 或浏览器向 Agent 发请求未携带支付凭证AgentBindu作为守门人返回 HTTP 402附上价格报价网络、资产、金额、收款地址调用方用钱包签署一次性授权EIP-3009把签名后的 payload 放进X-PAYMENT头重发Bindu 中间件向 facilitator验证/结算服务确认支付有效然后才执行 Agent 的 handler。这与 Bindu 项目「AI Agent 的身份、通信与支付层」的定位直接对应——支付层即 x402 扩展实现在 bindu/server/middleware/x402/。二、前置准备与安装按示例 README 的要求先准备两个东西export OPENROUTER_API_KEYget one at https://openrouter.ai/keys uv sync --extra agentsOPENROUTER_API_KEY是 OpenRouter 的 API 密钥用于调用openai/gpt-oss-120b模型uv sync --extra agents安装包含 Agno 等 Agent 框架依赖的 extras。关键提醒来自 README 原话要让 Agent 真正收钱你需要一个持有Base Sepolia USDC的钱包。示例中premium_advisor.py里配置的pay_to_address是一个演示用的假地址dummy在接入真实资金之前必须修改——否则真金白银会打到无效地址上。三、最小付费 Agent 的源码拆解premium_advisor.py整个示例只有一个文件 examples/premium-advisor/premium_advisor.py可以分成三块理解。3.1 Agent 本体Agno OpenRouterfrom agno.agent import Agent from agno.models.openrouter import OpenRouter agent Agent( instructionsYou are the Oracle of Value, a premium market insight advisor. Provide high-value, actionable market insights and investment recommendations. ..., modelOpenRouter( idopenai/gpt-oss-120b, api_keyos.getenv(OPENROUTER_API_KEY) ), )agent是一个标准 Agno Agent系统提示词强调输出「高价值、可执行」的市场洞察与投资建议。这里的关键点付费墙与模型能力完全解耦——支付逻辑由 Bindu 的 x402 扩展负责Agent 本身不需要感知支付细节。3.2 handler被支付墙保护的入口def handler(messages: list[dict[str, str]]): if messages: latest_message messages[-1].get(content, ) if isinstance(messages[-1], dict) else str(messages[-1]) result agent.run(inputlatest_message) if hasattr(result, content): return result.content elif hasattr(result, response): return result.response else: return str(result) return Welcome to Oracle of Value! ...handler 签名是(messages: list[dict[str, str]]) - Any这是 Bindubindufy()对 handler 的约定。从 bindu/penguin/bindufy.py 的 docstring 可见handler 会被validate_agent_function()校验后包装进 Agent manifest。只有通过支付校验的请求才会走到这里。3.3 config支付墙的开关就在execution_costconfig { author: premium.advisorexample.com, name: Oracle_of_Value, description: I provide high-value market insights and investment recommendations. Payment required upfront., deployment: { url: http://localhost:3773, expose: True, cors_origins: [http://localhost:5173] }, execution_cost: { amount: 0.01, # 单次交互价格 token: USDC, # 计价币种 network: base-sepolia, # 网络Base 测试网 pay_to_address: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e, # 演示用假地址 }, skills: [skills/premium-market-insight-skill], storage: {type: memory}, scheduler: {type: memory}, debug_mode: True, } # Bindu-fy the agent - converts it to a discoverable, interoperable Bindu agent bindufy(config, handler)最后一行bindufy(config, handler)是全部魔法的入口它会校验配置、生成确定性 agent_id、初始化 DID 扩展、加载 skills、创建 Agent manifest并启动 uvicorn HTTP 服务器默认监听 bindu/utils/server_runner.py 解析出的 host:port。四、execution_cost是如何变成支付墙的源码视角示例 README 只给了配置但想知道它为什么生效需要看 bindu/penguin/bindufy.py 的处理链_normalize_execution_costs()把execution_cost归一化为列表单 dict 或 list 均可逐个校验amount必填token与network有默认值USDC/base-sepolia见文件顶部的DEFAULT_TOKEN、DEFAULT_NETWORK_setup_x402_extension()用第一个计费项构造X402AgentExtension同时把完整列表作为payment_options传入X402AgentExtensionbindu/extensions/x402/x402_agent_extension.py封装 amount/token/network/pay_to_address并校验开启支付时pay_to_address不能为空否则抛ValueError。这就是为什么示例里即使放一个假地址也必须有值只有当execution_cost被配置时x402 扩展才会挂到 Agent 的 capabilities 上add_extension_to_capabilitiesagent card 中随之出现 x402 extension URI。值得注意amount在 wire 上会换算成原子单位atomic units。README 中配置的是0.01而 402 报价里出现的是10000——因为 USDC 是 6 位小数0.01 × 10^6 10000。文档 docs/PAYMENT.md 特别强调amount 用字符串而不是浮点数避免精度问题。五、启动并体验「未付费 → 402 报价」运行方式README 原文uv run examples/premium-advisor/premium_advisor.py # http://localhost:3773启动后用 README 中的 curl 发一条不带支付头的 JSON-RPC 请求curl -i http://localhost:3773/ \ -H Content-Type: application/json \ -d {jsonrpc:2.0,method:message/send,id:00000000-0000-0000-0000-000000000004,params:{message:{role:user,parts:[{kind:text,text:Is now a good time to buy ETH?}],kind:message,messageId:00000000-0000-0000-0000-000000000001,contextId:00000000-0000-0000-0000-000000000002,taskId:00000000-0000-0000-0000-000000000003},configuration:{acceptedOutputModes:[application/json]}}}你会收到HTTP/1.1 402 Payment Required {x402Version:2,error:X-PAYMENT header required, accepts:[{amount:10000,asset:0x036CbD53842c5426634e7929541eC2318f3dCF7e, ...}]}示例 README 点明了一个常被误解的事实这个 402 就是工作状态working state——说明支付墙在正常履职。响应里的accepts数组就是报价单amount: 100000.01 USDC 的原子单位、asset是 Base Sepolia 上 USDC 合约地址、payTo是收款地址、maxTimeoutSeconds是授权有效窗口。从 bindu/server/middleware/x402/x402_middleware.py 看这个 402 由X402Middleware的_create_402_response()构造基于 x402 SDK 的PaymentRequired类型并额外附加 Bindu 的 Agent 发现元数据name、description、agentCard: /.well-known/agent.json以及配置了 DID 时的did字段——方便客户端从 402 响应里直接发现 Agent card。中间件的完整判定管线源码 docstring 与实现对应解析 JSON-RPC body解析失败直接 402此前版本的 bug 是解析异常会让请求「fail-open」绕过支付检查现在已收紧为只捕获JSONDecodeError/UnicodeDecodeError方法白名单检查只有app_settings.x402.protected_methods里的方法如message/send才要求支付检查X-PAYMENT头是否存在base64 解码并解析 payloadSDK 的parse_payment_payload同时支持 v1/v2 形态但 verify 侧只接受 v2匹配到 Agent 发布的某个PaymentRequirements先占坑防重放以(network, asset, nonce)为键在 nonce store 中 claimTTL 为max_timeout_seconds 60s缓冲交给x402ResourceServer.verify_payment走 facilitator 做 EIP-3009 签名恢复与链上余额校验is_valid为 False 时拒绝而非放行fail closed。六、付款后如何调用X-PAYMENT 头与浏览器支付流README 给出的解法是签署一笔 USDC 转账用X-PAYMENT: signed-payload重发请求。签名格式遵循 x402 规范EIP-3009 一次性授权每个请求需要新的签名nonce 不可复用。支付成功且校验通过后中间件会把payment_payload、payment_requirements、payer等信息挂到request.state上交给后续 worker。从 bindu/server/workers/manifest_worker.py 的调用链_settle_payment→_handle_settlement_failure可以确认Bindu 在运行你的 Agent 之前先结算settle-first结算失败的任务直接置为 failed不产生 LLM 开销也不会留下孤儿支付。除了纯 API 方式Bindu 还提供浏览器支付流实现在 bindu/server/endpoints/payment_sessions.pyPOST /api/start-payment-session创建支付会话返回browser_urlGET /payment-capture?session_id...渲染 x402 paywall 页面钱包确认后捕获支付 token捕获但不消费GET /api/payment-status/{session_id}轮询状态完成后返回可直接作为X-PAYMENT头使用的payment_tokenbase64 编码的 JSON。说明上图为 Bindu x402 paywall 的浏览器流程截图支付墙页与支付成功页与示例中 API 级 402 流程是同一条支付通道的两种交互形态。七、Skill 声明让付费能力可被发现示例还配套了一个 skill 清单 examples/premium-advisor/skills/premium-market-insight-skill/skill.yaml。它声明了id/name/version/author等元数据description明确写出「Payment Required: 0.01 USDC per interaction」tagsfinance、market-analysis、investment 等与input_modes/output_modesexamples如 Should I invest in new DeFi projects?capabilities_detail其中payment_gated: supported: true直接宣告这是一个付费技能。加载机制在 bindu/utils/skills/loader.pyload_skills()支持目录路径含skill.yaml或SKILL.md与内联 dict 两种形式。示例 config 里的skills: [skills/premium-market-insight-skill]就是相对路径运行时以调用方目录为基准解析caller_dir / skill_pathname与description是必填字段其余可选字段按需透传。这些 skill 会进入 Agent manifest最终在 agent card/.well-known/agent.json见 bindu/server/endpoints/agent_card.py中对外发布让其他 Agent 与工具可以发现「这个 Agent 提供什么、要收多少钱」。八、安全与生产要点示例 README 虽然简短但埋了两个值得展开的安全信号1.pay_to_address必须是真实收款地址。示例里是 dummy 地址README 明确警告「edit it before pointing real money at it」。生产环境应使用自己控制私钥的钱包地址并单独为 Agent 建钱包避免与个人资产混放。2. 测试网与主网切换。默认network: base-sepolia是 Base 测试网假钱、假 gas适合学习上线时改成base主网。docs/PAYMENT.md 还提到如需接受其他 EVM 链SKALE、Polygon、Ethereum 等需要在 bindu/settings.py 的extra_networks里注册该链的 CAIP-2 标识与 USDC 合约地址并指向认识该链的 facilitator默认https://x402.org/facilitator由 Coinbase 运营支持 Base、Solana、Algorand、Aptos、StellarSKALE 等需要其他 facilitator。3. 支付与鉴权是叠加关系。README 最后一行特别说明付费墙x402与认证门Hydra OAuth DID 签名消息体两者都要通过才能执行 handler。认证流程详见 docs/AUTH.md。也就是说付费只解决「给钱」认证解决「你是谁」二者互不替代。4. 重放与孤儿支付。每个支付授权都带 nonce重复使用会被中间件以Payment nonce already used (replay)拒绝且拒绝发生在 facilitator 往返之前省一次外部调用。而 settle-first 意味着如果 settle 成功后 handler 抛异常付款方已被扣款且 x402 没有原生退款原语任务会以payment-orphaned状态结束需要运营方手动发起 USDC 退款——详见 docs/PAYMENT.md 与 bugs/known-issues.md。九、故障排查速查结合 docs/PAYMENT.md 的排障章节常见现象与原因如下现象原因与处理永远 402到不了 handlerX-PAYMENT头缺失402 body 会指明缺什么error: Payment verification failedfacilitator 拒绝签名错误、链不匹配或 facilitator 不认识你请求的链查 Agent 服务端日志error: Payment nonce already used (replay)同一授权用了两次需为每个请求重新签名error: No matching payment requirements foundpayload 与execution_cost不匹配通常是 network/asset 不一致任务 failedPayment settlement failed; task not executed.verify 通过但/settle失败Agent 未执行无 LLM 开销task.metadata里有 facilitator 的失败原因任务 failedx402.payment.status payment-orphanedsettle 成功已扣款但 handler 抛异常需要手动退款十、继续深入完整支付机制文档docs/PAYMENT.md含 mock facilitator 本地演练、四种失败模式的端到端演示、生产上线清单中间件实现bindu/server/middleware/x402/x402_middleware.py 与防重放 bindu/server/middleware/x402/nonce_store.py结算与孤儿支付在 bindu/server/workers/manifest_worker.py 中搜索_settle_payment与_handle_settlement_failure支付需求构建在 bindu/server/applications.py 中搜索_create_payment_requirements中间件测试可视为最准确的规格说明tests/unit/server/middleware/x402/端到端失败模式驱动tests/e2e/x402_scenarios/uv run python tests/e2e/x402_scenarios/run_e2e.py。Premium Advisor 的全部价值在于它把「Agent 收费」压缩到了最少的代码量——一个 config 块、一个 handler、一行bindufy()。理解了这几十行你就理解了 Bindu 支付层的全部核心概念可以在此基础上扩展出多网络报价、浏览器支付流、生产收款等完整方案。赞分享【免费下载链接】BinduBindu: The identity, communication, and payments layer for AI agents.项目地址https://gitcode.com/gh_mirrors/bin/Bindu点击查看免费下载相关推荐x402 Fastify 支付中间件实战用 HTTP 402 协议为 Fastify API 接入按次付费墙x402 Fastify 支付中间件实战用 HTTP 402 协议为 Fastify API 接入按次付费墙 导读 本文基于 x402 仓库中的 exampl后端金融科技区块链API设计使用 x402/next 为 Next.js 应用接入 HTTP 402 付费墙paymentProxy 与 withX402 完整实战使用 x402/next 为 Next.js 应用接入 HTTP 402 付费墙paymentProxy 与 withX402 完整实战 导读 本文基于 x后端金融科技区块链API设计x402 Python MCP 集成实战用 x402.mcp 为 MCP 工具调用实现付费墙与自动支付x402 Python MCP 集成实战用 x402.mcp 为 MCP 工具调用实现付费墙与自动支付 本文基于 x402 Python SDK 中的 x40后端金融科技区块链API设计上一篇如何快速安全地导出浏览器CookieGet cookies.txt LOCALLY终极指南下一篇如何在Windows上快速部署小爱音箱语音控制系统实现智能音乐播放的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

pip 的 HTTPS 证书验证完全指南:自定义 CA 证书库与系统信任存储(truststore)机制解析

pip 的 HTTPS 证书验证完全指南:自定义 CA 证书库与系统信任存储(truststore)机制解析

包管理器开发工具 【免费下载链接】pip The Python package installer 项目地址: https://gitcode.com/gh_mirrors/pi/pip 点击查看 免费下载 pip 在通过 HTTPS 下载包时默认执行 SSL 证书验证,以防范针对软件包下载的中间人攻击。本文以 docs/html/top…

2026/9/24 15:49:03 阅读更多 →
5V升压充电双节锂电池:IP2325升压充电IC原理与设计

5V升压充电双节锂电池:IP2325升压充电IC原理与设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 15:49:03 阅读更多 →
RunAnywhere Flutter SDK 实战指南:在 iOS / Android 上端侧运行 LLM、语音与多模态 AI

RunAnywhere Flutter SDK 实战指南:在 iOS / Android 上端侧运行 LLM、语音与多模态 AI

RunAnywhere Flutter SDK 实战指南:在 iOS / Android 上端侧运行 LLM、语音与多模态 AI 【免费下载链接】runanywhere-sdks Production ready toolkit to run AI locally 项目地址: https://gitcode.com/gh_mirrors/ru/runanywhere-sdks RunAnywhere Flutter…

2026/9/24 15:49:03 阅读更多 →

最新新闻

Java酒店管理系统源码拆解:数据库设计、JDBC分层与答辩改造指南

Java酒店管理系统源码拆解:数据库设计、JDBC分层与答辩改造指南

简介:面向JAVA学习者与毕业设计、课程设计人群的酒店管理系统完整项目资源,涵盖系统设计、编码实现与项目答辩全流程。压缩包共12个文件,大小60.73MB,内含JAVA源码压缩包、数据库SQL脚本、毕业设计论文与中期检查表、答辩PPT、3段…

2026/9/24 18:08:56 阅读更多 →
Python+U2Net证件照抠图:从推理到批量处理与边缘优化

Python+U2Net证件照抠图:从推理到批量处理与边缘优化

简介:这份资源面向具备一定Python与深度学习基础的开发者,聚焦证件照自动生成这一具体场景,提供基于U2Net图像分割模型的完整实现方案。U2Net通过下采样与上采样路径的跳跃连接保留高分辨率细节,可精准分割人像区域并完成背景替换…

2026/9/24 18:08:56 阅读更多 →
面试官严肃提问·水货程序员谢飞机的Java大厂面试全记录(Spring、微服务、云原生)

面试官严肃提问·水货程序员谢飞机的Java大厂面试全记录(Spring、微服务、云原生)

面试官严肃提问水货程序员谢飞机的 Java 大厂面试全记录(Spring、微服务、云原生)场景:互联网大厂的 Java 求职者面试,面试官(严肃)与“水货程序员”谢飞机(搞笑)展开对话。整个面试…

2026/9/24 18:08:56 阅读更多 →
YOLOv8行人检测实战:环境搭建、数据转换、训练调参与ONNX部署

YOLOv8行人检测实战:环境搭建、数据转换、训练调参与ONNX部署

简介:基于YOLOv8的行人检测项目,专为计算机科学、人工智能、通信工程、自动化等专业的课程设计、毕业设计及项目初期演示而准备,也适合有一定基础的学习者进阶。项目包含训练模式与视频检测两个Python脚本,配套yolov8n.pt、yolo11…

2026/9/24 18:08:56 阅读更多 →
YOLOv8行人检测项目实战:从解压到部署的完整指南

YOLOv8行人检测项目实战:从解压到部署的完整指南

简介:一份基于YOLOv8的行人检测项目资源,面向计算机相关专业学生与开发者,可用于课程设计、毕业设计或目标检测算法入门。项目代码已测试通过,不仅包含模型训练与检测推理脚本,还带有核心指标曲线图、混淆矩阵、F1分数…

2026/9/24 18:08:56 阅读更多 →
管道缺陷检测设备怎么选:堵塞、裂纹、接口错口、树根侵入的技术匹配逻辑

管道缺陷检测设备怎么选:堵塞、裂纹、接口错口、树根侵入的技术匹配逻辑

管道视频检测设备选型可以看作一个多参数决策问题。 如果只建立: Pipe Diameter -> Camera Model 这样的映射,通常不够。 更完整的模型应该是: Defect Type Pipe Diameter Inspection Distance Bends Water Level Recording Requirem…

2026/9/24 18:07:56 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →