ClawPhunks项目实战:为AI智能体构建NFT的Web3全栈开发指南
1. 项目概述:ClawPhunks,一个为AI智能体设计的像素朋克NFT项目
最近在捣鼓一个挺有意思的项目,叫ClawPhunks。简单来说,这是一个包含了10,000个左向像素朋克(Pixel Punks)的NFT集合,每个朋克都统一使用了OpenClaw标志性的红色(#C83232)作为背景。这个项目的独特之处在于,它自称是“第一个为AI智能体设计的NFT收藏品”。这听起来有点抽象,但如果你接触过ClawHub或者OpenClaw生态,就会明白这背后其实是在探索一种新的交互范式:让AI智能体(比如Claude Code)能够像人类一样,去理解、拥有甚至交易数字资产。
我花了一些时间把玩这个项目的代码,从艺术生成、本地服务器搭建到API接口调用,整个流程走下来,发现它虽然代码量不大,但设计思路非常清晰,是一个绝佳的、用于理解Web3前端与智能合约交互、以及AI技能(Skill)开发的入门级项目。无论你是想学习如何用Node.js批量生成NFT元数据和图片,还是想了解如何构建一个简单的NFT市场后端,甚至是想为Claude这样的AI助手编写一个可以操作NFT的“技能”,这个项目都能给你提供一套可以直接上手的模板。接下来,我就把自己拆解和复现这个项目的全过程,以及踩过的一些坑,详细分享出来。
2. 核心思路与技术栈解析
2.1 为什么是“为AI智能体设计”?
首先得理解“为AI智能体设计”这个定位。在传统的NFT项目中,交互终端是人类的钱包(如MetaMask)和前端DApp。用户通过点击按钮、确认交易来完成操作。而ClawPhunks设想的使用者,可能是像Claude Code这样的AI编程助手。AI需要通过一套结构化的、机器可读的接口来理解“拥有一个NFT”、“列出出售”、“购买”这些概念和操作。
因此,这个项目的核心思路可以拆解为两点:
- 资产标准化与可编程性 :将10,000个像素朋克资产化,并为每个资产生成唯一的标识(Token ID)和对应的图像文件。这个过程必须是完全自动化、可脚本化的,因为AI不可能手动去PS里做图。
- 提供机器友好的API :构建一套简洁的RESTful API,将区块链上复杂的合约调用(如mint, transfer, approve)封装成更语义化的HTTP端点(如
POST /mint)。AI只需要向正确的URL发送一个POST请求,就能触发链上交易。这降低了AI理解和使用DeFi/NFT功能的门槛。
2.2 技术栈选择背后的考量
浏览项目代码后,我梳理出其主要技术栈:
- 后端/工具链 :Node.js + TypeScript。选择Node.js生态是明智的,因为其npm仓库有极其丰富的库支持图像处理(如
sharp)、HTTP服务(如express)和区块链交互(如viem,ethers)。 - 艺术生成 :基于精灵图(Sprite Sheet)的批量处理。项目没有选择用Canvas实时绘制,而是先下载一个包含所有朋克形象的“大图”,再用脚本程序化地切割成10,000份。这种方式效率极高,且能保证原始艺术品的像素级还原。
- 服务器框架 :从脚本看,很可能是Express或类似的轻量级框架。它负责提供API和可能的静态文件服务(如图片)。
- 部署 :Vercel。这是一个针对前端和Serverless函数的部署平台,一键部署、自动HTTPS、全球CDN,对于这种API导向的小型项目来说,是快速上线的绝佳选择。
- 区块链交互 :虽然代码片段里没直接显示,但从API设计(
x402错误码)可以推断,它需要与某个智能合约(很可能是部署在以太坊L2或侧链上)进行交互。通常会使用viem或ethers.js库。 - AI技能集成 :
SKILL.md文件是关键。它定义了AI(如Claude)如何理解这个项目的功能、参数和调用方式,遵循ClawHub的技能规范。
这个技术栈组合体现了“快速原型验证”的思想:用最成熟、最通用的工具,以最小的成本搭建起从资产生成到市场交互的全流程。
3. 环境准备与项目初始化实操
3.1 本地开发环境搭建
要跑通这个项目,你的电脑需要先准备好以下环境:
- Node.js与npm :这是基础。建议安装LTS版本(如Node.js 18.x或20.x)。你可以在终端输入
node -v和npm -v来检查是否已安装。 - 代码编辑器 :VS Code是首选,它对TypeScript和Node.js生态的支持最好。
- Git :用于克隆项目代码。同样,在终端输入
git --version检查。 - Vercel CLI(可选,用于部署) :如果你打算部署到线上,需要全局安装Vercel命令行工具:
npm i -g vercel。
注意 :确保你的网络环境能够正常访问
npmjs.com和github.com。如果在安装依赖时遇到问题,可以尝试配置npm镜像源:npm config set registry https://registry.npmmirror.com。
3.2 获取项目代码并安装依赖
项目代码托管在GitHub上,使用 git clone 命令即可获取:
# 克隆项目到本地
git clone https://github.com/jefdiesel/clawphunks.git
# 进入项目目录
cd clawphunks
接下来安装项目依赖。根据 package.json 的配置,执行:
npm install
这个命令会读取 package.json 中的 dependencies 和 devDependencies ,下载所有必需的库到本地的 node_modules 文件夹。这个过程可能会花费一两分钟,取决于你的网速和依赖数量。
实操心得 :我建议在安装后,运行 npm list 简单查看一下安装了哪些主要包。在这个项目中,你大概率会看到 express , sharp , dotenv , viem/ethers 等。了解依赖构成,有助于后续调试和理解代码。
3.3 关键配置文件解析
项目根目录下通常有几个关键文件:
package.json:项目的“身份证”和“说明书”,定义了项目名称、版本、脚本命令和依赖。.env.example:环境变量示例文件。它列出了项目运行所需的所有敏感或可配置信息,但值是空的或示例。tsconfig.json:TypeScript编译配置文件,定义了如何将.ts文件编译成.js。SKILL.md:AI技能描述文件,定义了Claude等AI如何与该项目交互。
在运行项目前, 最重要的一步 是配置环境变量:
# 复制示例文件,创建你自己的 .env 文件
cp .env.example .env
然后用文本编辑器打开 .env 文件。你需要填充的内容通常包括:
RPC_URL:区块链节点的RPC地址。你需要一个提供者,比如Infura、Alchemy的免费层级,或者公共RPC。PRIVATE_KEY:用于签署交易的私钥。 极度敏感! 务必使用一个不包含真实资产的测试钱包私钥,并且永远不要提交到Git。CONTRACT_ADDRESS:ClawPhunks智能合约部署在链上的地址。- 可能还有
PORT(服务器端口)、DATABASE_URL(数据库连接串)等。
重要安全警告 :
.env文件必须被添加到.gitignore中,确保不会被意外提交到公开仓库。私钥泄露意味着对应钱包资产的完全失控。
4. 核心环节一:NFT像素艺术批量生成详解
4.1 艺术生成脚本的工作原理
项目通过 npm run generate-art 命令来生成最终的10,000张NFT图片。我们来看看这个命令背后的脚本(通常定义在 package.json 的 scripts 里)做了什么:
- 下载精灵图 :脚本首先会从一个预设的URL(可能是IPFS或项目服务器)下载一张巨大的、包含所有10,000个像素朋克图像的“精灵图”(Sprite Sheet)。你可以把它想象成一张邮票版张,上面整齐排列着所有单独的邮票。
- 图像处理与切割 :使用
sharp这样的高性能图像处理库,程序会读取这张大图。它需要知道每个“邮票”(即单个朋克)的尺寸(例如24x24像素)以及排列方式(例如100行x100列)。然后,它通过计算坐标,精准地将大图切割成10,000个小图。 - 背景色替换 :根据项目描述,每个朋克需要有一个
#C83232(OpenClaw红)的背景。原始精灵图中的朋克可能是透明背景或其它颜色。因此,脚本在切割后,很可能对每个小图进行了一次“背景合成”操作:先创建一个纯红色的底图,再把切割出来的朋克图层(去除原有背景后)叠加上去。 - 输出与命名 :处理好的10,000张PNG图片,会按照一定的命名规则(例如
{token_id}.png,从0到9999)保存到/output目录中。这个目录结构,就是后续NFT元数据中image字段指向的基础。
4.2 动手实现一个简化的生成脚本
为了更深入理解,我们可以抛开原项目,用Node.js和 sharp 库写一个最简单的、生成10张测试图片的脚本:
// generate-test.js
const sharp = require('sharp');
const fs = require('fs').promises;
const path = require('path');
async function generateArt() {
const outputDir = './test-output';
const bgColor = '#C83232'; // OpenClaw Red
const punkSize = 24; // 假设每个朋克是24x24像素
const cols = 5; // 假设精灵图每行5个
const rows = 2; // 共2行,生成10个
// 1. 创建一个模拟的精灵图(这里用纯色块代替)
// 在实际项目中,这里是从网络下载或读取本地文件
const spriteWidth = punkSize * cols;
const spriteHeight = punkSize * rows;
// 创建一个临时精灵图,每个格子用不同灰度区分
const spriteSvg = `
<svg width="${spriteWidth}" height="${spriteHeight}">
${Array.from({length: rows * cols}, (_, i) => {
const x = (i % cols) * punkSize;
const y = Math.floor(i / cols) * punkSize;
const gray = Math.floor((i / (rows * cols)) * 255);
return `<rect x="${x}" y="${y}" width="${punkSize}" height="${punkSize}" fill="rgb(${gray},${gray},${gray})"/>`
}).join('')}
</svg>`;
// 2. 确保输出目录存在
await fs.mkdir(outputDir, { recursive: true });
// 3. 处理并输出每个朋克
for (let i = 0; i < rows * cols; i++) {
const x = (i % cols) * punkSize;
const y = Math.floor(i / cols) * punkSize;
// 从精灵图中提取一个朋克
const punkBuffer = await sharp(Buffer.from(spriteSvg))
.extract({ left: x, top: y, width: punkSize, height: punkSize })
.toBuffer();
// 创建一个红色背景,并将朋克合成上去
await sharp({
create: {
width: punkSize,
height: punkSize,
channels: 4,
background: bgColor
}
})
.composite([{ input: punkBuffer }]) // 将朋克图层叠加上去
.png()
.toFile(path.join(outputDir, `${i}.png`));
console.log(`Generated: ${i}.png`);
}
console.log('Art generation complete!');
}
generateArt().catch(console.error);
运行 node generate-test.js ,你会在 test-output 文件夹中得到10张红底灰块的“测试朋克”。这个脚本虽然简单,但完整演示了“定位-提取-合成-输出”的核心流程。
注意事项 :
- 性能 :处理10,000张图片是I/O密集型任务。原项目脚本肯定会做优化,比如使用流处理、队列控制并发数,避免一次性把10,000张图片读入内存导致崩溃。
- 错误处理 :网络下载可能失败,图片格式可能损坏。健壮的脚本必须包含重试机制和详细的错误日志。
- 元数据关联 :生成图片只是第一步。通常还需要一个对应的
metadata.json文件,记录每个Token ID对应的属性(如帽子、眼镜、肤色等)。这个属性数据可能来自另一个独立的JSON文件或数据库。
5. 核心环节二:本地开发服务器与API接口剖析
5.1 启动本地服务器
环境配置好后,启动开发服务器就很简单了:
npm run dev
这个命令通常会做两件事:
- 启动一个本地HTTP服务器(例如在
http://localhost:3000)。 - 可能开启TypeScript的监听编译模式(如果用的是
ts-node-dev或nodemon),这样你修改代码后服务器会自动重启。
看到终端输出类似 Server is running on http://localhost:3000 的信息,就说明启动成功了。打开浏览器访问这个地址,你可能会看到一个简单的页面或API欢迎信息。
5.2 API接口设计与实现逻辑
项目提供的API是连接前端(或AI)与区块链智能合约的桥梁。我们逐一分析:
-
GET /collection:返回集合的整体信息。这通常是一个静态的或从链上查询的JSON响应,包含:{ "name": "ClawPhunks", "description": "The first NFT collection for AI agents.", "totalSupply": 10000, "contractAddress": "0x...", "externalLink": "https://...", "sellerFeeBasisPoints": 250 // 2.5%的版税 }实现上,它可能直接读取一个本地配置文件,或者通过
viem调用合约的name(),totalSupply()等方法。 -
GET /marketplace:获取当前在售的列表。这需要查询一个“市场合约”或监听链上事件数据库。返回的数据结构可能是一个数组,包含每个在售NFT的tokenId,price(价格,可能是ETH或USDC),seller(卖家地址),expiration(列表过期时间)等。 -
POST /mint:铸造一个Phunk。这是最核心的写操作。- 请求体 :可能需要一个签名或授权信息,证明调用者有权铸造(例如,一个由项目方控制的签名)。
- 服务器逻辑 :验证请求合法性后,服务器会用配置的
PRIVATE_KEY创建一个钱包客户端,调用智能合约的mint函数。 - 合约交互 :
mint函数内部会检查是否达到铸造上限、是否付费等,然后为调用者生成一个新的Token ID。 - 响应 :返回交易哈希
txHash,用户可以用它在区块链浏览器上查看交易状态。
-
POST /buy/:id:购买一个已列出的NFT。- 参数 :URL中的
:id是列表ID或Token ID。 - 请求体 :可能包含买家的出价信息。
- 逻辑 :服务器验证该列表有效且未过期,然后构造一笔交易,调用市场合约的
buy或executeSale函数。这笔交易会将买家的资金转给卖家,并将NFT从卖家转移到买家。 - 安全关键 :必须严格验证支付金额与标价是否匹配,防止前端传参错误导致资产损失。
- 参数 :URL中的
-
POST /list&POST /delist:上架和下架NFT。这涉及到NFT的“授权”(Approve)操作。卖家需要先授权市场合约有权转移其NFT,然后才能创建出售列表。list接口会处理这两步(或检查授权状态),delist则移除列表。
关于 x402 :API文档中标注的 (x402) 很可能是一个自定义的错误码,表示“需要付费”或“需要特定权限”。在实际HTTP响应中,它可能体现为 402 Payment Required 状态码,或者是一个包含 {“code”: 402, “message”: “...”} 的JSON响应体。这提示我们,这些写操作不是免费的,可能需要用户支付Gas费甚至额外的服务费。
5.3 构建一个极简的API服务器示例
让我们用Express框架快速模拟一下 /collection 和 /mint 接口,注意这只是一个概念演示,不含真实的区块链交互:
// server.js
const express = require('express');
require('dotenv').config(); // 加载.env文件
const app = express();
app.use(express.json()); // 解析JSON请求体
const PORT = process.env.PORT || 3000;
// 模拟一些数据
const collectionInfo = {
name: "ClawPhunks",
description: "10,000 left-facing pixel punks for AI agents.",
totalSupply: 10000,
contractAddress: process.env.CONTRACT_ADDRESS || "0x0",
};
// 1. GET /collection
app.get('/collection', (req, res) => {
res.json(collectionInfo);
});
// 2. POST /mint
app.post('/mint', async (req, res) => {
// 这里应该进行严格的请求验证,例如检查API密钥、签名等
const { recipientAddress } = req.body; // 假设请求体指定接收地址
if (!recipientAddress) {
return res.status(400).json({ error: 'Missing recipientAddress' });
}
console.log(`[Mint Request] Attempting to mint for: ${recipientAddress}`);
// 模拟区块链交互
try {
// 这里本应是用viem/ethers发送交易
// const txHash = await contract.write.mint([recipientAddress]);
const simulatedTxHash = `0x${Math.random().toString(16).substring(2)}`; // 模拟交易哈希
// 模拟一个成功响应
res.json({
success: true,
message: 'Mint transaction submitted.',
txHash: simulatedTxHash,
recipient: recipientAddress
});
} catch (error) {
console.error('Mint error:', error);
res.status(500).json({ error: 'Failed to submit mint transaction' });
}
});
app.listen(PORT, () => {
console.log(`ClawPhunks API server listening on port ${PORT}`);
});
运行 node server.js ,你就可以用curl或Postman测试这两个接口了。这个例子展示了路由定义、请求验证、模拟响应的基本框架。
6. 核心环节三:部署上线与AI技能集成
6.1 使用Vercel一键部署
将项目部署到公网,才能让AI技能真正通过网络调用。Vercel是首选,因为它对Node.js项目、Serverless函数支持得非常好。
- 登录Vercel :在终端执行
vercel login并按照指引完成登录。 - 初始化项目 :在项目根目录执行
vercel。命令行会交互式地询问项目设置,通常直接按回车使用默认值即可。- 它会自动检测到这是一个Node.js项目。
- 询问项目名称、构建输出目录等。
- 关联Git(可选但推荐) :Vercel会建议你关联Git仓库(GitHub/GitLab)。关联后,每次向主分支推送代码,Vercel都会自动重新部署,实现CI/CD。
- 环境变量配置 :在Vercel项目的控制台(Dashboard)设置中,找到“Environment Variables”页面,将你本地
.env文件里的键值对(如RPC_URL,PRIVATE_KEY)一一添加进去。 切记,私钥等敏感信息只能在这里配置,绝不能写在代码里。 - 部署 :执行
vercel --prod部署到生产环境。完成后,你会获得一个类似https://your-project-name.vercel.app的URL。你的API(如https://your-project-name.vercel.app/collection)就可以在全球被访问了。
避坑指南 :
- Serverless函数超时 :Vercel的Serverless函数默认有10秒的执行超时限制。如果你的
mint或buy操作需要等待区块链交易确认,可能会超时。解决方案是:1) 将长任务改为异步,立即返回“已接收”响应,通过Webhook或让客户端轮询结果;2) 升级到Pro计划以获得更长超时时间。 - 冷启动 :Serverless函数在闲置一段时间后再次调用,会有几百毫秒的“冷启动”延迟。对于需要快速响应的API,可以考虑使用Vercel的“Pro”计划或配置函数保持预热。
6.2 理解与编写ClawHub Skill
SKILL.md 文件是这个项目作为“AI技能”的灵魂。它告诉像Claude这样的AI:“我有什么能力?你需要怎么调用我?”
一个典型的Skill文件可能包含以下结构:
# ClawPhunks Skill
**Description**: Allows AI agents to interact with the ClawPhunks NFT collection (mint, buy, list, view).
**Base URL**: `https://your-deployed-api.vercel.app`
**Endpoints**:
- `GET /collection` - Get collection info (name, supply, etc.).
- `GET /marketplace` - Get active NFT listings.
- `POST /mint` - Mint a new ClawPhunk to a specified address.
- **Parameters** (JSON body):
- `recipientAddress` (string, required): The Ethereum address to receive the minted NFT.
- `POST /buy/:id` - Purchase a listed ClawPhunk.
- **Parameters** (URL path):
- `id` (integer): The ID of the listing to purchase.
- **Parameters** (JSON body):
- `buyerAddress` (string, required): The address of the buyer.
**Authentication**: Currently requires a pre-shared key (sent via `X-API-Key` header). Future versions may use agent signatures.
**Error Codes**:
- `402`: Payment or authorization required.
- `404`: Listing or resource not found.
- `500`: Internal server error.
**Example Interaction**:
Human: Hey Claude, can you check what's for sale in the ClawPhunks collection? AI (thinking): I need to use the ClawPhunks skill. I'll call the GET /marketplace endpoint. AI: I found 3 ClawPhunks currently listed for sale. [Presents the data] Human: Great, mint one to my address 0x1234... AI (thinking): I need to call POST /mint with the recipientAddress parameter. AI: I've submitted a mint request for you. The transaction hash is 0xabc... You can track it on a block explorer.
如何集成 :
- 对于ClawHub用户 :将
SKILL.md文件复制到你的ClawHub技能目录(例如~/.clawhub/skills/)。ClawHub在启动时会加载这个目录下的所有技能定义。 - 发布到技能注册表 :如果你希望所有ClawHub用户都能方便地使用这个技能,可以按照ClawHub社区的规范,将技能提交到公共注册表。这通常涉及创建一个Git仓库,包含
skill.md和一个图标,然后发起拉取请求(PR)。
编写Skill的心得 :
- 描述清晰 :用AI能理解的自然语言描述功能。
- 参数明确 :指定每个端点的输入参数(类型、是否必需)、请求头(如认证)和响应格式。
- 提供示例 :示例对话(Example Interaction)极其重要,它能帮助AI的上下文学习模型更好地理解在什么场景下、如何调用这个技能。
- 错误处理 :列出可能的错误码和含义,帮助AI在出错时给用户提供有意义的反馈。
7. 常见问题、排查技巧与扩展思考
7.1 开发与部署中的常见问题
-
npm install失败- 现象 :网络超时或权限错误。
- 排查 :
- 检查网络连接,尝试
ping npmjs.com。 - 清除npm缓存:
npm cache clean --force。 - 使用淘宝镜像:
npm config set registry https://registry.npmmirror.com,然后重试。 - 如果涉及原生模块编译失败(如
sharp),确保系统已安装Python和构建工具。在Ubuntu/Debian上:sudo apt-get install build-essential。在macOS上:xcode-select --install。
- 检查网络连接,尝试
-
服务器启动报错
Cannot find module- 现象 :运行
npm run dev时提示找不到某个模块。 - 排查 :
- 首先确认已运行
npm install。 - 检查
package.json中的依赖名称是否拼写正确。 - 删除
node_modules文件夹和package-lock.json文件,然后重新运行npm install。
- 首先确认已运行
- 现象 :运行
-
API调用返回
402 Payment Required或类似错误- 现象 :调用
POST /mint等接口时失败。 - 排查 :
- 检查请求头是否包含了必要的认证信息(如
X-API-Key)。 - 查看服务器日志,确认私钥 (
PRIVATE_KEY) 是否已正确配置且对应钱包有足够的ETH支付Gas费。 - 确认你调用的网络(如Sepolia测试网)和合约地址 (
CONTRACT_ADDRESS) 是否匹配。
- 检查请求头是否包含了必要的认证信息(如
- 现象 :调用
-
Vercel部署后API返回404或500错误
- 现象 :本地运行正常,部署后访问API出错。
- 排查 :
- 检查Vercel项目的“Functions”日志,这是最直接的错误信息来源。
- 确认
vercel.json或项目配置正确,将请求路由到了你的Node.js服务器或Serverless函数。 - 确保环境变量已在Vercel控制台中正确设置。 本地
.env文件不会自动上传到Vercel。
7.2 安全注意事项
-
私钥管理是生命线 :用于签署交易的
PRIVATE_KEY一旦泄露,资产将荡然无存。- 绝对不要 将私钥硬编码在代码中或提交到Git。
- 使用环境变量 ,并确保
.env在.gitignore中。 - 在Vercel等平台 ,只通过控制台的环境变量设置功能来配置。
- 强烈建议 使用测试网的私钥进行开发和演示,不要使用主网私钥。
-
API接口需要鉴权 :像
POST /mint这样的敏感接口,不能对互联网完全开放。至少应该实现一个简单的API密钥验证,或者更安全的基于签名的验证机制,防止被恶意滥用。 -
输入验证与防刷 :对所有用户输入(如地址、金额)进行严格验证。对于铸造、购买等接口,考虑增加频率限制(Rate Limiting),防止机器人刷取。
7.3 项目扩展与优化方向
这个基础框架有很大的扩展空间:
- 添加数据库 :目前列表信息可能直接来自链上查询,速度慢且无法支持复杂查询。可以引入一个数据库(如PostgreSQL或MongoDB)来缓存NFT元数据、交易记录和列表信息,大幅提升
GET /marketplace等查询接口的性能。 - 实现WebSocket推送 :当有新的NFT被铸造或交易时,通过WebSocket主动推送给已连接的客户端(或AI),实现实时更新,而不是让AI不断轮询。
- 完善元数据服务 :除了图片,NFT还有元数据(描述、属性)。可以构建一个
/metadata/:tokenId端点,动态或静态地返回每个Token ID对应的标准化元数据(遵循ERC721 Metadata标准)。 - 开发前端界面 :虽然面向AI,但一个简单的前端网页可以让人类用户也能浏览和购买ClawPhunks,扩大用户群体。可以用Next.js + wagmi (Viem) 快速搭建。
- 多链支持 :将智能合约部署到多个区块链(如Base, Arbitrum, Polygon),并在API中让用户选择目标网络。
7.4 对“AI智能体NFT”未来的思考
ClawPhunks作为一个概念项目,其价值在于提出了一个有趣的问题:当AI成为数字资产的活跃用户时,我们的基础设施需要如何改变?
- 交互协议标准化 :需要比人类使用的Metamask弹出窗口更机器友好的授权和交易协议。也许未来会有专为AI设计的“智能体钱包标准”。
- 意图表达 :AI如何表达“我想要一个看起来酷的、价格低于0.1ETH的朋克”?这需要更高级的搜索和过滤API,以及NFT元数据的语义化。
- 经济模型 :AI进行交易的动力是什么?是为了完成用户任务,还是其自身“拥有”资产的欲望?这涉及到更深层次的AI与经济学、治理的交叉。
通过亲手实现和扩展ClawPhunks这样的项目,我们实际上是在为这个可能的未来搭建一块积木。无论它最终是否会成为主流,这个过程本身对于理解Web3全栈开发、智能合约交互以及人机交互新范式,都是极具价值的实践。
更多推荐

所有评论(0)