前言¶
DeepSeek Harness(DSH)通过插件机制将外部能力接入智能体工作流。在处理错误监控数据时,原始的 Sentry API 响应往往体积庞大(单个事件可达 2MB),直接传递给 LLM 会导致上下文溢出或丢失关键信息。dsh-sentry 插件旨在解决这个问题,它通过只读方式连接 Sentry Web API,并在返回前对数据进行结构化修剪,确保代理上下文既能获取足够调试信息,又不会超出 token 限制。
插件介绍¶
maxmilian/dsh-sentry 是一个开源的 DeepSeek Harness 插件,专注于从 Sentry 获取问题与事件数据。其核心职责不是 API 代理,而是“修剪”响应体,使其适应智能体的上下文窗口。
- 开源协议:MIT
- 维护者:maxmilian
- 核心价值:在不修改 Sentry 状态的前提下,提供精简的错误数据视图。
核心功能¶
插件提供以下只读工具:
- sentry_list_projects:列出配置组织下最多 100 个项目。
- sentry_search_issues:使用 Sentry 搜索语法检索问题,支持单项目或整个组织范围。
- sentry_get_issue:通过数字 ID 或短 ID 获取单个问题详情(不含事件体)。
- sentry_get_latest_event:获取问题的最新事件,并附带经过修剪的堆栈跟踪。
- sentry_get_event:通过事件 ID 获取指定项目下的单个事件,同样经过修剪处理。
环境与依赖¶
插件运行需要满足以下环境要求:
- Node.js:22.19 或更高版本(22.x 系列),或 24 或更高版本。
- Bun:1.3.5 或更高版本(用于从源码安装或本地开发)。
- DSH 兼容性:需要兼容
@deepseek-ai/dsh-toolsAPI 的 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 中。
限制¶
- 只读操作:插件仅提供 HTTP GET 接口,不会解决、指派、归档、合并、删除问题或创建发布。
- 单组织限制:每个插件实例只能绑定一个 Sentry 组织,工具不支持动态切换组织。
- 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