机器商业运行时

Lucid是一个TypeScript运行时,用于将类型化函数转换为可发现的服务,供代理和应用程序调用、支付、流式处理或作为任务运行。适用于需要多种类型化功能或跨框架共享行为的服务。

  • by daydreamsai
  • TypeScript
  • 本地部署
  • 202 星标
  • 更新于
在 GitHub 查看 daydreamsai/lucid-agents

使用说明

Machine commerce, made clear.
The TypeScript runtime for machine commerce.

Lucid将类型化函数转化为可发现的服务 应用程序可以调用、付费、流式传输或作为任务运行。它提供了一个 模式运行时、支付许可、策略、幂等性、履行、, 钱包、支付协议、网络和 主持人仍然是外部的。

当服务需要多个类型化功能或共享行为时,使用Lucid 跨框架。对于单一付费路线,上游支付中间件可能 依赖性较小。

从你的编码代理开始

使用Lucid的主要方式是通过一个能够理解的编码代理 运行时、包、发布通道和适配器边界。从运行此 在将第一个Lucid任务交给代理之前,您的项目根:

curl -fsSL https://docs.daydreams.systems/skills/lucid-agents/install.sh | sh

重新加载您的代理,让它使用 lucid-agents 技能,让它检查 编辑前的项目。安装程序验证版本化的技能档案 不安装npm包或修改应用程序源代码;看 技能安装指南 有关手动校验和流程和删除说明。

快速开始

需要Bun 1.3+。运行时包还支持Node.js 20.9+。

bunx @lucid-agents/cli@2.5.0 my-agent --adapter=hono --template=blank
cd my-agent
bun install
bun run dev

生成的服务公开运行状况、发现和类型 echo 入口点:

curl http://localhost:3000/health
curl http://localhost:3000/.well-known/agent-card.json
curl -X POST http://localhost:3000/entrypoints/echo/invoke \
  -H 'Content-Type: application/json' \
  -d '{"input":{"text":"Hello"}}'

公共npm包是 稳定 频道。此存储库是 下一步 和 可以领先于npm。将所有包裹放在一个频道上;看见 释放通道 对于当前的兼容性表。

核心api

此示例使用当前存储库界面:

import { createAgent } from '@lucid-agents/core';
import { createAgentApp } from '@lucid-agents/hono';
import { http } from '@lucid-agents/http';
import { z } from 'zod';

const runtime = await createAgent({
  name: 'greeter',
  version: '1.0.0',
  description: 'A typed greeting service',
})
  .use(http())
  .addEntrypoint({
    key: 'greet',
    input: z.object({ name: z.string().min(1) }),
    output: z.object({ message: z.string() }),
    handler: async ({ input }) => ({
      output: { message: `Hello, ${input.name}` },
    }),
  })
  .build();

const { app } = await createAgentApp(runtime);

export default {
  port: Number(process.env.PORT ?? 3000),
  fetch: app.fetch,
};

入口点定义是验证、调用、流式传输的来源, 任务、发现和每个框架适配器。

编译 完整代理示例 添加 支付、身份和流媒体。

特征矩阵

下面的包名称使用 @lucid-agents/ 前缀。

能力 涉及的包 它们提供了什么
键入运行时 core, types 扩展生命周期、精确的运行时类型和一个入口点注册表
超文本传输协议 http 获取处理程序、路由规划、授权、幂等性、服务器发送事件(SSE)和服务页面数据
x402商业 payments 以太坊虚拟机(EVM)和Solana卖家验证、EVM购买、Sign-In-With-X(SIWX)、策略和跟踪
机器支付协议(MPP) mpp 支付认证挑战和Tempo、Stripe或自定义凭证验证
钱包 wallet 用于签名和拨打电话的代理和开发人员钱包连接器
身份 identity, wallet ERC-8004注册和查找、信任元数据和 开放代理模式框架(OASF) 输出
代理发现和任务 a2a 代理卡形发现、客户端调用和受令牌保护的异步任务
代理支付协议(AP2)元数据 ap2 发现中的AP2 v0.1角色元数据
分析 analytics, payments 绑定付款摘要和JSON/CSV导出
日程安排 scheduler, a2a 租用的幂等调度代理呼叫
目录 catalog YAML/CSV定义的入口点
框架 hono, express, tanstack 将规范HTTP合约绑定到Hono、Express或TanStack Start
工装 cli, deploy 项目生成和受保护的提供商部署
托管客户端 api-sdk 为单独操作的托管运行时API生成的客户端

CLI生成Hono、Express、TanStack UI/headless和Next.js项目。 Next.js使用生成的App Router模块,而不是独立的适配器 包裹。看 包装参考 用于开源导出、配置和运行时支持。这个 api-sdk 有a 独立生命周期.

矩阵中的协议名称描述了Lucid实现的子集,而不是包罗万象的子集 一致性。看 协议兼容性 用于版本、绑定和排除。

运行期模型

typed entrypoint
      ↓
core registry + domain extensions
      ↓
one HTTP authorization and route contract
      ↓
Hono | Express | TanStack Start | generated Next.js routes

包装边界是经过深思熟虑的:

  • types 拥有共享合同;每个域包都有自己的运行时行为。
  • Core直接公开扩展切片,无需包装器或重复状态。
  • 适配器绑定HTTP路由计划;他们不会添加另一个付费墙或注册表。
  • 内存状态是可移植的默认状态;耐用的后端是明确的。

阅读 架构指南 对于扩展订购, 授权、任务所有权、部署边界和可移植性。

指南

目标 指南
决定Lucid是否适合 何时使用Lucid
构建付费服务 出售付费API
建立一个受控的买家 预算买家
将Lucid添加到应用程序中 现有应用程序
准备生产 生产检查表
浏览测试示例 示例

贡献

bun install --frozen-lockfile
bun run build:packages
bun run type-check
bun run lint
bun run test:coverage

将更改保留在拥有行为的包中。添加或 修改SDK表面需要单元或集成覆盖,匹配示例冒烟 测试,更新相关内容 AGENTS.md 和包README,公共API JSDoc, 以及变更集。共享概念属于 @lucid-agents/types;不要 通过另一个包裹复制或重新导出它们。跑 bun run test:docs 更改公共示例、包引用或文档导航时。

看 贡献.md 对于开发工作流程,测试 命令、拉取请求清单和发布过程。

许可证

麻省理工学院