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

VX 工作台 L050110/dsh-vx-workbench

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

修复 CAD 导入链路并自动维护技能台账

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 80 处,展示前 42 条)
  • 执行外部命令来自配置/变量
    index.js:55
    execFile(cmd, args, { timeout, windowsHide: true }, (err, stdout) => {
  • 读取本地文件
    index.js:68
    const buf = readFileSync(HOOPS_DLL);
  • 读取本地文件
    index.js:90
    return createHash('sha256').update(readFileSync(path)).digest('hex').toUpperCase();
  • 读取本地文件
    index.js:98
    const s = statSync(path);
  • 读取本地文件
    index.js:107
    const rows = readFileSync(path, 'utf8')
  • 读取本地文件
    index.js:128
    for (const name of readdirSync(dir)) {
  • 读取本地文件
    index.js:147
    return readFileSync(join(HERE, 'docs', 'logic.md'), 'utf8');
  • 写入本地文件
    index.js:212
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 写入本地文件
    index.js:213
    writeFileSync(
  • 写入本地文件
    index.js:309
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 写入本地文件
    index.js:310
    writeFileSync(join(dir, 'skills.json'), JSON.stringify(state, null, 2), 'utf8');
  • 写入本地文件
    index.js:315
    writeFileSync(state.ledgerPath, renderLedger(state, view), 'utf8');
  • 写入本地文件
    index.js:384
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 执行外部命令固定命令
    index.js:746
    const child = execFile(
  • 执行外部命令固定命令
    index.js:762
    ? execFile('explorer.exe', ['/select,', path], { windowsHide: false, detached: true }, () => {})
  • 执行外部命令固定命令
    index.js:763
    : execFile('explorer.exe', [path], { windowsHide: false, detached: true }, () => {});
  • 发起网络请求
    client.js:97
    fetch('/vxwb')
  • 发起网络请求
    client.js:114
    return fetch('/vxwb', {
  • 发起网络请求
    client.js:158
    fetch('/vxwb', {
  • 发起网络请求
    client.js:364
    fetch('/vxwb', {
  • 写入剪贴板
    client.js:583
    navigator.clipboard.writeText(ov.instruction).then(
  • 写入剪贴板
    client.js:679
    navigator.clipboard.writeText(skWriteHint).then(
  • 读取本地文件
    lib/skills.mjs:19
    const s = statSync(path);
  • 读取本地文件
    lib/skills.mjs:54
    entries = readdirSync(abs, { withFileTypes: true });
  • 读取本地文件
    lib/skills.mjs:79
    bytes = readFileSync(file);
  • 读取本地文件
    lib/skills.mjs:134
    for (const ent of readdirSync(profilesRoot, { withFileTypes: true })) {
  • 读取本地文件
    lib/skills.mjs:164
    if (!existsSync(root)) {
  • 读取本地文件
    lib/skills.mjs:171
    entries = readdirSync(root, { withFileTypes: true });
  • 读取本地文件
    lib/ov.mjs:63
    if (!existsSync(file)) continue;
  • 读取本地文件
    lib/ov.mjs:65
    const parsed = parseJsonc(readFileSync(file, 'utf8'));
  • 发起网络请求
    lib/ov.mjs:99
    const res = await fetch(url, {
  • 读取本地文件
    lib/ov.mjs:269
    if (!existsSync(path)) return null;
  • 读取本地文件
    lib/ov.mjs:271
    const raw = JSON.parse(readFileSync(path, 'utf8'));
  • 读取本地文件
    lib/patch.mjs:170
    if (!existsSync(file)) return { ok: false, error: '找不到文件:' + file };
  • 读取本地文件
    lib/patch.mjs:171
    const before = readFileSync(file);
  • 写入本地文件
    lib/patch.mjs:182
    if (backupPath) copyFileSync(file, backupPath);
  • 写入本地文件
    lib/patch.mjs:185
    writeFileSync(destination, patched);
  • 读取本地文件
    lib/patch.mjs:187
    const readBack = readFileSync(destination);
  • 读取本地文件
    lib/patch.mjs:204
    if (!existsSync(backup)) return { ok: false, error: '找不到备份:' + backup };
  • 读取本地文件
    lib/patch.mjs:205
    if (!existsSync(file)) return { ok: false, error: '找不到目标:' + file };
  • 读取本地文件
    lib/patch.mjs:207
    const backupState = plan(readFileSync(backup));
  • 写入本地文件
    lib/patch.mjs:211
    copyFileSync(backup, file);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

DeepSeek Harness 的可视化 X-Space 工作台:基于签名的 CAD 导入修复、参数化工厂布局、自维护技能台账

README

由 DeepSeek 最新模型翻译生成
dsh-vx-workbench 把 Visual X-Space 变成一条命令的车间。 修好 CAD 导入链路,FBX / STEP / STL 直接进;按参数长出产线;再附一份自己维护的技能台账——agent 不再凭记忆猜技能名。 厂区总览 它做什么 - CAD 导入兼容修复 —— 按机器码形状定位判定点(不是死写文件偏移),打补丁、回读校验、原版一键还原。 换一个 build 找不到时,会明确说「此版本未适配」,而不是静默失败。 - 工厂资产面板 —— 列出交付目录里每个 .vcmx(大小、时间、定位按钮)。参数化产线生成在下方路线图里,尚未随本版本提供,这里不把它算进已交付能力。 - 自己维护的技能台账 —— 每 5 分钟给磁盘上每个 SKILL.md 打指纹(有 OpenViking 时连 viking:// 技能一起),重写 docs/skills.md,记录新增/变更/移除;一键把变更通知推进你已开着的会话。 - 技能会自己长 —— 台账把「工作站自己的技能」(.vcmx / CAD / 桥操作)和无关的全局技能分开:后者只登记、不混进来。任何会话都能通过 POST /vxwb {"action":"skill-add",…
展开完整文档(README 剩余 1 节)
dsh-vx-workbench

把 Visual X-Space 变成一条命令的车间。 修好 CAD 导入链路,FBX / STEP / STL 直接进;按参数长出产线;再附一份自己维护的技能台账——agent 不再凭记忆猜技能名。

厂区总览

它做什么

- CAD 导入兼容修复 —— 按机器码形状定位判定点(不是死写文件偏移),打补丁、回读校验、原版一键还原。
换一个 build 找不到时,会明确说「此版本未适配」,而不是静默失败。
- 工厂资产面板 —— 列出交付目录里每个 .vcmx(大小、时间、定位按钮)。参数化产线生成在下方路线图里,尚未随本版本提供,这里不把它算进已交付能力。
- 自己维护的技能台账 —— 每 5 分钟给磁盘上每个 SKILL.md 打指纹(有 OpenViking 时连 viking:// 技能一起),重写 docs/skills.md,记录新增/变更/移除;一键把变更通知推进你已开着的会话。
- 技能会自己长 —— 台账把「工作站自己的技能」(.vcmx / CAD / 桥操作)和无关的全局技能分开:后者只登记、不混进来。任何会话都能通过 POST /vxwb {"action":"skill-add",…} 写新技能;技能坏了不是模型说删就删,而是登记成删除申请等你批准(目录移入 vx-workbench/trash/skills/,可恢复)。无关的全局技能用 {"action":"skill-ignore","all":true} 隐藏,文件一个不动。

| 面板 | 提需求通道 | 车间结果 |
| 面板 | 提需求 | 焊装车间 |

环境要求

| 系统 | Windows(兼容层对接的是 Windows 版 CAD 安装) |
| DSH | >= 0.2.1-rc.2 |
| Visual X-Space | 4.8(其它 build 只识别并报告,不盲改) |

安装

dsh plugin --profile web add dsh-vx-workbench

也可以在插件市场(Plugins → Discover)里点安装。装完若侧栏没出现,重新启用一次 bundle 并刷新页面,入口名是 VX 工作台。

配置

全部走环境变量,代码里不含任何个人路径;没配置时面板显示「未配置」,不会瞎猜目录。

| 变量 | 含义 | 默认 |
| VX_INSTALL_DIR | Visual X-Space 安装目录 | C:\Program Files\HANDI\Visual X-Space 4.8 |
| VX_REPAIR_DIR | 放 install.ps1 / restore.ps1 的目录(可选) | 无 |
| VX_DELIVERY_DIR | 放 .vcmx 布局的目录(可选) | 无 |
| VX_DSH_ROOT | dsh 安装根,仅非 Electron 宿主需要 | 自动 |

改完重启 profile 生效。

能力与权限(如实披露)

| 能力 | 用在哪 |
| fs-read | 读 CAD 程序集定位判定点;扫描各技能根目录的 SKILL.md |
| fs-write | 写台账 docs/skills.md、vx-workbench/.json、log.jsonl,以及 DLL 的原版备份 |
| shell | reg query、tasklist;以及你按下按钮时才执行的 powershell -File install.ps1 / restore.ps1 |
| network | 可选:对本机 OpenViking 服务做一次环回 MCP 调用(${baseUrl}/mcp)。数据不出本机 |

不写你的工程源码、不上传任何东西、不会自己启动 CAD 进程。

数据与隐私

全部落在工作区的 vx-workbench/ 下:status.json(当前快照)、skills.json(技能清单+变更集)、 log.jsonl(追加式工作日志)、requests.jsonl(发给了哪些会话)、ov-skills.json(OpenViking 快照,可选);台账本体在 plugins/vx-workbench/docs/skills.md。无遥测、无统计上报。

兼容修复,一段话说完

CAD 导入路径最后有一段短分支:调一个检查 → 测返回值 → 通过就跳过失败块。本插件用这个分支前后的 15 个字节去定位它(所以代码被重排也认得出),然后把这条分支改成无条件。改前先存原版字节,改后回读校验,一键可还原;特征码找不到或命中多处时停下来报告,不猜。

只扫描,不动文件
node lib/patch.mjs scan "C:\Program Files\HANDI\Visual X-Space 4.8\VisualComponents.HOOPS.dll"

技能台账

- 扫描根:工作区 skills/、工作区 .dsh/skills、~/.dsh/profiles//skills、~/.dsh/skills、dsh 自带 skills。
- 指纹 = sha256(SKILL.md 字节 + 目录内其它文件的形状),改正文、加 references/ 都算变更。
- 首次扫描只建基线,不会把已有技能报成「新增」。
- POST /vxwb {"action":"skills-broadcast","maxAgeHours":168} 把变更通知推进已开着的会话(排队送达:忙的会话当前回合结束再读,闲的会话会被唤醒跑一轮,会烧 token,所以默认不自动)。

OpenViking(可选)

viking:// 是库路径不是文件,所以两条通道:服务在跑时直连 ${baseUrl}/mcp(URL 取自 ~/.openviking/ov.conf 或 OPENVIKING_URL);否则用 agent 推来的快照(POST /vxwb {"action":"ov-ingest","roots":{...}})。状态只会是 live / snapshot / unreachable / unconfigured,不会静默失败。

故障排查

| 现象 | 原因与处理 |
| 面板显示「此版本未适配」 | 特征码没命中你的 build。跑 node lib/patch.mjs scan <dll>,把 sha256 贴到 issue。 |
| 修复后 CAD 仍拒绝导入 | 加载链是第二道门:面板里打开加载链修复,然后重启 CAD。 |
| 面板空白 / 「未就绪」 | Host 半边没加载。重新启用 bundle,再刷新页面。 |
| 台账 0 个技能 | 扫描根下没有 SKILL.md,或非 Electron 宿主下 VX_DSH_ROOT 不对。 |
| 推送没反应 | 消息是排队送达的,看 vx-workbench/log.jsonl 里的投递记录。 |

路线图

- [x] 特征码兼容修复(备份 / 还原 / 回读校验)
- [x] 自维护技能台账 + 会话广播
- [x] OpenViking 目录摄取(直连 + 快照)
- [ ] 参数化产线生成器(线体 / 工位 / 节拍 / 机器人 / AGV)
- [ ] 仿真跑完的节拍与瓶颈报表
- [ ] 模板资产按需下载(不塞进包体)

许可

MIT © 2026 作者
预览分享卡片长什么样 ↓L050110/dsh-vx-workbench
分享 · DeepSeek Harness Hub
L050110/dsh-vx-workbench

修复 CAD 导入链路并自动维护技能台账

这是你的仓库?认领条目

回到顶部