moazzamak/dsh-train-dashboard ↗★ 0
dsh-train-dashboard
在右侧面板展示训练运行的图表看板 适合需要实时监控和图表化展示本地训练运行状态的开发者。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:moazzamak/dsh-train-dashboard说明文档
阅读完整 README ↗Configuration
The plugin has one composition row. Its config is replaced wholesale by a
higher patch layer and never deep-merged, so a profile that overrides the row
must restate every key it cares about.
- id: train-dashboard
name: dsh-train-dashboard
config:
workspace: /absolute/path/to/your/project
command: [python3, -m, your_project.snapshot_tool, --out, "{snapshot}"]
snapshotPath: train-dashboard.snapshot.json
refreshSeconds: 30
timeoutSeconds: 120
| key | default | meaning |
|---|---|---|
workspace | '' — set it | Absolute path. The command's working directory, and the base that snapshotPath and any relative path resolve against. A host process can start in the profile directory, where a relative path resolves to nothing, so name it. |
command | [] — set it | The argv of your producer, one word per list item. Not a shell string: no shell is involved, so quoting and && do not apply. |
snapshotPath | train-dashboard.snapshot.json | Where your command writes and the tab reads. Relative to workspace, or absolute. |
arm | '' | Optional label shown in the header when the snapshot does not name the run itself. |
refreshSeconds | 30 | Minimum spacing between regenerations, and half the staleness threshold (a snapshot older than twice this is reported stale). Raise it, do not lower it, while a training job is running on the same machine. |
timeoutSeconds | 120 | A regeneration is abandoned after this and reported, rather than leaving a spinner forever. |
| any other key | — | Kept as written, and usable as a {placeholder} in command. |
Placeholders in command. {snapshot} becomes snapshotPath,
{workspace} becomes workspace, and any other {name} becomes the config key
of that name. So a producer with its own arguments declares them as keys:
command: [my-tool, --logs, "{logsDir}", --run, "{arm}", --out, "{snapshot}"]
logsDir: logs/train
arm: run-7
An unknown placeholder is left as written rather than blanked, so a typo shows up in the command the tab prints instead of silently becoming an empty argument.
What the plugin does with the command. It runs it with cwd set to
workspace, captures up to 256 KB of each of stdout and stderr (the last few
stderr lines are shown when the exit code is not zero), and asks it to stop
after timeoutSeconds, with a short grace period. Success is judged by the
snapshot, not by the exit code: a command that exits zero without writing a
readable snapshot has not answered the tab's question, and one that writes a
good snapshot has.