DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-wakatime

Plugin Wakatime

跟踪您在 DeepSeek Harness 中使用 AI 编码的时间,并将其作为 AI 编码活动报告给 WakaTime。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Dynesshely/dsh-plugin-wakatime#9eacaec72a91ab37c242434c2c72f42e835ce1ae
README兼容性版本

兼容性与来源证明

Plugin Wakatime 以 dsh-plugin-wakatime 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/27

版本

0.2.0stable
2026/10/27
0.1.0stable
2026/10/27

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/10/27
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

MarketdshmarketDeepSeek Harness 内的可视化插件市场——浏览、搜索并一键安装社区插件。· DSH 可视化插件市场:浏览、搜索并一键安装社区插件。Better Sidebardsh-better-sidebarBetter Sidebar for DSH — 在一列中提供文件树、编辑器、变更、任务和侧边聊天,并为每个对话单独显示。同时提供服务,供其他插件注册侧边栏标签页和文件查看器。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包Ssh@linxin666/dsh-sshdsh Web GUI 的远程 SSH 操作:主机配置存储(~/.dsh/dsh-ssh.json,可从 ~/.ssh/config 导入)、支持跳板主机的持久化 ssh2 连接池、exec / PTY Web 终端 / SFTP 传输 / 本地端口转发隧道 / 集群执行

README

dsh-plugin-wakatime — WakaTime heartbeats for DeepSeek Harness

dsh-plugin-wakatime

A DeepSeek Harness (DSH) Host plugin that reports the time you spend coding with AI inside DSH to WakaTime, as category: "ai coding" heartbeats, so it shows up in your AI Coding stats next to everything else you track.

It does not fake per-file keystroke heartbeats. It answers one question — was this stretch of time spent working on this project with an AI pair? — and it does so in the background, without blocking the host. Since v0.2 it also ships a Usage page inside DSH.

Features

  • Project-aware — entity is the session's working directory, project is its folder name, so AI time is broken down per project in WakaTime.
  • AI-shaped heartbeats — every beat carries the DSH session id, input/output token deltas, and how many characters you typed.
  • Follows real DSH activity — user messages, assistant replies, tool calls, and turn boundaries all count; a 15 s keepalive covers long turns, and an idle timeout stops the clock when you walk away.
  • Nothing lost offline — 429/5xx/network failures land in a local queue (atomic writes, 500 beats max) and are replayed with backoff; a 401 stops sending instead of hammering the API.
  • Built-in Usage page — a sidebar entry with today / this week / all-time time, a 7-day chart, top projects, token and keystroke counts, plus the WakaTime-side view.
  • Harmless without config — no api_key means one warning in the log and an inert plugin; DSH starts normally.

Install

The bundle needs its own dependency first: install_bundle symlinks a local directory and does not install what the bundle depends on.

git clone git@github.com:Dynesshely/dsh-plugin-wakatime.git
cd dsh-plugin-wakatime
pnpm install          # or npm install

Then install the repository root as a bundle from DSH's Plugin Manager:

plugin_manager → install_bundle → D:\Projects\Dynesshely\dsh-plugin-wakatime

Restart DSH after installing or upgrading — the Host code lives in the server process, so refreshing the page is not enough. Remove it with remove_bundle (package name dsh-plugin-wakatime).

Prerequisite: an api_key under [settings] in ~/.wakatime.cfg — the same file your other WakaTime clients already use. Its proxy, hostname, and debug values are reused.

Configuration

Config lives on the plugin's row (config in cordis.patch.yml, or the form in Settings). Precedence: plugin config > ~/.wakatime.cfg > built-in defaults.

KeyDefaultPurpose
enabledtrueMaster switch.
minIntervalSeconds120Minimum gap between heartbeats, all sessions combined.
idleTimeoutMinutes15Gap that ends the current timing stretch.
entityType'file'file reports the project path; app reports DeepSeek Harness.
includeSubagentSessionsfalseCount subagent sessions separately (off: the same wall-clock time is not counted twice).
category'ai coding'WakaTime activity category.
apiKeyemptyOverrides the api_key from ~/.wakatime.cfg.
debugfalseVerbose diagnostics in the log file.

An empty string means "fall back", not "set it empty". The remaining keys — apiUrl, proxy, hostname, language, userAgent, projectFromCwd — and the exact semantics of all of them are in docs/design.md.

Usage

v0.2 adds a Usage page: a sidebar entry sitting next to Plugins, Automation tasks and Context insights. It is fed by the Host route GET /wakatime/usage.json (Cache-Control: no-store), so everything shown is real data from this machine.

BlockShows
Local timetoday (large), this week, all-time
Today's volumeinput / output tokens, characters typed, sessions, heartbeats
Last 7 daysinline SVG bar chart, one bar per day
Projectstop 5 by tracked time
WakaTimewhether api_key is configured, hostname, today's remote AI Coding time, pending queue size, last send, last error

Page copy is bilingual and follows DSH's language setting (en / zh), and the page is drawn with the host's theme variables, so it matches light and dark. The remote figure is derived from your heartbeats (GET /users/current/heartbeats?date=…, AI Coding categories only, 60 s cache); if that one request fails, only that block reports an error and the local stats keep working. A refresh button re-fetches the JSON.

How it works

session/event → accumulate activity + token/char deltas → throttle (≥ minIntervalSeconds)
                                    ├── ok   → WakaTime: single beat, or .bulk (≤ 25 per batch)
                                    └── fail → local queue → backoff replay
  • Triggers: user/message, assistant/message (with usage), tool/call, tool/result, turn/start, turn/end; running turns stay alive thanks to a 15 s tick.
  • Auth: Authorization: Basic base64(api_key) against the WakaTime API v1. Each beat also feeds a local per-day store (usage.json, 30 days) that backs the Usage page.
  • Diagnostics: <DSH_HOME>/cache/wakatime-dsh/wakatime.log (or ~/.dsh/cache/… when DSH_HOME is unset). The offline queue and state live in the same directory.

Privacy

Sent to WakaTime: project working-directory path, project name, DSH session id, input/output token counts, characters typed, timestamps, plus language and hostname when configured.

Never sent: code, prompt text, model output, file contents, terminal output. The plugin works on event metadata, never on the text itself. The usage store stays on your disk.

Development

No build step, plain ESM. lib/*.js is testable without DSH:

pnpm install
node --test
index.js            Host entry: Config + apply(ctx, config)
lib/tracker.js      session/event → activity state → heartbeat scheduling
lib/usage.js        per-day aggregation behind the Usage page
lib/client.js       WakaTime HTTP client (auth, batching, retry, proxy fallback)
lib/heartbeat.js    heartbeat builder (pure)
lib/cfg.js          ~/.wakatime.cfg + plugin config merge
lib/queue.js        persistent offline queue (atomic writes)
test/               node:test suites

Docs

  • docs/design.md — the implementation contract: settings, events, wire format, v0.2 page.
  • docs/wakatime-api.md — WakaTime API v1 fields, categories, auth, and retry behavior as measured.
  • docs/harness-api.md — DSH plugin API: schema, events, web server routes, slots.

License

MIT © 2026 Dynesshely