补齐官方桌面端体验细节,修复沙箱权限与标签问题
31.1/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add See-Sol-Lab/DSH-QoL该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 60 处,展示前 44 条)
- 读取本地文件lib/index.js:173
for (const name2 of readdirSync(cacheDir)) { - 读取本地文件lib/index.js:176
add(findCwd(JSON.parse(readFileSync(join(cacheDir, name2), "utf8")))); - 读取本地文件lib/index.js:184
const remembered = JSON.parse(readFileSync(memory, "utf8")); - 写入本地文件lib/index.js:190
mkdirSync(join(home, "deepseekgui"), { recursive: true }); - 写入本地文件lib/index.js:191
writeFileSync(memory, `${JSON.stringify(all, null, 2)}${EOL}`, "utf8"); - 读取本地文件lib/index.js:194
return all.filter((path) => existsSync(path)); - 写入本地文件lib/index.js:199
writeFileSync(script, text, "utf8"); - 写入本地文件lib/index.js:222
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/index.js:223
writeFileSync(join(dir, "low-label-cleanup.json"), JSON.stringify({ at: ( new Date()).toISOString(), reason, results }, null, 2) + "\n", "utf8"); - 执行外部命令来自配置/变量lib/index.js:232
execFile(POWERSHELL, argsFor(root, backupDir), { timeout: 10 * 6e4, windowsHide: true }, (error, stdout) => { - 执行外部命令来自配置/变量lib/index.js:244
return parse(root, execFileSync(POWERSHELL, argsFor(root, backupDir), { timeout: 2 * 6e4, windowsHide: true, encoding: "utf8" })); - 读取本地文件lib/index.js:263
if (!existsSync2(root)) return true; - 执行外部命令来自配置/变量lib/index.js:271
execFile2( - 写入本地文件lib/index.js:288
mkdirSync2(dir, { recursive: true }); - 写入剪贴板lib/client.js:1672
void navigator.clipboard?.writeText(absolutePath(root, path)).then(() => { - 发起网络请求lib/host/coding-tools.js:410
const outcome = await approval.request({ - 发起网络请求lib/host/workbench-inspector.js:516
const response = await fetch(new URL(paths[key], grant.origin), { - 读取本地文件lib/host/workbench-inspector.js:691
if (existsSync(path)) return "exists"; - 写入本地文件lib/host/workbench-inspector.js:693
writeFileSync(path, locale === "zh" ? AGENTS_project_zh_default : AGENTS_project_en_default, { encoding: "utf8", flag: "wx" }); - 删除本地文件递归lib/host/workbench-inspector.js:756
rmSync(directory, { recursive: true, force: false }); - 删除本地文件lib/host/workbench-inspector.js:757
rmSync(join(home, "storages", "session_projcache", "sessions", `${sessionId}.json`), { force: true }); - 读取本地文件lib/host/workbench-inspector.js:813
for (const group of readdirSync(root, { withFileTypes: true })) { - 读取本地文件lib/host/workbench-inspector.js:816
if (existsSync(candidate)) matches.push(candidate); - 读取本地文件lib/host/workbench-inspector.js:820
const stats = lstatSync(directory); - 读取本地文件lib/host/workbench-inspector.js:829
if (!existsSync(path)) return ""; - 读取本地文件lib/host/workbench-inspector.js:830
if (statSync(path).size > MEMORY_CONTENT_MAX * 4) return null; - 写入本地文件lib/host/workbench-inspector.js:840
writeFileSync(temp, text, "utf8"); - 写入本地文件lib/host/workbench-inspector.js:841
renameSync(temp, path); - 删除本地文件lib/host/workbench-inspector.js:843
rmSync(temp, { force: true }); - 写入本地文件lib/host/skill-manager.js:337
await mkdir(paths.stagingDir, { recursive: true }); - 写入本地文件lib/host/skill-manager.js:339
await rename(location, trash); - 删除本地文件递归lib/host/skill-manager.js:340
await rm(trash, { recursive: true, force: true }); - 写入本地文件lib/host/skill-manager.js:375
await mkdir(paths.libraryDir, { recursive: true }); - 写入本地文件lib/host/skill-manager.js:376
await mkdir(paths.stagingDir, { recursive: true }); - 写入本地文件lib/host/skill-manager.js:397
await writeFile(join(stage, SKILL_MANIFEST_FILE), `${JSON.stringify(record, null, 2)} - 删除本地文件递归lib/host/skill-manager.js:404
await rm(stage, { recursive: true, force: true }); - 写入本地文件lib/host/skill-manager.js:417
await mkdir(stage, { recursive: true }); - 读取本地文件lib/host/skill-manager.js:441
const staged = reviewSkillDocument(await readFile(join(stage, "SKILL.md"), "utf8")); - 删除本地文件递归lib/host/skill-manager.js:459
await rm(trash, { recursive: true, force: true }); - 读取本地文件lib/host/skill-manager.js:464
if (await lstat(join(libraryDir, installId)).then(() => false, () => true)) return installId; - 读取本地文件lib/host/skill-manager.js:477
info = await stat(path); - 读取本地文件lib/host/skill-manager.js:490
const contents = readZip(new Uint8Array(await readFile(path)), limits); - 读取本地文件lib/host/skill-manager.js:517
text: () => readFile(absolute, "utf8") - 读取本地文件lib/host/skill-manager.js:525
const entries = await readdir(directory, { withFileTypes: true });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-preset-registry@deepseek-ai/dsh-api-job-controller@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness 官方桌面端补上体验细节的生活质量更新包,全面提升使用体验,并解决沙箱权限和low标签问题
README
由 DeepSeek 最新模型翻译生成DSH 生活质量包
中文 · English 给 DeepSeek Harness 官方桌面端补上体验细节的插件。
给 DeepSeek Harness(DSH)官方桌面端补上一批体验细节的插件。名字借自游戏里的 Quality of Life (生活质量)更新:不加大玩法,把细节补齐。
本插件是非官方的社区作品,与 DeepSeek及深度求索 无隶属关系。
来历与理念
本插件源自 DeepSeekGUI。DeepSeekGUI 是基于DSH开发的社区桌面工作台:一个独立的桌面应用,在 DSH 之上加了本地 Git 工作台、记忆、技能库、用量统计、系统通知和深海玻璃皮肤等功能,每个版本都完整合并官方更新。
官方推出自己的桌面端以后,官方桌面端的更新方向、开发理念与 DeepSeekGUI 有不小的分歧,而 DeepSeekGUI 由一个人维护,每次整体合并官方更新、再把自己的改动接回去,工作量越来越大,也越来越难跟上。所以 DeepSeekGUI 调整了方向:
- 不再整体合并官方更新。DeepSeekGUI 只做基础维护。
- 把官方还没有的功能做成这个插件,装进官方桌面端。DeepSeekGUI 的老用户换到官方桌面端、装上生活质量包,就能得到和 DeepSeekGUI 相近的使用体验。GUI的老用户将在rc3合并更新中直接无缝过渡到官方桌面端+QoL质量包。
展开完整文档(README 剩余 1 节)
DSH 生活质量包 中文 · English 给 DeepSeek Harness 官方桌面端补上体验细节的插件。 给 DeepSeek Harness(DSH)官方桌面端补上一批体验细节的插件。名字借自游戏里的 Quality of Life (生活质量)更新:不加大玩法,把细节补齐。 本插件是非官方的社区作品,与 DeepSeek及深度求索 无隶属关系。 来历与理念 本插件源自 DeepSeekGUI。DeepSeekGUI 是基于DSH开发的社区桌面工作台:一个独立的桌面应用,在 DSH 之上加了本地 Git 工作台、记忆、技能库、用量统计、系统通知和深海玻璃皮肤等功能,每个版本都完整合并官方更新。 官方推出自己的桌面端以后,官方桌面端的更新方向、开发理念与 DeepSeekGUI 有不小的分歧,而 DeepSeekGUI 由一个人维护,每次整体合并官方更新、再把自己的改动接回去,工作量越来越大,也越来越难跟上。所以 DeepSeekGUI 调整了方向: - 不再整体合并官方更新。DeepSeekGUI 只做基础维护。 - 把官方还没有的功能做成这个插件,装进官方桌面端。DeepSeekGUI 的老用户换到官方桌面端、装上生活质量包,就能得到和 DeepSeekGUI 相近的使用体验。GUI的老用户将在rc3合并更新中直接无缝过渡到官方桌面端+QoL质量包。使用体验保持不变。 - 插件只改官方开放给插件的部分,不改官方代码,所以官方更新以后插件照常可用,维护量小得多。 如果你是第一次接触这个插件,下面的功能介绍会逐项说明它从哪些方面改善了官方桌面端的使用体验。 功能一览 | 功能 | 在哪里 | 默认 | | 自动去除沙箱 Low 标签 | 设置 → 生活质量包 → 沙箱 | 开 | | 自动修复工作区沙箱授权 | 设置 → 生活质量包 → 沙箱 | 开 | | DeepSeekGUI 皮肤 | 全局;设置 → 生活质量包 → 皮肤 | 开 | | 隐私与上报开关 | 设置 → 生活质量包 → 隐私与上报 | 四项上报全关 | | 工作台:改动、Git、项目管理、记忆 | 对话旁的标签 | 开 | | 项目记忆与全局记忆 | 记忆标签;设置 → 全局记忆 | 开 | | 已归档的会话 | 设置 → 已归档的会话;会话菜单 | 开 | | 本地技能库 | 设置 → Skill;项目管理标签 | 开 | | 用量与余额 | 设置 → 用量与余额 | 开 | | 流式正文平滑显示 | 对话 | 开 | | Git 与 PR 工具 | 助手可用的工具,对话里显示结果卡片 | 开,写操作需审批 | | 会话导出为 Markdown | 会话菜单 | 开 | | 系统通知 | Windows 系统通知 | 开 | | 看图提示 | 给助手的上下文 | 开 | 装好后的插件页:7 个组件都在运行装好后,官方「插件」页里的生活质量包,7 个组件都在运行。 功能介绍 沙箱:官方一直没修的两个问题 官方桌面端的沙箱在 Windows 上有两个让人头疼的问题,用户反复报过,官方一直没修。生活质量包把它们都解决了,两个开关默认都开。 问题一:工作区被永久打上 Low 标签。 官方沙箱会给用过的工作区打上 Low 完整性标签并一直保留,好处是大仓库下次不用重新授权。代价是这个文件夹里的程序(Electron、打包工具、自己编译的程序、项目里的 Python 虚拟环境)都会以低权限启动,常见症状是起不来、打不了包、删不掉 dist。如果你同时用 Codex、Claude Code 等其他工具开发同一个项目,它们也会被这个标签挡住。 → 自动去除沙箱 Low 标签:DSH 每次启动和退出时撤掉官方沙箱加的三样(沙箱身份的写入授权、Everyone 的禁止删除子项、Low 标签改回 Medium);DSH 运行期间标签仍在,助手照常工作。关掉 DSH 以后,工作区就是干净的,其他工具不受影响。其他权限不动,撤之前先备份到 DSH 目录下的 deepseekgui/acl-backups。 问题二:在其他盘开工作区,沙箱命令全部失败。 官方沙箱第一次授权工作区时,需要「更改所有者」权限,而 D 盘、E 盘这些盘上的文件夹默认没有给你。结果是在这些盘上开工作区,助手每跑一条命令都报 SetNamedSecurityInfoW failed (Win32 5),只能手动跑诊断修复;助手自己去修,还可能把权限改乱。 → 自动修复工作区沙箱授权:DSH 启动时和新加工作区时,给你的账号补上工作区文件夹的完全控制,使用体验和 DeepSeekGUI 一样丝滑。只处理注册过的工作区,不碰盘符根目录和系统目录。 两个开关在「设置 → 生活质量包 → 沙箱」里,介意的话可以关掉,回到官方原版。 另外,生活质量包会告诉助手它对沙箱做了什么,并要求助手遇到沙箱权限报错时先停下来,把报错原文给你看、说明可能的原因,由你决定,不自己去改文件夹权限或运行修复。 | 官方原版:沙箱授权失败,命令跑不起来 | 生活质量包:设置里的两个沙箱开关 | | 沙箱授权报 Win32 5 | 沙箱开关 | DeepSeekGUI 皮肤 把 DeepSeekGUI 的深海/海雾底图和半透明玻璃质感带到官方桌面端:底图铺在界面最底层,侧栏、气泡、按钮改为半透明,菜单和对话框加毛玻璃,输入框下面的统计行收成半透明胶囊,设置导航里生活质量包的各个分区换上各自的图标。只换外观,不改官方功能;跟随官方的浅色/深色切换。在「设置 → 生活质量包 → 皮肤」里可以关掉,立刻回到官方原样。 | 深色 | 浅色 | | 深色皮肤 | 浅色皮肤 | 隐私与上报 官方桌面端默认开启四项上报:桌面产品统计、会话日志、插件清单、反馈上传。装上生活质量包后这四项默认全部关闭,在「设置 → 生活质量包 → 隐私与上报」里由你自己决定开哪项,当场生效。卸载插件后恢复官方默认。 工作台 对话、轨迹旁边多出四个标签: - 改动:当前工作区的未提交改动,按文件查看差异。 - Git:当前分支、远端、最近的提交,以及并行工作区(worktree)。 - 项目管理:为这个项目选择启用哪些本地技能。 - 记忆:查看、编辑项目记忆,生成项目 AGENTS.md。 Git 标签 Git 标签:并行工作区、当前分支与远端、最近的提交。 记忆 每次开会话,把全局记忆(DSH 目录下的 memory.md)和项目记忆(工作区里的 <文件夹名>.memory.md)交给助手。项目记忆在记忆标签里编辑,也可以让助手整理;全局记忆在「设置 → 全局记忆」里编辑,同一页还能找到全局 AGENTS.md。文件在编辑期间被助手或别的编辑器改过时,保存会拒绝覆盖,避免互相冲掉。 | 项目记忆 | 全局记忆 | | 项目记忆 | 全局记忆 | 已归档的会话与本地技能库 已归档的会话:官方把已归档的会话混在侧栏的树里,要从「视图选项」打开才看得到。生活质量包在设置里单独列出它们,可以恢复并打开,也可以删除(删除前会再确认一次);会话菜单里对已归档的会话也多了「删除」。只删已归档且没在运行的会话。 本地技能库:在「设置 → Skill」里从技能目录、ZIP 或 Markdown 安装、查看、卸载本地技能;装进库里的技能默认不在任何项目启用,在项目管理标签里为每个项目单独选择。 | 已归档的会话 | 本地技能库 | | 已归档的会话 | 本地技能库 | 用量与余额 用你在本机登录的官方账号,从 DeepSeek 开放平台读取余额、赠金、累计消费,今天/7 天/30 天的消费、请求数、Token 数和缓存命中率,以及最近 60 天的用量热力图,和官网用量页是同一份账单。登录令牌只在本机的 DSH 后台使用,只发往开放平台本身。 用量与余额 设置里的用量与余额:余额、消费统计和 60 天热力图。 其他 - 流式正文平滑显示:模型的回复是一阵一阵到达的,官方收到多少就画多少,看起来一顿一顿。生活质量包按实际到达的速度匀速放出正文,回复结束时剩下的部分很快流完。只改显示节奏,最终显示的就是模型的原文。 - Git 与 PR 工具:给助手的一组工具(git_status、git_diff、git_stage、git_unstage、git_revert、git_commit、git_push_preview、git_push、pr_availability、pr_existing、pr_create),对话里显示为结果卡片;提交、推送、建 PR 这些写操作需要你审批。 - 会话导出为 Markdown:会话菜单里的「导出为 Markdown」,可选是否包含工具调用和思考过程。 - 系统通知:需要审批、助手在提问、后台工作完成或失败时弹 Windows 系统通知;窗口在前台且正看着那个会话时不打扰,点通知回到那个会话。 - 看图提示:每一步告诉助手当前模型能不能看图。换成纯文本模型后,你让它看网页或图片,它会先问你要不要换模型,而不是反复截图又读不到。 开发 pnpm install pnpm run check check 先做类型检查再构建,产物在 lib/。 本地安装:先完全退出官方桌面端,再用复制方式安装。链接方式下,官方的共享包解析不到本包的子模块。版本号不变时 pnpm 不会重新复制文件,所以要先 remove 再 add: dsh plugin --profile desktop remove @see-sol-lab/dsh-qol dsh plugin --profile desktop add file:<本仓库路径> dsh 是官方桌面端自带的命令行,Windows 上在安装目录的 resources\runtime\cli\bin\dsh.cmd。 src/generated 里的远程接口描述由官方 Typert 生成器产出。官方生成器只认官方单仓库结构,所以借 DeepSeekGUI 仓库生成后拷回来,包名换成本包;改了远程方法签名后运行 bash scripts/regen-typert.sh 重新生成。 许可 MIT。部分代码源自 DeepSeek Harness(MIT)。引用或复用时请注明来源。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
See-Sol-Lab/DSH-QoL
补齐官方桌面端体验细节,修复沙箱权限与标签问题
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目