DeepSeek Harness Plugin

curtainsmall/dsh-reckoner

Stars ★ 1 Downloads (30d) 1,102 Category Tools & Capabilities Added 2026-09-25 npm dsh-reckoner

A deterministic calculation engine for DeepSeek Harness, including a preset that guides the LLM to calculate through the engine rather than by text generation.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-reckoner

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

dsh plugin --profile web add github:curtainsmall/dsh-reckoner

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 calculation engine for the DeepSeek Harness, to force LLM to use deterministic program for evaluations rather than text generations.

简体中文

Contents

Install

dsh plugin --profile <profile> add dsh-reckoner

Reckoner Preset

The package ships two agent presets:

preset id tools external sources
Reckoner reckoner record tools and evaluation tools all knowledge comes from LLM
Reckoner with search reckoner-with-search same tools as 'Reckoner' preset, plus web search tools includes web search results

The session gets the plugin tools and nothing else: no shell, no file system, no network, no subagents. Every number in an evaluation is therefore either a value the LLM sets with set or a result produced from eval. When conditions given are not enough for solving, the LLM shall stop and point out.

For Reckoner with search preset, search tools are given for the LLM to search on the web for external knowledge.

The engine

Basics

One engine runs per host process, and every session's calls act on it. It is a calculator with no domain knowledge. The LLM sets quantities given in conditions to engine, comes up with ideas and writes formulas to evaluation, and gets the results for output.

tool effect
set writes one slot; value: null deletes it
get reads one slot back; the only way to read a value
eval writes one formula's result into the target slot
record_start / record_end open and close a record
record_message write down messages into records
search(Reckoner with search preset only) search on web

A value is a number, a complex, an array of values or an object of named values. In the engine, the units are represented in the combinations of SI base units, A formula is one expression over the slots, with + - * / ^ and a set of $ symbols and constants. No comparison, no logic and no assignment. Calls answer {ok: true, ...} or {ok: false, code, error}, and a refusal changes nothing.

Records

A record is the process of one calculation: its title, conditions, explanations, evaluation steps and optional closing text.

A closed record lives in <home>/records/<id>.jsonl, and the one still open lives in <home>/open-record.jsonl until closing renames it into the first path, so a record that is closed is always complete.

For the whole reference, see engine manual (简体中文).

Article generation

Every closed record can be written up as a standalone article. A host-side LLM call receives the record's facts as plain text with numbers cut to at most four decimal places.

format output
Markdown a flat .md file
LaTeX a .tex source in a folder named after the file, compiled to PDF when requested

For LaTex, PDF compilation is delegated to latexmk or MiKTeX's texify and needs the xelatex engine; with compilation requested and no usable driver or engine, Generate is disabled and the dialog names what is missing.

Configuration

setting meaning
DSH_RECKONER_HOME the plugin home, ~/.dsh-reckoner by default
DSH_RECKONER_LOG_LEVEL debug, info, warn, error or off; the default is info

The home holds the unclosed record (open-record.jsonl), the closed records (records/<id>.jsonl), the plugin state and the logs (logs/<YYYY-MM-DD_HH-mm-ss.SSS>.log, one per plugin mount). The state file, state.json, is a tree with one subtree per module that remembers settings, plus the flat restartRequired marker.

Documentation

document content
Engine manual (简体中文) the long-form engine reference
reckoner-interface, reckoner-template the manual the agent reads in Reckoner Mode
Contributing (简体中文) setup, commit conventions, release process

License

MIT. Copyright (c) 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.