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

玉米 CAD 圈选 xingyingyuzhui/dsh-corn-cad

DeepSeek 客户端
xingyingyuzhui8 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

在侧边栏预览图纸并框选区域,连同指令一起交给智能体

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/xingyingyuzhui/dsh-corn-cad.git

状态速览

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

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

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

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

可执行外部命令发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
  • 执行外部命令来自配置/变量
    index.js:191
    const child = spawn(candidate, ['-c', 'import ezdxf'], { stdio: 'ignore' })
  • 执行外部命令来自配置/变量
    index.js:222
    const child = spawn(python, [script, ...args], { stdio: ['ignore', 'pipe', 'pipe'] })
  • 发起网络请求
    client.js:168
    fetch('/api/corn-cad/theme', { credentials: 'same-origin' })
  • 发起网络请求
    client.js:428
    var response = await fetch('/api/corn-cad/svg', {
  • 发起网络请求
    client.js:569
    return fetch('/api/corn-cad/selection', {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

玉米 CAD · DeepSeek Harness 侧边栏 DXF/DWG 预览与圈选画板:右键圈一块图纸,写句话交给智能体。DSH 侧边栏 DXF/DWG 预览器,带右键拖拽圈选画板,把圈出的区域发给智能体。

README

由 DeepSeek 最新模型翻译生成
玉米 CAD · dsh-corn-cad | English 在 DeepSeek Harness 侧边栏直接看 .dxf / .dwg 图纸,右键圈一块,写句话,交给智能体。 智能体拿到的是这张图的这个区域 —— 不是「你刚才说的那个地方」。 玉米 CAD 它解决什么 CAD 图纸交给智能体,最难的从来不是「看懂」,而是对齐指代。 你说「把这几个孔改大」,智能体不知道是哪个孔;你把图纸截图发过去,它拿到了像素却拿不到坐标。 这个插件把这一步接上:你在预览里右键拖出一个框,框住的图元、图层、句柄、世界坐标范围会跟着你写的那句话一起进入对话。智能体不需要猜。 当前版本(0.1.0)只做这一件事,并把它做扎实:预览 + 圈选 + 气泡发消息。 功能 看图 在工作区文件树里点开 .dxf 或 .dwg,右侧文档预览标签直接显示矢量图纸。
展开完整文档(README 剩余 1 节)
玉米 CAD · dsh-corn-cad

| English

在 DeepSeek Harness 侧边栏直接看 .dxf / .dwg 图纸,右键圈一块,写句话,交给智能体。
智能体拿到的是这张图的这个区域 —— 不是「你刚才说的那个地方」。

玉米 CAD

它解决什么

CAD 图纸交给智能体,最难的从来不是「看懂」,而是对齐指代。

你说「把这几个孔改大」,智能体不知道是哪个孔;你把图纸截图发过去,它拿到了像素却拿不到坐标。
这个插件把这一步接上:你在预览里右键拖出一个框,框住的图元、图层、句柄、世界坐标范围会跟着你写的那句话一起进入对话。智能体不需要猜。

当前版本(0.1.0)只做这一件事,并把它做扎实:预览 + 圈选 + 气泡发消息。

功能

看图

在工作区文件树里点开 .dxf 或 .dwg,右侧文档预览标签直接显示矢量图纸。

| 操作 | 行为 |
| 拖拽 | 平移 |
| Ctrl/⌘ + 滚轮 | 缩放 |
| 工具栏 − + 适应宽度 | 缩放控制 |

圈选(画板)

| 操作 | 行为 |
| 左键拖动 | 平移图纸 |
| 单击 | 选中光标下图元 |
| Shift + 单击 | 追加选择 |
| 右键拖框 | 圈选并弹出指令气泡 |
| Shift + 左键拖框 | 只圈选,不弹气泡 |

左键始终是导航:按下拖动就平移,按下不动就是单击选中。框选归右键 ——这样两者不会互相抢占,图纸也不会「拖不动」。

工具栏上的「区域 / 图元」切换决定框选的粒度:

| 模式 | 语义 | 适合 |
| 区域(默认) | 框到哪就选哪。穿过框的图元被选中,并且记录框内那一段;横贯全图的中线只框中间一小段也选得中 | 改局部细节 |
| 图元 | 框到的图元整体选中。覆盖率不足的图元不选(避免误选大图框) | 整条线、整个块 |

区域模式下,选中集会带 inBand 字段 —— 那是该图元落在框内的折线(DXF 世界坐标)。
交给智能体的消息会明确写出「框选模式:区域,修改范围以框内部分为准」,所以长线不会被整条重写。

两种模式都不用包围盒相交判定:图框是一条 420×297 的多段线、表格线横贯全图,用包围盒判定的话在任何位置小框一下都会把整张图框拖进选择集。

气泡 → 交给智能体

右键拖框、松手,气泡出现在指针位置。写下「这几根线改成黑色」,Ctrl/⌘ + Enter 或点「发送」。

进入对话的消息长这样:

【图纸修改】文件:30010877-CAD_A01.dxf 图纸路径:/Users/you/work/30010877-CAD_A01.dxf 框选修改内容:这几根线改成黑色选中 3 个图元:e1(LINE), e2(LINE), e3(LINE) 范围(DXF 世界坐标):x 3794.3..4102.5, y 1205.34..1502.34 选中集已写入:/Users/you/work/.corncad/selection.json

同时选中集写进图纸旁边的 .corncad/selection.json:

{
"at": "2026-10-26T01:00:00.000Z",
"drawing": "/Users/you/work/30010877-CAD_A01.dxf",
"file": "30010877-CAD_A01.dxf",
"instruction": "这几根线改成黑色", "count": 3,
"picks": [
{ "type": "LINE", "layer": "0", "handle": "AF8", "depth": 0, "id": "e1",
"bbox": [3794.30, 1205.34, 3794.30, 1502.34], "pts": [ ... ] }
]
}

记录放在图纸同目录而不是进程 cwd,是因为智能体通常已经知道图纸路径 ——它可以直接读 .corncad/selection.json,不用你告诉它文件在哪。记录里带 handle,智能体能精确回到 DXF 里的那一根线,而不是「左上角第三条」。

让智能体改图

预览之外,这个插件让智能体能真正修改 DXF 文件,改完侧边栏自动刷新。

怎么用

直接说就行:

把 165,105 那个孔改成直径 16 标题改成「底板 240x160」这两个孔往右移 5mm

智能体会自己走完:列出图元 → 按句柄定位 → 应用修改 → 你看到图变了。

背后发生了什么

1. 看:corncad_edit 工具的 describe: true 返回所有可编辑图元的句柄、类型、图层和几何
2. 改:按句柄提交结构化编辑(radius / text / move / layer / color / delete 等)
3. 备份:每次写入前把原文件复制成 <图纸>.<时间戳>.bak
4. 原子替换:先写临时文件再 os.replace,中途崩溃不会留下半个文件
5. 刷新:DSH 文档预览的 autoRefresh(默认开启)监听到文件版本变化,重新读取字节交给渲染器

安全边界

| 约束 | 说明 |
| 只改 .dxf | .dwg 是二进制,需要先导出为 DXF |
| 路径校验 | 必须是真实存在的文件,不是目录、不是符号链接逃逸 |
| 失败即不写 | 一批编辑里任何一条失败,整个文件保持原样 |
| 大小上限 | 超过 64 MB 拒绝编辑 |
| 自动备份 | 每次写入都留 .bak,随时可回滚 |

依赖

编辑用 ezdxf(Python)。插件会自动寻找装好 ezdxf 的解释器,优先用 DSH 自带的 Python 运行时:

已随本仓库安装步骤完成;如缺失可手动装 <PEP 668 环境> python3 -m pip install ezdxf 或用环境变量指定
export CORNCAD_PYTHON=/path/to/python3

没装 ezdxf 时预览照常工作,只有编辑会返回 NO_EZDXF 并说明怎么装。

中文编码的一个坑

ezdxf 在某些情况下会写出自相矛盾的文件:声明 ANSI_1252(R2007+ 应为 UTF-8),实际却是 GBK 字节。按声明解码的读取器(包括 AutoCAD)就会显示乱码。

本插件的处理:

- 读:按声明解码后给结果打分(U+FFFD 越少越可信),在 utf-8 / gbk / big5 / shift_jis 里选最干净的那个
- 写:R2007+ 一律写 UTF-8 并修正 $DWGCODEPAGE;老版本按真实代码页写回

安装

先装 DeepSeek Harness 桌面端。

方式一 · 插件页(推荐)

侧栏 插件 → 添加插件,填 https://github.com/xingyingyuzhui/dsh-corn-cad → 安装 → 启用。
安装后重启 DeepSeek Harness:宿主半边是进程级模块。

方式二 · 命令行

dsh plugin --profile <profile> add https://github.com/xingyingyuzhui/dsh-corn-cad

方式三 · 本地目录

git clone https://github.com/xingyingyuzhui/dsh-corn-cad
dsh plugin --profile <profile> add /绝对路径/dsh-corn-cad

方式四 · 离线 / 受限网络

本包自带 vendor/@mlightcad/libredwg-web/(DWG 解码依赖,约 12 MB)。
插件管理器无法联网时:

node tools/install-vendor.mjs --profile <profile>

只有 .dwg 需要这个依赖;.dxf 是纯文本,完全不碰 wasm。

装上之后

1. 在文件树里点开一张 .dxf(.dwg 需要上面那个解码依赖)。
2. 右侧出现图纸和工具栏,底部显示图元总数。
3. 右键拖一个框 → 图元变橙 → 气泡弹出。
4. 写指令,Ctrl/⌘ + Enter。
5. 智能体收到带路径、图元清单和坐标范围的完整消息。

停用 / 卸载

profile 的 cordis.patch.yml
- id: corn-cad
disabled: true

卸载:dsh plugin --profile <profile> remove dsh-corn-cad。

配置

主题在 profile 的 cordis.patch.yml 里改:

- id: corn-cad
config:
background: "#000000"
foreground: "#ffffff"

⚠️ 两者必须成对修改。DXF 的 ACI 7 是"与背景对比的黑或白",渲染时取 foreground。
只改背景会让所有线条与背景同色、整张图不可见。不配置则白底黑线。

注意事项

| 限制 | 说明 |
| MULTILEADER 不渲染 | 渲染器清单之外,引线会缺失 |
| 只读 | 无编辑、无图层开关、无导出;改动需外部脚本 |
| HATCH 图案填充 | 只画边界轮廓,不画填充图案 |
| 框选阈值 50% | 覆盖不足一半的图元选不中(刻意为之,避免误选大图元) |
| 文字外框为估算 | 按字符宽度估宽,非真实字形度量 |
| 不保存视图状态 | 重新打开回到适应宽度 |

支持的 DXF 图元:LINE LWPOLYLINE(含 bulge 弧)POLYLINE+VERTEX CIRCLE ARC ELLIPSE TEXT MTEXT ATTRIB INSERT(嵌套块 / 行列阵列 / 旋转 / 缩放)HATCH SOLID 3DFACE POINT DIMENSION。清单之外的实体被静默忽略(不报错、不绘制)。

中文图纸:按 $DWGCODEPAGE 自动识别 13 种代码页(GBK / Big5 / Shift_JIS / EUC-KR / windows-1250~1258 / windows-874),R2007+ 一律 UTF-8。\U+XXXX、%%P、%%D、%%C 均正确解码。

自检

自检不需要网络、不需要 Harness、不需要 React、不需要安装任何依赖,纯 Node 跑完 46 项,全部通过时打印 46/46 checks passed 并以 0 退出,任何一项失败就以非 0 退出(可直接接 CI)。

node test/selfcheck.mjs

它验证的东西包括:渲染器的图元计数与 SVG 结构、图元拾取表、右键框选只取覆盖到的图元、 气泡经 session scope 发出并带上路径与坐标、拿不到会话时明确报错而不是假装已发送、宿主四条路由、选中集落盘与回读、中英文词典对齐、以及打包与许可约束。

pnpm test 会先按 dependencies 真的装一遍依赖(写 node_modules/ 与 pnpm-lock.yaml,两者都在 .gitignore 里、不随仓库分发)。装上 @mlightcad/libredwg-web 之后,DWG 那一项会自动跳过并打印原因 —— 真实解码只能在装好依赖的 profile 里验证。

结构

index.js 宿主半边:/api/corn-cad/{ping,svg,selection,theme} 四条路由 client.js 浏览器半边:内联 SVG、图元拾取、框选、气泡 lib/dxf2svg.mjs 零依赖 DXF → SVG 渲染器(含拾取表) cordis.patch.yml 插进 profile 的 bundle patch icon.svg 品牌图标(矢量) brand/ icon-source.png 与多尺寸 PNG docs/example.svg 由 test/sample.dxf 生成的示例图 test/selfcheck.mjs 纯 Node 自检 tools/ 生成示例图、安装离线依赖 vendor/ @mlightcad/libredwg-web(GPL-3.0,仅 .dwg 需要)

接缝依赖(DSH 内部形态,官方无兼容承诺,升级后可能失效):

- documentPreviews.register()(由 @deepseek-ai/dsh-client-ui-sidebar-documentpreview 提供)
- slots.register / slots.inject(sidebar.right.tab.document,会话作用域)
- connection.fetch.register(/api 通道)
- locale.register
- ctx.sessions.scope(id).get('conversation') → conversation.send()

已在 DSH 0.2.1-rc.3 上实测。升级后若气泡发不出去,优先检查最后一项: conversation.send 是 会话作用域方法,在根上下文调用会抛 conversation.send requires a session scope,必须先用 ctx.sessions.scope(id) 拿到作用域。

致谢与第三方许可

插件骨架与零依赖 DXF 渲染器来自 @linanbuan 的 dsh-dwg-preview v1.0.0(MIT)。
本仓库在其基础上做了圈选画板、中文代码页解码、主题、图元拾取与指令气泡。

@mlightcad/libredwg-web 是 GPL-3.0,随包放在 vendor/ 便于离线安装,仅 .dwg 需要。
若你的分发方式需要规避 GPL,请移除 vendor/ 并让用户从 registry 安装依赖,或改用其他 DWG 方案。

License

MIT —— 本仓库代码。完整声明见 LICENSE,第三方组件(含 GPL-3.0 的 DWG 解码器)见 THIRD-PARTY.md。

MIT © 2026 xingyingyuzhui
预览分享卡片长什么样 ↓xingyingyuzhui/dsh-corn-cad
分享 · DeepSeek Harness Hub
xingyingyuzhui/dsh-corn-cad

在侧边栏预览图纸并框选区域,连同指令一起交给智能体

这是你的仓库?认领条目

回到顶部