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
Links
More in this category
DayuanJiang/next-ai-draw-io#dsh-plugin★ 36802
Draws draw.io diagrams in DeepSeek Harness through the next-ai-drawio MCP server: the link in the reply opens a live preview in the right sidebar, you can edit the diagram by hand, and each AI change is a version you can restore. Node.js 18+; npx downloads the MCP server on first use.
Tencent/WeKnora#dsh-weknora★ 36302
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 7042
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
T-Auto/dsh-ops★ 5074
Provides bash, PowerShell 7, and high-performance Rust tools for DSH on Windows to reduce token usage.
sixtysevenlf/dsh-blender-plugin★ 1575
Lets a DSH agent drive a local Blender over a direct TCP channel with 15 tools: viewport frames, custom-angle renders, Python execution, headless and job offload, transaction rollback, and a planning layer of 228 ops across 34 families.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1155
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.