DeepSeek Harness Plugin

curtainsmall/dsh-electro-lab

Stars ★ 2 Downloads (30d) 1,802 Category Tools & Capabilities Added 2026-08-27 npm dsh-electro-lab

Electrical and electronics calculation plugin for DeepSeek Harness: every computation runs through dedicated tools on self-describing complex value objects in SI base units, with an isolated calculation agent preset and a records panel that archives every solve on disk.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-electro-lab

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:curtainsmall/dsh-electro-lab

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

An electrical & electronics calculation plugin for the DeepSeek Harness.

简体中文

Contents

Install

dsh plugin --profile web add dsh-electro-lab

ElectroLab Mode

The plugin works as an agent preset: pick ElectroLab Mode when starting a session and ask any electrical or electronics question in plain language. The session is isolated to the plugin's tools, with no shell, file system or network, so every number in the answer comes from the engine, and the agent stops and asks when the conditions are insufficient.

All calculation happens inside a deterministic engine. The agent writes typed values into slots, calls one of 38 built-in solvers, and reads the result back; the engine converts units at the calculation boundary and records every step into a readable record.

primitive effect
set writes one typed value into a slot
get reads one slot back
call runs a registered solver and stores its result
solver_info returns a solver's signature before it is called
record_question / record_analyse / record_answer bracket a solve into a record

The catalog covers expression algebra, series, transfer functions, DSP and DFT, signal quality, circuits, electronics, RF and Smith chart, transmission lines, noise and filter design.

Records

Settled records are listed in the client panel's Records tab, refreshed every 5 s, and a record that was never sealed is marked incomplete. Opening one shows its timeline: a collapsible card per write, read, call and failure, values as JSON trees, the toolbar and title fixed while the timeline scrolls. The list supports multi-select and delete.

A record is the process of one solve: every step reads on its own, and a solve that was interrupted continues from its record after a host restart.

Article generation

Each record can be written up as a standalone solution article. The host LLM writes it from the trace — question, conditions, analysis, solver steps with their arguments and results, and the final answer — in the model's own voice, never mentioning the plugin.

format output
Markdown a flat .md file, never compiled
LaTeX a XeLaTeX document, compiled to PDF by a LaTeX driver

The setup dialog remembers the article language, the output directory and the file name. Compilation needs latexmk or MiKTeX's texify together with the xelatex engine, and the dialog checks the toolchain once per host start: without a usable driver Generate is disabled with the reason shown. A run is cancellable, and its progress dialog minimizes to a corner pill that survives navigation. The article or its folder can be opened from that dialog.

External solvers

Beyond the built-in catalog you can register solvers of your own, reached over http. A declaration lives in ~/.dsh-electro-lab/external-solvers.jsonl and is compiled into the solver registry at engine start, so solver_info and call treat it like a built-in.

way to declare how
the panel External solvers tab: list, add, edit, enable, disable, delete
the agent external_solver_add, external_solver_update, external_solver_delete
the file edit the archive directly

A declaration carries a name, a description, the parameters, an explicit returns shape and the endpoint, and it may be written in the panel's guided form. Changes apply after a host restart, and the panel shows a pending-restart notice until then.

The peer answers a POST of { "requestId": …, "args": … } with { "requestId": …, "result": … }, or with { "requestId": …, "error": "…" } to report a failure. Arguments and results are typed values, so units travel as SI numbers rather than as symbols or unit words.

Engine manual §6 holds the full contract, and external-solvers-example/ is a runnable peer with a field-by-field register guide.

Configuration

setting meaning
DSH_ELECTRO_LAB_HOME the plugin home, ~/.dsh-electro-lab by default
DSH_ELECTRO_LAB_LOG_LEVEL debug, info, warn, error or off; default info

The home holds the records, the declaration archive, the plugin state and one log file per host run. Both are described in the engine manual: storage and logs.

Documentation

document content
Engine manual · 简体中文 typed values, primitives, the solver catalog, external solvers, storage, logs
external-solvers-example · 简体中文 a runnable echo peer and the field-by-field register guide
Contributing · 简体中文 setup, commit conventions, release process

License

MIT © 2026 curtainsmall

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.