Training Lens opens a local TensorBoard scalar dashboard with selectable metrics, explicit improvement direction, optional EMA smoothing and Chinese/English UI; requires an existing Python environment with TensorBoard.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-training-lens
# from a prebuilt release tarball
dsh plugin --profile web add "https://github.com/GU143312/dsh-training-lens/releases/download/v0.1.0/dsh-training-lens-0.1.0.tgz"
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:GU143312/dsh-training-lens
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A local, read-only training dashboard for DeepSeek Harness (DSH). Turn existing TensorBoard scalar logs into a focused view of progress and trends, without changing your trainer.
简体中文 · DSH plugin documentation

Screenshot uses generated demonstration data, not a training result.
Features
- Choose any primary and secondary scalar: reward, validation loss, accuracy, learning rate, or a custom tag.
- Explicit higher / lower is better selection. By default, show the observed range without declaring improvement.
- Raw values, optional EMA smoothing, per-metric steps and expandable diagnostics.
- Chinese / English UI, responsive layout, automatic refresh and run selection.
- DSH tool starts, inspects and stops only its own dashboard. No trainer controls, telemetry or cloud upload.
- Works even when the TensorBoard web server is not running. No browser extension, front-end build or CDN required.
Install
Requires DSH 0.2.1-rc.2 (tested), Node 22+, and Python 3.10+ with TensorBoard. Compatibility outside the declared DSH 0.2 range is not assumed.
Install the versioned release artifact:
dsh plugin --profile desktop add https://github.com/GU143312/dsh-training-lens/releases/download/v0.1.0/dsh-training-lens-0.1.0.tgz
Or install the source bundle (plain JavaScript, no install-time build):
dsh plugin --profile desktop add github:GU143312/dsh-training-lens#v0.1.0
Reload the plugin or restart DSH once when convenient. Use your own profile name in place of desktop if needed. For local testing: dsh plugin --profile lens-test add /absolute/path/to/dsh-training-lens-0.1.0.tgz.
The Python helper uses your existing training environment. If TensorBoard is missing, install the optional Python dependencies with that interpreter, from a source checkout:
python -m pip install -r requirements.txt
The plugin never runs pip automatically. npm registry publication is separate from these GitHub installation methods; do not assume npm install dsh-training-lens is available until an npm release exists.
Use in DSH
Ask DSH:
Use training_lens to open my TensorBoard logs at
/absolute/path/to/runs, using Python/absolute/path/to/venv/bin/python.
On Windows, provide the training environment's ...\.venv\Scripts\python.exe. The tool returns a local URL; open it to choose a run and metrics.
Tool parameters:
| Field | Meaning |
|---|---|
action |
start, status, or stop |
logdir |
Absolute event directory or parent directory of runs |
python |
Existing Python executable, not a shell command |
port |
0 chooses a free port; an occupied fixed port fails without stopping its owner |
The process remains tied to the plugin instance. Disabling/reloading the plugin or closing DSH stops its dashboard. Stopping the dashboard leaves the training process and event files untouched. Only one dashboard is owned by a plugin instance; stop it before changing the root/interpreter.
Configuration
Optional defaults in your profile's cordis.patch.yml:
- id: training-lens
config:
python: /absolute/path/to/venv/bin/python
logdir: /absolute/path/to/runs
port: 0
staleSeconds: 120
startupTimeoutMs: 60000
All runtime paths are provided by the user. No project-specific paths or datasets ship in the package.
Standalone use from a source checkout:
python python/server.py --logdir /absolute/path/to/runs --port 6008
Interpretation and limits
- Status means recent scalar timestamps, not trainer liveness. A completed target is not proof of successful training or saved checkpoints.
- Standard TensorBoard scalar and TF2 scalar-plugin tensor summaries are supported. Unknown tags are selectable; success rate is never inferred from reward.
- The default x-axis is the writer's step. Known MCTS tag combinations may expose epoch progress from numeric
training_epochsinconfig.yaml; genericTrain/lossis not assumed to use epochs. - Metrics may be logged at different frequencies. The card and point tooltip identify the metric's own step.
- NaN and Infinity are gaps, not zeros. Duplicate steps use the newest event after TensorBoard's restart-purge behavior.
- Charts above 1,600 points retain bucket endpoints/extrema/gap markers. Cards use the full parsed series; EMA is applied to displayed points.
- Event readers are cached for up to four runs. Very large mixed-media event files can use substantial memory. Use a focused log root.
- Hidden/cache/checkpoint directories and symlink entries are skipped. No arbitrary-file HTTP endpoint exists. Only loopback hosts are accepted; this is not an authenticated remote hosting service.
- In remote DSH environments the URL refers to the DSH host. Use your normal SSH/editor port forwarding; the plugin does not open a public tunnel.
Development
npm ci --ignore-scripts
npm run check
npm test
python -m unittest discover -s tests -p 'test_*.py' -v
npm pack
Set TRAINING_LENS_TEST_PYTHON to a Python executable with TensorBoard to enable the Node end-to-end lifecycle test. Python integration tests explicitly skip if optional dependencies are unavailable; CI installs them. No real training is run in tests. npm pack contains an allowlisted set of source/assets/docs, with no install lifecycle scripts.
MIT license. Python TensorBoard and PyYAML, and npm runtime dependencies, retain their own licenses; they are installed separately rather than vendored.
Links
More in this category
yjh051108/dsh-routing-suite★ 6991
One repository, three parts: a runtime injector for DSH plugin packages (inject, hot-reload, unload, promote a dev staging tool to the front, route self-heal, plus a settings-page plugin manager that lists, unloads and drags folders in to internalize), a task-aware reasoning-mode router agent preset (router-standard / router-spec / router-react), and a graded two-level task protocol whose six tools (commit_star, lock_stage, revise_do, edit_plan, mark_task, redteam_verdict) pin task state to disk. The injector implementation ships in-tree, so the install carries its own behaviour rather than a dependency list.
strukto-ai/mirage#dsh★ 3715
Swaps the filesystem and bash providers for a mirage virtual workspace: file tools and shell commands run over mounted resources (RAM, S3, Redis, Slack, Gmail, Notion, Postgres) instead of the host disk, with per-mount read/write/exec modes, per-command sandbox routing (monty, pyodide, quickjs in process; docker, e2b, daytona remote), and installed CLIs (git, gh, slack, linear, ntn, gws, or one you register) as head words in the virtual terminal.
first-fluke/oh-my-agent#dsh★ 1352
Runs project OMA checks before and after tool execution and when a turn tries to finish. Installs its OMA CLI dependency and initializes unconfigured projects on first use. Requires Node.js 22+; initial setup needs network access and project write access.
hust-open-atom-club/oh-dsh★ 323
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
MichengAI/dsh-skills-manager★ 294
Manages local DeepSeek Harness skills in Settings and shows shared Agent skills as read-only.
Fishquito7/dsh-skill-mcp-panel★ 223
Manages DSH skills and MCP servers from the web settings: skill cards with hot enable/disable, workspace scopes, groups, batch migration and drag-and-drop import, plus stdio/HTTP MCP CRUD with connection tests, secret redaction and the unified dsh-panel CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.