@dynatrace-sdk/client-filter-segment-management

中文文档
2.0.3发布于 2026/11/10Apache-2.0TypeScriptESM + CJS近 30 天下载 1.4万
原始使用文档
文档目录49 节
  1. Installation
  2. Getting help
  3. License
  4. filterSegmentsClient
  5. createFilterSegment
  6. New Filter-Segment
  7. deleteFilterSegment
  8. getFilterSegment
  9. getFilterSegments
  10. getFilterSegmentsEntityModel
  11. getLeanFilterSegments
  12. partiallyUpdateFilterSegment
  13. updateFilterSegment
  14. Types
  15. CustomValidationErrorInfo
  16. DetailedFilterSegment
  17. ErrorEnvelope
  18. ErrorInfo
  19. ExceptionalReturn
  20. FilterSegment
  21. FilterSegmentNamespaceDto
  22. FilterSegmentPropertyDto
  23. FilterSegmentPushDownFilterableDto
  24. FilterSegmentRelationshipDto
  25. FilterSegmentTypeDto
  26. FilterSegmentVariables
  27. FilterSegments
  28. Include
  29. InvalidAuditEventsErrorInfo
  30. LeanFilterSegment
  31. LeanFilterSegments
  32. MediaTypeErrorInfo
  33. NewFilterSegment
  34. NewInclude
  35. NewRelationship
  36. ParameterErrorInfo
  37. PartialUpdateFilterSegment
  38. ProxyErrorInfo
  39. QueryFrontendRawErrorInfo
  40. Relationship
  41. RequestBodyErrorInfo
  42. UpdateFilterSegment
  43. Enums
  44. DetailedFilterSegmentAllowedOperationsItem
  45. FilterSegmentAllowedOperationsItem
  46. GetFilterSegmentQueryAddFieldsItem
  47. GetFilterSegmentsQueryAddFieldsItem
  48. GetLeanFilterSegmentsQueryAddFieldsItem
  49. LeanFilterSegmentAllowedOperationsItem

@dynatrace-sdk/client-filter-segment-management

npm License

Filter-Segment Management for Grail.

Slice, dice and contextualize your data to make it easier to find, understand and work with.

Installation

npm install @dynatrace-sdk/client-filter-segment-management

Getting help

License

This SDK is distributed under the Apache License, Version 2.0, see LICENSE for more information.

API reference

Full API reference for the latest version of the SDK is also available at the Dynatrace Developer.

filterSegmentsClient

import { filterSegmentsClient } from '@dynatrace-sdk/client-filter-segment-management';

createFilterSegment

filterSegmentsClient.createFilterSegment(config): Promise<DetailedFilterSegment>

Create a new filter-segment.

Required scope: storage:filter-segments:write

Create a new segment and define data.

Required scopes:

  • storage:filter-segments:write
  • storage:filter-segments:share if isPublic is set to true

New Filter-Segment

Provide a name and an optional description for the filter-segment.

Variables

Create variables to apply in your filter-segment data filters

Includes (Segment data)

Include all data that should be accessible when applying the filter-segment

IsPublic (Visibility)

  • false: The filter-segment is private and only visible to the owner
  • true: The filter-segment is visible to everyone in the environment

Parameters

NameType
config.body*requiredNewFilterSegment

Returns

Return typeStatus codeDescription
DetailedFilterSegment201Filter-segment successfully created.

Throws

Error TypeError Message
ErrorEnvelopeErrorFilter-segment Bad Request. | unauthorized | missing permissions | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data = await filterSegmentsClient.createFilterSegment(
  {
    body: {
      name: "dev_environment",
      description:
        "only includes data of the dev environment",
      variables: {
        type: "query",
        value: "fetch logs | limit 1",
      },
      isPublic: false,
      includes: [
        {
          filter:
            '{"type":"Group","range":{"from":0,"to":19},"logicalOperator":"AND","explicit":false,"children":[{"type":"Statement","range":{"from":0,"to":19},"key":{"type":"Key","textValue":"content","value":"content","range":{"from":0,"to":7}},"operator":{"type":"ComparisonOperator","textValue":"=","value":"=","range":{"from":8,"to":9}},"value":{"type":"String","textValue":"\\"[debug]\\"","value":"[debug]","range":{"from":10,"to":19},"isEscaped":true}}]}',
          dataObject: "logs",
        },
        {
          filter:
            '{"type":"Group","range":{"from":0,"to":18},"logicalOperator":"AND","explicit":false,"children":[{"type":"Statement","range":{"from":0,"to":18},"key":{"type":"Key","textValue":"content","value":"content","range":{"from":0,"to":7}},"operator":{"type":"ComparisonOperator","textValue":"=","value":"=","range":{"from":8,"to":9}},"value":{"type":"String","textValue":"\\"[info]\\"","value":"[info]","range":{"from":10,"to":18},"isEscaped":true}}]}',
          dataObject: "events",
        },
      ],
    },
  },
);

deleteFilterSegment

filterSegmentsClient.deleteFilterSegment(config): Promise<void>

Delete a filter-segment.

Required scope: storage:filter-segments:delete

Remove the filter-segment from the environment for all users.

Required scopes:

  • storage:filter-segments:delete

Parameters

NameTypeDescription
config.filterSegmentUid*requiredstringUID of the filter-segment

Example: D82a1jdA23a

Returns

Return typeStatus codeDescription
void204Filter-segment successfully deleted.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Not found: the server cannot find the requested filter-segment. | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data = await filterSegmentsClient.deleteFilterSegment(
  { filterSegmentUid: "D82a1jdA23a" },
);

getFilterSegment

filterSegmentsClient.getFilterSegment(config): Promise<DetailedFilterSegment>

Get filter-segment by UID.

Required scope: storage:filter-segments:read

Get filter-segment by its UID.

Required scopes:

  • storage:filter-segments:read

Parameters

NameTypeDescription
config.addFieldsnull | Array<"INCLUDES" | "VARIABLES" | "EXTERNALID" | "RESOURCECONTEXT">Add additional fields.
config.filterSegmentUid*requiredstringUID of the filter-segment

Example: D82a1jdA23a

Returns

Return typeStatus codeDescription
DetailedFilterSegment200Filter-segment successfully retrieved.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Not found: the server cannot find the requested filter-segment. | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data = await filterSegmentsClient.getFilterSegment({
  filterSegmentUid: "D82a1jdA23a",
});

getFilterSegments

filterSegmentsClient.getFilterSegments(config): Promise<FilterSegments>

Get all filter-segments.

Required scope: storage:filter-segments:read

Returns all filter-segments. If details like description are not needed then consider using the :lean endpoint.

Required scopes:

  • storage:filter-segments:read

Parameters

NameTypeDescription
config.addFieldsnull | Array<"VARIABLES" | "EXTERNALID" | "RESOURCECONTEXT">Add additional fields.

Returns

Return typeStatus codeDescription
FilterSegments200Filter-segments successfully retrieved.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data = await filterSegmentsClient.getFilterSegments();

getFilterSegmentsEntityModel

filterSegmentsClient.getFilterSegmentsEntityModel(config): Promise<FilterSegmentNamespaceDto>

Get filter-segment-entity-model.

Required scope: storage:filter-segments:read

Returns the filter-segment-entity-model.

Required scopes:

  • storage:filter-segments:read

Returns

Return typeStatus codeDescription
FilterSegmentNamespaceDto200Filter-segments-entity-model successfully retrieved.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data =
  await filterSegmentsClient.getFilterSegmentsEntityModel();

getLeanFilterSegments

filterSegmentsClient.getLeanFilterSegments(config): Promise<LeanFilterSegments>

Get all filter-segments in a minimal/lean form.

Required scope: storage:filter-segments:read

Returns all filter-segments in a minimal representational form. This endpoint saves resources and as a result quicker response times can be expected over the more detailed get-all endpoint.

Required scopes:

  • storage:filter-segments:read

Parameters

NameTypeDescription
config.addFieldsnull | Array<"VARIABLES" | "EXTERNALID" | "RESOURCECONTEXT" | "OWNER">Add additional fields.

Returns

Return typeStatus codeDescription
LeanFilterSegments200Filter-segments successfully retrieved.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data =
  await filterSegmentsClient.getLeanFilterSegments();

partiallyUpdateFilterSegment

filterSegmentsClient.partiallyUpdateFilterSegment(config): Promise<void>

Partially update a filter-segment.

Required scope: storage:filter-segments:write

Update one or more fields of a filter-segment.

Required scopes:

  • storage:filter-segments:write
  • storage:filter-segments:share to change isPublic to true

Following fields can be updated:

  • name
  • description
  • isPublic
  • variables*
  • includes*

* If given the value will be overridden.

Fields not given will be ignored.

Parameters

NameTypeDescription
config.body*requiredPartialUpdateFilterSegment
config.filterSegmentUid*requiredstringUID of the filter-segment

Example: D82a1jdA23a
config.optimisticLockingVersion*requirednumberversion which should be updated. used for optimistic locking.

Example: 1
Minimum: 0

Returns

Return typeStatus codeDescription
void200Filter-segment successfully updated.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Not found: the server cannot find the requested filter-segment. | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data =
  await filterSegmentsClient.partiallyUpdateFilterSegment({
    filterSegmentUid: "D82a1jdA23a",
    optimisticLockingVersion: 1,
    body: {
      description:
        "only includes data of the development environment",
    },
  });

updateFilterSegment

filterSegmentsClient.updateFilterSegment(config): Promise<void>

Update a filter-segment. All fields will be overwritten (also undefined or null fields).

Required scope: storage:filter-segments:write

Update one or more fields of a filter-segment.

Required scopes:

  • storage:filter-segments:write
  • storage:filter-segments:share to change isPublic to true

Following fields can be updated:

  • name
  • description
  • isPublic
  • variables*
  • includes*

* Values of the fields will be overridden or removed if not given.

Provide all other fields with unchanged values.

Parameters

NameTypeDescription
config.body*requiredUpdateFilterSegment
config.filterSegmentUid*requiredstringUID of the filter-segment

Example: D82a1jdA23a
config.optimisticLockingVersion*requirednumberversion which should be updated. used for optimistic locking.

Example: 1
Minimum: 0

Returns

Return typeStatus codeDescription
void200Filter-segment successfully updated.

Throws

Error TypeError Message
ErrorEnvelopeErrorbad request | unauthorized | missing permissions | Not found: the server cannot find the requested filter-segment. | Error occurred.
Code example
import { filterSegmentsClient } from "@dynatrace-sdk/client-filter-segment-management";

const data = await filterSegmentsClient.updateFilterSegment(
  {
    filterSegmentUid: "D82a1jdA23a",
    optimisticLockingVersion: 1,
    body: {
      uid: "D82a1jdA23a",
      name: "dev_environment",
      description:
        "only includes data of the development environment",
      variables: {
        type: "query",
        value: "fetch logs | limit 1",
      },
      isPublic: false,
      owner: "john.doe",
      includes: [
        {
          filter:
            '{"type":"Group","range":{"from":0,"to":19},"logicalOperator":"AND","explicit":false,"children":[{"type":"Statement","range":{"from":0,"to":19},"key":{"type":"Key","textValue":"content","value":"content","range":{"from":0,"to":7}},"operator":{"type":"ComparisonOperator","textValue":"=","value":"=","range":{"from":8,"to":9}},"value":{"type":"String","textValue":"\\"[debug]\\"","value":"[debug]","range":{"from":10,"to":19},"isEscaped":true}}]}',
          dataObject: "logs",
        },
        {
          filter:
            '{"type":"Group","range":{"from":0,"to":18},"logicalOperator":"AND","explicit":false,"children":[{"type":"Statement","range":{"from":0,"to":18},"key":{"type":"Key","textValue":"content","value":"content","range":{"from":0,"to":7}},"operator":{"type":"ComparisonOperator","textValue":"=","value":"=","range":{"from":8,"to":9}},"value":{"type":"String","textValue":"\\"[info]\\"","value":"[info]","range":{"from":10,"to":18},"isEscaped":true}}]}',
          dataObject: "events",
        },
      ],
    },
  },
);

Types

CustomValidationErrorInfo

NameType
message*requiredstring

DetailedFilterSegment

NameTypeDescription
allowedOperationsnull | Array<"READ" | "WRITE" | "DELETE" | "SHARE">Defines the allowed operations of the current user.
descriptionnull | stringDescription of the filter-segment.

Example: only includes data of the dev environment
externalIdnull | stringOptional unique identifier of the filter-segment. Used for Dynatrace Configuration as Code
includesnull | Array<Include>List of includes of the filter-segment.
isPublicbooleanIndicates if the filter-segment is publicly accessible within the tenant.

Example: false
isReadyMadenull | booleanIndicates if the segment is ready-made.

Example: false
name*requiredstringName of the filter-segment.

Example: dev_environment
owner*requiredstringDefines the owner of the filter-segment.

Example: john.doe
uid*requiredstringUnique identifier of the filter-segment.

Example: D82a1jdA23a
variablesFilterSegmentVariablesVariables of the filter-segment.
versionnumberUsed for optimistic locking. Update requests define with this on which version the data updated is based on. This must match with the version stored, otherwise the update will fail due to concurrent modification.

Example: 1

ErrorEnvelope

NameType
errorExceptionalReturn

ErrorInfo

NameType
message*requiredstring

ExceptionalReturn

NameType
codenumber
errorDetails*requiredArray<CustomValidationErrorInfo | InvalidAuditEventsErrorInfo | MediaTypeErrorInfo | ParameterErrorInfo | ProxyErrorInfo | QueryFrontendRawErrorInfo | RequestBodyErrorInfo>
message*requiredstring

FilterSegment

List of filter-segments.

NameTypeDescription
allowedOperationsnull | Array<"READ" | "WRITE" | "DELETE" | "SHARE">Defines the allowed operations of the current user.
descriptionnull | stringDescription of the filter-segment.

Example: only includes data of the dev environment
externalIdnull | stringOptional unique identifier of the filter-segment. Used for Dynatrace Configuration as Code
isPublicbooleanIndicates if the filter-segment is publicly accessible within the tenant.

Example: false
isReadyMadenull | booleanIndicates if the segment is ready-made.

Example: false
name*requiredstringName of the filter-segment.

Example: dev_environment
owner*requiredstringDefines the owner of the filter-segment.

Example: john.doe
uid*requiredstringUnique identifier of the filter-segment.

Example: D82a1jdA23a
variablesFilterSegmentVariablesVariables of the filter-segment.
versionnumberUsed for optimistic locking. Update requests define with this on which version the data updated is based on. This must match with the version stored, otherwise the update will fail due to concurrent modification.

Example: 1

FilterSegmentNamespaceDto

NameTypeDescription
allowedFilterOperationsArray<FilterSegmentPushDownFilterableDto>Allowed filter operations.
name*requiredstringName of the namespace.

Example: dt.entity
typesArray<FilterSegmentTypeDto>Types of the namespace.

FilterSegmentPropertyDto

NameType
namestring
typestring

FilterSegmentPushDownFilterableDto

Allowed filter operations.

NameType
filterNamestring
supportedAttributesArray<string>

FilterSegmentRelationshipDto

NameType
namestring
targetstring

FilterSegmentTypeDto

Types of the namespace.

NameType
displayNamestring
filtersEntitiesOnlyboolean
fromTypesArray<FilterSegmentRelationshipDto>
namestring
propertiesArray<FilterSegmentPropertyDto>
relatedTargetEntityOnlyboolean
restrictedParentPropertiesArray<string>

FilterSegmentVariables

Variables of the filter-segment.

NameTypeDescription
type*requiredstringType of the variable.
value*requiredstringValue of the variable.

FilterSegments

NameTypeDescription
filterSegments*requiredArray<FilterSegment>List of filter-segments.

Include

List of includes of the filter-segment.

NameTypeDescription
applyTonull | Array<string>[Experimental] The tables that the entity-filter will be applied to.

Example: ["logs","events"]
dataObject*requiredstringThe data object that the filter will be applied to. Use '_all_data_object' to apply it to all dataObjects.

Example: logs
filter*requiredstringData will be filtered by this value. Field names must only contain letters, numbers and underscores, otherwise they need to be escaped using quotes(`).
relationshipRelationship[Experimental] The relationship of an include which has to be be specified when the data object is an entity view.

InvalidAuditEventsErrorInfo

NameType
invalidAuditEventIndices*requiredArray<number>
invalidEventIndicesArray<number>
message*requiredstring

LeanFilterSegment

List of filter-segments.

NameTypeDescription
allowedOperationsnull | Array<"READ" | "WRITE" | "DELETE" | "SHARE">Defines the allowed operations of the current user.
externalIdnull | stringOptional unique identifier of the filter-segment. Used for Dynatrace Configuration as Code
isPublicbooleanIndicates if the filter-segment is publicly accessible within the tenant.

Example: false
isReadyMadenull | booleanIndicates if the segment is ready-made.

Example: false
name*requiredstringName of the filter-segment.

Example: dev_environment
ownernull | stringDefines the owner of the filter-segment.

Example: john.doe
uid*requiredstringUnique identifier of the filter-segment.

Example: D82a1jdA23a
variablesFilterSegmentVariablesVariables of the filter-segment.

LeanFilterSegments

NameTypeDescription
filterSegments*requiredArray<LeanFilterSegment>List of filter-segments.

MediaTypeErrorInfo

NameType
message*requiredstring
supportedMediaTypes*requiredArray<string>

NewFilterSegment

NameTypeDescription
descriptionnull | stringDescription of the filter-segment.

Example: only includes data of the dev environment
externalIdnull | stringOptional unique identifier of the filter-segment. Used for Dynatrace Configuration as Code
includesnull | Array<NewInclude>List of includes of the filter-segment.
isPublic*requiredbooleanIndicates if the filter-segment is publicly accessible within the tenant.

Example: false
name*requiredstringName of the filter-segment.

Example: dev_environment
variablesFilterSegmentVariablesVariables of the filter-segment.

NewInclude

List of includes of the filter-segment.

NameTypeDescription
applyTonull | Array<string>[Experimental] The tables that the entity-filter will be applied to.

Example: ["logs","events"]
dataObject*requiredstringThe data object that the filter will be applied to. Use '_all_data_object' to apply it to all dataObjects.

Example: logs
filter*requiredstringData will be filtered by this value. Field names must only contain letters, numbers and underscores, otherwise they need to be escaped using quotes(`).
relationshipNewRelationship[Experimental] The relationship of an include which has to be be specified when the data object is an entity view.

NewRelationship

[Experimental] The relationship of an include which has to be be specified when the data object is an entity view.

NameTypeDescription
name*requiredstringName of the relationship.

Example: belongs_to
target*requiredstringTarget of the relationship.

Example: dt.entity.host

ParameterErrorInfo

NameType
message*requiredstring
parameterDescriptor*requiredstring

PartialUpdateFilterSegment

NameTypeDescription
descriptionnull | stringDescription of the filter-segment.

Example: only includes data of the dev environment
externalIdnull | stringOptional unique identifier of the filter-segment. Used for Dynatrace Configuration as Code
includesnull | Array<NewInclude>List of includes of the filter-segment.
isPublicnull | booleanIndicates if the filter-segment is publicly accessible within the tenant.

Example: false
namenull | stringName of the filter-segment.

Example: dev_environment
variablesFilterSegmentVariablesVariables of the filter-segment.

ProxyErrorInfo

NameType
message*requiredstring

QueryFrontendRawErrorInfo

NameType
message*requiredstring
rawQueryFrontendResponse*requiredstring

Relationship

[Experimental] The relationship of an include which has to be be specified when the data object is an entity view.

NameTypeDescription
name*requiredstringName of the relationship.

Example: belongs_to
target*requiredstringTarget of the relationship.

Example: dt.entity.host

RequestBodyErrorInfo

NameType
bodyDescriptor*requiredstring
message*requiredstring

UpdateFilterSegment

NameTypeDescription
descriptionnull | stringDescription of the filter-segment.

Example: only includes data of the dev environment
externalIdnull | stringOptional unique identifier of the filter-segment. Used for Dynatrace Configuration as Code
includesnull | Array<NewInclude>List of includes of the filter-segment.
isPublic*requiredbooleanIndicates if the filter-segment is publicly accessible within the tenant.

Example: false
name*requiredstringName of the filter-segment.

Example: dev_environment
owner*requiredstringDefines the owner of the filter-segment.

Example: john.doe
uid*requiredstringUnique identifier of the filter-segment.

Example: D82a1jdA23a
variablesFilterSegmentVariablesVariables of the filter-segment.

Enums

DetailedFilterSegmentAllowedOperationsItem

⚠️ Deprecated Use literal values.

Defines the allowed operations of the current user.

Enum keys

Delete | Read | Share | Write

FilterSegmentAllowedOperationsItem

⚠️ Deprecated Use literal values.

Defines the allowed operations of the current user.

Enum keys

Delete | Read | Share | Write

GetFilterSegmentQueryAddFieldsItem

⚠️ Deprecated Use literal values.

Enum keys

Externalid | Includes | Resourcecontext | Variables

GetFilterSegmentsQueryAddFieldsItem

⚠️ Deprecated Use literal values.

Enum keys

Externalid | Resourcecontext | Variables

GetLeanFilterSegmentsQueryAddFieldsItem

⚠️ Deprecated Use literal values.

Enum keys

Externalid | Owner | Resourcecontext | Variables

LeanFilterSegmentAllowedOperationsItem

⚠️ Deprecated Use literal values.

Defines the allowed operations of the current user.

Enum keys

Delete | Read | Share | Write

版本与发布记录

@dynatrace-sdk/client-filter-segment-management 共发布 18 个版本,首次发布于 2024/09/10;过去 12 个月发布了 2 个版本。

版本发布日期距今
2.0.3latest2026/11/103 天前
2.0.1tmp-2.0.12026/10/051 个月前
1.7.12025/09/261.1 年前
1.6.72025/09/041.2 年前
1.6.62025/09/011.2 年前
1.6.52025/07/151.3 年前

关于 @dynatrace-sdk/client-filter-segment-management 的常见问题

@dynatrace-sdk/client-filter-segment-management 是什么?

[](https://opensource.org/licenses/Apache-2.0

如何安装 @dynatrace-sdk/client-filter-segment-management?

在项目目录运行 npm install @dynatrace-sdk/client-filter-segment-management,或使用 pnpm add / yarn add / bun add。

@dynatrace-sdk/client-filter-segment-management 支持 TypeScript 吗?

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

@dynatrace-sdk/client-filter-segment-management 支持 ESM 还是 CommonJS?

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

@dynatrace-sdk/client-filter-segment-management 可以商用吗?

@dynatrace-sdk/client-filter-segment-management 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@dynatrace-sdk/client-filter-segment-management 的下载量有多少?

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

@dynatrace-sdk/client-filter-segment-management 还在维护吗?

最新版本 2.0.3 发布于 2026/11/10(3 天前);至今共发布 18 个版本,其中过去 12 个月发布了 2 个;首次发布于 2024/09/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。