关于 zscore
zscore 是用于在 zScore Identity Registry 注册和管理 AI Agent 的技能,面向需要发布 ERC-8004 身份信息的用户。它通过交互式必填信息和双重确认门槛,约束 JSON 文件创建与链上操作。
主要功能
- 01注册并铸造 Agent 身份 NFT
- 02读取链上 Agent 信息
- 03查询注册费用和开放状态
- 04设置自定义元数据
- 05清除 Agent 钱包
适用场景
- 01在 Base Mainnet 注册 Agent
- 02在 Base Sepolia 测试网注册 Agent
- 03查询 Agent 所有者与服务信息
- 04更新自有 Agent 的元数据或钱包
MCP 相关
可在注册服务中填写 MCP 服务端点及其工具、提示词和资源信息。该技能本身用于注册和管理身份记录。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ zerufinance/ zscore --skill zscore安装后在 Claude Code 中输入/zscore确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreREADME.mdpackage.jsonlib/abi.jsagent-wallet.jsconfig.jscreate-agent-uri.jserrors.jsget-agent.jsindex.jsmetadata.jsregister-agent.jsschema.jsscripts/zscore.ts详细介绍
zScore ERC-8004 身份注册表
在 zScore 身份注册表中注册和管理 AI Agent。默认使用 Base 主网(费用为 0.0025 ETH)。使用 --chain 84532 可切换到 Base Sepolia 测试网。
安装此技能
从官方仓库安装此技能的最新版本:
npx skills add zerufinance/zscore -y
此命令安装的技能与在技能生态系统(例如 skills.sh)中发布的版本相同。技能更新后,请使用此命令获取更新。
一次性设置
安装此技能后,请运行一次以安装依赖项(在技能目录中,例如 .cursor/skills/zscore/ 或 ~/.cursor/skills/zscore/):
npm install
不可妥协的规则:没有用户输入,就不得推进
此技能必须严格采用交互方式。
- 除非用户已提供所有必需输入(或在允许的情况下明确跳过),否则不得创建任何 JSON 文件。
- 不得假设或编造任何值(名称、描述、URL、版本、工具列表、技能、域名、信任模型等)。
- 除非用户明确同意你计划采用的每一项默认值,否则不得“使用默认值”继续。
- 不得重复使用先前聊天、记忆或之前运行中的数据,除非用户再次明确提供这些数据(例如粘贴之前的 JSON 或确认具体值)。
- 如果缺少任何必需值,必须询问用户并停止。不得生成部分 JSON、写入文件或运行命令。
这是核心安全/质量门槛:缺少输入就必须阻止工作流继续。
Agent 指令:注册流程(严格门控)
当用户想要注册 Agent时,必须遵循以下门控流程。工作流分为三个阶段:
- 收集输入(询问,然后等待)。
- 验证并总结(说明你将执行的操作)。
- 仅在获得明确批准后继续(创建文件,然后运行注册)。
阶段 1 — 收集输入(询问,然后停止)
必须向用户询问以下输入。在每一项都得到解决之前,不得进入阶段 2。
必需输入(必须提供)
| 输入 | 是否必需? | 门控行为 |
|---|---|---|
| 名称 | 是 | 询问:“Agent 的名称是什么?”(1–256 个字符)。如果用户未提供,则停止。 |
| 描述 | 是 | 询问:“Agent 应使用什么描述?”(最多 2048 个字符)。如果用户未提供,则停止。 |
| 服务 | 是 | 询问:“你想发布哪些服务类型?”然后收集至少一项服务的完整详情。如果用户未提供,则停止。 |
可选输入(必须明确提供或明确跳过)
对于每个可选字段,都必须询问用户是否要设置。只有用户明确表示跳过(或表达相同意思)时,才将其视为已省略。
| 输入 | 必填? | 需要询问的内容 |
|---|---|---|
| Image | 否 | “你要包含图片 URL(头像/Logo)吗?如果要,请粘贴。如果不要,请说‘跳过’。” |
| x402Support | 否 | “该 Agent 支持 x402 支付吗?(true/false)或者说‘跳过’。” |
| active | 否 | “应将该 Agent 标记为活跃吗?(true/false)或者说‘跳过’。” |
| supportedTrust | 否 | “应列出哪些信任模型?(例如 reputation、ERC-8004、crypto-economic、tee-attestation)或者说‘跳过’。” |
Owner: 不要询问用户提供 owner 地址。Owner 始终从签名者(持有 PRIVATE_KEY 的钱包)派生。脚本会自动设置;API 要求文档 owner 与签名者一致,以便同一个钱包在铸造后更新文档。
私钥/资金门槛(运行注册前必须满足)
-
注册费用: Base Mainnet(默认):0.0025 ETH。Base Sepolia:0.001 ETH。
-
钱包还必须有足够的 ETH 支付 Gas 费(建议主网上总计约 0.003 ETH)。
-
私钥: 注册需要一个钱包。请用户确认以下其中一项:
- “
PRIVATE_KEY已在环境变量/OpenClaw 配置中设置”,或者 - “我会在本次运行中提供
PRIVATE_KEY”。
- “
-
切勿将私钥写入任何文件。切勿复述私钥。
如果用户未确认如何提供 PRIVATE_KEY,必须停止。
阶段 2 — 验证并汇总(暂不创建文件)
提供所有必填输入(并且可选输入已提供或明确跳过)后:
-
在内存中按完整结构构造 JSON 对象(参见下文“Agent JSON 结构”)。
-
验证:
name已提供且长度为 1–256 个字符description已提供且不超过 2048 个字符services至少有 1 项- 每项 service 均符合其类型对应的结构
-
简要汇总将要写入的内容(名称、描述长度、services 列表、链的选择、费用)。
-
询问用户是否明确批准,并要求其作出肯定答复: “是否批准按这些确切内容写入
agent.json?(yes/no)” 如果用户没有回答 yes,则停止。
阶段 3 — 创建文件并运行注册(仅在获批后)
仅在用户明确批准后:
-
将 JSON 写入文件(例如
agent.json)。 -
询问用户是否最终明确同意继续: “现在是否继续进行链上注册?(yes/no)” 如果回答不是 yes,则停止。
-
运行注册:
- Base Mainnet(默认):
npx tsx ./scripts/zscore.ts register --json agent.json - Base Sepolia:
npx tsx ./scripts/zscore.ts register --json agent.json --chain 84532
- Base Mainnet(默认):
在满足所有门槛要求并且用户已批准以下两项之前,不要运行 register 命令:
- 写入 JSON 文件;以及
- 执行链上注册。
Agent JSON 结构(ERC-8004 registration-v1)
注册只接受 JSON 文件。收集用户输入并构建文件时,使用以下完整结构。不要默认使用最小结构。
完整 JSON(MCP + A2A + OASF + web + x402):
{
"name": "DataAnalyst Pro",
"description": "Enterprise-grade blockchain data analysis agent. Performs on-chain forensics, wallet profiling, and transaction pattern detection.",
"image": "https://cdn.example.com/agents/analyst.png",
"services": [
{
"name": "MCP",
"endpoint": "https://api.dataanalyst.ai/mcp",
"version": "2025-06-18",
"mcpTools": ["analyze_wallet", "trace_transactions", "detect_anomalies"],
"capabilities": []
},
{
"name": "A2A",
"endpoint": "https://api.dataanalyst.ai/.well-known/agent-card.json",
"version": "0.3.0",
"a2aSkills": ["analytical_skills/data_analysis/blockchain_analysis"]
},
{
"name": "OASF",
"endpoint": "https://github.com/agntcy/oasf/",
"version": "0.8.0",
"skills": ["analytical_skills/data_analysis/blockchain_analysis"],
"domains": ["technology/blockchain"]
},
{
"name": "web",
"endpoint": "https://dataanalyst.ai"
}
],
"x402Support": true,
"active": true,
"supportedTrust": ["reputation", "ERC-8004"]
}
所有字段:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
name | string | 是 | — | Agent 名称(1–256 个字符) |
description | string | 是 | — | Agent 的功能(最多 2048 个字符) |
image | string | 否 | 未提供时省略 | 头像 URL(HTTPS、IPFS 或 Arweave) |
services | array | 是 | — | 服务端点(1–64 项,见下文) |
x402Support | boolean | 否 | 未提供时省略 | 是否支持 x402 支付协议 |
active | boolean | 否 | 未提供时省略 | Agent 是否正在接受请求 |
supportedTrust | string[] | 否 | 未提供时省略 | 信任模型:"reputation"、"crypto-economic"、"tee-attestation"、"ERC-8004" |
owner | string | 否 | 签名者地址 | 始终设置为签名者地址(PRIVATE_KEY)。不要询问用户;脚本会设置此字段,以便 API 在铸造后允许更新。 |
服务类型:
name | endpoint | 其他字段 |
|---|---|---|
"web" | 网站 URL | — |
"MCP" | MCP 服务 URL | version、mcpTools[]、mcpPrompts[]、mcpResources[]、capabilities[] |
"A2A" | Agent 卡片 URL(/.well-known/agent-card.json) | version、a2aSkills[] |
"OASF" | OASF 仓库 URL | version、skills[]、domains[] |
| 自定义 | 任意 URL | description |
命令
/zscore register --json <file>
只能通过 JSON 文件注册新 Agent。不支持基于标志的注册(不支持 --name / --description / --endpoint)。创建托管 Agent URI,在链上铸造 NFT,并使用实际的 agentId 更新 URI。
/zscore register --json agent.json
/zscore register --json agent.json --chain 84532
必需的门控步骤(必须按顺序执行):
- 收集必需输入:name、description、至少一个包含完整类型专属字段的服务,并确认如何提供
PRIVATE_KEY。 - 收集每个可选字段的输入,或明确决定“跳过”。
- 验证并总结将要写入的确切 JSON。
- 明确询问用户是否批准写入
agent.json(是/否)。 - 写入
agent.json。 - 明确询问用户是否批准在链上注册(是/否)。
- 运行注册命令。
SDK 会自动添加 type、registrations(其中包含 agentId: 0 占位符),并为缺失的可选字段设置默认值。铸造后,它会使用实际的 agentId 更新文档。
/zscore read <agentId>
读取 Agent 的链上数据:所有者、URI、钱包、名称、服务。
/zscore read 16
运行命令:npx tsx ./scripts/zscore.ts read 16
/zscore fee
检查当前注册费用以及是否开放注册。
/zscore fee
运行命令:npx tsx ./scripts/zscore.ts fee
/zscore set-metadata <agentId> --key <key> --value <value>
为 Agent 设置自定义元数据。仅所有者可调用。
/zscore set-metadata 16 --key "category" --value "trading"
需要 PRIVATE_KEY。
运行命令:npx tsx ./scripts/zscore.ts set-metadata 16 --key "category" --value "trading"
/zscore unset-wallet <agentId>
清除 Agent 钱包。仅所有者可调用。
/zscore unset-wallet 16
需要 PRIVATE_KEY。
运行命令:npx tsx ./scripts/zscore.ts unset-wallet 16
设置
只读(无需设置)
无需私钥即可使用 read 和 fee。
使用钱包(用于注册和写入)
添加到 OpenClaw 配置(~/.openclaw/openclaw.json):
{
"skills": {
"entries": {
"zscore": {
"enabled": true,
"env": {
"PRIVATE_KEY": "0xYourFundedPrivateKey"
}
}
}
}
}
可选环境变量:
RPC_URL— 覆盖默认 RPCCHAIN_ID— 覆盖链(默认值:Base 主网为8453,Base Sepolia 使用84532)
合约信息
Base 主网(默认,chainId 8453)
- 身份注册表:
0xFfE9395fa761e52DBC077a2e7Fd84f77e8abCc41 - 信誉注册表:
0x187d72a58b3BF4De6432958fc36CE569Fb15C237 - 注册费用: 0.0025 ETH
- RPC: https://mainnet.base.org
Base Sepolia(测试网,chainId 84532)
-
身份注册表:
0xF0682549516A4BA09803cCa55140AfBC4e5ed2E0 -
信誉注册表:
0xaAC7557475023AEB581ECc8bD6886d1742382421 -
注册费用: 0.001 ETH
-
来源:
zscore
工作原理
- register 通过 Agent URI API 创建托管的 JSON 文档(ERC-8004 registration-v1 架构),在身份注册表上铸造 NFT(支付费用),然后使用真实的 agentId 更新文档。
- read 查询链上合约以获取所有者、tokenURI 和 agentWallet,然后获取并解析 URI JSON。
- fee 从合约读取当前的
registrationFee()和registrationEnabled()。 - set-metadata 在合约上调用
setMetadata(agentId, key, value)。 - unset-wallet 在合约上调用
unsetAgentWallet(agentId)。