# @cloud-ru/ds-attachment 中文文档

规范地址：https://npmcn.com/package/%40cloud-ru/ds-attachment/

版本：1\.1\.32
npm 元数据更新时间：2026-11-11T15:05:23.540Z
中文译文更新时间：2026-11-11T17:09:31.057Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40cloud-ru/ds-attachment
原文对照：https://npmcn.com/package/%40cloud-ru/ds-attachment/?lang=original
项目主页：https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/attachment
源码仓库：https://github.com/cloud-ru-tech/snack-v2

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

- 包体积（解压后）：388 kB，163 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：10 个
- 首次发布：2026-08-18T12:42:26.354Z
- 最新版本发布：2026-11-11T15:05:22.689Z
- 近 30 天下载量：5838（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：143（近 12 个月 143 个）

## 中文简介

\=============================================== ========================================================================================================================================.

## 安装

```sh
npm install @cloud-ru/ds-attachment
```

也可以使用：`pnpm add @cloud-ru/ds-attachment`、`yarn add @cloud-ru/ds-attachment`、`bun add @cloud-ru/ds-attachment`

## README

# 附录

`@cloud-ru/ds-attachment` -=YTET -伊甸园字幕组=- 翻译:.

Пакет `@cloud-ru/ds-attachment` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢

-   ****附录**** {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}... {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}...
-   ****附录平方**** {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我还得去.

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `s` 编号 : `m`时 `loading`编号 :`error`编号 :`disabled`编号 :`checked` ? ? ? ? ? ? ? ? ? ? `file` - 额...

## Когда

-   {\\fn方正准圆简体\\fs12\\1cHC9ECC4}我.. `Attachment`。 。 。 .
-   状态 `hovered`\- 覆盖 - `AttachmentSquare`。 。 。 .

Когда **не** \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*\* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*\* \* \* \* \* \*\* \*\*\*\*\*\*\* `Dropzone`; qq预览-qq动作- `Card`。 。 。 .

## Анатомия

\[永久失效連結\] (中文(简体) ) `file`(+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++`download` 编号 : `delete`时 `retry` qq错误).

## Установка

```bash
pnpm add @cloud-ru/ds-attachment
```

```ts
import { Attachment, AttachmentSquare } from '@cloud-ru/ds-attachment'
```

## 附录

\* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*.

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? ———————————————————————— `file` ——————————————————————————————————————————`download` 编号 : `delete`时 `retry` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.

### Когда

-   {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢.
-   Когда у `File`\- ? ? - ? - ? - ? - ? - ? - ? - ? - ? - .

Когда **не** нужен `Attachment`数字 :

-   . . . . `AttachmentSquare`。 。 。 .
-   QQ 拖放 QQ — `Dropzone`。 。 。 .

### Анатомия

#### 大小( 默认) `s`(中文(简体) )

-   `s` ——qq,48px(标本为32+2×8贴花).
-   `m` ——×××,××××活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活.

QQ内容驱动:QQ标志''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Токены `attachment.anatomy.size.*.container.height` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得怎么样 [`AttachmentSquare`](https://npmcn.com/package/%40cloud-ru/ds-attachment/attachment-square.mdx){\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我还得说.

#### 状态

Состояния:

-   `loading` 行动.
-   `disabled` - 行动通过 `onDelete`编号 :`onDownload`。 。 。 .
-   `error` . . . . . `retry` заменяет `download`; фон; карточки `red/background`。 。 。 .
-   `checked` - 口音边境 `primary/accent` + 重音状态级(`activated/default/filled`盘旋着.. `activated/hovered/filled`) + 检查标签 + + + + + .

Внутри `Card` с `view='outline'`; ; ; ; ; ; ; ; `cursor: pointer`{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}重点在心 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我.. `onClick`。 。 。 .

### Примеры

#### 附录

文件 {} 上下载

```tsx
import { Attachment } from '@cloud-ru/ds-attachment';

import { PDF_FILE } from './sample';

export function BasicAttachment() {
  return <Attachment file={PDF_FILE} onDownload={file => console.info('download', file?.name)} />;
}
```

#### С

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}用图

```tsx
import { Attachment } from '@cloud-ru/ds-attachment';
import { useEffect, useState } from 'react';

import pictureUrl from './picture.jpg?url';

export function AttachmentWithImage() {
  const [file, setFile] = useState<File>();

  useEffect(() => {
    fetch(pictureUrl)
      .then(r => r.blob())
      .then(blob => setFile(new File([blob], 'picture.jpg', { type: 'image/jpg' })));
  }, []);

  return (
    <Attachment
      file={file}
      title='Скриншот'
      description='JPG'
      onDownload={f => console.info('download', f?.name)}
      onDelete={f => console.info('delete', f?.name)}
    />
  );
}
```

#### 正在装入

\* 行动 \*

```tsx
import { Attachment } from '@cloud-ru/ds-attachment';

import { PDF_FILE } from './sample';

export function AttachmentLoading() {
  return <Attachment file={PDF_FILE} loading />;
}
```

#### QQ 复试

错误 qq 描述; 重试按钮 qq 下载

```tsx
import { Attachment } from '@cloud-ru/ds-attachment';
import { useState } from 'react';

import { PDF_FILE } from './sample';

export function AttachmentError() {
  const [retries, setRetries] = useState(0);

  return (
    <Attachment
      file={PDF_FILE}
      error={`Не удалось загрузить (попыток: ${retries})`}
      onRetry={() => setRetries(n => n + 1)}
      onDelete={file => console.info('delete', file?.name)}
    />
  );
}
```

#### Выбираемый(受控)

选中 + 在 Click 上 — — — QQ 多选择

```tsx
import { Attachment } from '@cloud-ru/ds-attachment';
import { useState } from 'react';

import { PDF_FILE } from './sample';

export function AttachmentSelectable() {
  const [checked, setChecked] = useState(false);

  return (
    <Attachment
      file={PDF_FILE}
      checked={checked}
      onClick={() => setChecked(v => !v)}
      onDelete={file => console.info('delete', file?.name)}
    />
  );
}
```

### 道具

**附件选项**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `checked` | `boolean` | —— 说 | Состояние(множественный) |
| `className` | `string` | —— 说 | CSS - класс корня |
| `data-test-id` | `string` | —— 说 |  |
| `description` | `string` | `fileExtension` | Описание |
| `disabled` | `boolean` | —— 说 | Заблокировано |
| `error` | `string` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `file` | `File` | —— 说 | Файл |
| `fullWidth` | `boolean` | `true` | Растянуть. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢. |
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> | undefined` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢  
@ 默认Icon 文件SVG |
| `loading` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onClick` | `((event: MouseEvent<HTMLDivElement, MouseEvent>) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onDelete` | `((file?: File) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onDownload` | `((file?: File) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onRetry` | `(() => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `size` | `"m"` | `"s"` | `s` | Размер |
| `title` | `string` | `fileName` | Заголовок |
| `truncate` | `{ title?: number; description?: number; error?: number | undefined; } | undefined` | —— 说 |  |
| `truncateVariant` | `"end"` | `"middle"` | —— 说 | 说吧  
  
\- 说吧 `end` - с;  
  
\- 说吧 `middle` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 |

##### 相关类型

-   `Size` =: `"m"` | `"s"`

## 附录平方

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我还不知道你是谁 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我...

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}=======================================================================================================================================================================================================================================.

### Когда

-   {\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}你觉得怎么样.
-   Когда,важна `s` (80x80) (中文(简体) ) `m` (100×100) (中文(简体) ).

### Анатомия

#### 大小( 默认) `s`(中文(简体) )

-   `s` ——80×80 (中文(简体) ).
-   `m` ——100×100 (中文(简体) ).

#### 重叠管理

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}嘿 伙计们 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我..`download`编号 :`delete`编号 :`retry`\* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* В **图像模式** 覆盖 qq( 固态) `neutral/background1Level`) и; в **图标模式** -=YTET -伊甸园字幕组=- 翻译: {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}谢谢 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080} `AttachmentFocusActionsContext`。 。 。 .

#### 状态

-   `loading` 行动 盘旋重叠.
-   `disabled` -=ytet -伊甸园字幕组=- 翻译: `effect/opacity/disabled`。 。 。 .
-   `error` - фон тайла переключается `red/background`动作 `retry` заменяет `download`; turn-qq overing qq, qq qq +q.
-   `checked` ——口音-边界+++++ `checkedOverlay` поверх 主会с `activated/default/filled` → `activated/hovered/filled` (Card-QQ 状态层 QQ 完整出血的画面,QQ 上覆QQ). 校对:Soup.

### Примеры

#### Базовый

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

```tsx
import { AttachmentSquare } from '@cloud-ru/ds-attachment';

import { PDF_FILE } from './sample';

export function AttachmentSquareBasic() {
  return (
    <AttachmentSquare
      file={PDF_FILE}
      onDownload={file => console.info('download', file?.name)}
      onDelete={file => console.info('delete', file?.name)}
    />
  );
}
```

#### С(大小为m)

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

```tsx
import { AttachmentSquare } from '@cloud-ru/ds-attachment';
import { useEffect, useState } from 'react';

import pictureUrl from './picture.jpg?url';

export function AttachmentSquareImage() {
  const [file, setFile] = useState<File>();

  useEffect(() => {
    fetch(pictureUrl)
      .then(r => r.blob())
      .then(blob => setFile(new File([blob], 'picture.jpg', { type: 'image/jpg' })));
  }, []);

  return (
    <AttachmentSquare
      size='m'
      file={file}
      onDownload={f => console.info('download', f?.name)}
      onDelete={f => console.info('delete', f?.name)}
    />
  );
}
```

### 道具

**附件方块方案**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `checked` | `boolean` | —— 说 | Состояние(множественный) |
| `className` | `string` | —— 说 | CSS - класс корня |
| `data-test-id` | `string` | —— 说 |  |
| `description` | `string` | `fileExtension` | Описание |
| `disabled` | `boolean` | —— 说 | Заблокировано |
| `error` | `string` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `file` | `File` | —— 说 | Файл |
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> | undefined` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢  
@ 默认Icon 文件SVG |
| `loading` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onClick` | `((event: MouseEvent<HTMLDivElement, MouseEvent>) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onDelete` | `((file?: File) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onDownload` | `((file?: File) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onRetry` | `(() => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `size` | `"m"` | `"s"` | `s` | Размер |
| `title` | `string` | `fileName` | Заголовок |
| `truncateVariant` | `"end"` | `"middle"` | —— 说 | 说吧  
  
\- 说吧 `end` - с;  
  
\- 说吧 `middle` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 |

##### 相关类型

-   `Size` =: `"m"` | `"s"`

## 常见问题

### @cloud-ru/ds-attachment 是什么？

=============================================== ========================================================================================================================================\.

### 如何安装 @cloud-ru/ds-attachment？

在项目目录运行 npm install @cloud-ru/ds-attachment，或使用 pnpm add / yarn add / bun add。

### @cloud-ru/ds-attachment 支持 TypeScript 吗？

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

### @cloud-ru/ds-attachment 支持 ESM 还是 CommonJS？

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

### @cloud-ru/ds-attachment 可以商用吗？

@cloud-ru/ds-attachment 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cloud-ru/ds-attachment 的下载量有多少？

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

### @cloud-ru/ds-attachment 还在维护吗？

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

