openpencil
ZSeven-W
The world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:ArvinQi/dsh-mcp
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 简体中文

解决的核心问题:
search 按需检索模式让模型通过 mcp_tool_search 热注入所需工具,大幅节省 token。tools/list_changed 通知会让同名工具被反复注销/重注册,系统提示词工具列表抖动、prompt cache 频繁失效。工具列表稳定化让未变化的工具保留原注册,最大化 cache 命中。功能优势:
变量名 或 ${变量名} 即可在连接时自动替换为配置值(如 Authorization: Bearer ${TOKEN})search(按需检索,省 token)与 full(全量注入)streamable-http 服务器若走 MCP OAuth(授权码 + PKCE),连接时自动打开浏览器授权;token 与 client 信息持久化、由 SDK 自动刷新(24 小时内活跃自动续期),失效后自动重新授权mcp_servers)、按服务器挂载
@deepseek-ai/dsh-mcp-client 实例、环境变量注入(明文入定义、secret 走 credentials)、
连接探测(test)。lib/oauth.js):streamable-http 服务器遇 401 + OAuth 挑战时自动走
授权码 + PKCE 流程,打开浏览器授权、回环回调收码、token 持久化并按需自动刷新;
测试连接与挂载共用同一份 token。apply() 里自行 ctx.remote.$mount() 挂载 mcpManager
命名空间(原实现依赖 api-remotes 的 in-box 修改,独立版不再需要任何 in-box 包改动)。dsh-mcp/
├── package.json name=dsh-mcp;dsh.client 声明;零 npm dependencies
├── lib/
│ ├── index.js host 半部(McpManagerService,源自 mcp-manager 构建产物)
│ ├── mcp-client.js vendored MCP 客户端(源自 @deepseek-ai/dsh-mcp-client,含工具列表稳定扩展)
│ ├── oauth.js MCP OAuth 客户端提供者(授权码 + PKCE、回环回调、token 持久化)
│ ├── probe.js vendored 连接探测(源自 mcp-client/src/probe.ts)
│ ├── transport.js vendored 传输工厂(源自 mcp-client/src/transport.ts)
│ └── client.js 浏览器半部(esbuild 打包,ModuleLoader wire format)
├── src/client/ 浏览器半部源码(TSX + CSS Modules + 本地 types + remote-contribution)
└── scripts/build.mjs 构建脚本(esbuild 取自 DSH checkout,见下)
node scripts/build.mjs
$DSH_SOURCE 未设置时尝试
~/.dsh/source/current。@deepseek-ai/*、zod、@modelcontextprotocol/sdk)不装 npm 包,
从 $DSH_HOME/profiles/node_modules(DSH profiles 模块 fallback,$DSH_HOME 默认 ~/.dsh)解析;构建时经
nodePaths 指向同一目录。<style data-plugin="dsh-mcp" data-file="…">,默认导出 identity 类名映射。方式一:npm(发布到 npm 后)
dsh plugin --profile web add dsh-mcp
方式二:GitHub git 源
dsh plugin --profile web add github:ArvinQi/dsh-mcp
# 或
dsh plugin --profile web add git+https://github.com/ArvinQi/dsh-mcp.git
方式三:本地开发(link)
dsh plugin --profile web add link:<本仓库绝对路径>
注意:本地
link:安装时,插件目录内含node_modules -> $DSH_HOME/profiles/node_modulessymlink(本机开发用,不入库),否则link:安装的 symlink 被 realpath 后无法解析@deepseek-ai/*。
在 $DSH_HOME/profiles/web/cordis.patch.yml($DSH_HOME 默认 ~/.dsh)追加:
- insert:
- id: dsh-mcp
name: dsh-mcp
然后重启 dsh web(client roster 变更需重启);之后浏览器硬刷新(Cmd/Ctrl + Shift + R)
加载设置页。
打开管理页:重启后浏览器打开 DSH Web → 设置(Settings)→ MCP。
添加服务器:
serverName,决定工具前缀 mcp__<serverName>__)、传输方式
(streamable-http 填 URL / stdio 填命令)、请求头、工具调用超时等进程环境变量(注入模式下方,默认展开):
NAME=value)与「添加变量」逐行添加${变量名}(如 Authorization: Bearer ${GITLAB_TOKEN}),
连接时自动替换(优先级:服务器 env > 进程级 env > 系统环境变量)JSON 维护配置(MCP 配置模块右上角):
OAuth 服务器(streamable-http 走 MCP OAuth,如受 OAuth 保护的网关服务):
serverName 隔离),由 MCP SDK 自动刷新
(24 小时内活跃自动续期);失效后自动重新授权,授权一次后挂载与测试复用日常管理:
工具控制(省 token 的关键):
search(按需检索,默认)或 full(全量注入)search 模式下,模型需要某 MCP 工具时调用 mcp_tool_search 检索并热注入当前对话验证效果:
mcp__<服务器名>__<工具名>search 模式下未检索到的工具不占系统提示词,节省 token 并提升 prompt cache 命中率list_changed 通知不会反复注销/重注册同名工具,工具列表保持稳定lib/index.js 是 mcp-manager 的构建产物(spec/types 已内联),改动请直接编辑
lib 下文件,或改回 TS 后重新用仓库工具链构建。src/client/* 后重新 node scripts/build.mjs;host 半部改动无需重装
(link 安装直接生效)。dsh web 才进入 client roster。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: mcp。