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
羽毛球分组比赛记分
小程序二维码

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

小夜