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

工科题解工作台 insideyou-0501/dsh-mech-workbench

DeepSeek Harnessv0.3.1
insideyou-05019 天前有提交已提供中文文档扫描:含敏感能力

读题图、解方程、画图并逐步复核,避免算错

49/100
综合分
40
GitHub 星标
966
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-mech-workbench
npm 源 · dsh-mech-workbench 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · other
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-mech-workbench @ 0.3.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 08:39:08

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 21 处,展示前 21 条)
  • 读取本地文件
    index.js:236
    if (!existsSync(body)) continue
  • 读取本地文件
    index.js:237
    const metadata = frontmatter(readFileSync(body, 'utf8'))
  • 读取本地文件
    index.js:261
    return { ...summary, content: readFileSync(locator.body, 'utf8').slice(locator.bodyStart).trim() }
  • 读取本地文件
    index.js:777
    if (!existsSync(path)) throw new Error(`图片不存在:${path}`)
  • 写入本地文件
    lib/cards.js:46
    await mkdir(dir, { recursive: true })
  • 读取本地文件
    lib/cards.js:52
    existing = JSON.parse(await readFile(path, 'utf8'))
  • 写入本地文件
    lib/cards.js:66
    await writeFile(path, `${JSON.stringify(merged, null, 2)}\n`, 'utf8')
  • 读取本地文件
    lib/cards.js:73
    const raw = await readFile(path, 'utf8')
  • 读取本地文件
    lib/cards.js:82
    names = (await readdir(dir)).filter((name) => name.endsWith('.json'))
  • 读取本地文件
    lib/cards.js:89
    const card = JSON.parse(await readFile(join(dir, name), 'utf8'))
  • 读取本地文件
    lib/python.js:58
    return existsSync(python) ? python : null
  • 执行外部命令来自配置/变量
    lib/python.js:159
    child = spawn(command, args, {
  • 读取本地文件
    lib/python.js:196
    const stdout = await readFile(outPath, 'utf8').catch(() => '')
  • 读取本地文件
    lib/python.js:197
    const stderr = await readFile(errPath, 'utf8').catch(() => '')
  • 删除本地文件
    lib/python.js:198
    await rm(outPath, { force: true }).catch(() => {})
  • 删除本地文件
    lib/python.js:199
    await rm(errPath, { force: true }).catch(() => {})
  • 读取本地文件
    lib/python.js:219
    if ((candidate.includes('\\') || candidate.includes('/')) && !existsSync(candidate)) {
  • 删除本地文件递归
    lib/python.js:240
    await rm(dir, { recursive: true, force: true }).catch(() => {})
  • 写入本地文件
    lib/python.js:266
    await writeFile(specPath, JSON.stringify(spec), 'utf8')
  • 删除本地文件递归
    lib/python.js:283
    await rm(dir, { recursive: true, force: true }).catch(() => {})
  • 读取本地文件
    lib/python.js:327
    return new Uint8Array(await readFile(path))
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 的工科与数学题解工作台:读题图、求解、出图、自检,9 个工具 + 4 个技能

v0.3.12026-10-25
· 首次发布到 npm 从这一版起可以从 npm 安装,不再需要访问 GitHub(国内网络也能装): pnpm add dsh-mech-workbench 在 DSH 的「+ 添加插件」里也可以直接填包名 dsh-mech-workbench, 安装源选「中国大陆镜像源」。 新增 · 图例可配置:legend_ncol / legend_size / legend_loc / legend_framealpha, 也支持对象写法 legend: {ncol: 2, size: 9}。原来字号写死、列数写死 1, 六个系列会排成一竖条盖住曲线。 · inset 局部放大窗:{"kind": "inset", "box": [x0,x1,y0,y1], "series": [...]}。 父图用虚线框标出区域,旁边另开一小块坐标系画同源系列。 · Pillow 后端支持图例:按 legend_ncol 排两列,位置由 legend_loc 决定。 · 数学排版:所有文字支持 $...$,例如 $\frac{\sin x}{x}$、$\sigma_1$。 中文写在公式外面。 · math_fontset:dejavusans(默认)/ dejavuserif / cm / stix / stixsans。 · font_family / font_fallback / latex:可覆盖字体链。 修复 · 缺字形(豆腐块)根因:font.family 现在是一串具体字族, ⇒(U+21D2)、σ₁(U+2081) 这类字符逐字形回退到 DejaVu Sans,不再画成方框。 · 缺字形不再静默:两个后端都在 warnings 里报「字体缺字形:₁U+2081 …」。 · 去掉没有粗体的字族,避免字重被静默退回常规体。 · style 接受对象写法 {"style": {"linestyle": "--", "color": "#c62828"}}。 · note 上限两后端统一为 4 条;脚注不再压 x 轴刻度标签。 · 矢量输出不再因 PIL 回读抛错而误判失败。 · Pillow 后端写 .svg/.pdf 给出人话错误。 · 相对路径按会话工作目录解析:原来相对的 out / image 会写到应用数据目录、 事后找不到,现在优先取宿主的 workingDirectory 服务。 验证 · 绘图用例 48/48(matplotlib 与 Pillow 双后端) · 符号求解 43/43(sympy 精确与 numpy 降级) · 读图 / 可视化 / 视觉校核 10/10 安装 pnpm add dsh-mech-workbench
v0.3.02026-10-25
· 新增 · 图例排版可配置:legend_ncol / legend_size / legend_loc / legend_framealpha,也支持对象写法 · inset 局部放大窗系列:主图上框一块区域,另开小窗画同源数据 · Pillow 后端支持图例:多系列图不再只能靠猜颜色 · 数学排版(mathtext):所有文字支持 $...$ 公式,中文写在外面 · math_fontset / font_family / font_fallback / latex:可配置数学字形与真 LaTeX · 修复 · 缺字形(豆腐块)根因修复:font.family 改为具体字体链,⇒、σ₁ 逐字形回退到 DejaVu Sans · 缺字形不再静默:两个后端都写进 warnings · style 接受对象写法:{"style": {"linestyle": "--"}} 不再崩溃 · note 上限两后端统一为 4 条 · 脚注不再压刻度标签 · 矢量输出不再误判失败 · 相对路径按会话工作目录解析:Desktop 里不再写到 app 数据目录
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-mech-workbench 通用工科题解工作台(DeepSeek Harness 插件)。 本插件把「读题图 → 回读自检 → 求解 → 可视化 → 出图后自检」这五个步骤做成模型手里的确定性工具,严格按这条链路执行;学科差异由数据驱动,不写死在代码里: - 读任意学科的题目照片 / 图表 / 表格(力学、结构、电工、数学、物理、流程图…); - 解任意学科的方程与代数问题(优先符号精确解;缺 sympy 时降级为数值解,并如实声明); - 画任意学科的图(一个通用引擎 + 19 种通用系列类型),力学那几张标准图只是 scripts/presets.py 里的数据化预设,不是独立代码路径; - 验每一步都有独立复核,复核不过就 pass:false 并给出 warning,绝不静默给错答案。
展开完整文档(README 剩余 1 节)
dsh-mech-workbench

通用工科题解工作台(DeepSeek Harness 插件)。

本插件把「读题图 → 回读自检 → 求解 → 可视化 → 出图后自检」这五个步骤做成模型手里的确定性工具,严格按这条链路执行;学科差异由数据驱动,不写死在代码里:

- 读任意学科的题目照片 / 图表 / 表格(力学、结构、电工、数学、物理、流程图…);
- 解任意学科的方程与代数问题(优先符号精确解;缺 sympy 时降级为数值解,并如实声明);
- 画任意学科的图(一个通用引擎 + 19 种通用系列类型),力学那几张标准图只是 scripts/presets.py 里的数据化预设,不是独立代码路径;
- 验每一步都有独立复核,复核不过就 pass:false 并给出 warning,绝不静默给错答案。

装

先获取源码(本包就是一个普通 git 仓库,克隆到任意位置即可):

git clone https://github.com/insideyou-0501/dsh-mech-workbench.git

若 HTTPS 被拦(报 SEC_E_NO_CREDENTIALS 或一直超时),改用 SSH:

git clone git@github.com:insideyou-0501/dsh-mech-workbench.git

克隆出来的目录,就是下面第 2 步要指向的「本包目录」。

这是一个 Host-only bundle(无 npm 依赖、无构建步骤),按 DSH 官方规范用 plugin_manager 安装:

1. 在 Web 里新开一个创造模式任务(设置 → Agent 预设 → 创造入口,即 cordis 预设);只有该预设启用 @deepseek-ai/dsh-plugin-manager/tools 与 @deepseek-ai/dsh-tool-cordis。
2. 让会话执行:plugin_manager action: install_bundle,target 指向本包目录的绝对路径。
安装需要一次授权;不要手改 profile 的 package.json / cordis.patch.yml,那是 install_bundle 的职责。
3. 用 cordis_inspect_query 确认插件行已注册,再按需新开会话使工具生效(bundle 变更需重启 DSH)。

九个工具

| 工具 | 作用 | 关键输入 |
| mech_read_problem | 题目照片预处理(转正/去斜/透视/二值化/一页多题分栏…共 17 种算子)+ 可选独立视觉模型第二次转写 | image、ops、split、second_reader |
| mech_verify_reading | 把转写渲染成图与原图并排输出,做读题自检(发图前必做) | original、transcription |
| mech_analyze | 静定反力、N/Q/M/T 分布与极值、截面几何、应力、8 项独立校核 | spec(见下) |
| mech_diagram | 力学标准图(轴力/剪力/弯矩/扭矩/应力分布/莫尔圆/挠曲线),panels 多图共享 x 轴 | spec |
| solve_math | 通用求解内核:solve/evaluate/diff/integrate/limit/series/dsolve/matrix/optimize/fit/table/expand/factor/simplify… | spec.op |
| viz_figure | 通用出图引擎(学科无关):19 种系列类型 + 直角/对数/极坐标/三维 + 多子图 + 图元层 | spec |
| viz_check | 独立视觉评审:文字乱码/压图/越界/裁切、图形自洽性,给出 PASS/FAIL | image |
| viz_annotate | 在学生原图上做讲解式标注:框/圈/箭头/尺寸线/文字/局部放大/坐标网格 | src、ops |
| mech_card | 题目卡片 save/get/list/append,落到 <workspace>/.mech-cards/ | action、card/id/field |

配套随包技能 4 个:engineering-problem-solving(总控流程与硬关卡)、problem-image-reading(读图规范)、 engineering-visualization(可视化规范)、engineering-mechanics(力学符号约定与常见陷阱)。

通用性原则(改代码前先看这条)

1. 不许有"某某学科专用代码路径"。学科差异只能表达为 scripts/presets.py 里的预设数据。
力学图 = 通用引擎 + 预设展开,figure.py 不认识"弯矩"这个概念。
2. 不许静默降级。缺 sympy / 缺 matplotlib / 缺视觉 key 时,要么走数值等价路径并声明,要么返回可读的 unsupported,绝不给一个看起来正常的错答案。
3. 每个数值结论都要有独立复核。复核是独立算法(残差、求导往返、辛普森对比、特征值残差、密集扫描、截断复核…),不是把同一个公式再算一遍。
4. 报错用中文说人话,不把 Python 异常直接甩给模型。
5. 工具返回值必须能过 DSH 的"无损 JSON"校验:undefined 值的键、NaN/±Infinity、-0、类实例等非纯对象、稀疏数组、环——任意一条都会让整次调用失败,模型连产物路径都拿不到(踩过:imageNote: undefined 让五个回传图片的工具全线失败)。统一由注册处的 toLossless 兜住。
6. mock 自测通过 ≠ 真实运行时契约通过。改了工具返回值形状或与宿主的约定,必须用 test/verify_installed.mjs 在已安装产物上再验一遍。

符号约定(工具与技能一致)

- 轴力 N 拉为正(N = -Σ Fx(左段));剪力 Q 使微段顺时针转为正(+Σ Fy(左段));弯矩 M 下侧受拉为正;扭矩 T 右手螺旋 +x 为正。
- 横向力向上为正、轴向力 +x 为正、分布集度向上为正、集中力偶逆时针为正。
- 默认单位 m / kN / kN·m / MPa。

注意:solve_math / viz_figure / viz_annotate / viz_check 与学科无关,上面这套符号约定只适用于 mech_analyze / mech_diagram。

环境要求

- Python + numpy + Pillow:优先用 DSH Desktop 自带的 Office 运行时(自带 numpy 2.3.5、Pillow 12.3.0),也可以用 DSH_MECH_PYTHON 指定解释器。除 figure.py 外都不依赖 matplotlib (analyze.py、annotate.py、preprocess.py、render_math.py 都是纯 Pillow/numpy)。
- sympy(可选,随包自带):.pylibs/ 内含 sympy 1.14.0 + mpmath 1.4.1(约 41 MB),两个解释器实测都能从包内加载,不依赖全局环境。想验证降级路径:设 SYMBOLIC_NO_SYMPY=1。
- 视觉引擎(mech_read_problem 的第二次转写、viz_check、render_math.py 的公式排版需要):按 siliconflow-qwen → zhipu-glm → deepseek → sensenova → gemini → VISION_FALLBACKS 依次尝试,只用已配 key 的引擎;key 从环境变量、~/.dsh/secrets/media-tools.env、~/.dsh/.credentials.yaml 读取, 从不写入任何产物。未配任何 key 时该能力如实报失败,其余工具照常可用。

自测(离线,不联网)

python mech-workbench/test/run_all.py # ← 一条命令跑完全部 11 项并汇总

单独跑:

node mech-workbench/test/selftest.mjs # 插件契约 + 无损 JSON + 图片内联 + 净化器(25 项)
node mech-workbench/test/verify_installed.mjs # 校验已安装产物(10 项;不传参数自动找 live 代次)
python mech-workbench/test/symbolic_cases.py # 求解内核(43 例,精确路径)
SYMBOLIC_NO_SYMPY=1 python mech-workbench/test/symbolic_cases.py # 同一批用例跑降级路径(43 例)
python mech-workbench/test/figure_cases.py # 出图引擎(28 例,matplotlib)
python mech-workbench/test/figure_cases.py --force-backend pillow # 同一批用例跑 Pillow 后端(28 例)
python mech-workbench/test/viz_cases.py # 图元/标注(两个解释器各 10 例)
python mech-workbench/test/reading_cases.py # 预处理与分栏(60 例)
python mech-workbench/test/cases/verify_cases.py <out_dir> # 渲染产物程序化自检(缺字形/版式/亮度)

当前状态:25/25、10/10、43/43 + 43/43、28/28 × 3(matplotlib / Pillow / 纯 Pillow 解释器)、 10/10 × 2、60/60,run_all.py 11 项全绿。

为什么有 verify_installed.mjs:包里的 test/ 不随包发布,所以工作区自测只能证明源码对,证明不了「DSH 实际加载的那份代码」对。它会直接 import 安装副本、用两种附件服务形状跑真实工具,并按 DSH 的 walkJsonValue 规则检查返回值。这个文件的存在本身就是一个教训:曾经五个回传图片的工具因为返回值里带了一个 undefined 键(imageNote)而全线失败,而 mock 自测完全测不出来——详见 HANDOFF。

run_all.py 需要一个没有 matplotlib 的解释器来验 Pillow 降级路径,默认找 DSH 自带的 Office 运行时;找不到就如实列出跳过项(不算通过),可用 MECH_NOMPL_PYTHON 指定。

目录

index.js 插件入口:9 个工具 + 技能提供方 lib/python.js 解释器解析 + 脚本调用(spec 走临时文件;stdout 走文件并强制 UTF-8) lib/images.js attachments.saveImage → {type:'image'} 内容块;toLossless() 保证返回值能过 DSH 无损 JSON 校验 lib/cards.js 题目卡片读写 scripts/symbolic.py 通用求解内核(符号优先 + 数值降级 + 每步独立复核) scripts/figure.py 通用绘图引擎(19 种系列类型,matplotlib 优先、Pillow 兜底) scripts/presets.py 学科预设 → 通用系列的数据化展开(力学标准图在这里,不在 figure.py 里) scripts/analyze.py 静定反力/内力/截面/应力 + 校核 scripts/annotate.py 原图讲解式标注(框/圈/箭头/尺寸线/放大/网格) scripts/preprocess.py 照片预处理(17 种算子)与一页多题分栏 scripts/vision.py 视觉引擎故障转移链(含 --doctor 自检) scripts/render_math.py 转写回渲染对照图 skills/*/SKILL.md 4 个随包技能 .pylibs/ 随包 sympy + mpmath(自包含,保证可移植)

已知边界

1. mech_analyze 只解静定问题。静不定返回 determinate: false,并说明需要变形协调或刚度法,不猜结果。
(通用方程求解请用 solve_math,它不受此限制。)
2. mech_analyze 不做塑性、压杆稳定、大变形、剪切修正;截面沿 x 常量(变截面需拆成多段 spec)。
3. 支座仅固定、铰、辊轴三种;中间铰需自行拆段建模。
4. analyze.py 的 section.E 可选:不给就只跳过挠度、变形(会在 warnings 说明)。
5. 非圆截面不提供 Ip/Wp;管截面 τmax 用 τ = Q·Sy/(Iy·t) 近似。
6. figure.py 的 Pillow 兜底后端视觉质量低于 matplotlib(留白偏松;刻度已改为整齐取值、全正弯矩图不再跨负值区);装了 matplotlib 就优先走 matplotlib,两条路径都不静默丢系列类型。
7. test/cases/verify_cases.py 的版式检查期望名已过期(沿用旧用例名 p1/p3/p4 + pieces),当前会如实报告「未覆盖任何文件」;缺字形(tofu)检查仍然有效。

更详细的交接与验证记录见 HANDOFF.md。
预览分享卡片长什么样 ↓insideyou-0501/dsh-mech-workbench
分享 · DeepSeek Harness Hub
insideyou-0501/dsh-mech-workbench

读题图、解方程、画图并逐步复核,避免算错

回到顶部