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 端點。
核心功能¶
- 統一上報:將會話、回合、工具、文件和模型活動報告到同一個 Agent ingest 端點。
- 原生後端:作爲 dsh 的原生
sessionTelemetry後端,直接集成到 dsh 的 telemetry 流水線中。 - 事件映射:將 dsh 的
session和event類型映射爲 CodeTime 的規範事件(Canonical Events)。 - 數據刷新:將聚合後的數據通過
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,且不會貢獻文件活動。
限制與注意事項¶
- 內存緩衝:事件緩衝區按會話保存在內存中,每次刷新時重新發送。長會話可能會增加內存佔用。
- 無歷史回填:該插件僅上報當前進程觀察到的實時活動。無法自動回填歷史會話數據。如需歷史數據,需配合
codetime-cli的 backfill 適配器。 - 無去重規則:插件不會自動處理數據去重,記錄會原樣發送(經過
session-telemetry/record瀑布流後)。 - 單例限制:確保進程內只掛載一個
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