# @expressots/studio-agent 中文文档

规范地址：https://npmcn.com/package/%40expressots/studio-agent/

版本：4\.3\.0
npm 元数据更新时间：2026-09-13T06:14:02.742Z
中文译文更新时间：2026-11-14T05:41:43.166Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：941 kB，187 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20\.19\.0
- 运行依赖：8 个
- peer 依赖：@expressots/core \>=4\.0\.0-0
- 首次发布：2026-05-14T08:27:10.508Z
- 最新版本发布：2026-09-13T06:14:02.581Z
- 近 30 天下载量：189632（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

ExpressoTS Studio的仪器代理 -- -- 路线发现、追踪和请求记录

## 安装

```sh
npm install @expressots/studio-agent
```

也可以使用：`pnpm add @expressots/studio-agent`、`yarn add @expressots/studio-agent`、`bun add @expressots/studio-agent`

## README

# @ expressots/ studio- agent

ExpressoTS Studio的仪器代理 - 路线发现,追踪,和请求录音.

[![npm](https://img.shields.io/npm/v/@expressots%2Fstudio-agent?style=flat-square&color=181717&logo=npm&logoColor=white)](https://www.npmjs.com/package/@expressots/studio-agent) [![License](https://img.shields.io/github/license/expressots/expressots-studio?style=flat-square&color=181717)](https://github.com/expressots/expressots-studio/blob/main/LICENSE) [![Discord](https://img.shields.io/badge/Discord-join-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.com/invite/PyPJfGK) [![Build](https://img.shields.io/github/actions/workflow/status/expressots/expressots/ci.yml?branch=main&style=flat-square&logo=github&label=build)](https://github.com/expressots/expressots/actions)

## 特征

-   **路由发现**: 自动扫描您的 ExpressototS 应用程序以发现所有路径、 控制器和服务
-   **打开远程跟踪**: 带有自动仪器的完全分布式追踪
-   **请求记录**: 记录并重放 HTTP 调试请求
-   **WebSocket 通讯**: 实时更新到 Studio UI
-   **计量收藏**: P50/P95/P99 延迟率、误差率等

## 安装

```bash
npm install @expressots/studio-agent
```

## 快速启动

```typescript
import { StudioAgent } from "@expressots/studio-agent";

const agent = new StudioAgent({
  port: 3334,
  serviceName: "my-app",
  enableRecording: true,
});

// Start the agent
await agent.start();

// Use the middleware (optional, for request recording)
app.use(agent.createMiddleware());

// Get discovered routes
const routes = agent.getRoutes();

// Stop when done
await agent.stop();
```

## 配置

```typescript
interface AgentConfig {
  /** Port for the agent WebSocket server (default: 3334) */
  port: number;

  /** Path to store SQLite database (default: '.studio/studio.db') */
  dbPath: string;

  /** Enable request/response recording (default: true) */
  enableRecording: boolean;

  /** Maximum number of recorded exchanges to keep (default: 1000) */
  maxRecordedExchanges: number;

  /** Enable performance profiling (default: true) */
  enableProfiling: boolean;

  /** Sample rate for tracing 0-1 (default: 1.0) */
  traceSampleRate: number;

  /** Custom service name (default: 'expressots-app') */
  serviceName: string;

  /** Express app instance for runtime route scanning */
  expressApp?: any;
}
```

## 构成部分

### 工作室代理员

协调所有功能的主管弦乐手.

### 路由扫描器

扫描 TypeScript 源文件以发现路径及其元数据 :

```typescript
import { RouteScanner } from "@expressots/studio-agent";

const scanner = new RouteScanner("./src");
const structure = await scanner.scan();

console.log(structure.controllers);
console.log(structure.services);
console.log(structure.dependencies);
```

### 请求记录

记录 HTTP 以后重播的请求/答复 :

```typescript
import { RequestRecorder } from "@expressots/studio-agent";

const recorder = new RequestRecorder(".studio/studio.db");
await recorder.initialize();

// Get recent exchanges
const exchanges = recorder.getRecentExchanges(100);

// Search by path
const results = recorder.searchExchanges("/api/users", "GET");
```

### 工作室追踪器

带有自定义跨度处理的 OpenTeleometry 跟踪器 :

```typescript
import { StudioTracer } from "@expressots/studio-agent";

const tracer = new StudioTracer("my-service");
await tracer.start((trace) => {
  console.log("Trace completed:", trace.traceId);
});

// Create custom spans
await tracer.createSpan(
  "my-operation",
  async () => {
    // Your code here
  },
  { attribute: "value" },
);
```

## WebSocket 事件

代理向连接客户端发送实时事件 :

| 活动 | 说明 |
| --- | --- |
| `routes` | 已发现路线 |
| `trace` | 已完成追踪 |
| `request` | 记录的新请求 |
| `metrics` | 更新的衡量标准 |
| `structure` | 应用结构 |

## 许可证

麻省理工学院

## 常见问题

### @expressots/studio-agent 是什么？

ExpressoTS Studio的仪器代理 -- -- 路线发现、追踪和请求记录

### 如何安装 @expressots/studio-agent？

在项目目录运行 npm install @expressots/studio-agent，或使用 pnpm add / yarn add / bun add。

### @expressots/studio-agent 支持 TypeScript 吗？

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

### @expressots/studio-agent 支持 ESM 还是 CommonJS？

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

### @expressots/studio-agent 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20\.19\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @expressots/studio-agent 可以商用吗？

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

### @expressots/studio-agent 的下载量有多少？

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

### @expressots/studio-agent 还在维护吗？

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

