Lucid Agents 是一个以 TypeScript 为主的框架,用于构建和货币化AI代理——这是一个代理商业和支付SDK。构建能够销售服务、促进货币交易并参与代理市场中的AI代理。
核心能力:
无论您是构建付费AI服务、代理市场还是代理之间相互交易的多代理系统,Lucid Agents都提供了所需的支付和商业基础设施。
几分钟内启动您的第一个货币化AI代理。
# 交互模式 - CLI引导您完成所有选项
bunx @lucid-agents/cli my-agent
# 或使用内联配置进行更快设置
bunx @lucid-agents/cli my-agent \
--adapter=hono \
--template=axllm \
--AGENT_NAME="我的AI代理" \
--AGENT_DESCRIPTION="AI驱动的助手" \
--OPENAI_API_KEY=your_api_key_here \
--PAYMENTS_RECEIVABLE_ADDRESS=0xYourAddress \
--NETWORK=base-sepolia \
--DEFAULT_PRICE=1000
CLI将:
hono(HTTP服务器)、tanstack-ui(全仪表板)、tanstack-headless(仅API)、express(Node.js服务器)或next(Next.js应用路由器)blank(最小)、axllm(基于LLM)、axllm-flow(工作流程)、identity(链上身份)、trading-data-agent(商家)或trading-recommendation-agent(购物者)bun installcd my-agent
bun run dev
您的代理现在正在http://localhost:3000运行!
试一试:
# 查看代理清单
curl http://localhost:3000/.well-known/agent.json
# 列出入口点
curl http://localhost:3000/entrypoints
# 调用入口点(例如回声模板)
curl -X POST http://localhost:3000/entrypoints/echo/invoke \
-H "Content-Type: application/json" \
-d '{"input": {"text": "你好,Lucid Agents!"}}'
Lucid Agents是一个TypeScript单体仓库,旨在实现协议无关、多运行时代理部署,并采用组合扩展架构:
@lucid-agents/core)- 不含特定协议代码http()(HTTP协议)、payments()(x402)、wallets()(钱包管理)、identity()(ERC-8004)、a2a()(代理间通信)、ap2()(代理支付协议)核心运行时完全协议无关——如HTTP等协议作为扩展提供,合并到运行时中。未来协议(gRPC、WebSocket等)可以作为额外扩展添加。
有关详细的架构文档,包括依赖图、请求流和扩展系统设计,请参阅docs/ARCHITECTURE.md。
@lucid-agents/types - 所有包使用的共享类型定义@lucid-agents/core - 带扩展系统的协议无关代理运行时@lucid-agents/http - 处理请求/响应、流传输和SSE的HTTP扩展@lucid-agents/wallet - 代理和开发者钱包管理的SDK@lucid-agents/payments - 多网络支付处理的x402支付工具@lucid-agents/identity - 链上代理身份的ERC-8004工具包@lucid-agents/a2a - 代理间通信的A2A协议客户端@lucid-agents/ap2 - 用于代理卡片的AP2(代理支付协议)扩展@lucid-agents/hono - Hono HTTP服务器适配器@l_ucid-agents/express - Express HTTP服务器适配器@lucid-agents/tanstack - TanStack Start适配器(UI和无头变体)@lucid-agents/cli - 创建新代理项目的CLI搭建工具入口点:定义代理功能的类型化API端点。每个入口点都有:
适配器:暴露您的入口点为HTTP路由的运行时框架。根据您的部署需求选择:
hono - 轻量级、边缘兼容的HTTP服务器tanstack - 全栈React,带有UI仪表板(或仅API的无头变体)express - 传统的Node.js HTTP服务器next - Next.js应用路由器集成A2A通信:允许代理调用其他代理的代理间通信协议:
client.invoke()或client.stream()进行同步调用sendMessage()、状态跟踪和取消contextId将相关任务分组,适用于对话代理清单:自动生成的AgentCard(.well-known/agent-card.json),描述代理的能力、定价和身份,供发现工具和A2A协议使用。使用不可变组合模式构建。
支付网络:在以下网络上接受支付:
身份:用于声誉和信任的ERC-8004链上身份。注册一次,在所有网络中引用。
@lucid-agents/core协议无关代理运行时,带扩展系统。
import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
import { z } from 'zod';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
description: '我的第一个代理',
})
.use(http())
.build();
agent.entrypoints.add({
key: 'greet',
input: z.object({ name: z.string() }),
async handler({ input }) {
return { output: { message: `你好,${input.name}!` } };
},
});
@lucid-agents/hono用于构建传统HTTP服务器的Hono适配器。
import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
import { createAgentApp } from '@lucid-agents/hono';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(http())
.build();
const { app, addEntrypoint } = await createAgentApp(agent);
// 添加入口点...
// 导出供Bun.serve使用或使用Hono serve辅助
export default {
port: Number(process.env.PORT ?? 3000),
fetch: app.fetch,
};
@lucid-agents/tanstack带有UI和无头变体的TanStack Start适配器。
import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
import { createTanStackRuntime } from '@lucid-agents/tanstack';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(http())
.build();
export const { runtime: tanStackRuntime, handlers } =
await createTanStackRuntime(agent);
@lucid-agents/http用于请求/响应处理、流传输和Server-Sent Events的HTTP扩展。
import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(http({ landingPage: true }))
.build();
// 通过agent.handlers访问HTTP处理器
@lucid-agents/identity用于链上身份、声誉和验证的ERC-8004工具包。
import { createAgent } from '@lucid-agents/core';
import { wallets } from '@lucid-agents/wallet';
import { walletsFromEnv } from '@lucid-agents/wallet';
import { createAgentIdentity } from '@lucid-agents/identity';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(wallets({ config: walletsFromEnv() }))
.build();
const identity = await createAgentIdentity({
runtime: agent,
domain: 'my-agent.example.com',
autoRegister: true, // 如果不存在则在链上注册
});
@lucid-agents/payments用于多网络支付处理的x402支付工具。
import { createAgent } from '@lucid-agents/core';
import { payments } from '@lucid-agents/payments';
import { paymentsFromEnv } from '@lucid-agents/payments';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(payments({ config: paymentsFromEnv() }))
.build();
// 自动检测EVM与Solana,取决于PAYMENTS_RECEIVABLE_ADDRESS格式
@lucid-agents/a2a用于代理间通信的A2A协议客户端。
import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
import { a2a } from '@lucid-agents/a2a';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(http())
.use(a2a())
.build();
// 通过agent.a2a访问A2A客户端
const result = await agent.a2a.client.invoke(
'https://other-agent.com',
'skillId',
{
input: 'data',
}
);
@lucid-agents/ap2用于代理卡片的AP2(代理支付协议)扩展。
import { createAgent } from '@lucid-agents/core';
import { ap2 } from '@lucid-agents/ap2';
const agent = await createAgent({
name: 'my-agent',
version: '1.0.0',
})
.use(ap2({ roles: ['merchant'] }))
.build();
@lucid-agents/wallet用于代理和开发者钱包管理的SDK。
import { createAgentWallet } from '@lucid-agents/wallet';
const wallet = await createAgentWallet({
type: 'local',
privateKey: process.env.AGENT_WALLET_PRIVATE_KEY,
});
@lucid-agents/cli用于使用模板和交互式配置搭建新代理项目的CLI。
# 交互模式
bunx @lucid-agents/cli
# 带选项
bunx @lucid-agents/cli my-agent \
--adapter=tanstack-ui \
--template=axllm \
--non-interactive
每个包都包含详细的API文档、环境变量参考和工作示例。
这里是一个完整的示例,展示了身份、支付和LLM集成以及流传输:
import { z } from 'zod';
import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
import { wallets } from '@lucid-agents/wallet';
import { walletsFromEnv } from '@lucid-agents/wallet';
import { payments } from '@lucid-agents/payments';
import { paymentsFromEnv } from '@lucid-agents/payments';
import { identity, identityFromEnv } from '@lucid-agents/identity';
import { createAgentApp } from '@lucid-agents/hono';
import { AI } from '@ax-llm/ax';
// 1. 初始化LLM
const ai = new AI({
provider: 'openai',
apiKey: process.env.OPENAI_API_KEY,
});
// 2. 使用所有扩展构建应用(身份扩展会自动处理ERC-8004注册)
const agent = await createAgent({
name: 'ai-assistant',
version: '1.0.0',
description: '具有链上身份和流传输响应的AI助手',
image: 'https://my-agent.example.com/og-image.png',
})
.use(http())
.use(wallets({ config: walletsFromEnv() }))
.use(payments({ config: paymentsFromEnv() }))
.use(identity({ config: identityFromEnv() }))
.build();
const { app, addEntrypoint } = await createAgentApp(agent);
// 4. 添加带有流传输的付费入口点
addEntrypoint({
key: 'chat',
description: '与AI助手聊天',
input: z.object({
message: z.string(),
history: z
.array(
z.object({
role: z.enum(['user', 'assistant']),
content: z.string(),
})
)
.optional(),
}),
streaming: true,
async stream(ctx, emit) {
const messages = [
...(ctx.input.history || []),
{ role: 'user' as const, content: ctx.input.message },
];
const stream = await ai.chat.stream({ messages });
for await (const chunk of stream) {
await emit({
kind: 'delta',
delta: chunk.delta,
mime: 'text/plain',
});
}
return {
output: { completed: true },
usage