dsh-codetime:DeepSeek Harness 的 CodeTime 後端

DeepSeek Harness (dsh) 負責管理智能體的會話生命週期。對於開發者而言,追蹤這些會話的詳細活動(例如代碼修改、工具調用、Token 消耗)是評估開發效率的關鍵。現有的 codetime-cli 提供了這類能力,但它主要依賴適配器來連接不同的 Agent。dsh-codetime 作爲一個原生插件,將這套機制直接移植到了 dsh 平臺上,讓 DSH 的活動也能統一上報到 codetime.dev,從而在同一個儀表盤上查看所有 AI 工具的使用情況。

插件簡介

dsh-codetime 是一個由 codetime-dev 維護的插件,旨在爲 DeepSeek Harness 提供自動化的編碼時間追蹤。它利用 dsh 內置的 session-telemetry seam,將 dsh 的會話和事件轉換爲 CodeTime 的標準事件格式,並推送到 /v3/agent/ingest 端點。

核心功能

  1. 統一上報:將會話、回合、工具、文件和模型活動報告到同一個 Agent ingest 端點。
  2. 原生後端:作爲 dsh 的原生 sessionTelemetry 後端,直接集成到 dsh 的 telemetry 流水線中。
  3. 事件映射:將 dsh 的 session 和 event 類型映射爲 CodeTime 的規範事件(Canonical Events)。
  4. 數據刷新:將聚合後的數據通過 POST /v3/agent/ingest 刷新,使用 replace: true 策略進行 upsert 操作。

安裝與啓用

該插件是一個宿主平面插件,以 dsh bundle 的形式分發。安裝需要 dsh 版本 0.2.x。

1. 安裝插件

使用官方命令安裝:

dsh plugin --profile web add dsh-codetime

2. 環境準備

sessionTelemetry 在 dsh 中是單例模式(一個進程對應一個後端)。基礎 bundle 總是掛載 session-telemetry-otel。因此,在安裝此插件前,必須確保禁用默認的 OTEL 後端。

3. 本地開發安裝(可選)

如果需要在發佈新版本前進行測試,可以使用本地路徑安裝:

dsh plugin --profile web add /path/to/dsh-codetime

配置項

插件通過配置文件或環境變量控制行爲。以下是可用的配置鍵:

配置鍵 默認值 說明
mode FULL (由 patch 設置) 捕獲模式:FULL(實時捕獲所有會話)、FEEDBACK_ONLY(僅在用戶記錄反饋後上傳)或 DISABLED。
apiUrl https://codetime.dev API 基礎 URL。
flushIntervalMs 60000 刷新彙總數據的間隔(毫秒)。
shutdownTimeoutMs 5000 關閉時排空緩衝區的超時時間(毫秒)。
token — Bearer Token,優先級高於環境變量和配置文件。

Token 獲取

Token 的解析順序爲:配置文件 token -> 環境變量 CODETIME_TOKEN -> ~/.codetime/config.json。如果你已經通過 CLI 或其他編輯器插件登錄過,通常可以直接讀取該文件。

工作原理與事件映射

插件通過 SessionTelemetryCoordinator 驅動事件收集,並將 dsh 事件轉換爲 CodeTime 事件。以下是主要的事件類型映射:

dsh session/event 類型 codetime canonical event
turn/start / turn/end turn.started / turn.completed | turn.failed
user/message prompt.submitted
assistant/message (含 usage) model.usage
tool/call tool.started
tool/result tool.completed | tool.failed
tool/result (bash/pwsh) command.completed | command.failed
compaction/end context.compacted
session created / disposed session.started / session.ended

文件活動映射

文件活動由工具名稱和參數解析得出:

工具類型 推導的活動
read, read_image read
write write
edit edit,並計算 linesAdded/linesRemoved
str_replace_editor view -> read,create -> write,其餘 -> edit
grep, glob search

如果工具的 result 標記爲錯誤,它將被歸類爲 tool.failed,且不會貢獻文件活動。

限制與注意事項

  1. 內存緩衝:事件緩衝區按會話保存在內存中,每次刷新時重新發送。長會話可能會增加內存佔用。
  2. 無歷史回填:該插件僅上報當前進程觀察到的實時活動。無法自動回填歷史會話數據。如需歷史數據,需配合 codetime-cli 的 backfill 適配器。
  3. 無去重規則:插件不會自動處理數據去重,記錄會原樣發送(經過 session-telemetry/record 瀑布流後)。
  4. 單例限制:確保進程內只掛載一個 sessionTelemetry 後端,否則可能導致數據衝突。

總結

dsh-codetime 填補了 DeepSeek Harness 在編碼時間追蹤上的空白,使其能夠與 codetime-cli 生態無縫對接。通過標準化的 API 端點和事件映射,它爲開發者提供了一個統一的視角來監控 AI Agent 的開發活動。

  • 插件目錄: https://www.skillhub.cn/plugins/codetime-dev/dsh-codetime
  • GitHub 倉庫: https://github.com/codetime-dev/dsh-codetime
羽毛球分组比赛记分
小程序二维码

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

小夜