与 AI 共写 Markdown 文档,改动可撤销可追溯
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add godchen520/collab-canvas该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令发起外部网络请求
查看扫描证据(共 31 处,展示前 23 条)
- 执行外部命令固定命令dist/host.js:1142
const child = spawn('explorer', [dir], { detached: true, stdio: 'ignore' }) - 执行外部命令来自配置/变量dist/host.js:1149
const child = spawn(plat === 'darwin' ? 'open' : 'xdg-open', [dir], { detached: true, stdio: 'ignore' }) - 执行外部命令来自配置/变量dist/host.js:1158
exec(plat === 'win32' ? 'cmd /c start "" "' + dir + '"' : 'xdg-open "' + dir + '"', function (e2) { - 发起网络请求lib/client.js:16
fetch(u + "?ts=" + Date.now()).then(function (r) { - 发起网络请求lib/client.js:68
fetch("/api/canvas/log", { - 发起网络请求lib/client.js:1086
fetch(canvasApi("/api/canvas/list")).then(r => r.json()).then(d => { - 发起网络请求lib/client.js:1102
fetch(canvasApi("/api/canvas/list")).then(r => r.json()).then(d => { - 发起网络请求lib/client.js:1114
fetch(canvasApi("/api/canvas/list")).then(r => r.json()).then(d => { - 发起网络请求lib/client.js:1164
fetch(canvasApi("/api/canvas/read?id=" + encodeURIComponent(id))).then(r => r.json()).then(d => { - 发起网络请求lib/docdrop.js:34
fetch("/api/canvas/log", { - 发起网络请求lib/docdrop.js:122
fetch(ENDPOINT + "?name=" + encodeURIComponent(file.name || "doc.md"), { - 发起网络请求lib/docdrop.js:295
fetch("/api/canvas/locate?name=" + encodeURIComponent(name)).then(function (r) { return r.json() }).then(function (d) { - 发起网络请求lib/docdrop.js:319
fetch("/api/canvas/load-doc?rel=" + encodeURIComponent(docHit.docsRel) + "&" + sidQ()).then(function (r) { return r.json() }).then(function (d) { - 发起网络请求lib/doclink.js:35
fetch("/api/canvas/log", { - 发起网络请求lib/doclink.js:53
var pSession = fetch("/api/canvas/list?" + sidQ()) - 发起网络请求lib/doclink.js:55
var pAll = fetch("/api/canvas/list?scope=all") - 发起网络请求lib/doclink.js:136
fetch("/api/canvas/open-upload?name=" + encodeURIComponent(fname)) - 发起网络请求lib/doclink.js:227
fetch("/api/canvas/load-doc?rel=" + encodeURIComponent("canvas-docs/" + fname) + "&" + sidQ()) - 发起网络请求lib/doclink.js:246
fetch("/api/canvas/load-doc?rel=" + encodeURIComponent(rel) + "&" + sidQ()) - 发起网络请求lib/selref.js:59
fetch("/api/canvas/log", { - 发起网络请求lib/selref.js:291
var p = fetch("/api/canvas/selref/pin", { - 发起网络请求lib/selref.js:1014
try { req = fetch("/api/canvas/changes?since=" + lastSeq) } catch (_) { req = null } - 发起网络请求lib/selref.js:1155
fetch("/api/canvas/log", {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 人与AI共写文档
- 版本冲突检测
- 可撤销历史
DSH 协作画布插件(话布):人和 AI 共写的 Markdown 文档面。AI 通过 canvas_* 工具读写,带版本冲突检测、可撤销历史与文件持久化。
README
由 DeepSeek 最新模型翻译生成collab-canvas(话布)
面向 DeepSeek Harness(DSH)的协作画布插件:一块人和 AI 共写的 Markdown 文档面。
它解决什么问题
在聊天窗口里,AI 的长内容会刷屏,改一个段落要重发全文,版本也追不回来。
话布把长内容搬到一块独立画布上:
- 它在 DSH 界面里以 Markdown 文档的形式存在,你可以直接编辑
- AI 通过 9 个 canvas_ 工具读写它,而不是把内容贴进对话
- 双方的每次写入都进撤销历史,随时可以退回去
- 写入带版本检查,AI 不会盲目覆盖你刚改的内容
功能
| 功能 | 说明 |
| 📝 浏览器内编辑 | 画布在 DSH 页面内渲染与编辑,改动自动保存 |
| 🤖 AI 可读写 | 9 个 canvas_ 工具,模型直接操作画布 |
| ↩️ 撤销历史 | 每次写入入栈,你和 AI 的改动都可回退 |
| 🔒 冲突检测 | canvas_write 支持 baseVersion 强一致检查,不符返回 E_CONFLICT 并给出最新版本 |
| 💾 文件持久化 | 画布落成普通 .md 文件,另有 .canvases.json 记录元信息 |
| 🎯 划词引用 | 选中画布里的文字即弹出划词栏,可把该段引用进对话 |
| 🔗 文档链接/拖放 | 画布内可拖入文档、生成链接 |
展开完整文档(README 剩余 1 节)
collab-canvas(话布) 面向 DeepSeek Harness(DSH)的协作画布插件:一块人和 AI 共写的 Markdown 文档面。 它解决什么问题 在聊天窗口里,AI 的长内容会刷屏,改一个段落要重发全文,版本也追不回来。 话布把长内容搬到一块独立画布上: - 它在 DSH 界面里以 Markdown 文档的形式存在,你可以直接编辑 - AI 通过 9 个 canvas_ 工具读写它,而不是把内容贴进对话 - 双方的每次写入都进撤销历史,随时可以退回去 - 写入带版本检查,AI 不会盲目覆盖你刚改的内容 功能 | 功能 | 说明 | | 📝 浏览器内编辑 | 画布在 DSH 页面内渲染与编辑,改动自动保存 | | 🤖 AI 可读写 | 9 个 canvas_ 工具,模型直接操作画布 | | ↩️ 撤销历史 | 每次写入入栈,你和 AI 的改动都可回退 | | 🔒 冲突检测 | canvas_write 支持 baseVersion 强一致检查,不符返回 E_CONFLICT 并给出最新版本 | | 💾 文件持久化 | 画布落成普通 .md 文件,另有 .canvases.json 记录元信息 | | 🎯 划词引用 | 选中画布里的文字即弹出划词栏,可把该段引用进对话 | | 🔗 文档链接/拖放 | 画布内可拖入文档、生成链接 | | 📁 存储根可配 | canvas_configure 可把画布根目录固定到任意位置(如项目目录) | | 🎨 跟随主题 | 界面全部使用 var(--dsw-) 设计 token,换肤自动适配 | AI 工具 | 工具 | 用途 | | canvas_list | 列出全部画布与当前活跃画布 | | canvas_create | 新建一个画布 | | canvas_read | 读取画布内容(head 可只取前 N 字符粗看) | | canvas_write | 写入/修改(replace / append / prepend,可选 baseVersion 强一致检查) | | canvas_save | 保存到文件(可指定 filePath) | | canvas_load | 把已有 Markdown 文件加载为画布 | | canvas_locate | 在文档中精确定位一段原文(多处重复时确认是第几处) | | canvas_delete | 删除画布记录 | | canvas_configure | 固定画布存储根目录 | 安装 1. 装进 profile(下面两种来源任选其一) dsh plugin --profile web add collab-canvas # 从 npm 装(推荐) dsh plugin --profile web add github:godchen520/collab-canvas # 从 GitHub 装(跟随最新提交) 2. 把 "collab-canvas" 加进 profile package.json 的 dsh.profile.bundles 数组(只加 dependencies 不加 bundles 的话,cordis.patch.yml 不会生效 —— 插件"装了但没启用") 3. 重启 dsh web 两处都要加:dependencies 负责把包装上,dsh.profile.bundles 负责让它的 cordis.patch.yml 进入组合。缺任何一边都会出现"装上了但功能不在"。 npm 安装的好处:不受 npm 对 git 依赖触发的 allowBuilds 构建授权步骤影响,且市场能显示下载量。 数据存放 <存储根>/ ├── .canvases.json # 画布元信息(id、标题、关联文件、版本) ├── <标题>.md # 画布正文,普通 Markdown 文件 ├── .sessions/ # 会话级清单(运行时状态) └── attachments/ # 画布里粘贴/拖入的图片 存储根默认取当前会话工作区;用 canvas_configure 可固定到别处,重启后仍生效。 canvas-docs/、uploads/ 属于使用中产生的个人内容,已列入 .gitignore,不进本仓库。 架构 插件由两半组成,分别跑在两个平面: | 平面 | 文件 | 职责 | | Host(DSH Node 进程) | dist/host.js | 注册 9 个工具、HTTP 端点(/api/canvas/)、画布状态与持久化、编辑器脚本 | | Client(浏览器页面) | lib/client.js | 注入编辑器 UI、划词栏、右键/长按菜单、与 Host 的 RPC | - dist/host.js 由 src/host/.js 构建(node tools/build.js) - lib/client.js 由 src/client/editor-panel.js 同步而来(客户端为保证运行时不引入打包器,采用直接拼装) 设计细节见 docs/ARCHITECTURE.md 与 docs/DESIGN.md。 开发 npm run build # src/host/.js → dist/host.jsbash npm test # 回归测试 npm run verify # 上线前总检(含真跑测试 + 部署一致性 + 文档检查) npm run deploy # 一键搬运到 DSH 部署目录(--check 只看差异) 部署目录默认由 DSH_HOME 推导: $DSH_HOME/profiles/web/node_modules/collab-canvas 换机器或换 profile 时,用环境变量覆盖: bash CCV_DEPLOY_DIR=/path/to/deployed/collab-canvas npm run deploy 生效方式(两种别混): - 改了 src/host/*.js → 搬运后必须完全重启 dsh web(刷新页面不够) - 只改了客户端 → 搬运后刷新页面即可 兼容性 | DSH 版本 | 状态 | | 0.2.x(0.2.0-rc.2 实测) | ✅ 支持 | 本插件从 @deepseek-ai/dsh-tools 取 defineTool(已声明为 peerDependencies),其余宿主能力(timer、tools、fs、webServer、systemPrompt)全部通过 cordis 服务注入获取。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
godchen520/collab-canvas
与 AI 共写 Markdown 文档,改动可撤销可追溯
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,798已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,486已汉化DSH
71.1