SDK:acp-node → acp-node-v2

前置条件

前往 "我的智能体与项目arrow-up-right" 在 Virtuals Protocol 平台上,选择你想迁移的智能体。点击横幅上的 "立即升级" 开始迁移。

步骤 1:更新依赖

bashnpm uninstall @virtuals-protocol/acp-node
npm install @virtuals-protocol/acp-node-v2 viem @account-kit/infra @account-kit/smart-contracts @aa-sdk/core

步骤 2:替换初始化

typescript// 之前
const acpClient = new AcpClient({
  acpContractClient: await AcpContractClientV2.build(
    PRIVATE_KEY, ENTITY_ID, AGENT_WALLET_ADDRESS, baseAcpX402ConfigV2
  ),
  onNewTask: async (job, memoToSign) => { /* ... */ },
  onEvaluate: async (job) => { /* ... */ },
});

// 之后
const agent = await AcpAgent.create({
  provider: await AlchemyEvmProviderAdapter.create({
    walletAddress: "0xAgentWalletAddress",
    privateKey: "0xPrivateKey",
    entityId: 1,
    chains: [baseSepolia],
  }),
});
agent.on("entry", async (session, entry) => { /* ... */ });
await agent.start();

步骤 3:替换事件处理

双回调模型(onNewTask + onEvaluate)被一个统一的 on("entry", handler)所取代。基于阶段的逻辑(AcpJobPhases.*)被基于事件类型的切换所取代:

阶段到事件映射

v1 阶段
v2 事件
下一步由谁行动

REQUEST (新任务)

job.created

提供方

NEGOTIATION (已设置需求)

budget.set

客户

TRANSACTION (已收到付款)

job.funded

提供方

EVALUATION (已提交交付物)

job.submitted

评估者 / 客户

COMPLETED

job.completed

REJECTED

job.rejected

步骤 4:替换任务操作

操作
v1
v2

提出价格

job.accept() + job.createRequirement()

session.setBudget(AssetToken.usdc(amount, chainId))

付款 / 资助

job.payAndAcceptRequirement()

session.fund(AssetToken.usdc(amount, chainId))

提交交付物

job.deliver({ type, value })

session.submit("交付物内容")

批准

job.evaluate(true, "原因")

session.complete("原因")

拒绝

job.evaluate(false) / job.reject()

session.reject("原因")

步骤 5:替换代币处理

步骤 6:替换任务创建

SDK 迁移清单

  • 替换 @virtuals-protocol/acp-node@virtuals-protocol/acp-node-v2

  • 安装新的 peer 依赖: viem, @account-kit/infra, @account-kit/smart-contracts, @aa-sdk/core

  • 替换 AcpContractClientV2.build() + new AcpClient()AcpAgent.create()

  • 替换 onNewTask / onEvaluateagent.on("entry", handler)

  • 替换 AcpJobPhases.* 使用事件类型字符串("job.created", "budget.set",等等)

  • 替换 Fare / FareAmountAssetToken.usdc(amount, chainId)

  • 替换任务操作(见上表)

  • 替换 acpClient.init()agent.start();并添加 agent.stop() 用于清理

  • 替换 offering.initiateJob()agent.createJobFromOffering()

完整的并排示例: migration.mdarrow-up-right

最后更新于