deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
中文 | English
把 DeepSeek Harness(DSH)Web GUI 升级为一体化开发环境,四大核心能力:
同时内置 SSH 远程工作区模式:右上角(session log 左侧)配置 SSH 主机(密码 / 密钥,复用
~/.dsh/dsh-ssh.json),进入后右侧面板自动切换为远程文件树,模型本机的
read / write / edit / glob / grep 与 bash / 终端在 SSH 模式下透明地在远程服务器执行,LLM 与 Agent
循环仍在本机——「本地大脑、远程手脚」。
「设置」→「右边栏工作区」栏目集中管理右栏工作区的功能开关(8 项:自动 diff / 监视圆点 / Git 角标 / 语法高亮 / 缩放预览 / 三栏 IDE / 终端停靠 / 会话隔离)与编辑工具栏工具(9 项,供富文本编辑选用),圆角卡片 + 开关,改动即时生效并持久化。
Markdown 文件在面板中直接渲染预览(青色标签),并支持三种布局随意切换:

左侧文件树:懒加载、按文件名搜索定位、Git 状态角标(A/M/D/R/U/C)、右键菜单(新建文件 / 新建文件夹 / 下载 / 行内重命名 / 复制 / 粘贴 / 删除进回收站),本地目录与 SSH 远程目录自动切换;已打开的文件绝不重复开 tab,磁盘变化时在原 tab 上自动刷新内容。

🔍 监视路径(自动弹出范围):默认只监视一级目录(根目录及其直接子目录下的文件)。 点击目录行右侧圆点逐级切换:浅黄 = 监视此目录下一级路径,绿色 = 监视此目录下所有层级(n级),再点恢复默认;监视标记按会话记忆。顶栏(文件 / 变更 / >_ 右侧)有规则说明框。构建产物、临时文件、锁文件等过程文件无论标记都不弹出。

底部状态栏展示工作区状态。

代码区即时编辑:五颜六色的语法高亮(Trae 风格配色,跟随浅色/深色主题自动切换)+ 行号 + 斑马底纹,可读写编辑、Ctrl+S 保存、保存带 mtime 冲突检测;工具栏提供分屏(编辑器 | 预览)、刷新等操作。

任何外部编辑(Agent 工具写文件、其他进程改动)都会自动弹出「Update(路径)」卡片到下栏—— Added/removed 统计 + 删除行红底、新增行绿底;每个文件的每次编辑都会弹(基线自动推进,不重复不遗漏); 保存后同样弹出:

每个打开的标签带类型色块——橙 = 图片、绿 = CSV、蓝 = Python、黄 = JS/TS、紫 = JSON、 青 = Markdown、红 = diff、灰 = 日志——标签再多也能一眼分辨;新打开的文件与 diff 自动滚到 可见位置,标签条横向滚动 + 标题截断,绝不拥挤。

内置命令行终端:代码工具栏「▶ 运行」直接执行当前文件(python / node / bash 等),「>_ 终端」打开 命令行面板随时输入命令(SSH 模式下均在远程执行);文件栏 tab 条也有独立终端入口。终端以 真实终端风格停靠在聊天栏底部五分之一处(黑体、macOS 圆点标题、❯ 提示符、绿光标,不与对话重叠)。


日志文件(灰色标签)在面板中直接预览。



.R / .r 脚本以 Rscript 运行(▶ 运行),R 标签用 R 官方蓝;.Rmd(R Markdown)识别为
Markdown 可预览渲染;代码高亮原生支持 R。
w:eastAsia)/ 段落与文本底纹 / 内联图片与形状照片(w:drawing/a:blip,含 mc:AlternateContent 形状)/ 内容控件(w:sdt)/ 页眉页脚(header1.xml 等 part 的 logo/信头)直接渲染预览工具栏「编辑」进入框内编辑:工具栏按设置面板勾选显示(字体 / 字号 / 加粗斜体 / 对齐 /
下划线 / 文字颜色 / 高亮 / 段间距行间距 / 页边距);保存时由编辑后 HTML 重建 docx/xlsx/pptx
并以二进制写回(mtime 冲突保护,粗体/斜体/下划线/颜色/字号/字体/高亮等 run 格式编辑保存后不丢)。
已知限制:图表(word/charts/*)与嵌入对象(嵌入 Excel)等复杂结构暂不解析,编辑保存也不保留。

预览工具栏「可视化编辑」:渲染结果本身就是可编辑文档(不再是浮动文本框)——像 Word 一样在渲染页上直接改。Markdown 在可编辑区里改编译后的 HTML,保存时转回 markdown 源(标题含中划线不会乱码、代码围栏保留语言);颜色 / 字号 / 字体 / 下划线 / 高亮以严格白名单的内联 HTML 持久化,改字色不再误刷底色、粗斜体字号保存后不丢。HTML 在完整文档 iframe 里编辑(PPT 式富文本修改:颜色/字号/粗斜体/对齐/下划线/高亮),原 <style> 与画布背景照常渲染,保存回写整个文档(不再丢成单列覆盖的 body 碎片)。工具栏提供加粗/斜体/下划线/文字颜色/高亮/字体/字号/对齐/撤销/重做。文字颜色 / 底色为 Word 式按钮:点一下「A」就把当前记住的颜色套到选区(下方色条显示当前颜色),小「▾」弹出调色板选色即记住并生效——选色不再要点好几下,且可与粗体/斜体对同一段同时生效。工具栏会高亮当前选区已有的格式(加粗/斜体/下划线/对齐/颜色/底色按钮呈现阴影),像 Word 一样一眼看出选中文字带了什么格式。



ctx.fs / ctx.subprocess 切换为模式路由门面——本地模式委托
给部署自带的沙箱化实现,SSH 模式委托给 SFTP/SSH 远程实现(原子写、版本校验、CRLF 处理、流式输出、
PTY 终端)。模型工具零改动地远程执行。@deepseek-ai/dsh-fs 实现,路径 / 版本 / 原子写 / CRLF / 规范路径传输。@deepseek-ai/dsh-subprocess 实现,exec + PTY 终端,输出溢出转储到本地。~/.dsh/dsh-ssh.json。/root/autodl-tmp)。remote_status / remote_ls / remote_read / remote_write / remote_mkdir /
remote_rm / remote_rename / remote_glob / remote_grep,以及 ssh_exec / ssh_upload /
ssh_download。
SSH 主机配置:别名 / 主机 / 端口 / 用户名 / 密码或密钥 / 远程根目录,保存并测试连接后一键进入 SSH 模式。

进入 SSH 模式后,右侧面板自动切换为远程文件树,read / write / edit / glob / grep 与终端透明地在远程服务器执行。
.py / .md / .js 等文件 → 直接输入 → Ctrl+S 保存(mtime 冲突检测)。.py / .js / .sh 等文件 → 工具栏「▶ 运行」,SSH 模式下在远程主机执行。dsh-IDE/
├── packages/
│ ├── dsh-aionui-panel/ # 右侧面板系统:文件树/预览/终端/编辑 diff/类型色标签(IDE 工作区本体)
│ ├── dsh-ssh/ # SSH 引擎:ssh2 连接池、exec/PTY/SFTP/隧道/集群(SSH 远程模式依赖)
│ └── dsh-easyssh/ # SSH 远程工作区:模式状态机、接缝门面、远程实现、Web GUI 前端
└── README.md
右侧文件面板(文件树 / 预览 / 终端 / 右键菜单 / 编辑 diff)由 dsh-aionui-panel(DSH Web GUI 右侧 面板系统)提供,本仓库内与 dsh-IDE 配套维护;dsh-easyssh 通过
sshWorkspaceMode跨插件服务驱动它 跟随 SSH 模式。SSH 远程开发只是 dsh-IDE 的能力之一——本地目录同样享受完整的 IDE 工作区。
前置要求:Node.js ≥ 22、pnpm、已安装 dsh(npx @deepseek-ai/dsh)。
# 1) 克隆并构建
git clone https://github.com/chenw2759-wq/dsh-IDE.git
cd dsh-IDE
pnpm install
pnpm --filter "./packages/dsh-aionui-panel" build
pnpm --filter "./packages/dsh-ssh" build
pnpm --filter "./packages/dsh-easyssh" build
# 2) 把三个包安装到 web profile(注意用你自己的绝对路径)
dsh plugin --profile web add file:C:/你的路径/dsh-IDE/packages/dsh-aionui-panel
dsh plugin --profile web add file:C:/你的路径/dsh-IDE/packages/dsh-ssh
dsh plugin --profile web add file:C:/你的路径/dsh-IDE/packages/dsh-easyssh
仓库品牌为 dsh-IDE;核心插件包名沿用
dsh-easyssh(安装标识,不随品牌改名)。
💡 pnpm 构建放行(一行):dsh-ssh 依赖的原生库(ssh2 / cpu-features)需要构建。pnpm 10+ 默认阻止依赖构建脚本,
dsh plugin add会报ERR_PNPM_IGNORED_BUILDS: Ignored build scripts: cpu-features@0.0.10, ssh2@1.17.0,并在<profile>/pnpm-workspace.yaml里自动写入占位:allowBuilds: cpu-features: set this to true or false ssh2: set this to true or false把两个
set this to true or false改成true,然后重新执行第 2 步的dsh plugin add(重复执行是幂等的)。这是 pnpm 的标准流程,任何带原生依赖的插件都一样。
安装 dsh-easyssh 时,其自带的 cordis.patch.yml(经 dsh.bundle.patch 声明)会作为 profile
bundle 层自动应用:禁用部署自带的 fs-sandbox / subprocess,挂载模式路由门面
easyssh-fs / easyssh-subprocess(SSH 模式下模型工具透明地远程执行;本地模式委托回同一套
沙箱实现)。不需要手动编辑 <profile>/cordis.patch.yml。
⚠️ 升级用户必读:手动写入接缝补丁只属于 0.1.0 之前的旧版本。若你按旧文档在
<profile>/cordis.patch.yml(Windows 默认C:\Users\<你>\.dsh\profiles\web\cordis.patch.yml) 里写过手写补丁,升级后必须把它删除(恢复为[])——否则自动补丁 + 手写补丁各插入一次 相同的ssh-workspace-fs/ssh-workspace-subprocess行,启动会报duplicate loader entry id错误。删除后重启即可(自动补丁内容与旧手写补丁一致,行 id 相同)。
# 重启 dsh
npx @deepseek-ai/dsh web
打开 http://127.0.0.1:3080 → Ctrl+F5 硬刷新(浏览器缓存旧 client 包时必做)→ 右上角 SSH 按钮配置主机 → 进入 SSH 模式。
回滚 = 把
cordis.patch.yml恢复为[]再重启。
remoteRoot(默认 ~)为基准;不要用 Windows 本机路径。~/.dsh/dsh-ssh.json(0600)。远程 ctx.fs / ctx.subprocess 实现移植并改编自 UynajGI/dsh-ssh
(MIT,详见各文件头与 NOTICE),在其基础上补全了 Web GUI 前端与运行时模式切换。
BSD-3-Clause。远程实现的 MIT 版权归 UynajGI/dsh-ssh 原作者(见 NOTICE)。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。