# @aryasaatvik/motel 中文文档

规范地址：https://npmcn.com/package/%40aryasaatvik/motel/

版本：0\.5\.10
npm 元数据更新时间：2026-11-04T08:26:57.916Z
中文译文更新时间：2026-11-06T21:52:35.300Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40aryasaatvik/motel
原文对照：https://npmcn.com/package/%40aryasaatvik/motel/?lang=original
项目主页：https://github.com/aryasaatvik/motel#readme
源码仓库：https://github.com/aryasaatvik/motel

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

- 包体积（解压后）：1.5 MB，108 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：18 个
- 首次发布：2026-07-25T20:47:34.407Z
- 最新版本发布：2026-11-04T08:26:57.412Z
- 近 30 天下载量：2943（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 18 个）

## 中文简介

一个本地OpenTeleometry 摄入 + TUI 查看器用于开发,由 SQLite 支持.

## 安装

```sh
npm install @aryasaatvik/motel
```

也可以使用：`pnpm add @aryasaatvik/motel`、`yarn add @aryasaatvik/motel`、`bun add @aryasaatvik/motel`

## README

# 汽车旅馆

本地 OpenTeleometry 摄入 + TUI 浏览器用于开发, 由 SQLite (英语). 将您的应用程序的 OTLP/ HTTP 导入到本地的汽车旅馆服务器 并调试实时证据——来自终端,内置网络 UI,或直接取自AI编码代理.

## 对于代理商:安装汽车旅馆调试技能

`motel` 教授克洛德密码 OpenCode的伴奏技巧, 光标、 Codex 和 40 + 其他代理 如何调试运行时的证据 通过查询汽车旅馆的本地OTLP商店。 安装一次,任何未来 项目中的代理会话将知道如何使用它.

```bash
# Project-local (adds to .claude/skills, .agents/skills, etc.)
npx skills add aryasaatvik/motel --skill motel-debug

# Or globally, for every project
npx skills add aryasaatvik/motel --skill motel-debug -g
```

见全能在 [`skills/motel-debug/SKILL.md`](https://npmcn.com/package/%40aryasaatvik/motel/skills/motel-debug/SKILL.md)。 。 。 .

## 对人类:安装和运行TUI

汽车旅馆在npm上发行 `@aryasaatvik/motel`二进制是一个 Bun 剧本,所以Bun一定在你身上 `PATH` 运行时间 :

```bash
# one-off (no install)
bunx @aryasaatvik/motel

# or install globally
bun add -g @aryasaatvik/motel
motel

# npm also works (Bun still required to run it)
npm install -g @aryasaatvik/motel
```

没有邦?

```bash
curl -fsSL https://bun.sh/install | bash -s "bun-v1.4.4"
```

`motel` 启动本地 OTLP 摄入服务器 `http://127.0.0.1:27686` 并发射TUI. 新闻 `?` 一次进去 键盘作弊表,或 `c` 复制粘贴准备设置指令 用于任何您想要跟踪的效果/OTEL应用程序.

所需经费: [阿宝](https://bun.sh/) 匹配 `package.json` `engines.bun` (单位:千美元)`>=1.4.4`) (中文(简体) ).

### macOS 服务从维护的退出

每个用户的发射代理 `~/.bun/bin/bun ~/.bun/bin/motel server`。用于保持核对 安装、准备和链接合并 `dev` 安装前退出 服务:

```bash
bun install --frozen-lockfile
bun run web:build
bun link
motel service install
```

此服务路径不会发现 npm- global 或任意 `PATH` 可执行文件 . `motel service install` 验证两个稳定的 Bun bin 路径 写入或装入发射代理。 重新运行它留下一个等效的加载 服务不变并加载当前相同的定义 已经卸下.

保留设置( `MOTEL_OTEL_RETENTION_*` 财务报告和审定财务报表 `MOTEL_OTEL_MAX_DB_SIZE_MB` 变量)在安装环境中设置为 写入发射代理。 替换保存已安装的保留值 安装环境没有设置,以及 `motel service status` 报告 与已安装的值不同的请求值为 `EnvironmentVariables.<name>` 漂移 :

```bash
MOTEL_OTEL_MAX_DB_SIZE_MB=4096 motel service install --replace
```

## 您的应用程序如何连接

一旦汽车旅馆开业,请将您的应用程序的 OTLP/HTTP 出口商指向这些 本地端点 :

```
http://127.0.0.1:27686/v1/traces
http://127.0.0.1:27686/v1/logs
```

Motel将一切保存在一个机器全球本地SQLite数据库中 `${XDG_STATE_HOME:-~/.local/state}/motel/telemetry.sqlite`一个管理 守护进程在本地项目中共享 。 无多克,无云帐.

该店默认保留了7天的遥测,目标为1GB 使用边框背景批次的活数据上限。 保存最近的数据时 最古老的完成的痕迹和日志先被取出。 配置策略 与 `MOTEL_OTEL_RETENTION_HOURS`, (中文(简体) ), `MOTEL_OTEL_MAX_DB_SIZE_MB`, (中文(简体) ), `MOTEL_OTEL_RETENTION_TRACE_BATCH`, (中文(简体) ), `MOTEL_OTEL_RETENTION_ROW_BATCH`, (中文(简体) ), `MOTEL_OTEL_RETENTION_LOG_BATCH`,以及 `MOTEL_OTEL_RETENTION_INTERVAL_SECONDS`。 。 。 . 未创建的现有数据库 增量自动真空在启动时永远不会默写; 删除页面 重新使用,但缩小这样的历史文件需要明确的离线 SQL 点 `VACUUM` 由用户选择.

## 配置

装入的过程 `src/config.ts` 解析一个基础 URL,顺序为 : `MOTEL_OTEL_BASE_URL`, (中文(简体) ), `MOTEL_OTEL_QUERY_URL`, (中文(简体) ), `MOTEL_OTEL_COLLECTOR_URL`, (中文(简体) ), 接下来 `http://127.0.0.1:27686`。查询 URL 是该基础 URL。 主机是 `MOTEL_OTEL_HOST`,或基址主机名。 端口为 `MOTEL_OTEL_PORT` 何时 它是一个正整数,否则就是基准 URL 端口,否则就是80。 追踪 和日志导出者 URL 默认为该基数 `v1/traces` 财务报告和审定财务报表 `v1/logs`。 。 。 .

`motel start`,而TUI发射的守护进程,则构建收听地址 从 `MOTEL_OTEL_BASE_URL`,则 `MOTEL_OTEL_QUERY_URL`,则 `http://127.0.0.1:27686`. 缺失的港口变为27686个. 产入的服务器 接收该收听地址作为其基础 URL,查询 URL,主机,端口,以及 出口国 URL( 听取源头加 `/v1/traces` 财务报告和审定财务报表 `/v1/logs`) (中文(简体) ). 这个 数据库文件分别解决 : `MOTEL_OTEL_DB_PATH`,或 `telemetry.sqlite` 在运行时目录中.

整数设置将空白的,非数字的,非正值视为未设置. `MOTEL_OTEL_QUERY_CAPACITY` 上限为64和 `MOTEL_OTEL_QUERY_DEADLINE_MS` 在三万块.

| 变量 | 默认 | 它会做什么 |
| --- | --- | --- |
| `MOTEL_OTEL_BASE_URL` | `http://127.0.0.1:27686` | 解析了基础 URL并查询 URL. 以上倒数第一选择. |
| `MOTEL_OTEL_QUERY_URL` | 未设定 | 基准 URL 当 `MOTEL_OTEL_BASE_URL` 未设定。 查询 URL 等于 已解决的基址 . |
| `MOTEL_OTEL_COLLECTOR_URL` | 未设定 | 只有当上面两个URL都未被设置时,才建立基础 URL 。 管理中的守护进程未使用 . |
| `MOTEL_OTEL_HOST` | 基础 URL 主机名( R)`127.0.0.1`(中文(简体) ) | 主机名 服务器绑定 . |
| `MOTEL_OTEL_PORT` | 基准 URL 端口( R)`27686`(中文(简体) ) | 端入服务器绑定 . `src/config.ts` 当 URL 没有端口时使用 80; 管理守护进程使用 27686. |
| `MOTEL_OTEL_SERVICE_NAME` | `motel-otel-tui` | 汽车旅馆自己的出口商和CLI默认服务上的名字. 一个非空白值也是TUI的初始服务. 布兰克保留了记忆中的TUI服务. |
| `MOTEL_OTEL_ENABLED` | `false` | 从TUI和CLI出口汽车旅馆自己的痕迹和日志. 白兰地, `0`, (中文(简体) ), `false`, (中文(简体) ), `no`,以及 `off` 关闭; 任何其他值打开. |
| `MOTEL_OTEL_EXPORTER_URL` | 基础 URL + `/v1/traces` | 在那些自出口的岗位上. |
| `MOTEL_OTEL_LOGS_EXPORTER_URL` | 基础 URL + `/v1/logs` | 那边有自出品记录. |
| `MOTEL_RUNTIME_DIR` | `${XDG_STATE_HOME:-~/.local/state}/motel` | 状态目录:默认数据库,守护进程日志,锁定和实例注册. |
| `MOTEL_OTEL_DB_PATH` | `$MOTEL_RUNTIME_DIR/telemetry.sqlite` | SQLite 文件 (中文(简体) ). 每台机器一个共享数据库,除非设置此数据库 . |
| `MOTEL_URL` | 未设定 | MCP客户端的基础URL. 设定时,发现使用它而不是实例登记. |
| `MOTEL_OTEL_TRACE_LOOKBACK_MINUTES` | `1440` | 年龄窗口,在几分钟内, 用于服务发现 和存储查询, 忽略回放。 HTTP 列表和搜索路径发送自己的 `lookback` (默认为60分,最高为1440分). |
| `MOTEL_OTEL_TRACE_LIMIT` | `100` | 追踪 TUI 和 CLI 追踪命令, 省略一个限制 。 HTTP 列表路由自发 `limit`。 。 。 . |
| `MOTEL_OTEL_LOG_LIMIT` | `80` | TUI服务日志的日志计数,TUI追踪日志,以及CLI日志命令. HTTP 日志路径自发 `limit`。 。 。 . |
| `MOTEL_OTEL_QUERY_CAPACITY` | `8` (最多64个) | 每次运行时未完成的只读查询 。 过载为 HTTP 503 `QUERY_OVERLOADED`。 。 。 . |
| `MOTEL_OTEL_QUERY_DEADLINE_MS` | `5000` (最多300 000美元) | 一个只读查询的队列加启动截止日期 。 过期为 HTTP 504 `QUERY_DEADLINE`。 。 。 . |
| `MOTEL_OTEL_RETENTION_HOURS` | `168` | 对已完成的痕迹和原木进行年龄限制. |
| `MOTEL_OTEL_MAX_DB_SIZE_MB` | `1024` | MB 中的活动数据目标 : `(page_count - freelist_count) * page_size`。不是硬文件大小的盖. |
| `MOTEL_OTEL_RETENTION_TRACE_BATCH` | `100` | 完成的痕迹标记每个清理通道. |
| `MOTEL_OTEL_RETENTION_ROW_BATCH` | `1000` | 每个清理通道删除行,分出痕迹和日志. 捆起行数,不是一地大小. |
| `MOTEL_OTEL_RETENTION_LOG_BATCH` | `5000` | 每个清理通道标记的日志. |
| `MOTEL_OTEL_RETENTION_INTERVAL_SECONDS` | `10` | 闲取清净通后延. 清理工作仍在取得进展,等待100毫秒. |

## 代理连接方式

特工与 `motel-debug` 已安装的技能将自动使用 汽车旅馆的HTTP API。 完整的 OpenAPI 光谱在 `http://127.0.0.1:27686/openapi.json` -关键终点是:

```
GET /api/health                              liveness check
GET /api/services                            services reporting telemetry
GET /api/traces?service=<service>            recent traces for a service
GET /api/traces/<trace-id>                   full trace tree
GET /api/spans/<span-id>                     single span + logs
GET /api/logs?service=<service>              recent logs
GET /api/traces/search?...                   structured trace search
GET /api/logs/search?...                     structured log search
GET /api/ai/calls                            AI SDK call inspector
```

## TUI 密钥

-   `?` 键盘作弊表
-   `j` 编号 : `k` 或者说 `↑` 编号 : `↓` ——移动选择
-   `enter` 编号 : `esc` - 钻入/后出(跟踪-瀑布-跨度细节)
-   `[` 编号 : `]` ——开关服务
-   `tab` 切换服务日志
-   `/` - 过滤器痕迹
-   `s` 周期类型(最近) 出错
-   `t` --周期主题
-   `c` ——复制另一应用程序的粘贴准备设置指令
-   `o` ——在浏览器中打开所选的跟踪
-   `q` ——退出

## 隐私说明

汽车旅馆是本地开发工具 但你的应用可以发出敏感的信号 遥测. 相关日志可能包括秘密、标志或PII,如果您 app登录它们;AI调用痕迹可能包含全部即时内容并 响应文本。 将本地 SQLite 商店视为敏感开发 数据当指汽车旅馆 真正的工作量.

### 摄取准备

`GET /api/health` 报告处理身份和活性. `GET /api/readiness` 报告已缓存 不查询 SQLite 或加入摄取队列的写入诊断 。 它返回 HTTP 200块 `ready`,503用于 `starting`, (中文(简体) ), `overloaded`,或 `failed`。 。 。 . `motel status` 包括这个 当守护进程支持它时快照; 旧服务器仍然兼容 .

`overloaded` 表示等待请求至少5秒或至少64个请求 成绩突出。 这是一个压力信号,而不是重新启动一个共享守护进程的指示. 浪费时间并不意味着失败. `failed` 需要操作员 检查。 未完成的计数/字节描述等待呼叫者,而非持久排队的数据; 客户端取消无法取消 SQLite 承诺 。 空探测器不推进 `lastCommitAt`。 。 。 . 维护报告其最近的运行、持续时间和结果,没有遥测有效载荷.

运行 `bun scripts/bench-shared-daemon.ts` 或增加 `--1gib` 代表能力简介。 创建和移除自己的数据库, 包括一个持有的阅读器,以及报告要求的延迟百分位数、故障和数据库/WAL大小. 它们从未将共享的机器全球数据库作为基准.

同时期开始在原子上发布完整的共享锁. 确保行动维持生命 摄入缓慢时守护进程; 明确的操作员恢复仍然可以通过 `motel restart`。 。 。 . 无法读取的锁或中断的 Stale-lock 恢复失败并报告检查路径. 当维修作业重叠时,准备状态显示在完成作业之前运行时间最早的状态.

保留标记在去除所依赖行之前完成了痕迹和过期日志. 公开查询 结果隐藏了整个标记的痕迹,包括相关的日志,同时有限定的清理收益. 标记在重启时持续。 作为驱逐的一部分,有标记的痕迹的抵达被丢弃 而不计为插入的记录;一旦清理完成,后期导出可能会再创建该跟踪. 未选择活动跟踪 。 SQLite表是内部存储;直接的SQL消费者应该 使用该 `retained_spans`, (中文(简体) ), `retained_logs`,以及 `retained_trace_summaries` 查看此可见规则.

`MOTEL_OTEL_RETENTION_ROW_BATCH` 每个清理批次默认为 1000 个逻辑行, 分拆 痕迹和日志。 它约束了行中枢,而不是一个遥测场的大小. 清理产量 批次间100 ms在进展时,然后返回所配置的闲置间隔. 例行检查站使用PASSIVE,报告忙碌/机身清点情况;实际开垦 被搁置的读者被推迟。 配置的数据库目标和WAL大小限制不是硬盖. 现有无主属性/ FTS 条目用有边框的密钥集扫描进行修复; 正常摄入 维护用于索引清理的反向 FTS 映射.

查询一次使用一个只读的子进程, FIFO 录取上限为8个未完成 默认请求( e)`MOTEL_OTEL_QUERY_CAPACITY`,最多64个). 五秒期限包括: 队列和启动时间( t)`MOTEL_OTEL_QUERY_DEADLINE_MS`,最高为3000. 超载返回 HTTP 503 与 `code: "QUERY_OVERLOADED"`; 过期返回 504 与 `code: "QUERY_DEADLINE"`; 进程失败 返回 503 与 `code: "QUERY_UNAVAILABLE"`。成功的响应形状保持不变.

取消或到期执行查询终止其只读进程并等待退出 在发送下一个查询之前。 SQLite 运行在进程内部的线程中, 所以是一个 IPC 拥有者 如果守护进程或TUI死亡,断开也可以终止它. 摄取自有分作一工. HTTP闲置超时超过查询截止日期5秒. TUI 刷新飞行中的份额 负载、 过时的选项丢弃结果, 以及两个键的正面值按顺序排列 .

## 常见问题

### @aryasaatvik/motel 是什么？

一个本地OpenTeleometry 摄入 \+ TUI 查看器用于开发,由 SQLite 支持\.

### 如何安装 @aryasaatvik/motel？

在项目目录运行 npm install @aryasaatvik/motel，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 motel、motel-mcp，可以用 npx motel 直接运行。

### @aryasaatvik/motel 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/aryasaatvik\_\_motel 是否存在。

### @aryasaatvik/motel 支持 ESM 还是 CommonJS？

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

### @aryasaatvik/motel 可以商用吗？

@aryasaatvik/motel 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @aryasaatvik/motel 的下载量有多少？

根据 npm 官方下载统计，@aryasaatvik/motel 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,943 次，日均约 98 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aryasaatvik/motel 还在维护吗？

最新版本 0\.5\.10 发布于 2026/11/04（3 天前）；至今共发布 18 个版本，其中过去 12 个月发布了 18 个；首次发布于 2026/07/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

