# @mottyjs/serve 中文文档

规范地址：https://npmcn.com/package/%40mottyjs/serve/

版本：0\.2\.0
npm 元数据更新时间：2026-11-01T21:54:07.501Z
中文译文更新时间：2026-11-01T22:35:40.330Z
软件包许可：Apache-2\.0

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40mottyjs/serve
原文对照：https://npmcn.com/package/%40mottyjs/serve/?lang=original
项目主页：https://github.com/skrrt-sh/motty-sdk/tree/main/packages/serve#readme
源码仓库：https://github.com/skrrt-sh/motty-sdk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：809 kB，276 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-10-11T18:52:34.766Z
- 最新版本发布：2026-11-01T21:54:07.186Z
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

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

## 安装

```sh
npm install @mottyjs/serve
```

也可以使用：`pnpm add @mottyjs/serve`、`yarn add @mottyjs/serve`、`bun add @mottyjs/serve`

## README

# @mottyjs /服务

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

```sh
bun add @mottyjs/serve
```

```ts
import { mount, serve } from "@mottyjs/serve";
```

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

```ts
// 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));
```

```ts
// 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:*` 外部进口。

```ts
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`：

```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作为一个整体在 [根的自述](https://github.com/skrrt-sh/motty-sdk#readme)，以及其设计背后的原因 [ARCHITECTURE.md](https://github.com/skrrt-sh/motty-sdk/blob/main/ARCHITECTURE.md).

## 常见问题

### @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 和提交记录判断。

