dsh-codetime: CodeTime Backend for DeepSeek Harness

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

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

Xiaoye