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

工程造价工作台 baiye1997/MEB-DSH

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

按项目管台账算工程量并核对 CAD 图纸

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 38 处,展示前 38 条)
  • 执行外部命令来自配置/变量
    workbench/src/dwg-import.js:31
    const child=spawn(converter,['-o',dxf,dwg],{stdio:'ignore',timeout:45000});
  • 写入本地文件
    workbench/src/dwg-import.js:54
    const dwg=join(dir,'source.dwg'),dxf=join(dir,'converted.dxf');await writeFile(dwg,bytes,{flag:'wx'});
  • 删除本地文件递归
    workbench/src/dwg-import.js:57
    }finally{await rm(dir,{recursive:true,force:true});}
  • 写入本地文件
    workbench/src/dwg-import.test.mjs:18
    await writeFile(python,header+`if(args[0]==='-c')process.exit(0);
  • 写入本地文件
    workbench/src/dwg-import.test.mjs:24
    await writeFile(converter,header+`fs.writeFileSync(args[1],'synthetic DXF');\n`,{mode:0o700});
  • 读取本地文件
    workbench/src/dwg-import.test.mjs:34
    const calls=(await readFile(log,'utf8')).trim().split('\n').map(line=>JSON.parse(line));
  • 读取本地文件
    workbench/src/dwg-import.test.mjs:36
    for(const call of calls.filter(call=>call.tool===converter))await assert.rejects(stat(call.args[1]),{code:'ENOENT'});
  • 写入本地文件
    workbench/src/dwg-import.test.mjs:37
    await rename(converter,converter+'.disabled');
  • 删除本地文件递归
    workbench/src/dwg-import.test.mjs:46
    await rm(dir,{recursive:true,force:true});
  • 读取本地文件
    workbench/src/excel-import-xls.test.mjs:7
    const sheets=parseLegacyWorkbook(await readFile(new URL('../test-fixtures/import.xls',import.meta.url)));
  • 读取本地文件
    workbench/src/file-reference.js:9
    let resolved,info;try{resolved=await realpath(path);info=await stat(resolved);}catch(error){if(['ENOENT','ENOTDIR'].includes(error.code))throw Error('
  • 读取本地文件
    workbench/src/file-reference.js:9
    let resolved,info;try{resolved=await realpath(path);info=await stat(resolved);}catch(error){if(['ENOENT','ENOTDIR'].includes(error.code))throw Error('
  • 读取本地文件
    workbench/src/file-reference.js:21
    const resolved=await realpath(path);
  • 读取本地文件
    workbench/src/file-reference.js:22
    const entries=(await readdir(resolved,{withFileTypes:true})).filter(e=>!e.name.startsWith('.')&&(e.isDirectory()||e.isFile())).sort((a,b)=>Number(b.is
  • 写入本地文件
    workbench/src/index.js:17
    const exportPath=async(name)=>{const dir=exportDirectory();await mkdir(dir,{recursive:true});return join(dir,`${Date.now()}-${name}`);};
  • 写入本地文件
    workbench/src/index.js:31
    const backup=async(value,source)=>{const path=await exportPath(`MEB-WebDAV-${source}-恢复前.json`);await writeFile(path,JSON.stringify(value),{flag:'wx'}
  • 写入本地文件
    workbench/src/index.js:68
    if(endpoint==='meb/export'){if(!payload||typeof payload.name!=='string'||typeof payload.base64!=='string'||payload.base64.length>50000000)throw Error(
  • 写入本地文件
    workbench/src/index.js:69
    if(endpoint==='meb/export-attachment'){if(!payload||typeof payload.name!=='string'||!payload.name.trim()||payload.name.length>255||typeof payload.base
  • 写入本地文件
    workbench/src/model.test.mjs:138
    const dir=await mkdtemp(join(tmpdir(),'meb-reference-'));try{const path=join(dir,'原件.txt');await writeFile(path,'local source');const listing=await li
  • 删除本地文件递归
    workbench/src/model.test.mjs:138
    const dir=await mkdtemp(join(tmpdir(),'meb-reference-'));try{const path=join(dir,'原件.txt');await writeFile(path,'local source');const listing=await li
  • 读取本地文件
    workbench/src/model.test.mjs:138
    const dir=await mkdtemp(join(tmpdir(),'meb-reference-'));try{const path=join(dir,'原件.txt');await writeFile(path,'local source');const listing=await li
  • 执行外部命令固定命令
    workbench/src/webdav-config.js:15
    const child=spawn('/usr/bin/security',args,{stdio:['pipe','pipe','pipe']});
  • 写入本地文件
    workbench/src/webdav-config.js:25
    await mkdir(dir,{recursive:true,mode:0o700});
  • 写入本地文件
    workbench/src/webdav-config.js:27
    try{await writeFile(temp,JSON.stringify(value),{mode:0o600,flag:'wx'});await rename(temp,file);}catch(e){await rm(temp,{force:true});throw e;}
  • 写入本地文件
    workbench/src/webdav-config.js:27
    try{await writeFile(temp,JSON.stringify(value),{mode:0o600,flag:'wx'});await rename(temp,file);}catch(e){await rm(temp,{force:true});throw e;}
  • 删除本地文件
    workbench/src/webdav-config.js:27
    try{await writeFile(temp,JSON.stringify(value),{mode:0o600,flag:'wx'});await rename(temp,file);}catch(e){await rm(temp,{force:true});throw e;}
  • 读取本地文件
    workbench/src/webdav-config.js:32
    const value=JSON.parse(await readFile(file,'utf8'));
  • 删除本地文件
    workbench/src/webdav-config.js:58
    await rm(file,{force:true});
  • 删除本地文件递归
    workbench/src/webdav-config.test.mjs:39
    }finally{await rm(root,{recursive:true,force:true});}
  • 发起网络请求
    workbench/src/webdav-sync.js:31
    const response=await this.request(url,{method:'GET',headers,redirect:'error',signal:AbortSignal.timeout(20000)});
  • 发起网络请求
    workbench/src/webdav-sync.js:45
    const response=await this.request(url,{method:'PUT',headers,body,redirect:'error',signal:AbortSignal.timeout(30000)});
  • 读取本地文件
    workbench/test-fixtures/check-package.mjs:7
    const manifest=JSON.parse(await readFile(new URL('../package.json',import.meta.url),'utf8'));
  • 读取本地文件
    workbench/test-fixtures/check-package.mjs:15
    const lock=JSON.parse(await readFile(new URL('../package-lock.json',import.meta.url),'utf8'));
  • 读取本地文件
    workbench/test-fixtures/check-package.mjs:20
    const source=await readFile(new URL('../'+file,import.meta.url),'utf8');
  • 执行外部命令固定命令
    workbench/test-fixtures/check-public.mjs:14
    const candidates=new Set(execFileSync('git',['ls-files','-z','--cached','--others','--exclude-standard'],{cwd:root,encoding:'utf8'}).split('\0').filte
  • 读取本地文件
    workbench/test-fixtures/check-public.mjs:16
    const path=resolve(root,name),stat=await lstat(path).catch(()=>null);
  • 读取本地文件
    workbench/test-fixtures/check-public.mjs:19
    const bytes=await readFile(path);
  • 删除本地文件递归
    workbench/test-fixtures/check-render.mjs:11
    }finally{await rm(directory,{recursive:true,force:true});}
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

README

由 DeepSeek 最新模型翻译生成
MEB-DSH 工程造价人的 DSH 工作台 台账、计算、图纸与项目助手,在同一个项目里核对。 安装 ·快速上手 ·使用手册 ·版本下载 ·问题反馈 MEB 是运行在 DeepSeek Harness 桌面端的工程造价工作台。按项目整理台账、保留计算依据,对照 CAD 图纸核对数量,再让 DSH 助手基于当前项目继续工作。 能做什么 | 工作 | 功能 | | 项目台账 | 收方、签证变更、产值、合同与材料价格管理 | | 表格处理 | Excel 区域粘贴;导入 XLSX / XLS / CSV / TSV,按范围导出 XLSX | | 工程计算 | 电缆、母线槽、支吊架、保温、风管与自定义规则;核对参数、公式与计算过程 | | 图纸核对 | DWG 候选轮廓审阅、楼栋配置、拆分与三维体量预览 | | 项目助手 | 按当前项目查询资料、核对证据、预览和采用修改建议 | | 数据管理 | 保存、撤销、备份恢复,以及可选的 WebDAV 同步 | 安装 需要先安装 DSH Desktop。默认没有插件市场也可以安装 MEB;使用发布包无需注册 npm 账号或自行构建。 1. 打开 DSH Desktop 的「添加插件」。 2. 输入下面的 npm 包名,确认来源与版本。 3. 点击「安装」,按 DSH 提示刷新或重启。 4. 从左侧打开 MEB 工作台。
展开完整文档(README 剩余 1 节)
MEB-DSH

工程造价人的 DSH 工作台

台账、计算、图纸与项目助手,在同一个项目里核对。

安装 ·快速上手 ·使用手册 ·版本下载 ·问题反馈

MEB 是运行在 DeepSeek Harness 桌面端的工程造价工作台。按项目整理台账、保留计算依据,对照 CAD 图纸核对数量,再让 DSH 助手基于当前项目继续工作。

能做什么

| 工作 | 功能 |
| 项目台账 | 收方、签证变更、产值、合同与材料价格管理 |
| 表格处理 | Excel 区域粘贴;导入 XLSX / XLS / CSV / TSV,按范围导出 XLSX |
| 工程计算 | 电缆、母线槽、支吊架、保温、风管与自定义规则;核对参数、公式与计算过程 |
| 图纸核对 | DWG 候选轮廓审阅、楼栋配置、拆分与三维体量预览 |
| 项目助手 | 按当前项目查询资料、核对证据、预览和采用修改建议 |
| 数据管理 | 保存、撤销、备份恢复,以及可选的 WebDAV 同步 |

安装

需要先安装 DSH Desktop。默认没有插件市场也可以安装 MEB;使用发布包无需注册 npm 账号或自行构建。

1. 打开 DSH Desktop 的「添加插件」。
2. 输入下面的 npm 包名,确认来源与版本。
3. 点击「安装」,按 DSH 提示刷新或重启。
4. 从左侧打开 MEB 工作台。

meb-workbench

镜像源暂未同步时,可在「安装源」中选择 npm 官方源。需要固定版本时,输入 meb-workbench@0.1.3,版本列表见 Releases。

其他安装来源:GitHub、下载包、本地源码

GitHub 源码:在「添加插件」中输入:

github:baiye1997/MEB-DSH#main&path:workbench

main 指定分支,path:workbench 指定仓库中的插件目录。这是 pnpm 支持的 Git 子目录写法。若当前 DSH 版本解析失败,使用 npm 包或本地构建。

下载包:在 Releases 下载 meb-workbench-版本号.tgz,将下载文件的完整本地路径填入「添加插件」。安装仍需联网获取 JavaScript 依赖。

本地源码:按 开发指南 安装依赖并构建,再将本地 workbench 目录的完整路径填入「添加插件」。不要填仓库根目录。

升级或回退前,先在「备份与设置」导出备份,再按 DSH 提示卸载旧版并安装目标版本。详见 版本与回退。

快速上手

1. 新建项目:在项目看板点击「新建项目」,填入名称后进入。没有图纸或三维模型也能开始记录。
2. 填写台账:从「工作台」选择收方、签证变更、产值或合同,点击「添加行」。可逐格编辑,也可从 Excel 复制区域后粘贴到目标单元格。
3. 导入已有表格:打开「表格设置 → 导入 Excel」,选择工作表、核对字段映射和预览,再追加到当前台账。
4. 核对计算与建议:在「计算台」填写参数并查看结果、计算过程;使用项目助手前,核对当前项目及准备发送的记录范围。
5. 保存结果:点击「保存更改」。入账、采用助手建议、恢复备份都会先进入编辑区,可核对、撤销后再保存。
需要按筛选范围导出、查看计算依据、关联附件或设置同步,见 使用手册。

DWG 识图(可选)

收方、签证、产值等业务记录和工程计算,安装插件后即可使用。只有解析 DWG 图纸时,才需另外安装 LibreDWG(dwg2dxf)与 Python + ezdxf。

缺少工具时,工作台会提示配置环境;插件不会自动修改系统环境。具体命令与检查方法见 CAD 环境配置。

在项目「模型配置」导入图纸后,核对候选轮廓、图纸单位、标段、楼栋身份、坐标与层高,再生成模型并保存。二维图纸用于生成可编辑的建筑体量,不能替代完整原图或施工级 BIM。操作步骤见 图纸与模型。

使用与数据

- 先核对,再保存。 助手建议需确认后才进入编辑区;可撤销,点击「保存更改」后才保存到项目。
- 数据保存在本机。 项目、台账和模型由 DSH 保存;可导出备份。发送给 DSH 助手的资料会进入对应项目会话。
- 同步按需开启。 WebDAV 同步需自行配置,目前凭据存储仅支持 macOS。发生两端冲突时,需选择保留哪一端。
- 原文件自行保管。 本机引用的原文件、绝对路径和 DSH 对话不进入 WebDAV 备份;换电脑后需重新定位原文件。

常见问题

| 情况 | 处理方法 |
| 安装后没有入口 | 按 DSH 提示刷新或重启,检查插件是否已启用;本地源码安装须先完成构建。 |
| 找不到包或新版本 | 切换 npm 官方源并核对包名、版本;网络失败时先确认 DSH 能访问所选安装源。 |
| 提示缺少 CAD 解析环境 | 按 CAD 环境配置 安装工具,完全退出并重新打开 DSH。 |
| 保存时提示版本冲突 | 保留输入或导出草稿,重新载入已保存数据后核对;不要直接覆盖另一端的修改。 |
| 导出后找不到文件 | 查看操作完成提示中的文件路径;导出由 DSH 写入本机数据目录。 |

源码与贡献

欢迎通过 Issues 反馈问题,或提交 Pull Request。源码构建和提交前检查见 开发指南。反馈时请遮盖凭据和真实业务数据。

开源协议与致谢

项目使用 MIT 开源协议。第三方组件、字体及其许可证见 第三方声明,保留各自的版权与许可。
预览分享卡片长什么样 ↓baiye1997/MEB-DSH
分享 · DeepSeek Harness Hub
baiye1997/MEB-DSH

按项目管台账算工程量并核对 CAD 图纸

这是你的仓库?认领条目

回到顶部