🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

公式计算引擎 curtainsmall/dsh-reckoner

DeepSeek Harness
curtainsmall38 天前有提交已提供中文文档扫描:含敏感能力

让模型用确定性公式求值,替代文本估算

29/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add curtainsmall/dsh-reckoner
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/06·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 38 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(dependency_conflict · 2026/10/6) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 43 处,展示前 40 条)
  • 发起网络请求
    src/client/generation.ts:115
    const res = await fetch(
  • 发起网络请求
    src/client/generation.ts:125
    const pr = await fetch(`${GENERATE_PROGRESS_ENDPOINT}?jobId=${encodeURIComponent(body.jobId)}`)
  • 发起网络请求
    src/client/generation.ts:164
    void fetch(`${GENERATE_CANCEL_ENDPOINT}?jobId=${encodeURIComponent(id)}`, { method: 'POST' }).catch(() => {})
  • 读取本地文件
    src/engine/record.ts:65
    return readFileSync(file, 'utf8')
  • 写入本地文件
    src/engine/record.ts:134
    mkdirSync(this.home, { recursive: true })
  • 写入本地文件
    src/engine/record.ts:135
    writeFileSync(this.openPath, `${JSON.stringify({ seq: 0, version: RECORD_VERSION })}\n`, 'utf8')
  • 写入本地文件
    src/engine/record.ts:139
    appendFileSync(this.openPath, `${JSON.stringify(row)}\n`, 'utf8')
  • 删除本地文件
    src/engine/record.ts:149
    rmSync(this.openPath, { force: true })
  • 写入本地文件
    src/engine/record.ts:154
    mkdirSync(this.recordsDir, { recursive: true })
  • 写入本地文件
    src/engine/record.ts:155
    renameSync(this.openPath, this.recordPath(id))
  • 读取本地文件
    src/engine/record.ts:177
    names = readdirSync(this.recordsDir)
  • 读取本地文件
    src/engine/record.ts:190
    return statSync(this.recordsDir).mtimeMs
  • 删除本地文件
    src/engine/record.ts:197
    rmSync(this.recordPath(id), { force: true })
  • 读取本地文件
    src/generate-server.ts:111
    const text = readFileSync(join(home, LEGACY_GENERATE_DIR_FILE), 'utf8').trim()
  • 删除本地文件
    src/generate-server.ts:163
    rmSync(join(home, LEGACY_GENERATE_DIR_FILE), { force: true })
  • 读取本地文件
    src/generate-server.ts:176
    if (existsSync(root)) roots.push(root)
  • 读取本地文件
    src/generate-server.ts:187
    const resolved = requested.length > 0 && existsSync(requested) && statSync(requested).isDirectory()
  • 读取本地文件
    src/generate-server.ts:187
    const resolved = requested.length > 0 && existsSync(requested) && statSync(requested).isDirectory()
  • 读取本地文件
    src/generate-server.ts:190
    const names = readdirSync(resolved, { withFileTypes: true })
  • 读取本地文件
    src/generate-server.ts:200
    return readFileSync(new URL('../assets/directory-tree.css', import.meta.url), 'utf8')
  • 执行外部命令来自配置/变量
    src/generate-server.ts:236
    const child = spawn(command, args, { detached: true })
  • 执行外部命令来自配置/变量
    src/generate-server.ts:355
    const child = spawn(command, args, { cwd })
  • 写入本地文件
    src/generate-server.ts:630
    mkdirSync(targetDir, { recursive: true })
  • 写入本地文件
    src/generate-server.ts:632
    writeFileSync(target, article, 'utf8')
  • 读取本地文件
    src/log.ts:326
    return statSync(file).size
  • 读取本地文件
    src/log.ts:334
    return readdirSync(root, { withFileTypes: true })
  • 删除本地文件
    src/log.ts:345
    rmSync(join(root, name), { force: true })
  • 删除本地文件
    src/log.ts:351
    rmSync(join(root, run.name), { force: true })
  • 写入本地文件
    src/log.ts:379
    mkdirSync(root, { recursive: true })
  • 读取本地文件
    src/preset.ts:38
    for (const entry of readdirSync(PRESETS_DIR, { withFileTypes: true })) {
  • 写入本地文件
    src/preset.ts:42
    mkdirSync(target, { recursive: true })
  • 写入本地文件
    src/preset.ts:44
    copyFileSync(new URL(`${id}/${file}`, PRESETS_DIR), join(target, file))
  • 发起网络请求
    src/search/lookup.ts:34
    fetch(
  • 发起网络请求
    src/search/lookup.ts:124
    const fetched = await web.fetch({ url: source.url }, signal)
  • 读取本地文件
    src/skill.ts:59
    const skill = parseSkillFile(readFileSync(new URL(file, SKILLS_DIR), 'utf8'))
  • 读取本地文件
    src/state.ts:186
    parsed = JSON.parse(readFileSync(statePath(home), 'utf8')) as unknown
  • 写入本地文件
    src/state.ts:195
    mkdirSync(home, { recursive: true })
  • 写入本地文件
    src/state.ts:198
    writeFileSync(temporary, JSON.stringify({ ...state, schema: STATE_SCHEMA }), 'utf8')
  • 写入本地文件
    src/state.ts:199
    renameSync(temporary, file)
  • 读取本地文件
    src/state.ts:240
    parsed = JSON.parse(readFileSync(statePath(home), 'utf8')) as unknown
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-llm@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 确定性公式求值
  • 替代文本估算

为 DeepSeek Harness 提供公式驱动的计算引擎。

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness Reckoner 面向 DeepSeek Harness 的计算引擎,用来强制 LLM 通过确定性程序求值,而不是靠文本生成。 目录 - DeepSeek Harness Reckoner - 目录 - 安装 - Reckoner 预设 - 引擎 - 基础 - 记录 - 文章生成 - 配置 - 文档 - 许可 安装 dsh plugin --profile <profile> add dsh-reckoner Reckoner 预设 本包附带两个智能体预设: | 预设 | id | 工具 | 外部来源 | | Reckoner | reckoner | 记录工具与求值工具 | 全部知识来自 LLM | | Reckoner with search | reckoner-with-search | 与 Reckoner 预设相同的工具,外加网页检索工具 | 包含网页检索结果 | 会话只拿到本插件的工具,别无其他:没有 shell、没有文件系统、没有网络、没有子代理。因此一次求值中的每个数字,要么是 LLM 用 set 存入的值,要么是 eval 产生的结果。当给出的条件不足以求解时,LLM 应停下并指出。 Reckoner with search 预设另外提供检索工具,供 LLM 到网上查找外部知识。
展开完整文档(README 剩余 1 节)
DeepSeek Harness Reckoner

面向 DeepSeek Harness 的计算引擎,用来强制 LLM 通过确定性程序求值,而不是靠文本生成。

目录

- DeepSeek Harness Reckoner
- 目录
- 安装
- Reckoner 预设
- 引擎
- 基础
- 记录
- 文章生成
- 配置
- 文档
- 许可

安装

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

Reckoner 预设

本包附带两个智能体预设:
| 预设 | id | 工具 | 外部来源 |
| Reckoner | reckoner | 记录工具与求值工具 | 全部知识来自 LLM |
| Reckoner with search | reckoner-with-search | 与 Reckoner 预设相同的工具,外加网页检索工具 | 包含网页检索结果 |

会话只拿到本插件的工具,别无其他:没有 shell、没有文件系统、没有网络、没有子代理。因此一次求值中的每个数字,要么是 LLM 用 set 存入的值,要么是 eval 产生的结果。当给出的条件不足以求解时,LLM 应停下并指出。

Reckoner with search 预设另外提供检索工具,供 LLM 到网上查找外部知识。

引擎

基础

每个宿主进程运行一台引擎,所有会话的调用都作用于它。它是一台不含领域知识的计算器。LLM 把条件中给出的量 set 进引擎,自行构思思路并写下公式交给 eval 求值,再取回结果用于输出。
| 工具 | 作用 |
| set | 写入一个槽;value: null 删除该槽 |
| get | 读回一个槽;这是读取值的唯一方式 |
| eval | 把一条公式的结果写入 target 指定的槽 |
| record_start / record_end | 开启与封闭一条记录 |
|record_message|把说明写进记录|
search(仅 Reckoner with search 预设)|在网页上检索|

一个值是数字、复数、值的数组或具名值的对象。在引擎里,单位以 SI 基本单位的组合表示。一条公式就是作用于各槽的一个表达式,含 + - * / ^ 以及一组 $ 符号与常量。没有比较、没有逻辑、没有赋值。调用返回 {ok: true, ...} 或 {ok: false, code, error},被拒绝时不改变任何状态。

记录

一条记录就是一次计算的过程:它的标题、条件、说明、求值步骤与可选的结束语。

已封闭的记录在 <home>/records/<id>.jsonl,尚未封闭的那条在 <home>/open-record.jsonl,封闭时后者被重命名为前者,因此封闭的记录总是完整的。

完整参考见引擎手册(English)。

文章生成

每条已封闭的记录都可以写成一篇独立的文章。宿主侧 LLM 调用以纯文本接收记录事实,数字截到最多四位小数。
| 格式 | 产物 |
| Markdown | 平铺的 .md 文件 |
| LaTeX | .tex 源文件写入以文件名命名的目录,按需编译为 PDF |

对 LaTeX,PDF 编译交由 latexmk 或 MiKTeX 的 texify 完成,并需要 xelatex 引擎;勾选编译而没有可用驱动或引擎时,「生成」按钮禁用,对话框指明缺少的部分。

配置

| 设置 | 含义 |
| DSH_RECKONER_HOME | 插件主目录,默认 ~/.dsh-reckoner |
| DSH_RECKONER_LOG_LEVEL | debug、info、warn、error 或 off;默认 info |

主目录存放未封闭的记录(open-record.jsonl)、已封闭的记录(records/<id>.jsonl)、插件状态与日志(logs/<YYYY-MM-DD_HH-mm-ss.SSS>.log,每次插件挂载一个文件)。状态文件 state.json 是一棵树:每个会记忆设置的模块一个子树,外加扁平的 restartRequired 标记。

文档

| 文档 | 内容 |
| 引擎手册(English) | 引擎的长篇参考 |
| reckoner-interface、reckoner-template | Reckoner 模式下智能体所读的手册 |
| 参与贡献(English) | 环境搭建、提交规范、发布流程 |

许可

MIT。Copyright (c) 2026 curtainsmall
预览分享卡片长什么样 ↓curtainsmall/dsh-reckoner
分享 · DeepSeek Harness Hub
curtainsmall/dsh-reckoner

让模型用确定性公式求值,替代文本估算

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部