deepseek-harness-vscode-plugin
by thelibrarymasyaf
把官方 DeepSeek Harness(DSH)接入 VS Code 的独立右侧边栏,并提供真正的编辑器上下文桥接,而不是只在 Webview 中嵌入一个网页。
安装
dsh plugin --profile web add github:thelibrarymasyaf/deepseek-harness-vscode-pluginGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
把官方 DeepSeek Harness(DSH)接入 VS Code 的独立右侧边栏,并提供真正的编辑器上下文桥接,而不是只在 Webview 中嵌入一个网页。
0.11.0 继续复用官方 DSH 会话与输入界面,同时通过独立的 DSH Client plugin 提供适合 VS Code 的单列嵌入布局、历史对话、全回复区原生复制、逐消息替换、对话模式与工作区迁移、持久归档、原生剪贴板粘贴、工作区同步和编辑器上下文集成。
0.11.0 界面结构
- DSH 会话界面占满 VS Code Secondary Side Bar 的可用高度和宽度,外层不再保留额外的 Workspace、
No active file、连接状态或 File/Selection/Problems 工具条。 - DSH WebUI 原有的左侧导航在窄栏中即使折叠也会保留 56px rail。0.11.0 由专用 embed layout 直接提供单列 shell,不挂载这条 rail,而不是依赖易随上游构建变化的 CSS module 类名去隐藏 DOM。
- 顶部使用一条 34px 的紧凑聊天栏:历史按钮用于展开最近对话;剪贴板按钮把系统剪贴板追加到当前草稿;新建按钮创建或打开当前 Workspace 的空白会话。
- 空白会话默认显示最近 3 条历史;查看全部会在同一区域展开完整列表。历史按更新时间排序,点击后直接调用 DSH
sessions.open()切回原会话,不复制或另存聊天数据。 - 每条历史右侧有归档按钮,调用 DSH 的持久归档接口;归档只从主历史隐藏会话,不删除会话日志。rc.6 尚未提供取消归档接口。
- 每条纯文本用户 Prompt 右下角都有复制和铅笔按钮;复制通过 VS Code Clipboard API,铅笔会把原气泡就地切换成“取消 / 发送”编辑框。修改发送会从该消息之前创建替换分支、继承原会话名称、立即提交修改后的 Prompt,并自动归档旧会话,因此主历史中只保留修改后的同名会话。
- 当前模式标签本身就是下拉框触发器:点击 标准模式 / PTC 模式 / 极简模式 等标签直接选择新模式,不再额外放置重复按钮;
+菜单中也保留 切换当前对话模式。空白会话直接原地切换;已经开始的会话会创建指定 preset 的同名空白替代会话,成功打开后才归档旧会话。确认页会明确提示旧内容不会自动成为新会话上下文,旧日志仍可在归档中查看。 - 当前工作区标签同样是下拉框触发器。空白会话会切换到目标 Workspace 的空白会话并迁移未发送草稿;已经开始的会话会把截至最后一个完整轮次的原始事件历史、标题、当前模式和未发送草稿迁移到目标 Workspace,再归档旧会话。被中断但未闭合的最后一轮不会迁移,运行中必须先停止。
- Workspace 由 Extension Host 自动注册并连接,不再在 Webview 顶部额外堆叠状态行。
- DSH 原生输入区的
+菜单中提供 VS Code Context,可选择 Add Current File、Add Selection 或 Add Problems,内容会发送到发起操作的 DSH 会话草稿。 - 同样的 File、Selection 和 Problems 操作仍可从 VS Code 编辑器右键菜单和命令面板调用;右键菜单会根据当前文件或选区显示适用操作。
- VS Code view title 只保留紧凑图标;更新检查和日志位于
…菜单,缺少 Key 时才显示剪贴板导入按钮。
0.11.0 的 Bridge 单元测试覆盖 Cmd/Ctrl+V 回退、官方代码块复制按钮、Agent 回复/Markdown/工具输出选区的 Cmd/Ctrl+C、右键复制、逐消息替换、同名重命名、模式切换、跨工作区历史迁移、草稿迁移、失败回滚、替代会话归档、按选区插入和 128 KiB 上限。发布后的 VS Code 窗口仍需在更新后执行一次 Developer: Reload Window 才会载入新扩展进程。
功能
- 与 Codex 类似的 VS Code Secondary Side Bar(右侧边栏)
- 全高单列嵌入布局,不显示 DSH 自带的左侧 rail,也不叠加插件自己的顶部上下文栏
- Codex 风格的最近历史、查看全部、会话切换与新建对话入口
Cmd/Ctrl+V在 iframe 不能取得剪贴板时自动回退到 VS Code Clipboard API;顶部同时提供可见的“从系统剪贴板粘贴”按钮- 每条纯文本用户 Prompt 都可原生复制;停止运行后可点击该消息右下角的铅笔,就地修改并以同名替换会话发送,旧会话自动归档
- Agent 回复中的普通文本、Markdown、代码块和工具输出均可选中后按
Cmd/Ctrl+C;官方复制按钮以及选区右键“复制”也会统一交给 VS Code Clipboard API - 停止运行后可直接点击当前模式标签,选择标准、PTC、极简、Cordis 或自定义 preset;已开始的会话以同名空白会话替换,旧会话自动归档
- 停止运行后可直接点击当前工作区标签切换 Workspace;已开始的会话会继承最后一个完整轮次以前的全部历史、标题、模式和未发送草稿
- 历史列表支持持久归档,会话日志不会被删除
- DSH 页面会跟随 VS Code 的浅色、深色和高对比主题,并同步当前主题的背景、文字、边框与强调色
- 自动注册当前 VS Code 窗口中的本地工作区,并打开对应 DSH 会话
- 从 DSH 原生
+菜单、VS Code 编辑器右键菜单或命令面板,把当前文件、当前选区或当前文件的 Problems 添加到 DSH 输入草稿 - 选区只在用户显式点击时读取,UTF-8 内容限制为 64 KiB
- Problems 最多 100 条、128 KiB
- 未配置 API Key 时先显示插件自己的设置遮罩,不再让用户误入 DSH 网页输入框
- 主按钮通过 VS Code Clipboard API 直接导入系统剪贴板,全程不需要按
Cmd+V - 仍保留 VS Code 原生密码输入框作为手动备用入口
- API Key 只存入 VS Code SecretStorage,通过环境变量传给 DSH;不会进入 Webview、消息桥或日志
- 管理官方
@deepseek-ai/dsh运行时,支持安全更新、兼容性冒烟测试和回滚 - DSH 新增一般功能或调整 UI 时,插件会继续使用更新后的官方界面
工作原理
插件仍然运行官方 dsh web,但同时随 VSIX 携带一个独立的 DSH Client plugin:
- Extension Host 读取 VS Code 的 workspace、active editor、selection 和 diagnostics。
- DSH 通过
--patch加载@local/dsh-vscode-bridge。 - Bridge 使用专用 embed layout 组成单列 shell,通过 keyed slot 提供可复制、可就地编辑的用户消息,并通过 DSH Command UI 提供 VS Code Context。
- Bridge 调用 DSH 的
workspaces.create、workspaces.connectWorkspace、workspaces.archiveSession、sessions.open、sessions.fork、session.create、agentPreset.select和conversation.input服务完成工作区、归档、分支、模式替换与发送。 - VS Code Webview 与 DSH iframe 之间通过带一次性 token、序号和来源校验的
postMessage通信。
插件不按 CSS module 哈希、按钮文字或 DOM 层级注入隐藏规则;单列结构由 DSH 的插件与 slot 组合实现。因此,会话内容、输入框以及一般 UI 功能调整仍直接来自所安装的官方 DSH,不需要在扩展中重写一套聊天界面。
安装
- 在 VS Code 运行 Extensions: Install from VSIX…。
- 选择
dsh-vscode-sidebar-0.11.0.vsix。 - 点击右侧的 DeepSeek Harness 图标,或运行 DeepSeek Harness: Open DSH Sidebar。
- 先在来源应用复制 API Key,再点击 从系统剪贴板直接导入。插件会读取剪贴板、写入 SecretStorage、重启 DSH 并验证配置;不需要在任何输入框里粘贴。也可选择 手动输入。
首次启动会安装所选版本的官方 @deepseek-ai/dsh,因此可能需要几分钟。本机需要可用的 Node.js 和 npm。
命令
DeepSeek Harness: Open DSH SidebarDeepSeek Harness: Add Current File to DSHDeepSeek Harness: Add Selection to DSHDeepSeek Harness: Add Current File Problems to DSHDeepSeek Harness: Enter API KeyDeepSeek Harness: Paste API Key from ClipboardDSH: Start / Stop / RestartDSH: Check for UpdatesDSH: Roll Back RuntimeDSH: Open in BrowserDSH: Show Logs
编辑器右键菜单也提供 File、Selection 和 Problems 操作。
更新策略
默认 safeAuto:
- 将候选 DSH 安装到隔离的版本目录。
- 使用隔离的
DSH_HOME启动候选版本。 - 验证 readiness、前端资源、boot manifest、VS Code bridge bundle 和 workspace RPC。
- 全部通过后才切换 active version,并保留上一版本用于回滚。
也可以把 dshSidebar.updateMode 设为 notify 或 manual,或通过 dshSidebar.managedVersion 固定版本。
更新兼容边界
普通的 DSH 功能增加、文案、主题和会话 UI 调整通常会由官方 WebUI 直接呈现。0.8.0 的自动适配并不是对任意上游改动的保证:插件仍依赖 DSH 的启动协议、boot manifest、Client plugin 注入机制,以及 workspace、session、conversation、theme、Command UI 和 layout/slot 契约。尤其是 root、conversation.chat.node、session list、rename、archive、fork 或 Command UI 的注册接口发生破坏性变化时,专用 embed layout、历史列表、Prompt 编辑与 VS Code Context 可能需要同步适配。
候选版本的隔离安装和兼容性检查用于阻止已能识别的启动、资源、bridge 或 workspace RPC 故障,但它不能替代所有真实 VS Code 布局与交互验证。更新后若出现空白页面、左 rail 重新出现、输入菜单缺少 VS Code Context,或上下文没有进入草稿:
- 在右侧栏标题的
…中选择 DSH: Show Logs,也可从命令面板运行同名命令。 - 记录当前 DSH runtime 版本以及日志中的启动、bridge 或兼容性错误;日志按设计不包含 API Key 正文。
- 使用 DSH: Roll Back Runtime 回到上一已知可用版本,或将
dshSidebar.managedVersion固定到已验证版本,再报告该布局/服务契约变化。
安全边界
- DSH Web server 只绑定
127.0.0.1和系统分配的随机端口。 - 默认使用插件 globalStorage 下独立的
DSH_HOME,不会修改用户已有的全局 DSH profile。 - API Key 不写入 settings、HTML、postMessage 或输出日志。
- 工作区正文不会自动读取;文件内容只在显式添加选区时进入草稿。
- Bridge 消息验证 iframe source、origin、一次性 token、递增序号、命令白名单和大小上限。
- 普通 Prompt 的剪贴板文本只在用户按下粘贴快捷键或点击粘贴按钮后读取,最多 128 KiB;日志只记录固定结果状态,不记录正文、长度、前缀或哈希。
- 逐消息编辑不会改写持久会话日志,而是从所选消息之前创建同名替换分支,发送成功后归档旧会话;旧日志仍保留在 DSH 的归档集合中。目前只允许编辑纯文本 Prompt,包含图片或其他内容块时不显示铅笔。
- DSH 会锁定已开始会话的 Agent preset。模式切换因此只会对空白会话原地重组;已开始的会话会创建同名空白替代会话并归档旧会话,且不会暗中复制、摘要或注入旧对话内容。确认页会在执行前明确说明这一边界。
- DSH 会把会话
cwd固定在创建时。工作区切换不会改写旧会话,而是用 DSH 的原始事件 seed 创建目标 Workspace 下的同名替代会话,继承截至最后一个完整轮次的消息、工具事件、标题和当前 Agent preset,并迁移未发送草稿;旧会话在成功后归档。运行中或没有完整轮次时拒绝迁移,避免复制半截事件。 - 消息复制正文只会在用户点击复制按钮、按下复制快捷键或选择右键“复制”后传给 VS Code Clipboard API,最多 128 KiB;日志不记录正文。
开发
npm install
npm run check
npm test
npm run package
生成的 0.11.0 VSIX 位于仓库内的 artifacts/dsh-vscode-sidebar-0.11.0.vsix(该目录不会提交到 Git)。
当前主要支持本地桌面 VS Code。Remote SSH、Dev Containers、WSL 和 Marketplace 签名尚未做端到端验证。
DeepSeek Harness 是独立项目,本仓库不包含它的源代码;其许可证与使用条款分别适用。
原始 README: https://github.com/TheLibraryMasyaf/DeepSeek-Harness-VSCode-Plugin/blob/main/README.md ↗
同类插件
查看全部 →
dsh-anchored-standard
两阶段 DeepSeek Harness 预设:先 Minimal 对齐的 bootstrap,再切完整 Standard 工具(Project2 98/99)

PicGo-Core
极致的图片上传引擎,CLI 与 API 双支持

awesome-deepseek-harness
DeepSeek Harness(DSH)及其优秀社区插件的精选指南。

awesome-deepseek-harness
DeepSeek Harness (DSH)生态系统:来自dsh-external/hub和公共dsh-plugin主题的精选插件、工具和基础设施。

AI-Novel-Writer
本地优先 AI 小说创作工作台,提供 Windows/macOS 桌面版与 DeepSeek Harness 插件开发预览,支持角色、大纲、章节蓝图、审稿修稿和本地模型。

mcp-for-stata
MCP-for-Stata:把 Stata 集成进你的 agent