把 dsh 变成团队共用的多用户 Web 服务器
28.7/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add darker2016/WebDSH该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/6) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 39 处,展示前 37 条)
- 写入本地文件gate/src/audit.ts:28
mkdirSync(join(dataRoot, "audit"), { recursive: true }); - 写入本地文件gate/src/audit.ts:35
appendFileSync(this.file, `${line}\n`, "utf8"); - 读取本地文件gate/src/config.ts:55
const existing = readFileSync(file, "utf8").trim(); - 写入本地文件gate/src/config.ts:61
mkdirSync(dataRoot, { recursive: true }); - 写入本地文件gate/src/config.ts:62
writeFileSync(file, secret, { mode: 0o600 }); - 写入本地文件gate/src/config.ts:72
for (const p of [dataRoot, usersRoot, sharedRoot, reposRoot]) mkdirSync(p, { recursive: true }); - 写入本地文件gate/src/db.ts:91
mkdirSync(dataRoot, { recursive: true }); - 发起网络请求gate/src/dsh-rpc.ts:32
const res = await fetch(`http://127.0.0.1:${info.port}/api/${method}`, { - 写入本地文件gate/src/repos.ts:125
mkdirSync(dirname(snapshotPath(user_id)), { recursive: true }); - 写入本地文件gate/src/repos.ts:126
writeFileSync(snapshotPath(user_id), JSON.stringify(snapshot, null, 2)); - 执行外部命令固定命令gate/src/repos.ts:150
return execFileSync("git", args, { cwd, encoding: "utf8", maxBuffer: 16 * 1024 * 1024 }).trim(); - 写入本地文件gate/src/repos.ts:159
mkdirSync(dir, { recursive: true }); - 写入本地文件gate/src/repos.ts:169
mkdirSync(dirname(wt), { recursive: true }); - 写入本地文件gate/src/repos.ts:185
mkdirSync(dirname(wt), { recursive: true }); - 读取本地文件gate/src/server.ts:246
? createHttpsServer({ cert: readFileSync(cfg.tlsCert), key: readFileSync(cfg.tlsKey) }, requestHandler) - 读取本地文件gate/src/supervisor.ts:47
portMap = JSON.parse(readFileSync(portFile, "utf8")) as Record<string, number>; - 写入本地文件gate/src/supervisor.ts:53
writeFileSync(portFile, JSON.stringify(portMap, null, 2)); - 读取本地文件gate/src/supervisor.ts:82
const text = readFileSync(file, "utf8"); - 发起网络请求gate/src/supervisor.ts:100
const res = await fetch(`http://127.0.0.1:${port}/`); - 执行外部命令来自配置/变量gate/src/supervisor.ts:117
return spawn(DSH_BIN, ["--profile", "web", "--port", String(info.port)], { - 读取本地文件gate/src/supervisor.ts:153
const existingPatch = existsSync(patchFile) ? readFileSync(patchFile, "utf8") : ""; - 读取本地文件gate/src/supervisor.ts:153
const existingPatch = existsSync(patchFile) ? readFileSync(patchFile, "utf8") : ""; - 写入本地文件gate/src/supervisor.ts:156
mkdirSync(dirname(patchFile), { recursive: true }); - 写入本地文件gate/src/supervisor.ts:157
writeFileSync(patchFile, renderUserPatch({ user, role, home, sharedRoot: cfg.sharedRoot })); - 读取本地文件gate/src/supervisor.ts:165
entries = readdirSync(cfg.pluginDir, { withFileTypes: true }) - 读取本地文件gate/src/supervisor.ts:174
if (!existsSync(pkgPath)) continue; - 写入本地文件gate/src/supervisor.ts:188
mkdirSync(dirname(target), { recursive: true }); - 写入本地文件gate/src/supervisor.ts:204
mkdirSync(home, { recursive: true }); - 发起网络请求gate/src/supervisor.ts:271
const res = await fetch(`http://127.0.0.1:${info.port}/`); - 读取本地文件plugin/dsh-filexplore/lib/index.js:150
entries = await readdir(dir, { withFileTypes: true }); - 读取本地文件plugin/dsh-filexplore/lib/index.js:165
st = await stat(join(dir, entry.name)); - 写入本地文件plugin/dsh-filexplore/lib/index.js:213
await mkdir(dir, { recursive: true }); - 写入本地文件plugin/dsh-filexplore/lib/index.js:222
await writeFile(target, bytes); - 读取本地文件plugin/dsh-filexplore/lib/index.js:245
entries = await readdir(dir, { withFileTypes: true }); - 读取本地文件plugin/dsh-filexplore/lib/index.js:260
st = await stat(full); - 读取本地文件plugin/dsh-filexplore/lib/index.js:287
await stat(probe); - 读取本地文件plugin/dsh-filexplore/lib/index.js:296
await stat(candidate);
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 多用户Web服务器
- 每用户独立进程隔离
- 工作空间分享
把 DeepSeek Harness(dsh)改造成多用户 Web 服务器:认证前门 + 每用户独立进程与隔离 + 工作空间分享 + Git 仓库分支开发。覆盖层方案,不 fork 官方包。
README
由 DeepSeek 最新模型翻译生成WebDSH —— 把 DeepSeek Harness 改造成公司内部多用户 Web 服务器
目标:让 dsh(DeepSeek Harness)以 Web 服务器形态运行在公司内网/公网服务器上,用户用浏览器(含手机)远程访问;同一台服务器服务多个用户,各用户数据隔离;工作空间可在用户之间共享。改造以覆盖层(overlay)形态进行,不 fork 官方包,可跟随 @deepseek-ai/dsh 升级。
🤖 面向 AI 代理/协作者的开工入口见 AGENTS.md(文档地图、当前状态、已核实事实、常用命令、部署目标、工作约定)。
产品愿景
一支团队、一套服务器上的代码、各自的开发分支。
多用户可以共享服务器上同一套代码仓库进行开发:仓库 → 分支 → 对话 三层组织;共享分支团队协作,个人分支(命名自由、仅本人可见)各自开发、互不干扰;用户登录后自动匹配其代码平台的凭据,提交与推送按人归因。
展开完整文档(README 剩余 1 节)
WebDSH —— 把 DeepSeek Harness 改造成公司内部多用户 Web 服务器 目标:让 dsh(DeepSeek Harness)以 Web 服务器形态运行在公司内网/公网服务器上,用户用浏览器(含手机)远程访问;同一台服务器服务多个用户,各用户数据隔离;工作空间可在用户之间共享。改造以覆盖层(overlay)形态进行,不 fork 官方包,可跟随 @deepseek-ai/dsh 升级。 🤖 面向 AI 代理/协作者的开工入口见 AGENTS.md(文档地图、当前状态、已核实事实、常用命令、部署目标、工作约定)。 产品愿景 一支团队、一套服务器上的代码、各自的开发分支。 多用户可以共享服务器上同一套代码仓库进行开发:仓库 → 分支 → 对话 三层组织;共享分支团队协作,个人分支(命名自由、仅本人可见)各自开发、互不干扰;用户登录后自动匹配其代码平台的凭据,提交与推送按人归因。 功能特性 | # | 特性 | 说明 | | F1 | 服务器端运行 | dsh web 天然是 Web 服务器(HTTP + WebSocket + React 前端),改造后常驻服务器 | | F2 | 手机远程访问 | 浏览器(含手机)经 HTTPS 远程访问;登录后全功能可用 | | F3 | 同一服务器多用户 | 每用户独立进程 + 独立 $DSH_HOME,会话/设置/凭据/文件互不可见 | | F4 | 工作空间分享 | 普通目录工作空间按 ACL 分享(读/写/撤销),见 docs/05 | | F5 | 代码仓库工作区与分支开发(新增) | 工作区可对应 Git 代码仓库;UI 自动呈现 仓库 → 分支 → 对话 层级;用户自选展示哪些分支;分支下挂各自的对话;共享分支团队协作 + 个人开发分支;用户凭据绑定代码平台账号,见 docs/09 | 文档导航 | 文档 | 内容 | | docs/01-现状分析.md | 现有架构盘点:dsh web 今天是什么、能力与差距(含代码位置) | | docs/02-目标架构.md | 目标架构总览:子域路由 + 每用户独立 dsh 进程 + 认证前门 | | docs/03-认证与安全设计.md | 认证、会话 token、信任模型、特权方法门禁 | | docs/04-多用户数据面与隔离.md | 每用户 DSH_HOME、进程模型、OS 级隔离选项与取舍 | | docs/05-工作空间分享设计.md | 分享 ACL、双注册表同步、并发控制 | | docs/06-覆盖层实现方案.md | 不 fork 的实现:新包清单、patch 插入点、RPC 门禁表 | | docs/07-分阶段实施计划.md | Phase 0–4 任务分解与验收标准 | | docs/08-部署与运维.md | Caddy/TLS、systemd、备份、审计、配额、监控、升级 | | docs/09-代码仓库工作区与分支开发.md | 仓库化工作区:分支模型、凭据绑定、分支 UI、权限与并发 | | docs/10-实施日志与Phase0验证.md | 实施日志:Phase 0 技术验证结论(含 R1 设计修订)、移动端实测清单 | 决策记录 第一轮(2026-08-15,与用户确认) | 决策项 | 结论 | | 部署场景 | 公司/组织内部(多人、统一管理)→ 需要用户账号、审计、配额 | | 隔离强度 | 每用户独立进程(方案 A),数据面按用户隔离;OS 级隔离作为阶段 2+ 的强化项 | | 改造形态 | 覆盖层:新插件 + profile patch,不 fork @deepseek-ai/dsh | 第二轮(2026-08-15,新增 F5 仓库工作区) | 决策项 | 结论 | | 仓库存储模型 | 服务器端每仓库一个 bare 主库 + 按分支的 git worktree(git worktree add),不同分支可并行开发;worktree 目录即官方 workspace(cwd 绑定),会话自动落在分支下 | | 分支模型 | 共享分支(团队可见)+ 个人分支(名称由用户设定,gate 记录 owner,仅本人/被授权者可见,可一键提升为共享、不改名);受保护分支(main/develop)只读,变更走 Codeup MR 评审 | | 凭据绑定 | 用户登录后按代码平台账号绑定凭据(gate 加密保管);添加工作区时选仓库 + 凭据;提交/推送按人归因(worktree 注入 user.name/email + credential.helper) | | 分支 UI | 新增客户端插件 @webdsh/ui-repos(走官方 client 插件 roster insert)呈现 仓库→分支→对话 层级与分支显隐开关——官方包仍零改动,但"前端零改动"原则对该特性让位于"官方包零改动 + 新增客户端插件" | | 与分享的关系 | 仓库成员(repo_members)是仓库级 ACL;分支 worktree 目录复用 F4 的 workspace 分享机制,两层叠加 | 第三轮(2026-08-15,F5 细节确认,用户答复) | 决策项 | 结论 | | 代码平台 | 阿里云 Codeup;HTTPS + 个人访问令牌优先,SSH key 备选 | | 受保护分支 | 走 MR 评审:dsh 在受保护分支上只读(只读 worktree + 只读沙箱),合入一律经 Codeup MR(含 admin);拒绝逻辑由 Codeup 分支保护承担 | | 共享分支并发 | 不做单写者强约束,靠团队约定(pull --rebase 等写入规范) | | 个人分支命名 | 由用户设定;"个人"是分支属性(gate branches 表记录 owner),不靠 / 前缀推断 | 一句话结论 dsh web 今天已经是一个真正的 Web 服务器(HTTP + WebSocket + React 前端 + 多会话), 缺的三块是:认证(完全没有,--host 0.0.0.0 被硬编码拦截)、多用户数据面($DSH_HOME 单根,会话/工作空间/设置/凭据全部混在一起)、工作空间分享(workspace 记录没有 owner/ACL)。三块都能在不 fork 的前提下以覆盖层实现;在此基础上再叠加 F5 仓库化工作区:仓库 → 分支 → 对话 三层组织,让团队共享一套服务器代码、各自开分支开发。详见各文档。 目录结构(本仓库) WebDSH/ ├── README.md # 本文件 └── docs/ # 方案文档集 ├── 01-现状分析.md ├── 02-目标架构.md ├── 03-认证与安全设计.md ├── 04-多用户数据面与隔离.md ├── 05-工作空间分享设计.md ├── 06-覆盖层实现方案.md ├── 07-分阶段实施计划.md ├── 08-部署与运维.md └── 09-代码仓库工作区与分支开发.md 实施阶段开始后,本仓库将新增 gate/(认证前门服务)、plugin/(dsh 覆盖层插件,含 ui-repos 客户端插件)两个源码目录,目录结构届时更新。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
darker2016/WebDSH
把 dsh 变成团队共用的多用户 Web 服务器
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 426,451已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,777已汉化MCP
71.8
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
主动编码智能体deepseek-ai/dsh-superagent-prototype
研究原型,仅供参考,不是 DeepSeek 官方产品。…
★ 15,535已汉化DSH
71.6
破甲一键通z91772524-ai/pojia-next
🌐 官网国内推荐从这里进:
★ 1,021已汉化DSH
71.6
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 656已汉化DSH
70.7
这是你的仓库?认领条目