@mottyjs/serve

中文文档
0.2.0发布于 2026/11/02Apache-2.0TypeScriptES Module构建来源已验证

motty的主机端:在Bun或Cloudflare Workers上将其作为聊天完成、响应和消息api的模型。

中文使用文档

@mottyjs /服务

Motty SDK的主机端。 serve(motty, options) 用于服务文件,其默认导出是 面包开始; mount(motty, options) 返回 fetch 和 close 对于有服务器的主机 它自己的,在Bun或Cloudflare Workers上。两者都将motty作为聊天完成的模型, 响应和消息api。这个包从来没有在motty's bundle中。

bun add @mottyjs/serve
import { mount, serve } from "@mottyjs/serve";

需要调用者及其服务文件的motty。键从环境中读取 和主人待在一起。这个 auth 适配器只能证明来电者是谁,所以没有 .use(auth()) 对任何人都适用,不管适配器怎么说。主机警告没有编号的适配器 auth(),及 auth() 没有适配器,其中每个调用者都获得401,除非主机声明调用者。在包 警告在开始时写入。在Workers上,它在第一次请求时写入该挂载,一次。 因为Worker在全局范围内写入的内容不会产生日志。

// src/motty.ts
import { auth } from "@mottyjs/auth";
import { model, motty } from "@mottyjs/core";

export default motty({ name: "coder" })
  .use(auth())
  .handle(({ prompt }) => model("openai/gpt-6.1-sol").complete(prompt));
// src/serve.ts
import { serve } from "@mottyjs/serve";
import { anthropic } from "@mottyjs/adapters/anthropic";
import { jwt } from "@mottyjs/adapters/jwt";
import { openai } from "@mottyjs/adapters/openai";
import { redis } from "@mottyjs/adapters/redis";
import coder from "./motty";

export default serve(coder, ({ OPENAI_KEY, ANTHROPIC_KEY, REDIS_URL, JWKS_URL }) => ({
  models: [
    openai({ key: OPENAI_KEY }),
    anthropic({ key: ANTHROPIC_KEY }),
  ],
  storage: redis({ url: REDIS_URL }),
  auth: jwt({ jwks: JWKS_URL }),
  limits: { duration: 120_000, calls: 10, afterResponse: 30_000 },
  report: (record) => console.log(JSON.stringify(record)),
}));

每个时间都以毫秒为单位,每个大小都以字节为单位。请求体最多为 limits.body, 32mb,除非特别说明,并且具有边缘 receive 到达,6万,除非在第三部分中说明 旁边的论点 keepAlive 和 drain: serve(coder, options, { receive: 30_000 }). 每一个极限 每次制作主机时都会检查边缘的位置。每个请求的回复都是 Let in带有它的报告id in x-request-id 在两个OpenAI api和 request-id 在消息。

没有 report,失败的记录被写入stderr,凭据被屏蔽。这涵盖了 主机端的失败,5xx,上游的拒绝和适配器没有服务的名称。A 4xx。 莫蒂自己给了,打电话的人什么也没写。一个 report 那扔或拒绝是写的太,与失败的 记录它丢失了。掩蔽学到了一个未知形状的秘密从它的价值 process.env,如果是的话 value至少有8个字符,所以它依赖于Workers nodejs_compat 具有兼容性 日期为2025-04-01或之后,即填充日期 process.env.

主机还会在开始时拒绝没有路由或句柄的motty、错误的设置覆盖和设置 组鼠没有。异步模式的结论只作为挂载写入stderr 立即返回,并且在Workers上,在start期间来的一个等待第一个请求 警告。

在开发中,使用 bun --watch src/serve.ts“例子” bun run dev. 无论何时motty或文件被删除,Bun都会在相同的端口上再次启动该过程 导入会更改,因此下一个请求将在大约0.1到0.3秒后由新代码响应。一个 未加载的编辑将打印其错误,并且在修复文件之前不监听任何内容, 当服务器自己返回时。这只用于开发:重新启动不会耗尽,并且 正在运行的请求被切断,因此已部署的主机直接运行服务文件。

安装托管

mount 采用与上面的服务文件相同的选项,这是环境的一个函数。在 Worker环境只保存一次Worker的绑定 nodejs_compat 是开着的。 兼容日期为2025-04-01或更高;日期较早的则为空。

在Cloudflare Workers中,挂载是模块的默认导出。的第三个论点 fetch 有 Workers执行上下文的形状,因此每个记录都等待通过 ctx.waitUntil 没有主人的密码。打开 nodejs_compat 和 enable_request_signal 旗帜,第二个,这样离开的来电者就会被注意到。捆绑者其他的 那么牧马人必须离开 node:* 外部进口。

export default mount(coder, options);

已经通过身份验证并对请求进行编号的主机在第三个参数中声明, fetch(request, undefined, { id, caller, waitUntil }),并且不会询问验证适配器。这个 namespace 选项将每个存储的键前缀放在moty名称的位置,因此两个moty是一个 当每个名称空间都被赋予自己的名称空间时,名称共享存储保持分开。 report 可以返回a。 承诺,记录就会被等待,直到尘埃落定。

通过AI SDK集调用响应API的调用者 providerOptions.openai.store 来 false, 因为motty在服务器上没有保持响应状态,并且拒绝响应 item_reference.

克劳德代码流量通过一个motty与Anthropic上游被计费到主机的密钥为 Claude代码用法。交互式Claude代码拒绝的Anthropic键在 线束开始于 CLAUDE_CODE_ENTRYPOINT=sdk-cli.

Codex通过自己的供应商到达一个上游不是OpenAI的motty 响应API,在its config.toml:

model = "gpt-6.1-sol"
model_provider = "motty"
[model_providers.motty]
base_url = "http://127.0.0.1:3000/v1"
wire_api = "responses"
env_key = "MOTTY_KEY"

SDK作为一个整体在 根的自述,以及其设计背后的原因 ARCHITECTURE.md.

版本与发布记录

@mottyjs/serve 共发布 4 个版本,首次发布于 2026/10/12;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/11/021 天前
0.1.12026/10/1321 天前
0.1.02026/10/1222 天前
0.0.0-stage2026/10/1222 天前

关于 @mottyjs/serve 的常见问题

@mottyjs/serve 是什么?

motty的主机端:在Bun或Cloudflare Workers上将其作为聊天完成、响应和消息api的模型。

如何安装 @mottyjs/serve?

在项目目录运行 npm install @mottyjs/serve,或使用 pnpm add / yarn add / bun add。

@mottyjs/serve 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@mottyjs/serve 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@mottyjs/serve 可以商用吗?

@mottyjs/serve 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@mottyjs/serve 还在维护吗?

最新版本 0.2.0 发布于 2026/11/02(1 天前);至今共发布 4 个版本,其中过去 12 个月发布了 4 个;首次发布于 2026/10/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。