← 返回列表
未验证
在侧边栏直接编辑远端文件、开终端并管理 Git
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/9 · 已提供中文文档
dsh-better-sidebar 的远程工作区支持——通过 SSH 实现文件树、编辑器、终端、git、上传/下载和预览。
综合分
29.3
GitHub 分
29.3
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add zijun-T/dsh-sidebar-remote该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-sidebar-remote
单一可安装的 DSH Web 聚合插件——自动集成 dsh-better-sidebar + @dsh-ssh/dsh-ssh,使 SSH 远程工作区的文件、预览、传输、终端和 Git 真正运行在远端,本地工作区保持原侧边栏行为不变。
无额外 UI、无独立入口。装好即忘:侧边栏自动区分本地与远程会话。
安装
本地路径
dsh plugin --profile web add /path/to/remote-sidebar-plugin
tarball(推荐换机部署)
npm pack
dsh plugin --profile web add ./dsh-sidebar-remote-0.2.1.tgz
发布后(npm)
dsh plugin --profile web add dsh-sidebar-remote
单次安装即可。cordis.patch.yml 会自动挂载聚合插件,上游两个插件通常已随 profile 安装。
移除:dsh plugin --profile web remove dsh-sidebar-remote
更新
本包未发布 npm,更新渠道与安装渠道一致。更新后必须重启 dsh web(Host 半边无热重载),并硬刷新浏览器(Ctrl+Shift+R)避免沿用旧 client bundle:
git URL 安装者:重新解析 git 依赖到最新 main(prepare 脚本自动重建)
cd ~/.dsh/profiles/web && pnpm update dsh-sidebar-remote
tarball / 本地路径安装者:仓库不含 tgz 产物,需自行打包新版本
git clone https://github.com/zijun-T/dsh-sidebar-remote.git && cd dsh-sidebar-remote
npm install && npm pack # 生成 dsh-sidebar-remote-.tgz
dsh plugin --profile web add ./dsh-sidebar-remote-.tgz
核对已生效版本(profile 目录下)
grep '"version"' node_modules/dsh-sidebar-remote/package.json
0.2.x 之间插件 id、设置命名空间与 cordis.patch.yml 挂载方式均未变化,覆盖安装 + 重启即可,无需任何迁移。
远程语义
| 功能 | 远端实现 |
|------|----------|
| 文件树 / 浏览 | SFTP readdir + stat 探测 |
| 读取 / 编辑 / 保存 | Sftp.readText → applyLiteralEdit → writeFileAtomic |
| 上传 / 下载 | Sftp.createWriteStream / createReadStream,失败清理 |
| 预览 | /sidebar/remote/html// + 相对资源同路由 |
| 终端 | SshConn.shell PTY,30s 重连优雅期 |
| Git | git -C --no-pager -c color.ui=false 经 SshConn.exec |
本地会话零回归:不建立 SSH 连接,沿用原 dsh-better-sidebar 行为。
换机部署
不需要重新构建。客户端在挂载时向 GET /sidebar/remote/root 取回权威占位根,一份 bundle 可服务任意部署。
迁移 ~/.dsh/settings.yaml 即可带走主机配置与侧边栏偏好;私钥 / known_hosts 不自动迁移,新设备上手动复制 ~/.ssh/* 或走 TOFU 对话重建。
验证
npm install
npm run typecheck
npm test # 102 tests / 14 suites,无需网络与远端主机
npm run build
npm pack --dry-run
真机端到端:
DSH_ORIGIN=http://127.0.0.1:3080 \
DSH_HOST_ID= \
DSH_REMOTE_PATH=/path/on/remote \
DSH_EXPECT_ENTRY= \
npm run verify:live # 14 项断言
依赖
| 组件 | 版本 |
|------|------|
| DSH | 0.1.1-rc.2(Cordis ^4.0.1) |
| dsh-better-sidebar | 0.17.1 |
| @dsh-ssh/dsh-ssh | 0.1.3 |
| Node | >=22 |
详细架构设计与接口差距分析见 docs/。
提示词路径改写(sandbox:policy)
远程会话的 cwd 是占位符路径(//),DSH core 会把它原样嵌入模型提示词的 sandbox:policy context。自 0.2.1 起,插件在组装期把占位符改写回真实远程路径:
- 主路径:经 deepseek-harness-zh_pro 的 registerAssembleRewriter 注册「assemble 返回后」改写器(与上下文中文化同流水线,运行于翻译之后);该包缺失时回退为直接包装 systemPrompt.assemble。
- 兜底路径:agent/pre-step 监听器(prepend: true)对 decision.messages 做同样替换。
- 替换映射由 remoteCwdMapOf() 构建:host 端 ctx.sessions.list() 返回活会话数组(不是客户端 getSnapshot() 的 { byId } 形状,两者均兼容),占位符 cwd 经 routeByCwd() 映射为真实 remoteCwd。
验证:远程会话对话的上下文注入中 sandbox:policy 显示真实远程路径(如 /home/ubuntu/MedFluent),Host 日志输出 rewriter: replaced "" → ""。扫码进群