DeepSeek Harness Hub
← 返回列表

本地应用停靠VANvonZHANG/dsh-docks

DeepSeek 客户端兼容 / 相关生态spec-screened在 GitHub 查看 ↗
未验证

把本地 Web 服务停靠进侧栏,与 agent 并行运行

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/27 · 已提供中文文档

一个用于 DeepSeek Harness 的通用 Web 应用停靠系统:通过 *.localhost 路由 + iframe 停靠任意本地 Web 服务(marimo、Pluto.jl、gradio、streamlit……)。

综合分
28.6
GitHub 分
28.6
用户评分
★ Stars
1
周下载量
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/VANvonZHANG/dsh-docks.git
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-docks

一个面向 DeepSeek Harness 的通用 Web 应用停靠系统:任何本地 Web 服务(marimo、Pluto.jl、gradio、streamlit……)通过一行声明即可进入 dsh,并与 agent 会话并行运行。零重写、零转换——只需 *.localhost 通配符主机路由 + iframe。

形态(v2)

docks 是一个纯宿主停靠服务;UI 委托给 DSH-better-sidebar:

- 停靠内容:在 better-sidebar 的内嵌浏览器标签页中打开 http://.localhost:3081/
- 停靠控制:better-sidebar 的“docks”标签页(应用列表 + 状态点 + 启动/停止 + 打开)
- agent 工具:在对话中说“启动 marimo”,或直接调用 docks 工具(list/status/start/stop/restart)

前置条件

- 安装 dsh-better-sidebar(dsh plugin --profile web add dsh-better-sidebar)
- 在 better-sidebar 设置中启用 browserNoSandbox(全局禁用沙箱;接受“所有网页和 GUI 共享同一源”的权衡,仅适用于本地受信任的应用)
- (可选)启用 agentOpenTools,以便模型可以通过 sidebar_open 直接将 URL 推送到浏览器标签页

用法

1. docks list(在对话中或通过 agent 工具)→ 获取 http://marimo.localhost:3081/
2. 打开该 URL(sidebar_open 或在地址栏中输入)→ marimo 在浏览器标签页中运行
3. “docks”控制面板标签页 → 一览所有应用状态、启动/停止、点击“↗”打开浏览器标签页

架构

- host:node:http 监听 127.0.0.1:3081,根据 Host 头反向代理到应用的真实端口;注入 FRAME_SCRIPT,将同源打开折叠回 iframe(停靠语义);提供 /_docks/state、/_docks/command、/docks/api/origin
- client:向 better-sidebar 注册的控制面板标签页(软依赖;没有它时,就是纯 agent 工具)
- agent:docks 工具(list/status/start/stop/restart)

配置参考

声明挂在 profile patch 中的 - id: docks / config 下。listen.host 只允许 127.0.0.1(v1 不提供 0.0.0.0;安全态势与 dsh 主服务一致)。

| 字段 | 默认值 | 描述 |
|---|---|---|
| listen.host | 127.0.0.1 | 仅 127.0.0.1 |
| listen.port | 3081 | docks 面板服务监听的端口(被占用时,激活失败并提示更改此值) |
| restarts.maxConsecutive | 3 | 连续崩溃重启限制;耗尽 → failed |
| restarts.stableUptimeMs | 60000 | 连续运行超过此持续时间会重置重启计数器 |
| restarts.backoffMs | 1000, 2000, 4000 | 崩溃重启退避序列(以最后一个值为上限;连续运行 ≥ stableUptimeMs 后计数器重置) |
| apps[] | [] | 应用声明列表,见下文 |

应用声明分为两个级别(v1 实现 L0+L1):

L1 managed(docks 处理启动/停止、探测、崩溃重启、期望状态恢复)

| 字段 | 默认值 | 描述 |
|---|---|---|
| name | 必填 | 子域名;必须匹配 ^[a-z0-9-]+$,不可重复 |
| title | name | 显示名称 |
| command | L1 必填 | 可执行文件(与 external 互斥) |
| args | [] | 命令行参数 |
| port | L1 必填 | 应用实际监听的端口(启动前会预先检查是否被占用) |
| cwd / env | — | 工作目录 / 字符串环境变量 |
| healthPath | / | HTTP 探测路径,期望返回就绪响应(<500) |
| healthTimeoutMs | 120000 | 探测超时(Pluto 首次启动预编译可能需要一两分钟;marimo 建议 30000) |
| startup | manual | manual 按需启动;auto 在激活时启动(按应用例外) |
| mode | attached | detached 会被 schema 接受,但 v1 会返回“未实现”错误 |

L0 纯访问(无进程;路由器直接透传;状态点 unreachable 表示外部服务不可达)

| 字段 | 描述 |
|---|---|
| name | 同上 |
| external | L0 必填,仅支持本地 http://127.0.0.1: 地址,且不得与 command 同时使用 |

将计算与观测分离(安全说明)

重型模拟不要放进 docks。 将多核 / 长时间运行的计算本身放在 tmux / systemd / slurm 下运行;docks 只托管“观测面”Web 应用。docks 与 dsh 共享生命周期——dsh 崩溃会连带终止已附加的应用进程。正确的做法是:在外部会话中运行计算,并在 docks 中只声明一个指向其 UI 端口的 L0 纯访问(external: http://127.0.0.1:8501)。命令/状态端点仅监听回环地址,并拒绝跨源 Origin。

开发

pnpm install
pnpm test        # vitest
pnpm typecheck   # tsc --noEmit
pnpm build       # tsdown

(配置详情、L0/L1、启动模型:见 spec)

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群