dsh-pen-dev
Verifieddsh-pen-dev · v0.1.2 · MIT
Unofficial pen.dev MCP integration for DeepSeek Harness: design on the pen.dev canvas from a DSH session.
Install
dsh plugin add dsh-pen-dev Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-pen-dev
非官方的 pen.dev 接入插件,用于 DeepSeek Harness。
它把 pen.dev 桌面版自带的 MCP server 接到 DSH 会话里,让模型能在真实的 pen.dev 画布上设计、
读取 frame 与组件、把网页复刻成可编辑图层、调用 pen.dev 的风格原型;同时附带一个 pen-dev
技能,告诉模型画布工作流,并引导它去读 pen.dev 自己的 read_skill 文档。
本项目与 pen.dev 官方无关,也未获其背书。pen.dev 及其桌面应用归其作者所有;本包不分发
任何 pen.dev 二进制,只是在已安装的应用里定位 MCP server。
装好之后你会得到
| 工具 | 用途 |
|---|---|
mcp__pen__get_app_state |
当前文档、选区、顶层 frame、组件、浏览器状态 |
mcp__pen__read_skill |
pen.dev 官方的画布 API 文档(execute、schema、各类指南) |
mcp__pen__execute |
对当前打开的 .pen 执行画布操作 |
mcp__pen__get_style |
载入视觉风格原型(字体、配色、图像方向) |
mcp__pen__browser |
在应用内置浏览器打开真实网址,把页面复刻成可编辑图层 |
另外附带 pen-dev 技能。
前置条件
- DeepSeek Harness,且具备
@deepseek-ai/dsh-mcp-client插件。开发与验证基于 DSH0.2.1-rc.2。 - pen.dev 桌面应用已安装。开发与验证基于 macOS(arm64)上的 Pen 1.2.19。
应用内的 MCP server 位于
Pen.app/Contents/Resources/app.asar.unpacked/out/mcp-server-<platform>-<arch>。
安装
在 DSH 应用里装(推荐)
侧栏 插件 → 添加插件 → 安装第三方插件,输入包名:
dsh-pen-dev
该对话框也接受本地路径或 Git 地址。
命令行安装
dsh plugin --profile <profile> add dsh-pen-dev
安装后会默认启用该组合包。开启 HMR 时无需重启即可看到工具;否则重启应用。
从插件市场安装
如果某个市场索引收录了本插件:插件 → 发现 → 添加索引源,粘贴索引 URL 后即可在结果里安装。
market/index.json 是现成的 format-1 条目;
PUBLISHING.zh.md 说明了怎么托管索引,以及这个 DSH 版本为什么还没有官方提交入口。
手动等价写法
如果你想直接看 YAML(例如包还没发布到 npm、用本地路径安装时),把它装进 profile 后,组合包 patch 会插入下面两行:
- insert:
- id: pen-dev
name: dsh-pen-dev
- id: pen-dev-skill
name: dsh-pen-dev/skill
如果你之前手写过 pen.dev 配置,请先删掉那条手写的 mcp-client 行。两个 mcp-client 实例
不能共用同一个 serverName,后加载的那个会报 serverName "pen" is already in use。
与官方 MCP 配置的关系
pen.dev 官方的桌面接入配置是:
{"name":"pencil","transport":"stdio","command":"…/mcp-server-<platform>-<arch>","args":["--app","desktop"],"env":{}}
本插件挂载的就是这个 server:同一个二进制、同样的 --app desktop、同样 5 个工具
(browser、execute、get_app_state、get_style、read_skill)。相比最小配置,它额外做了:
- 用
node:fs在/Applications、~/Applications、/opt和 Windows 的%LOCALAPPDATA%\Programs里探测二进制,非标准安装位置不用改配置 - 传
--agent deepseekHarness,让 pen.dev 区分这是 DSH 的连接(PEN_MCP_AGENT可覆盖) - 支持
PEN_MCP_CONVERSATION_ID,映射为--conversation_id - 把单次调用超时提到 120s,
execute和browser的较大操作常常超过默认 60s
不默认传 --enable_spawn_agents:那会让 pen.dev 在 DSH 之外再拉起它自己的 agent。确实需要时
设 PEN_MCP_ENABLE_SPAWN_AGENTS=1。
另外,@pencil.dev/cli npm 包里带的是另一套 MCP server(9 个以 filePath 为参数的工具,
服务于它的无头 .pen 编辑器)。它不能替代本插件:连到桌面 app 时它调的 IPC 方法并不存在
(实测报 No handler found for method 'get-editor-state')。
配置
| 环境变量 | 默认值 | 含义 |
|---|---|---|
PEN_MCP_BIN |
— | pen.dev MCP server 二进制的绝对路径,用于非标准安装位置或其他平台。 |
PEN_APP_PATH |
自动探测 | pen.dev 应用目录的绝对路径,自动探测不到时用。 |
PEN_MCP_AGENT |
deepseekHarness |
传给 --agent 的值,pen.dev 用它区分连接来源。 |
PEN_MCP_CONVERSATION_ID |
— | 映射为 --conversation_id。 |
PEN_MCP_ENABLE_SPAWN_AGENTS |
关 | 设为 1 或 true 时传 --enable_spawn_agents(多出 spawn_agents 工具)。 |
PEN_MCP_SERVER_NAME |
pen |
MCP 命名空间,即 mcp__<name>__* 前缀。 |
二进制路径在 profile 激活时计算:patch 用 node:fs 探测常见安装根目录,只有装在非常规位置才需要
PEN_APP_PATH。全部找不到时,mcp-client 会报 spawn 失败、不挂任何工具,harness 其余部分照常运行。
注意事项
.pen文件是加密的。只有 MCP 工具能读写它,不要用文件系统工具去打开。- 工具改的是用户正在看的文档。
execute要当作可见的、有破坏性的操作来处理。 - 一张画布同一时间只让一个 agent 写:如果 Claude Code 也连着 Pen,不要让两边同时改。
PEN_MCP_BIN需要由启动应用的外层把变量传进去。macOS 的 GUI 应用不继承 shell 环境,PEN_APP_PATH主要服务于会传环境的启动器。- Windows / Linux:路径探测按常见 Electron 布局写了,但只在 macOS 上验证过;
PEN_MCP_BIN始终优先。
计划额度
pen.dev 把 MCP 用量记为活跃天数:本地时区下每个不同的日历天,只要调过任意 pen 工具就计 1 天, 计入当前计费周期的额度。免费计划每月有若干天上限;Pro 计划取消该上限("Design with agents every day")。CLI 走同一套计量。
额度用尽期间所有 pen 工具都会失败(读工具也一样)。插件里的 pen-dev-quota-guard 会把上游那段
"STOP … do not work around this" 改写成简短双语提示并附上升级链接,让模型停下来而不是反复重试。
本地没有可重置的计数:判定在 pen.dev 服务端,按组织计。
卸载
把该组合包从 profile 移除(插件面板,或 dsh plugin --profile <profile> remove dsh-pen-dev)。
如果之前有手写的 mcp-pen 行,把它恢复回去。
许可
MIT。非官方社区包,见上文声明。