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