AI代理授权数据服务

Suimo是一个允许AI代理通过授权获取和使用内容数据的平台,支持WAL代币计费和即时结算,数据通过Seal加密存储在Walrus上。

  • by chigozzdevv
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 chigozzdevv/suimo

使用说明

Suimo——人工智能代理的授权数据(由海象和Sui提供支持)

Suimo允许AI代理在征得同意、计量和即时结算的情况下,在Sui上以WAL代币获取和使用授权内容。内容blob公开存储在海象上,用Seal加密,并通过策略门控解密在链上解锁。

由海象和隋提供技术支持

  • 海象仓库:所有数据资源(文件、数据集)都以blob形式存储在海象上。
  • 印章加密:在上传之前,数据在客户端使用Mysten的印章进行加密。
  • 策略门控访问:解密密钥仅在链上支付验证后发布给授权方(平台)。
  • Sui付款:在Sui测试网上使用WAL代币进行实时结算。
  • MCP网关:AI代理发现、购买和使用这些去中心化资源的标准界面。

目录


1) Suimo做什么

  • 同意代理首先访问提供者资源(站点、数据集、文件)
  • WAL代币的基于使用量的定价(固定或每KB)
  • 结算:即时将WAL从消费者转移到平台,然后再从平台转移到提供商
  • 隐私:客户端加密(盖章)→ 公共blob存储(海象)→ 策略门控解密

2) 它是如何工作的

  1. 代理通过MCP(OAuth 2.1+PKCE)进行身份验证和发现资源。
  2. 对于文件/数据集上传,客户端使用Seal进行本地加密,并上传加密的信封;服务器将其存储在海象上。
  3. 对于提取,Suimo计算WAL成本,从消费者的托管钱包执行转账,向提供商付款,从海象提取密文,通过Seal(策略会话)授权解密,并返回明文块。
  4. 每次访问都会产生一个Ed25519签名的收据,其中包含指向Sui Explorer的付款链接。

3) 建筑

  • 客户端(React+Vite)
    • 消费者和提供商仪表板、钱包链接(Sui钱包标准)、资源管理
  • 服务器(Fastify+TypeScript+MongoDB)
    • 身份验证:电子邮件/密码和Sui钱包登录;OAuth 2.1 for MCP
    • MCP运行时间: suimo-mcp 用于发现和获取的工具
    • 结算方式:托管WAL钱包管理+链上支付
    • 存储:海象blob写/读/删除;策略门控访问的密封解密流程
    • 收据:Ed25519 JWT签名,隋探险家链接

4) 协议和标准

  • MCP(模型上下文协议):用于代理集成的标准化工具
  • OAuth 2.1+PKCE:授权代理对Suimo的受保护资源使用MCP工具
  • Sui+WAL:供应商以WAL代币支付;Sui Explorer的收据链接
  • 海象:用于加密有效载荷的公共内容寻址blob存储
  • Seal(Mysten):客户端加密和链上策略门控解密

5) 核心数据模型

资源字段包括:

  • 身份和定价: title, type (site|dataset|file), format, visibility, price_flat, price_per_kb, modes (raw|summary)
  • 存储和加密: walrus_blob_id, walrus_blob_object_id, walrus_quilt_id?, cipher_meta (大小,尺寸) size_bytes, seal_policy_id
  • 来源: domain (对于网站), verified, tags, sample_preview|summary

6) 安装程序

先决条件

  • Node.js 20+
  • MongoDB(本地或Atlas)

服务器环境(Server/.env)

最低要求:

  • PORT=3000
  • MONGODB_URI=mongodb://localhost:27017/suimo
  • KEY_ENCRYPTION_KEY=<long-random-secret> (加密内部机密)
  • CLIENT_APP_URL=http://localhost:5173

OAuth/收据(Ed25519 JWT):

  • ED25519_PRIVATE_KEY_PATH=/path/to/private-key.pem (PKCS#8种子用于签名)
  • OAUTH_ISSUER=https://your-domain.com (对于生产环境,设置为您的实际域;默认为 https://suimo.local)
  • OAUTH_RESOURCE=https://your-domain.com/mcp (对于生产环境,设置为您的实际域;默认为 <base>/mcp)

Sui+支付:

  • SUI_RPC_URL=https://fullnode.testnet.sui.io
  • SUI_PLATFORM_PRIVATE_KEY=<base64-ed25519-secret> (平台签名人)
  • SUI_PAYTO=<platform Sui address> (保管收款人/付款来源)
  • WAL_COIN_TYPE=0x8270feb7375eee355e64fdb69c50abb6b5f9393a722883c1cf45f8e26048810a::wal::WAL
  • WAL_DECIMALS=9

海象+海豹:

  • WALRUS_NETWORK=testnet|mainnet
  • SEAL_POLICY_PACKAGE=0x<policy_package_id>

会话Cookie(可选):

  • SESSION_COOKIE_NAME=suimo_session, SESSION_COOKIE_DOMAIN=, SESSION_COOKIE_SECURE=false, SESSION_COOKIE_MAX_AGE=604800

客户端环境(Client/.env)

  • VITE_API_BASE_URL=http://localhost:3000
  • VITE_SUI_RPC_URL=https://fullnode.testnet.sui.io
  • VITE_WALRUS_NETWORK=testnet|mainnet
  • VITE_SEAL_POLICY_PACKAGE=0x<policy_package_id>
  • VITE_SEAL_KEY_SERVERS=<csv of Seal key server object IDs>

在本地运行

服务器:

cd server
npm install
cp .env.example .env
npm run dev # http://localhost:3000

客户:

cd client
npm install
cp .env.example .env
npm run dev # http://localhost:5173

生产:

cd server && npm run build && npm start

7) MCP工具

基地: https://api.suimo.com/mcp (或您当地的基地)

发现资源

  • 输入: { query: string, mode?: 'raw'|'summary', filters?: { format?: string[], maxCost?: number } }
  • 输出: { results: Array<{ resourceId, title, type, format, priceEstimate, ... }>, recommended?: string }

食品成分

  • 输入: { resourceId: string, mode: 'raw'|'summary', constraints?: { maxCost?: number, maxBytes?: number } }
  • 行为:退货 { content, receipt } 哪里 content 是 { chunks: string[] } 和 receipt 链接到隋探索者

8) 收据和验证

  • Ed25519服务器端签名的JWT收据(用公钥验证)
  • 字段包括计费字节数、价格、总计、支出交易摘要和签名
  • UI链接到Sui Explorer进行支付交易

9) 域名验证

  • DNS TXT:添加 suimo-verify=<token>
  • 文件:主机 /.well-known/suimo.txt 将令牌作为文件内容

10) 故障排除

  • 解密被阻止:确认 VITE_SEAL_KEY_SERVERS, VITE_SEAL_POLICY_PACKAGE和隋RPC
  • 上传失败:验证服务器上的海象网络和平台签名者
  • 付款失败:确保 SUI_PLATFORM_PRIVATE_KEY 有效且资金充足; WAL_COIN_TYPE 适合您的网络