dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
A DeepSeek Harness plugin that lets the agent drive 3D modeling through a JSON bridge — create primitives, run boolean CSG, transform, assign materials/modifiers, query the scene, and export STL/OBJ/PLY/GLTF/GLB.
It bundles two interchangeable runtimes speaking the same protocol:
| Runtime | Needs Blender? | Engine | Use when |
|---|---|---|---|
headless_bridge.py (default) | ❌ no | trimesh + manifold3d | headless servers, CI, the harness |
blender_ai_bridge/ add-on | ✅ Blender 3.0+ | bpy | you want full Blender power |
Point the tool at a running Blender (set AIB_PORT to the add-on's port) and the same commands upgrade to real Blender — no code change.
dsh plugin --profile web add dsh-plugin-blender-3d
Restart dsh web (or let HMR pick it up). The plugin registers two model-facing tools:
blender_model — { command, args } → JSON result. Commands: create_shape, boolean, transform, duplicate, delete, rename, material, modifier, mesh_edit, scene, selection, scene_clear, camera, light, render, export, import, script, command, document.blender_scene — lightweight scene summary (names/types/counts, no mesh data).It also contributes the blender-3d-modeling skill (auto-installed into $DSH_HOME/skills on first load if absent).
Heavy geometry never enters the Node/JSON tool channel. Exports return a file_path; the agent reads the model from disk with its own file tools. This is the fix for the Node Ineffective mark-compacts near heap limit crash that occurs when full meshes are stuffed into JSON.
| Env / config | Default | Meaning |
|---|---|---|
AIB_PORT | 13082 | bridge port (set to the add-on port to drive real Blender) |
AIB_HOST | 127.0.0.1 | bridge host |
AIB_PYTHON | python3 | interpreter for the headless bridge |
pip install numpy trimesh manifold3d
See PUBLISH.md. TL;DR: npm publish → open a PR to
awesome-dsh-plugin/awesome-dsh-plugin
adding registry-entry.json to the list.
MIT
node examples/carve_block.mjs # box minus sphere -> carved.stl