DeepSeek Harness Sentry 插件

前言

DeepSeek Harness(DSH)通过插件机制将外部能力接入智能体工作流。在处理错误监控数据时,原始的 Sentry API 响应往往体积庞大(单个事件可达 2MB),直接传递给 LLM 会导致上下文溢出或丢失关键信息。dsh-sentry 插件旨在解决这个问题,它通过只读方式连接 Sentry Web API,并在返回前对数据进行结构化修剪,确保代理上下文既能获取足够调试信息,又不会超出 token 限制。

插件介绍

maxmilian/dsh-sentry 是一个开源的 DeepSeek Harness 插件,专注于从 Sentry 获取问题与事件数据。其核心职责不是 API 代理,而是“修剪”响应体,使其适应智能体的上下文窗口。

  • 开源协议:MIT
  • 维护者:maxmilian
  • 核心价值:在不修改 Sentry 状态的前提下,提供精简的错误数据视图。

核心功能

插件提供以下只读工具:

  1. sentry_list_projects:列出配置组织下最多 100 个项目。
  2. sentry_search_issues:使用 Sentry 搜索语法检索问题,支持单项目或整个组织范围。
  3. sentry_get_issue:通过数字 ID 或短 ID 获取单个问题详情(不含事件体)。
  4. sentry_get_latest_event:获取问题的最新事件,并附带经过修剪的堆栈跟踪。
  5. sentry_get_event:通过事件 ID 获取指定项目下的单个事件,同样经过修剪处理。

环境与依赖

插件运行需要满足以下环境要求:

  • Node.js:22.19 或更高版本(22.x 系列),或 24 或更高版本。
  • Bun:1.3.5 或更高版本(用于从源码安装或本地开发)。
  • DSH 兼容性:需要兼容 @deepseek-ai/dsh-tools API 的 Harness 环境。

认证配置

使用此插件需要向 Sentry 申请认证令牌。插件不支持 Organization Token(sntrys_),必须使用 User Auth Token(sntryu_),因为 Organization Token 的作用域被锁定为 org:ci,无法提供读取权限。

所需 Token 权限范围:
* org:read:用于获取项目和问题列表。
* project:read:用于获取项目内问题。
* event:read:用于读取事件详情。

环境变量与配置

插件支持通过环境变量或配置文件设置参数。配置文件中的值优先级高于环境变量。

配置项 环境变量 默认值 说明
baseUrl SENTRY_URL https://sentry.io/ Sentry 实例根地址。EU 区域需使用 https://de.sentry.io/。尾部 /api/0 会被自动去除。
token SENTRY_AUTH_TOKEN 必填 用户认证令牌 (sntryu_)。绝不会返回或记录在日志中。
org SENTRY_ORG 必填 组织标识符(slug),插件实例内固定。
locale — en 工具描述的语言(en, zh-TW, zh-CN, ja)。工具名称保持英文。
includeFrameVars SENTRY_INCLUDE_FRAME_VARS false 是否保留堆栈帧的局部变量。仅将字符串 true 设为启用。
requestTimeoutMs — 30000 单次工具调用的总超时时间(含短 ID 额外请求),范围 1–300000。
maxResponseBytes — 5242880 (5MB) 单个 HTTP 响应体的硬性上限,范围 1–52428800。

数据修剪策略

为了控制上下文大小,插件对 Sentry 响应进行了严格的清理和压缩。

无条件移除:
* 请求头、Cookie、环境变量及请求体。
* 堆栈帧局部变量(除非 includeFrameVars 为 true)。
* mechanism.data、contexts.state、packages、modules、_meta。
* 用户敏感信息:user.email、user.ip_address、user.username,仅保留 user.id。
* 带有秘密或 PII 特征的标签(如 token、secret、password、api_key、cookie、session 等)。
* 泄露构建路径的帧字段(如 absPath)。

有条件保留与缩减:
* 帧:保留最多 max_frames 个。优先保留应用内帧,总是包含最内层的两个帧,并从尾部填充。
* 源代码上下文:仅保留最内层三个应用帧,每帧最多 11 行,每行 200 字符。
* 面包屑:保留最后 20 条,消息限制 200 字符。
* 字符串:异常值限制 2000 字符,标题/消息/罪魁祸首限制 500 字符。

如果修剪后的结果仍超过 200KB 预算,插件会按顺序降级:移除源上下文 -> 移除面包屑 -> 移除帧(最低保留 10 个)。降级状态会记录在 meta.trimmed.degraded 中。

限制

  1. 只读操作:插件仅提供 HTTP GET 接口,不会解决、指派、归档、合并、删除问题或创建发布。
  2. 单组织限制:每个插件实例只能绑定一个 Sentry 组织,工具不支持动态切换组织。
  3. API 限制:暂不支持 Seer AI、性能监控、Discover、指标、仪表板、回放、Trace 或 Span 端点。

总结

maxmilian/dsh-sentry 是一个针对 DeepSeek Harness 生态设计的轻量级 Sentry 数据接入工具。它通过严格的权限控制(仅读、用户 Token)和数据修剪策略,解决了大型错误日志导致上下文溢出的问题,适合需要在智能体中集成错误排查能力的场景。

  • GitHub 仓库:https://github.com/maxmilian/dsh-sentry
  • 目录页:https://www.skillhub.cn/plugins/maxmilian/dsh-sentry
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜