# @elementor/angie-sdk 中文文档

规范地址：https://npmcn.com/package/%40elementor/angie-sdk/

版本：1\.10\.1
npm 元数据更新时间：2026-11-09T10:33:00.361Z
中文译文更新时间：2026-11-13T12:06:22.914Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：328 kB，53 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：2 个
- peer 依赖：@modelcontextprotocol/sdk \>=1\.27\.0
- 首次发布：2025-06-23T18:24:39.801Z
- 最新版本发布：2026-11-09T10:33:00.042Z
- 近 30 天下载量：19864（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：58（近 12 个月 54 个）

## 中文简介

安吉AI助手的 SDK 类型脚本

## 安装

```sh
npm install @elementor/angie-sdk
```

也可以使用：`pnpm add @elementor/angie-sdk`、`yarn add @elementor/angie-sdk`、`bun add @elementor/angie-sdk`

## README

# @lementor/angie-sdk (英语)

依据 [MCP 磁共振](https://github.com/modelcontextprotocol/typescript-sdk) 版本: 1.20.1

**一个SDK,用于扩展安吉AI助理能力.**

这个SDK使您能够创建自定义的MCP服务器,安吉可以发现并使用它来运行您的插件特性.

* * *

## 目录

-   [背景情况](https://npmcn.com/package/%40elementor/angie-sdk/#readme-background)
-   [如何运作](https://npmcn.com/package/%40elementor/angie-sdk/#readme-how-it-works)
-   [支持的 MCP 特性](https://npmcn.com/package/%40elementor/angie-sdk/#readme-supported-mcp-features)
-   [安装](https://npmcn.com/package/%40elementor/angie-sdk/#readme-installation)
-   [快速启动](https://npmcn.com/package/%40elementor/angie-sdk/#readme-quick-start)
-   [同步注册](https://npmcn.com/package/%40elementor/angie-sdk/#readme-async-registration)
-   [触发 Angie 有提示](https://npmcn.com/package/%40elementor/angie-sdk/#readme-triggering-angie-with-prompts)
-   [MCP 服务器示例](https://npmcn.com/package/%40elementor/angie-sdk/#readme-mcp-server-example)
-   [添加指令到 MCP 服务器](https://npmcn.com/package/%40elementor/angie-sdk/#readme-adding-instructions-to-mcp-servers)
-   [注册工具](https://npmcn.com/package/%40elementor/angie-sdk/#readme-registering-tools)
-   [工具说明](https://npmcn.com/package/%40elementor/angie-sdk/#readme-tool-annotations)
-   [处理工具呼叫](https://npmcn.com/package/%40elementor/angie-sdk/#readme-handling-tool-calls)
-   [最佳做法](https://npmcn.com/package/%40elementor/angie-sdk/#readme-best-practices)
-   [远程 SSE 和 HTTP 可流 MCP 服务器](https://npmcn.com/package/%40elementor/angie-sdk/#readme-remote-sse-and-http-streamable-mcp-servers)
-   [处理错误](https://npmcn.com/package/%40elementor/angie-sdk/#readme-error-handling)
-   [更改日志](https://npmcn.com/package/%40elementor/angie-sdk/#readme-changelog)
-   [演示插件](https://npmcn.com/package/%40elementor/angie-sdk/#readme-demo-plugin)
-   [在任何网页上嵌入安吉](https://npmcn.com/package/%40elementor/angie-sdk/#readme-embedded-angie-loadsidebarv2)
-   [调试( T)](https://npmcn.com/package/%40elementor/angie-sdk/#readme-debugging--testing)
-   [财务问题](https://npmcn.com/package/%40elementor/angie-sdk/#readme-faq)

* * *

## 背景情况

安琪是一个WordPress AI助手,可以在WordPress网站上执行几乎任何任务.

安吉完全可扩展,因此插件开发者可以轻松地整合自己的功能,使安吉能够使用和控制.

安琪基于基于MCP的架构而构建,使您能够创建自定义的MCP服务器,暴露出您插件让安琪访问的能力.

要了解MCP:

-   [MCP 规格](https://modelcontextprotocol.io/)
-   [MCP 类型脚本 SDK](https://github.com/modelcontextprotocol/typescript-sdk)
-   [MCP 文档](https://modelcontextprotocol.io/docs)

SDK专为解决这些问题而设计的:

1.  **在浏览器中运行 MCP** SDK允许您在浏览器中作为JavaScript模块运行一个MCP服务器,因此不需要创建基于PHP的MCP服务器或创建外部SSE或基于HTTPStreamable的MCP服务器.
    
    所有逻辑运行客户端,同时您可以使用WP REST甚至adminAjax与您的插件后端通信.
    
2.  **在没有外部服务器的安吉注册 MCP** 您可以使用 SDK 直接与 Angie 注册您的 MCP, 即使您没有外部的 MCP 网关 。 安琪通过SDK发现了你的服务器.
    
3.  **在当前屏幕上与 MCP 通信** SDK使Angie能够与您插件的MCP直接在当前页面上通信,因此Angie将能够 _见_ 财务报告和审定财务报表 _动作_ 当前用户屏幕上.
    

* * *

## 如何运作

Angie SDK允许您使用正式的TypeScript MCP SDK来写入您的MCP服务器. 然后用Angie SDK可以注册,让Angie像其他MCP主机一样运行你的MCP服务器.

SDK包括三个主要能力:

-   导入和使用当前支持的官方 MCP SDK
-   注册您的 MCP 服务器
-   在浏览器中运行您的 MCP 服务器

```
┌──────────────────────────────┐
│       Angie SDK Flow         │
├──────────────────────────────┤
│                              │
│  Your WordPress Plugin       │
│            │                 │
│            │ enqueue script  │
│            ▼                 │
│  Your MCP Server (JS)        │
│            │                 │
│            │ register server │
│            ▼                 │
│  Angie SDK                   │
│            │                 │
│            ◄─► Browser       │
│            │   Transport     │
│            ▼                 │
│  Angie (iframe)              │
│                              │
└──────────────────────────────┘
```

## 支持的 MCP 特性

**获得支持:**

-   工具、资源、通知、抽样(通过后端)

**尚未支持 :**

-   提示( 仅以检查器显示)、 OAuth 2. 0 外部认证、 以语录

**不可用 :**

-   根,STIO运输(浏览器环境限制)

📖 **联合国**

-   [MCP SDK 支持的特性](https://npmcn.com/package/%40elementor/angie-sdk/docs/angie-sdk-supported-features.md)
-   [工具说明](https://npmcn.com/package/%40elementor/angie-sdk/docs/tool-annotations.md) - 以资源依赖性、模式偏好和更多工具作注释

* * *

## 安装

```bash
npm install @elementor/angie-sdk
```

* * *

## 快速启动

### 1\. 创建您的 MCP 服务器

创建 TypeScript 或 Javascript 文件( 如 , `demo-mcp-server.ts`:

```typescript
import {
  AngieMcpSdk,
  CallToolRequest,
  CallToolRequestSchema,
  ListToolsRequestSchema,
  McpServer,
} from '@elementor/angie-sdk';

// Define the MCP server
function createSeoMcpServer() {
  const server = new McpServer(
    { name: 'my-seo-server', title: 'SEO', version: '1.0.0' },
    { 
      capabilities: { tools: {} },
      instructions: `Guidelines for when to use this server and its capabilities.`
    }
  );

  // Add your tools, resources, etc.
  server.tool( ... );

  return server;
}

// Register the server with Angie
const server = createSeoMcpServer();
const sdk = new AngieMcpSdk( { appId: 'my-app' } );

await sdk.waitForReady();

sdk.registerServer({
  name: 'my-seo-server',
  version: '1.0.0',
  description: 'SEO tools for Angie',
  server,
});
```

> **通过一个 `appId` 用你的应用程序的设置.** 它识别聊天属于哪个应用程序. SDK将其添加到Angie iframe URL中,Angie随每个聊天请求一起发送. 没有 `appId`安琪会用它 **默认设置** (一般助理,没有特定应用的提示或代理).

### 同步注册

这个 `registerServer()` 方法是一个同步并返回一个承诺. 在大多数情况下,你不需要 `await` 因为登记发生在背景.

**使用 `await sdk.registerServer(...)` 当:**

-   您需要确保注册完成前
-   要明确抓好并处理注册错误

* * *

## 触发 Angie 有提示

SDK可以以快取,上下文附件来触发Angie,或者两者兼而有之.

```typescript
interface ContextAttachment {
  label: string;
  content: string;
}

interface PromptSuggestion {
  label: string;
  value: string;
  autoSend?: boolean;
  color?: string;
  isNew?: boolean;
  requiresPrompt?: string;
}

interface AngieTriggerRequest {
  prompt?: string;
  context?: { source?: string } & Record<string, unknown>;
  contextAttachment?: ContextAttachment;
  suggestions?: { items: PromptSuggestion[] };
  options?: {
    timeout?: number;
    newChat?: boolean;
    autoSend?: boolean;
  };
}
```

```typescript
import { AngieMcpSdk, type ContextAttachment } from '@elementor/angie-sdk';

// Register your MCP server and trigger Angie
const server = createSeoMcpServer();
const sdk = new AngieMcpSdk( { appId: 'my-app' } );

await sdk.waitForReady();

sdk.registerServer({
  name: 'my-seo-server',
  version: '1.0.0',
  description: 'SEO tools for Angie',
  server,
});

// Trigger Angie with a prompt
await sdk.triggerAngie({
  prompt: 'Help me optimize this page for SEO',
  context: { pageType: 'product', source: 'my-plugin' },
  contextAttachment: {
    label: 'Current SEO report',
    content: 'The page is missing a meta description.',
  },
  suggestions: {
    items: [
      { label: 'Add meta description', value: 'Add a meta description to this page', autoSend: true },
      { label: 'Improve title', value: 'Suggest a better SEO title', isNew: true },
    ],
  },
  options: {
    timeout: 30000, // Optional: 30 seconds timeout (default: 30000)
    newChat: true,
  },
  metadata: { plan: 'pro', area: 'seo' },
});

// A prompt without context
await sdk.triggerAngie({
  prompt: 'Help me create a contact page'
});

// Attach context without pre-filling a prompt
const contextAttachment: ContextAttachment = {
  label: 'Selected error',
  content: 'Checkout failed with error code PAYMENT_DECLINED.',
};

await sdk.triggerAngie({ contextAttachment });
```

**请求字段 :**

-   `prompt`: 可选的即时文本.
-   `contextAttachment`: 附加在下个提交的用户信息上的可选标签内容. 它可以使用没有 `prompt` 而不作为电文的一部分提供.
-   `suggestions`: 向用户显示的可选快速建议列表. 每个项目有一个 `label` (已删除的文本)和 `value` (选中时立即发送); 可选 `autoSend` 立即提出, `color` 设置芯片颜色, `isNew` 显示一个"新"徽章,和 `requiresPrompt` 打开给定提示背后的建议.
-   `context`: 可选集成元数据. SDK 添加电流 `pageUrl` 财务报告和审定财务报表 `pageTitle`· ;
-   `options.timeout`: 在毫秒内等待 Angie 回复需要多久( 默认 : `30000`) (中文(简体) ).
-   `options.newChat`: 当 `true`中,清除当前对话并打开新的聊天.
-   `options.autoSend`: 当 `true`,提交 `prompt` 而不是仅仅预装作曲家.
-   `metadata`: 可选的平面元数据存储在新聊天上. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我还是要继续, `{}` 来清理.

**`metadata` 规则** (服务器执行这些限制并删除无效条目):

| 规则 | 限制 |
| --- | --- |
| 形状 | 普通对象, 一个关卡( 无嵌入对象或阵列) |
| 数值 | `string`有限 `number`, (中文(简体) ), `boolean`, (中文(简体) ), `null` |
| 密钥 | 最大值 20; 1–64 个字符; `__proto__`, (中文(简体) ), `constructor`, (中文(简体) ), `prototype` 被拒绝 |
| 字符串值 | 最大 256 个字符 |
| 共计 | 最大2048个字符 `JSON.stringify( metadata )` |

元数据未经核实:不使用它进行许可或计费,也不将个人数据(电子邮件,姓名)或秘密放入其中.

### 宽参数法

```javascript
// Trigger via URL hash - perfect for deep linking
window.location.hash = 'angie-prompt=' + encodeURIComponent('Help me create a contact page');

// Open a new chat via hash parameter
window.location.hash = 'angie-prompt=' + encodeURIComponent('Fix this error') + '&angie-new-chat=true';

// Example URL: https://yoursite.com/wp-admin/edit.php#angie-prompt=Help%20me%20optimize%20SEO&angie-new-chat=true
```

**散列参数:**

-   `angie-prompt`: 输入字段中要插入的提示文本
-   `angie-new-chat`: 当设定为 `true`,清除当前对话,并打开与输入中预填入的提示的新聊天

两者 `loadSidebar()` 财务报告和审定财务报表 `loadSidebarV2()` 注意散列,在页面载荷和以后的散列变化。 你不需要自己的散列密码.

**说明:** 总是打电话 `await sdk.waitForReady()` 在触发安琪之前.

* * *

## MCP 服务器示例

典型的项目结构:

```
your-plugin/
├── plugin.php               # Main WordPress plugin file
├── dist/
│   └── demo-mcp-server.js    # Bundled MCP server JS
├── src/
│   └── demo-mcp-server.ts    # MCP server source
└── ...
```

-   **前一頁**: 需要时为您的工具执行 REST API 端点.
-   **联合来文/TS**: 使用 SDK 注册工具和处理请求.

* * *

## 添加指令到 MCP 服务器

指令是描述何时使用您 MCP 服务器及其能力的准则 。 它们帮助安琪理解你的服务器能做什么和不能做什么,确保适当的工具选择和适当的用户期望.

### 为什么要添加指令 ?

-   引导 Angie 当您的服务器是合适的任务选择时
-   澄清现有哪些能力
-   在无法完成的事情上设置明确的界限
-   提高工具选择的准确性

### 如何添加指令

服务器初始化时在第二个参数中提供指令 :

```typescript
const server = new McpServer(
  { name: 'content-writer', title: 'Content Writer', version: '1.0.0' },
  {
    instructions: `Guidelines for using the Text Content Management server.

### Capabilities:
- **Generate new content**: Creates blog posts, page content, headlines, product descriptions
- **Edit existing content**: Refines or adjusts text based on specific instructions
- **Content variations**: Creates multiple versions for A/B testing or different audiences

### Limitations:
- **SEO optimization**: Cannot analyze or optimize for specific keywords or search rankings
- **Fact checking**: Cannot verify accuracy against real-world data
- **Plagiarism checking**: Cannot verify content originality`
  }
);
```

### 最佳做法

1.  **说明能力**:解释每种能力的作用以及何时使用,而不仅仅是特征名称
2.  **定义使用大小写**: 帮助安琪理解当您的服务器是合适的任务选择时
3.  **设置明确的边界**: 明确说明您的服务器无法防止不适当的工具呼叫
4.  **不断更新**: 添加或删除工具时刷新指令
5.  **使用面向动作的语言**: 专注于用户可以用您的服务器完成什么

* * *

## 注册工具

每个工具必须登记在:

-   **名称**: 唯一字符串标识符
-   **说明**:工具做什么以及何时使用
-   **输入计划**: JSON 描述所需/可选参数的计划

示例

```typescript
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [
    {
      name: 'analyze-page-seo',
      description: 'Analyzes the SEO of a page.',
      inputSchema: {
        type: 'object',
        properties: { url: { type: 'string', description: 'Page URL' } },
        required: ['url'],
      },
    },
  ],
}));
```

* * *

## 工具说明

安吉用安吉特有的元数据扩展了MCP工具说明. 直接从 `@elementor/angie-sdk`数字 :

```typescript
import {
  ANGIE_REQUIRED_RESOURCES,
  ANGIE_MODEL_PREFERENCES,
  ANGIE_EXTENDED_TIMEOUT,
  MCP_READONLY,
  ToolAnnotations,
} from '@elementor/angie-sdk';

server.tool(
  'analyze-page-layout',
  'Analyzes the current page layout and returns suggestions',
  { /* input schema */ },
  {
    [MCP_READONLY]: true,
    [ANGIE_EXTENDED_TIMEOUT]: { timeoutMs: 30000 },
    [ANGIE_REQUIRED_RESOURCES]: [
      { uri: 'elementor://page/layout', whenToUse: 'Always — needed to read the page structure' }
    ],
    [ANGIE_MODEL_PREFERENCES]: {
      hints: [{ name: 'claude-sonnet' }]
    }
  } as ToolAnnotations,
  async (args) => { /* handler */ }
);
```

见 [工具说明](https://npmcn.com/package/%40elementor/angie-sdk/docs/tool-annotations.md) 供充分参考.

* * *

## 处理工具呼叫

执行处理器 `CallToolRequestSchema`数字 :

```typescript
server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest) => {
  const { name, arguments: args } = request.params;
  switch (name) {
    case 'analyze-page-seo':
      // Call your backend or perform logic
      const { root, nonce } = window.wpApiSettings;
      const response = await fetch(`${root}my-plugin/v1/analyze-seo`, {
        method: 'POST',
        headers: {
          'X-WP-Nonce': nonce,
          'Content-Type': 'application/json',
        },
        credentials: 'same-origin',
        body: JSON.stringify(args),
      });
      
      if (!response.ok) {
        throw new Error(`API request failed: ${response.statusText}`);
      }
      
      const result = await response.json();
      return {
        content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
      };
    // Add more cases as needed
    default:
      throw new Error(`Unknown tool: ${name}`);
  }
});
```

* * *

## 最佳做法

-   **工具命名**:使用清晰,注重结果的名称(如"analysis-page-seo").
-   **说明**:清晰地描述工具的用途,何时使用,以及返回的内容.
-   **输入图**:为每个工具定义精确的输入方案,偏好使用Zod.
-   **处理错误**: 返回自然语言中方便用户的错误和调试的日志细节.
-   **警卫**: 在您的后端使用非 CEST API 调用和权限检查 .
-   **版本**:Angie SDK导出当前所支持的MCP SDK,更倾向于使用集成的MCP SDK来确保所支持的MCP版本特性.

* * *

## 警卫

**安全责任**:当你创建了与你的WordPress后端交互的MCP工具时,你开始负责这些操作的安全. 安吉充当用户行动的渠道,所以你有责任执行适当的安全措施.

### 必要的安全措施

1.  **权限检查**: 总是在您的后端端验证用户权限
2.  **输入验证**: 对所有输入数据进行卫生和验证
3.  **能力检查**: 对特定操作使用 WordPress 能力检查

### 示例安全端点

```php
add_action('rest_api_init', function () {
    register_rest_route('my-plugin/v1', '/analyze-seo', [
        'methods' => 'POST',
        'callback' => 'my_analyze_seo_callback',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
        'args' => array(
          'url' => array(
            'validate_callback' => function($param, $request, $key) {
              return filter_var($param, FILTER_VALIDATE_URL);
            },
            'required' => true,
          ),
        ),
    ]);
});
```

## 远程 SSE 和 HTTP 可流 MCP 服务器

对于远程服务器,让你的Angie用户通过Angie MCP Gateway设置添加.

### 支持的远程服务器类型

-   **SSE( 仆人事件)**:用于实时流出响应
-   **HTTP 可流性**:用于基于 HTTP 的流线通信

### 配置

远程MCP服务器可以通过安吉的设置接口来配置,允许用户与外部的MCP服务相接而无需更改代码.

* * *

## 处理错误

-   在处理器中丢出错误以返回对客户端的错误回复.
-   使用自定义错误信息处理用户显示错误 .
-   内部记录出错 .

**示例**

```typescript
server.setRequestHandler(CallToolRequestSchema, async (req) => {
  try {
    // Your tool implementation
    const result = await performToolAction(req.params);
    return {
      content: [{ type: 'text', text: result }],
    };
  } catch (err) {
    console.error('Tool error:', err);
    throw new Error('User-friendly error message');
  }
});
```

* * *

## 更改日志

-   **v1.0.0 (韩语)**页:1

* * *

## 演示插件

**更多实例请参见示例文件夹中的演示插件和MCP服务器**

## 在任何网页上嵌入安吉

将 Angie 用户界面嵌入您自己的网站( 侧边栏或浮动聊天) , 使用 `AngieMcpSdk.loadSidebarV2()`。见专用指南: [装入SidebarV2](https://npmcn.com/package/%40elementor/angie-sdk/src/load-sidebar-v2/README.md)。自定义嵌入式聊天UI(标题、建议、特性切换),参见 [部件配置](https://npmcn.com/package/%40elementor/angie-sdk/src/load-sidebar-v2/widget-config.md) 编辑 [部件配置演示](https://npmcn.com/package/%40elementor/angie-sdk/demo/load-sidebar-v2-widget-config/)。 。 。 .

如果有问题或需要帮助,请打开一个问题或联系元素团队!

## 调试( T)

-   使用浏览器控制台日志来验证服务器注册和工具呼叫.
-   在接通MCP服务器前直接测试REST端点(例如与Postman).
-   请检查Angie的UI 以发现和引用工具.

### 常见调试步骤

1.  检查浏览器显示注册错误
2.  验证注册和处理器之间的工具名称匹配
3.  独立测试 REST API 端点
4.  确保适当的非曲直和权限设置

### 增强调试的 Dev 模式

安吉包含一个Dev Mode功能,在聊天界面中直接显示工具执行进度和细节,从而更容易调试你的MCP服务器集成,并理解安吉如何与工具互动.

**要启用 Dev 模式 :**

1.  在 WordPress 中打开安吉
2.  点击用户配置图标
3.  导航到工具
4.  切换“ Dev 模式” 打开

**Dev Mode 显示的内容 :** 启用后, Angie 会显示在聊天中 :

-   每个用户请求的工具执行历史
-   工具调用状态( 待处理、 正在进行、 完成、 失败)
-   工具输入和输出

* * *

## 许可证

麻省理工学院

## 常见问题

### @elementor/angie-sdk 是什么？

安吉AI助手的 SDK 类型脚本

### 如何安装 @elementor/angie-sdk？

在项目目录运行 npm install @elementor/angie-sdk，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@modelcontextprotocol/sdk（\>=1\.27\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @elementor/angie-sdk 支持 TypeScript 吗？

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

### @elementor/angie-sdk 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @elementor/angie-sdk 需要什么版本的 Node\.js？

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

### @elementor/angie-sdk 可以商用吗？

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

### @elementor/angie-sdk 的下载量有多少？

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

### @elementor/angie-sdk 还在维护吗？

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

