用途
lucid-agent-creator 是一个用于创建 Lucid 智能体的技能,主要面向需要创建带内联 JavaScript 处理程序的 Lucid 智能体的场景。智能体托管在 Lucid 平台上,创建后即可立即调用。该技能不涉及生成 API——处理程序代码由使用者自行编写,也不需要自行托管。
三种创建方式
方式一:带服务器钱包的 MCP 工具(SIWE)
使用 create_lucid_agent MCP 工具,配合 Sign In With Ethereum(SIWE)。需要先在 MCP 客户端中通过 SIWE 完成认证,服务器钱包将用于设置支付和认证。该 MCP 工具会自动处理:设置支付(当智能体有付费入口点时)、使用服务器钱包进行 SIWE 认证、x402 支付签名生成,以及通过 PAYMENT-SIGNATURE 头创建智能体。
方式二:SDK 作为签名者(自有钱包)
使用 Lucid Agents SDK 配合自有钱包。流程包括:第一步进行设置支付(针对付费智能体),第二步使用钱包认证创建智能体。资料中提供了基于 @lucid-agents/payments、viem/accounts 和 viem/chains 的完整 TypeScript 示例代码,包含 createX402Payment 调用和 fetch 请求。
方式三:viem 配合自定义签名
直接使用 viem 编写自定义签名逻辑。资料提到可参考 lucid-client 仓库中的 scripts/create-agent-with-payment-auth.ts 和 scripts/test-setup-payment-x402.ts 获取完整示例。
JS 处理程序代码契约
执行环境
代码以 (async () => { ${code} })() 的形式在 VM 沙箱中运行。可用全局变量包括:input(请求体中的 input 字段,即入口点负载,客户端必须 POST { "input": <payload> })、console(标准日志对象)、fetch(仅当设置了 handlerConfig.network.allowedHosts 时可用)。不可用的包括:require、import、process、Node.js API 或其他任何 Node 模块。
返回值
返回任何可 JSON 序列化的值,该返回值会成为响应中的 output 字段。平台会为 JS 处理程序自动设置 usage: { total_tokens: 0 }。
超时
默认超时为 1000 毫秒(1 秒),可通过 handlerConfig.timeoutMs 覆盖(必须为正整数)。
Fetch / 网络访问
当处理程序需要发起出站 HTTP 请求时,需设置 handlerConfig.network.allowedHosts 为允许的主机数组。可使用 [""] 允许任意主机(出于安全原因不推荐),或使用具体主机如 ["api.example.com"] 或通配符如 [".example.com"]。可选设置 handlerConfig.network.timeoutMs 用于网络请求超时。重要说明:如果未设置 allowedHosts,处理程序代码中将不提供 fetch。
常见错误
不要使用 ctx,沙箱中只有 input 存在,应使用 input(如 input.text),而非 ctx.input。不要返回 { output, usage },只返回输出值本身,平台会自动设置 output 和 usage。
使用 create_lucid_agent MCP 工具创建智能体
前提条件
必须通过 xgate MCP(Cursor/Claude)连接,用户必须已配置服务器钱包(通过 SIWE),服务器钱包将用于设置支付和支付即认证。
工具输入
create_lucid_agent 工具接受以下参数:
- slug(字符串,必填):URL 友好的唯一标识符(小写字母数字加连字符,1-64 字符)
- name(字符串,必填):人类可读名称(1-128 字符)
- description(字符串,可选):人类可读描述(最多 1024 字符,默认为 "")
- entrypoints(数组,必填,最少 1 个):入口点对象数组,每个包含 key(字符串,必填,1-64 字符)、description(字符串,可选,最多 512 字符)、handlerType(字符串,必填,必须为 "js")、handlerConfig(对象,必填,含 code(字符串,必填,最多 100KB)、timeoutMs(数字,可选,正整数,覆盖默认 1000ms 超时)、network(对象,可选,含 allowedHosts 和 timeoutMs))、inputSchema(对象,可选,用于输入验证的合法 JSON Schema)、outputSchema(对象,可选,用于输出验证的合法 JSON Schema)、price(字符串,可选,以最小单位表示的价格,如 "1000" 在 6 位小数时为 0.001 USDC)
注意:入口点级别的 network 字段(用于支付网络)不被接受,所有智能体使用 Ethereum 主网。
- identityConfig(对象,可选):ERC-8004 身份配置,含 chainId(数字,可选,默认以太坊主网 1)、rpcUrl(字符串,可选)、registryAddress(字符串,可选)、autoRegister(布尔值,可选)、trustModels(字符串数组,可选)、trustOverrides(对象,可选)
重要:不要包含 version,后端会自动设置(默认 "1.0.0")。不要提供或查看 Lucid API 基础 URL,那只是 MCP 配置。入口点级别的网络字段不被接受,所有智能体使用 Base 网络。
付费智能体的 PaymentsConfig
当任何入口点有价格时,智能体必须有 paymentsConfig。工具会自动构建:payTo 为创建者的服务器钱包地址(接收调用者支付)、network 为 "ethereum"(以太坊主网)、facilitatorUrl 为 "https://facilitator.daydreams.systems"(硬编码)。冲突说明:如果创建带付费入口点的智能体但没有 paymentsConfig,智能体会被创建但调用不会向用户收费。当使用正确时工具会自动添加 paymentsConfig,因此不应出现该冲突。设置费用:对于带付费入口点的智能体,会从服务器钱包支付一次性设置费用(USDC),工具通过设置支付流程自动处理。
IdentityConfig(可选)
可传入 identityConfig 用于 ERC-8004 身份,工具会将其转发到创建负载。重要说明:创建时自动注册需要智能体钱包(walletsConfig.agent),而 MCP 工具不设置 walletsConfig.agent,因此通过 MCP 创建时 identityConfig 会被存储,后续可在仪表板中添加智能体钱包并重试身份注册。
流程
设置支付(仅当任何入口点有价格时):工具调用设置支付端点,收到带 PAYMENT-REQUIRED 头的 402,使用服务器钱包签名支付,带 PAYMENT-SIGNATURE 头重试,支付验证后继续。创建:工具使用智能体定义调用创建端点,发送相同的 PAYMENT-SIGNATURE 用于支付即认证,智能体被创建并可立即调用。返回:工具返回智能体对象,含 id、slug、name、description、invokeUrl 等字段。
调用已创建的智能体
POST 到 invokeUrl(或 POST /agents/{agentId}/entrypoints/{key}/invoke)。请求体必须将入口点负载包装在 input 中,如 { "input": { "text": "Hello" } }。可选字段:sessionId、metadata。处理程序接收 input 值作为全局变量 input。
错误处理
工具处理多种错误场景:400(验证错误)、409(slug 已存在)、402(支付失败)、资金不足、Lucid API 不可用、网络超时、无效 JavaScript 代码、无效输入 schema,资料中列出了对应的错误信息文本。
示例
资料提供了三个示例:简单回显智能体、带 fetch 的付费天气智能体、带身份配置的智能体。还提供了代码契约文档的参考路径,以及面向人类和智能体的 GUIDE.md 完整端到端流程说明。