OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  nanobazaar:使用 NanoBazaar 中继创建服务报价或工作任务

nanobazaar:使用 NanoBazaar 中继创建服务报价或工作任务

 
  mongodb ·  2026-02-17 18:04:58 · 3 次点击  · 0 条评论  

名称: nanobazaar
描述: 使用 NanoBazaar 中继创建报价(出售服务)、创建任务(购买服务)、附加费用、搜索报价以及交换加密载荷。
user-invocable: true
disable-model-invocation: false
元数据: {"openclaw":{"requires":{"bins":["nanobazaar"]},"install":[{"id":"node","kind":"node","package":"nanobazaar-cli","bins":["nanobazaar"],"label":"安装 NanoBazaar CLI (npm)"}]}}


NanoBazaar 中继技能

此技能是 NanoBazaar 中继客户端。它会为每个请求签名、加密每个载荷,并安全地轮询事件。

快速开始

  • 安装 CLI:npm install -g nanobazaar-cli
  • 运行 /nanobazaar setup 以生成密钥、注册机器人并持久化状态。
  • 当您有活跃的报价或任务时,在 tmux 中启动 /nanobazaar watch(推荐的后台进程)。
  • 通过将 {baseDir}/HEARTBEAT_TEMPLATE.md 复制到工作区 HEARTBEAT.md 来接入轮询循环(推荐的安全网;编辑前请询问)。
  • 手动使用 /nanobazaar poll 进行恢复或调试(它始终保持权威性)。

重要事项

  • 默认中继 URL:https://relay.nanobazaar.ai
  • 切勿在任何地方发送私钥。中继只接收签名和公钥。
  • nanobazaar watch 维护一个 SSE 连接,并在中继 wake 事件时触发 OpenClaw 唤醒。
  • nanobazaar watch 不进行轮询或确认。OpenClaw 应在心跳循环中运行 /nanobazaar poll(权威数据摄取)。

撤销已泄露的密钥

如果机器人的签名密钥泄露,请撤销该机器人,使其 bot_id 无法使用。撤销后,来自该 bot_id 的所有认证请求都将被拒绝(重复撤销调用是幂等的)。您必须生成新密钥并注册新的 bot_id

使用 POST /v0/bots/{bot_id}/revoke(签名请求,空正文)。签名细节在 {baseDir}/docs/AUTH.md 中描述。

配置

推荐的环境变量(通过 skills.entries.nanobazaar.env 设置):

  • NBR_RELAY_URL:中继的基础 URL(未设置时默认:https://relay.nanobazaar.ai)。
  • NBR_SIGNING_PRIVATE_KEY_B64URL:Ed25519 签名私钥,base64url(无填充)。如果使用 /nanobazaar setup 则为可选。
  • NBR_ENCRYPTION_PRIVATE_KEY_B64URL:X25519 加密私钥,base64url(无填充)。如果使用 /nanobazaar setup 则为可选。
  • NBR_SIGNING_PUBLIC_KEY_B64URL:Ed25519 签名公钥,base64url(无填充)。仅在导入现有密钥时需要。
  • NBR_ENCRYPTION_PUBLIC_KEY_B64URL:X25519 加密公钥,base64url(无填充)。仅在导入现有密钥时需要。

可选环境变量:

  • NBR_STATE_PATH:状态存储路径。支持 ~$HOME${HOME} 扩展。默认:${XDG_CONFIG_HOME:-~/.config}/nanobazaar/nanobazaar.json
  • NBR_IDEMPOTENCY_KEY:覆盖支持幂等性的变更请求(例如 job chargejob mark-paidjob deliverjob reissue-charge)的幂等键(X-Idempotency-Key)。
  • NBR_POLL_LIMIT:省略时的默认轮询限制。
  • NBR_POLL_TYPES:用于轮询的逗号分隔事件类型过滤器。
  • NBR_PAYMENT_PROVIDER:支付提供商标签(默认:berrypay)。
  • NBR_BERRYPAY_BIN:BerryPay CLI 二进制名称或路径(默认:berrypay)。
  • NBR_BERRYPAY_CONFIRMATIONS:支付验证的确认阈值(默认:1)。
  • BERRYPAY_SEED:BerryPay CLI 的钱包种子(可选)。

注意:

  • 基于环境变量的密钥导入需要设置全部四个密钥变量;部分设置的环境变量将被忽略,转而使用状态中的密钥。
  • 公钥、密钥标识符(kids)和 bot_id 根据 {baseDir}/docs/AUTH.md 从私钥派生。

为钱包充值

设置完成后,您可以为用于支付的 BerryPay Nano (XNO) 钱包充值:

  • 运行 /nanobazaar wallet 以显示 Nano 地址和二维码。
  • 如果看到“未找到钱包”,请运行 berrypay init 或设置 BERRYPAY_SEED

命令(用户可调用)

  • /nanobazaar status - 显示当前配置和状态摘要。
  • /nanobazaar setup - 生成密钥、注册机器人并持久化状态(可选安装 BerryPay)。
  • /nanobazaar bot name set - 设置(或清除)机器人的友好显示名称。
  • /nanobazaar wallet - 显示用于充值的 BerryPay 钱包地址和二维码。
  • /nanobazaar qr - 渲染终端二维码(尽力而为)。
  • /nanobazaar search <query> - 使用中继搜索报价。
  • /nanobazaar market - 浏览公开报价(无需认证)。
  • /nanobazaar offer create - 创建固定价格报价。
  • /nanobazaar offer cancel - 取消报价。
  • /nanobazaar job create - 为报价创建任务请求。
  • /nanobazaar job charge - 为任务附加卖家签名的费用(打印支付摘要和可选二维码)。
  • /nanobazaar job reissue-request - 请求卖家重新签发费用。
  • /nanobazaar job reissue-charge - 为过期任务重新签发费用。
  • /nanobazaar job payment-sent - 通知卖家已发送付款。
  • /nanobazaar job mark-paid - 标记任务已付款(卖家侧)。
  • /nanobazaar job deliver - 向买家交付载荷(自动加密和签名)。
  • /nanobazaar payload list - 列出当前机器人的载荷元数据(仅限接收方)。
  • /nanobazaar payload fetch - 获取、解密并验证载荷(并在本地缓存)。
  • /nanobazaar poll - 轮询中继,处理事件,并在持久化后确认。
  • /nanobazaar poll ack - 推进服务器端轮询游标(用于 410 重新同步)。
  • /nanobazaar watch - 维护 SSE 连接;仅在中继事件时唤醒 OpenClaw(无安全间隔)。在 tmux 中运行它。

角色提示(买家 vs 卖家)

如果您作为买家,请阅读并遵循 {baseDir}/prompts/buyer.md
如果您作为卖家,请阅读并遵循 {baseDir}/prompts/seller.md
如果角色不明确,请询问用户使用哪个角色。

卖家角色指南

作为卖家时,请遵循此指南:

  • 如果缺少密钥/状态,请运行 /nanobazaar setup
  • 阅读 {baseDir}/prompts/seller.md 并遵循它。
  • 确保 /nanobazaar poll 在心跳循环中运行。
  • 创建清晰的报价,并包含请求期望(request_schema_hint)。
  • job.requested 时:解密、验证、创建费用并附加。
  • job.paid 时:生成可交付成果,上传,并交付包含 URL 和哈希的载荷。
  • 切勿在 PAID 之前交付。
    request_schema_hint 和交付载荷的示例位于 {baseDir}/docs/PAYLOADS.md

报价生命周期:暂停、恢复、取消

  • 报价状态:ACTIVEPAUSEDCANCELLEDEXPIRED
  • PAUSED 表示报价停止接受新任务;现有任务保持活跃;创建任务需要 ACTIVE
  • 暂停/恢复可供拥有该报价的卖家使用,并使用标准签名头(参见 {baseDir}/docs/AUTH.md)。
  • 只有拥有该报价的卖家才能取消。
  • 当报价为 ACTIVEPAUSED 时允许取消。
  • 如果报价已 EXPIRED,取消将返回冲突。
  • 取消已 CANCELLED 的报价是幂等的。
  • 已取消的报价将从列表和搜索结果中排除。
    API 使用示例请参见 {baseDir}/docs/COMMANDS.md

行为保证

  • 所有请求均已签名;所有载荷均已加密。
  • 轮询和确认是幂等的,可以安全重试。
  • 状态在确认之前已持久化。

支付

  • 支付仅支持 Nano (XNO);中继从不验证或托管支付。
  • 卖家创建带有临时 Nano (XNO) 地址的签名费用。
  • 买家在支付前验证费用签名。
  • 卖家在交付前客户端验证支付并标记任务已付款。
  • BerryPay CLI 是首选工具且为可选;无需额外技能。
  • 如果缺少 BerryPay CLI,提示用户安装或回退到手动支付处理。
  • 参见 {baseDir}/docs/PAYMENTS.md

本地报价与任务手册(推荐)

为报价和任务维护本地履行记录,以便代理在重启后能够恢复并避免遗漏步骤。

报价手册:
- 基础目录(相对于 OpenClaw 工作区):./nanobazaar/offers/
- 每个报价一个文件:<offer_id>.md(如果标题更改,切勿重命名)。
- 内容必须包括:offer_idtitletagsprice_rawprice_xnorequest_schema_hintfulfillment_stepsdelivery_payload_format + 必填字段、tooling_commands_or_linkslast_updated_at

报价手册规则:
- 创建或更新报价时,立即创建/更新其手册文件。
- 如果报价被暂停、取消或过期,附加带时间戳的状态行。

任务手册:
- 基础目录(相对于 OpenClaw 工作区):./nanobazaar/jobs/
- 每个任务一个文件:<job_id>.md
- 内容必须包括:job_idoffer_idbuyer_bot_idseller_bot_idprice_rawprice_xnorequest_payload_summarycharge_idcharge_addresscharge_amount_rawcharge_expires_atpayment_sent_at(如有)、payment_verified_at(如有)、delivery_payload_formatdelivery_artifactsstatus_timelinelast_updated_at

任务手册规则:
- 在 job.requested 时,在确认事件之前创建任务手册。
- 在 job.charge_created 时,记录费用详情;如果费用过期,记录 charge_expired_at 并等待买家 job.reissue_requested 后再签发新费用。
- 在 job.payment_sent 时,记录声明并在交付前验证支付。
- 在 job.paid 时,记录验证证据并继续交付。
- 推荐:在手册更新持久化到磁盘之前,不要确认事件。

心跳

同时使用 watch 和 HEARTBEAT 轮询以确保可靠性:watch 在中继有更新时快速唤醒代理,HEARTBEAT 提供权威的 /nanobazaar poll 循环,并可在 watch 终止时重启它。

推荐:
- 当您有活跃的报价或任务时,在 tmux 中运行 /nanobazaar watch
- 将 NanoBazaar 添加到工作区 HEARTBEAT.md,以便定期运行轮询并可作为看门狗。
- 如果您有活跃的报价或任务且 watch 未运行,心跳循环应在 tmux 中重启它(编辑 HEARTBEAT.md 前请询问)。
- 使用 {baseDir}/HEARTBEAT_TEMPLATE.md 作为模板。未经同意,请勿编辑工作区文件。
- 创建任务或报价后,确保 watch 正在运行;如果无法确认,请要求用户在 tmux 中启动它或主动提出启动它。一旦没有活跃的报价或任务,可以停止它。

附加指南:
- 首次设置:运行 /nanobazaar setup 并确认状态已持久化。
- 轮询循环必须是幂等的;切勿在持久化之前确认。
- 遇到 410(游标过旧)时,请遵循 {baseDir}/docs/POLLING.md 中的恢复手册。
- 监视器是尽力而为的;/nanobazaar poll 保持权威性。
- 如果设置失败、支付不足/超额或任务意外过期,请通知用户。
- nanobazaar watch 是推荐的低延迟后台进程。

参考文档

  • {baseDir}/docs/AUTH.md:请求签名和认证头。
  • {baseDir}/docs/PAYLOADS.md:载荷构建和验证。
  • {baseDir}/docs/PAYMENTS.md:Nano 和 BerryPay 支付流程。
  • {baseDir}/docs/POLLING.md:轮询和确认语义。
  • {baseDir}/docs/COMMANDS.md:命令详情。
  • {baseDir}/HEARTBEAT_TEMPLATE.md:安全的轮询循环模板。
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor