DSH 永久插件:LVAL 负责工程运行、代码查看和程序版本快照回退,VTD 提供虚拟对话树(编辑、重试、分支,以及消息小版本),DET 是功能管理器。
30.5/100
综合分
1
GitHub 星标
1,873
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-essential-toolsnpm 源 · dsh-essential-tools 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-credentials@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-storage-domain@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 工程运行与代码查看
- 程序版本快照回退
- 虚拟对话树分支编辑
最近更新
在 GitHub 查看全部 →v2.14.12026-10-26
· v2.14.1 — 修「关一次总开关/切一次模式,装过的东西就全忘了」+ boot 早期恢复失败
实测现场:重启后 adu_status 显示 warm 四个模块在,但只有历史里有的 plugins 没回来。
挖出两个叠在一起的问题:
· 1) 临时拆台把"意图"也删了
_aduUnmountAll()(总开关关闭、模式切换、插件卸载时调用)走的是 _aduUnmount(),
而 _aduUnmount() 在 v2.11 起会 _aduWanted.delete(id) 并落盘 —— 于是"临时拆台"
等于"用户不想装了",下一次启动就不再恢复。这就是"装过的东西一个都没回来"的主因。
· 拆出 _aduDisposeGroup(key):只销毁注册,不动 wanted / 持久化。
· _aduUnmountAll() 改用它;只有模型/用户显式 adu_unload 才清意图。
· 2) boot 早期读不到存储 → 恢复空转
storageDomain 在宿主启动早期可能还没就绪,det.adu.mounted 读到空表,于是"上次装的"
一个都没回来(warm 兜住了四个,历史里的 plugins 就丢了)。
· 新增 _aduScheduleRestore():0s / 2s / 6s / 15s 各试一次,_aduRestoreMounts() 幂等。
· 3) 状态可自证
adu_status 与 _aduStatus() 现在回传 wanted(期望集合)、warm(开局自动装)、
diag(最近失败账本)。以后"为什么没装/为什么失败"在状态里就能看到,不必再猜。
· 测试
· alv-adu 166 → 176:拆台不清 wanted(行为)、拆台后自愈装回、状态含 wanted/diag、
源码守卫(拆台不得走 _aduUnmount)。
· 全量:631 断言全绿。
---
Install
powershell
dsh plugin --profile web add github:LLYlab/DSHEssentialTools
v2.14.02026-10-26
· v2.14.0 — 默认就装(warm)· 浏览器断连自动等一次 · 提示不再每步重注册
三条反馈:「不会自动装载东西」「不会用」「手动装载后 web 频繁失效」。
· 1) 自动装载:开局就把最常用的四个模块装上(warm)
2.12/2.13 只有"上次装过什么"会恢复,没装过的就一直是空的 —— 新会话/新机器上只有 adu_* 五个
元工具,模型自然"不会用"。现在:
· 新增配置 aduWarm,默认 ["dlt","alv","browser","web"]:启动时与 det.adu.mounted 合并后一起装载。
于是写代码(dlt)、看文档(dlt)、看图(alv)、查网页(browser/web)一开局就可用;
只剩最重、最少用的 plugins(19 个工具)保持按需。
· aduWarm: [] 回到纯按需;aduWarm: "all" 全装。
· 面板与 adu_status 会显示 warm,一眼看清"开局自动装了什么"。
· 2) web 频繁失效:断连不再立刻判死
扩展是 MV3 service worker,休眠/重启时 socket 掉一下再连回来是常态。旧实现一看到断连就
直接把失败甩给模型(2.10 引入的 fail-fast),观感就是"web 工具频繁失效"。现在:
· 调用前若扩展未连上,先最多等 1.5s(每 300ms 探一次)让 service worker 连回 127.0.0.1:9123;
· 若命令中途断连(browser-disconnected),等 600ms 后重试一次;
· 仍然失败时错误文案区分三层:桥(未启动)/ 扩展(未连接)/ 档位(只读、只写、关闭),并给下一步。
· detHealth 新增「浏览器桥」检查:桥是否运行、扩展是否连接、当前档位、网络权限是否到位。
· 3) 提示抖动:文本没变就不重注册
_refreshAduPrompt() 原来每次装载/卸载都 dispose + 重注册系统提示段。系统提示每变一次,
宿主可能重开一个请求序列(缓存失效、界面观感抖动)。现在先比对文本,没变就什么都不做。
· 测试
· alv-adu 157 → 166:_aduWarmIds 默认值 / aduWarm: [] / "all" 三种形态、
浏览器断连等待与可读错误、detHealth 的桥检查、提示缓存守卫。
· 全量:128 + 60 + 23 + 47 + 17 + 37 + 22 + 40 + 71 + 10 + 166 = 621 断言全绿。
---
Install
powershell
dsh plugin --profile web add github:LLYlab/DSHEssentialTools
v2.13.02026-10-26
· v2.13.0 — 治「模型疯狂 pwsh」:工具选择优先级提示 + 修掉 dlt_run 的输出校验 bug
反馈:「AI 不喜欢用这些 tool 了,现在疯狂 pwsh」。查下来是两个原因叠加,都不是模型"变懒":
· 1) dlt_run / dlt_build 的输出曾被宿主判为非法
输出 schema 声明 exitCode: number,但超时或进程起不来时真实值是 null → 宿主
「无损 JSON / 类型校验」直接判 invalid output。模型撞一次 value.exitCode must be a number,
之后就会本能地绕开这个工具、回到万能的 pwsh。
· 修:新增 normalizedRun(),exitCode 统一归一化(拿不到就是 -1),并显式给 timedOut。
· 顺手把 dlt_run 的描述改成「首选执行入口 …… 而不是 pwsh 里拼命令行」。
· 2) ADU 的提示只讲"怎么装",没讲"什么时候该用它而不是 pwsh"
旧提示的重点是"按需装载、粘性、忘了就 rememory",模型的默认推理就变成了
「我手里没有专用工具 → 用 pwsh」。现在 tool:det-adu 这一段整个重写为工具选择优先级:
· 先列这一轮真实可用的专用工具(按已装模块动态生成,不推荐手里没有的工具):
文档 → dlt_doc_*、执行/编译 → dlt_run/dlt_build、环境 → dlt_env、
图片 → alv_*、浏览器 → det_browser、网页 → web_*、插件 → det_global_plugin_*。
· 再明确写:pwsh 只用于 git、目录/文件日常整理、以及确实没有专用工具时的临时探测;
判据是「只要上面有一件工具能直接完成这件事,就先用它」。
· 装载/卸载后即时刷新这段文案(_refreshAduPrompt),保证"可用清单"永远是真的;全装模式下同样注册。
· 测试
· alv-adu 145 → 157:提示生成器与 _refreshAduPrompt 的源码守卫;dlt-tools 的
normalizedRun 与 exitCode: number 双声明守卫(并禁止宿主不认识的 nullable);
行为上断言"已装模块的工具被点名、未装的不点名、未装单独提示 adu_load"。
· 全量:128 + 60 + 23 + 47 + 17 + 37 + 22 + 40 + 71 + 10 + 157 = 612 断言全绿。
---
Install
powershell
dsh plugin --profile web add github:LLYlab/DSHEssentialTools
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成DET · dsh-essential-tools — 这个插件把 DeepSeek Harness 变成真正能用的工程驾驶舱。
让 AI 驱动你自己已登录的浏览器 · 对任意对话分支、编辑、重试 · 运行 / 快照 / 回滚真实项目 · 管理每一个插件、每一笔 token 开销
快速开始 ·用户指导手册 · Changelog · Security ·功能总览
😤 痛点
如果你一边写真实代码,一边让 AI 智能体参与进来,这四个问题你一定懂:
| 痛点 | 现在大家怎么做 | DET 怎么做 |
| 🧠 一步走错,整条对话就废了 — 你想从第 12 条消息重新提问,而不是从头再来 | 复制粘贴到新会话,上下文全丢 | VTD:编辑 / 重试任意一条消息 → 生成真正的隐藏分支,用 <N> 切回去,而且工作区代码跟着一起回滚 |
| 🌐 AI 看不见也点不到你眼前的东西 — 你已登录的仪表盘、内网页面、file:// 页面 | 截图、粘贴、手把手教、反复重试 | DET Browser Extension:模型驱动你已经登录的 Edge/Chrome,走 localhost 桥接,权限由你自己把关(off / read / write / on) |
展开完整文档(README 剩余 1 节)
DET · dsh-essential-tools — 这个插件把 DeepSeek Harness 变成真正能用的工程驾驶舱。
让 AI 驱动你自己已登录的浏览器 · 对任意对话分支、编辑、重试 · 运行 / 快照 / 回滚真实项目 · 管理每一个插件、每一笔 token 开销
快速开始 ·用户指导手册 · Changelog · Security ·功能总览
😤 痛点
如果你一边写真实代码,一边让 AI 智能体参与进来,这四个问题你一定懂:
| 痛点 | 现在大家怎么做 | DET 怎么做 |
| 🧠 一步走错,整条对话就废了 — 你想从第 12 条消息重新提问,而不是从头再来 | 复制粘贴到新会话,上下文全丢 | VTD:编辑 / 重试任意一条消息 → 生成真正的隐藏分支,用 <N> 切回去,而且工作区代码跟着一起回滚 |
| 🌐 AI 看不见也点不到你眼前的东西 — 你已登录的仪表盘、内网页面、file:// 页面 | 截图、粘贴、手把手教、反复重试 | DET Browser Extension:模型驱动你已经登录的 Edge/Chrome,走 localhost 桥接,权限由你自己把关(off / read / write / on) |
| 🛠 构建-运行-查看-检查全靠手动循环 | 每小时 Alt-Tab 切到 IDE 和终端 40 次 | 右侧工具栏:▶ 运行 · 🗎 文件树 + 预览/编辑 · 🕘 程序快照与回滚 |
| 💸 你根本不知道一次会话花了多少 | 月底才发现 | 角落实时显示余额 + 各模型价格 + 每轮开销 + 高峰/低谷估算 |
DET(插件名 dsh-essential-tools)是 DeepSeek Harness 的永久插件,一次解决这四个问题 —— 还额外带来完整的插件管理器、对话记忆层和安全审计。它常驻在你的 web 配置档里,重启也不消失,并出现在设置 → 插件清单中。
🎁 零配置: 不填项目路径,所有对话/token/插件功能开箱即用。只有想用 ▶ 运行时,才需要添加路径。
✨ 功能一览
🌐 浏览器控制 —— 重头戏
真正的 MV3 扩展(Edge / Chrome)通过仅限 localhost 的 WebSocket(127.0.0.1:9123)连到 DSH 主机,这样模型就能操作你已经登录的浏览器 —— 内部工具、仪表盘、网页邮箱、本地 file:// 页面,你开着什么就能操作什么。
- 读: read_text · read_dom · screenshot · get_url · get_title
- 写: navigate · click · fill · run
- 六个模型工具: det_browser,外加 web_human_search(像人一样搜索)、web_insite_search(在你打开的标签页里找)、web_act、web_inspect、web_focus
- 权限旋钮在你手里 —— 四档开关装在扩展弹窗里,DSH 只能读:
| 模式 | 模型能做 |
| 关闭 off | 什么都做不了 |
| 只读 read | 读页面(文本 / DOM / URL / 截图) |
| 只写 write | navigate、click、fill、run —— 但页面内容不会回传 |
| 启用 on | 读 + 写全开 |
- 双重闸门: 除非网络权限 = 第 4 档(使用你的浏览器),否则主机连桥都不启动;低于这一档,det_browser 还没到你的浏览器就被拦下。
- 感知审批: 非 Full access 模式下,浏览器操作走 DSH 的 tools/pre-execute 审批流程;Full access 免审。
- 加固措施:握手校验 origin,注入走固定函数 + 参数(绝不用 new Function),只操作 DSH 指定的 tabId,桥只保留最新的扩展连接,这样僵死的 MV3 service worker 抢不走你的命令。
➡️ 安装:browser-extension/README.md · 深入阅读见指导手册
🌲 VTD —— 虚拟对话树
别再扔掉对话了。
- 编辑 / 重试任意用户消息 → 生成真正的分支子会话(origin: vtd-fork,侧边栏里不显示)。你原来的对话不受影响。
- 消息上的 <N> 分支选择器:在分支间跳转,DET 会给工作区打快照,并帮你恢复目标分支的代码(消息微版本)。
- 流式分支视图: 不再固定 4 秒轮询 —— 主机发出 generating 信号,于是 token 流动时标签页约 700 ms 刷新一次,空闲时约 2.5 s 一次,自动滚动,并显示「正在生成…」。
- 产品级原生渲染: 只显示真正的用户气泡,上下文注入折叠收起,工具调用 / 结果做成卡片,推理过程折叠,细粒度 Markdown。
- 消息微版本: baseline / edit / retry / auto-switch 自动记录,可恢复。
🖥 右侧工具栏 —— 不离开聊天就能干项目活
| | 工具 | 做什么 |
| ▶ | Run | 找到你的入口点(main/entry/run .py/.cpp,或 .sln/.slnx),用 MSBuild 构建,启动程序 |
| 🗎 | Files | 工作区文件树(可折叠、带计数、缩进),点击可在弹窗里预览或编辑 |
| 🕘 | 版本 | 程序级快照:手动快照 / 回滚(先自动备份)/ 删除 —— 仅代码文件 |
| 🧩 | 插件 | 跳转到插件管理器 / 当前会话的插件开关 |
| 🛡 | 安全 | 审计日志与安全开关 |
MSBuild 缺失或配置有误?自动发现:vswhere → 常见 VS 安装目录 → PATH,缓存 60 s,lvalInfo 会报告实际使用的路径。
🧩 全局插件管理器 —— 一个库、五个级别、两条安装路径
- 库贯穿整个进程(存储域 dsh_global_plugins,重启后仍在)。每个插件都带一个级别: 全局启用 always · 对话AI可自行决定启用 ai-auto · 对话内AI需审批启用 ai-approve · 不再会有新启用 frozen · 全局禁用 disabled
- 引入插件: ① 从任意运行中的会话里,把活跃的动态 Cordis 插件提升进来;② 搜索商店(GitHub / marketplace / leaderboard / radar),附带缓存的 AI 摘要;③ 粘贴 manifest URL。
- 从 GitHub 引入有两种方式: ① 直接下载(det_global_plugin_github_direct);② AI 读取源码,重写一个等价且更安全的版本(det_global_plugin_github_rebuild → det_global_plugin_github_save)—— 第三方代码绝不执行,两条路径都会返回病毒/漏洞警告。
- 常驻插件(例如 dbs)有一个干净的启用/禁用开关,通过 loader 热卸载/热重载,重启后仍然生效,并提供刷新前端按钮(det_global_plugin_set_enabled)。
- 意图与事实存在不同字段里(v2.9.4)。 以前是一个字段干两件事 —— globallyEnabled 既是「你的意图」,又是总开关的记账,而 gpList 还会把 loader 的实际状态写回其中。三个写入方互相覆盖,这就是「禁用一个常驻插件 → 重启后它又回来了」反复出现的原因。现在:
- 意图放在它自己的权威字段 enabledIntent 里(在存储 schema 中是可选的,所以旧记录仍能读取;读取时推断一次并迁移);
- 级别 全局禁用 disabled 是硬否决(按定义它「拒绝任何启用」),然后由 enabledIntent 决定,只有旧记录才回退到 level(level 的优先级高于被记账污染的 globallyEnabled);
- gpList 绝不把事实写回意图。 loader 的真实状态只被上报(actualEnabled / fiberPhase / stateMismatch),绝不覆盖你的选择持久化;
- 二元开关不再破坏你的级别 —— 它以前会把 ai-approve / frozen 改写成 always / disabled,让你的五级设置永久丢失。「是否已安装」和「谁可以启用它」是两个维度,现在分开存储;
- 启动守卫 / 总开关的暂停会写入真实意图(enabledIntent = false),所以安全禁用不会再被下一次 apply 悄悄撤销。
- 意图与事实分开看。 条目按任意一个名字匹配(id、嵌套 id、options.id、options.name —— 配置档的 insert 行带两个不同的名字,比如 id: dbs 对应 name: 'dsh-bgm-service',以前会让「禁用」悄无声息地失效)。意图和事实不一致时,卡片会直接说出来,而不是改写你的意图;立即应用禁用状态(gpApplyPermanentStates)把意图推给加载器,不用重启。持久化的状态在启动时重新应用,靠一次延迟 kick 加上第一个会话 —— 刻意不用 loader.await(),从插件自己的 apply 里调用它会死锁。
- 禁用一个插件,绝不会重载你整个页面(v2.9.4)。 以前它会无条件调用 window.location.reload() —— 哪怕宿主刚报告了 applyError,也就是什么都没应用上。这就是「关掉一个插件把 DET 自己的功能和 UI 搞乱了」的真相:它重置了 DET 的界面、你正待着的设置页,还有所有没保存的输入。现在面板会报告加载器实际做了什么(loader 已实时禁用 / 实时未生效:<reason>),刷新交给你自己按的刷新前端按钮。
- Boot Guard: 连续 bootFailLimit 次启动失败(默认 2)就自动禁用所有全局插件,坏插件永远搞不崩你的启动。
- 会话内工具: det_global_plugin_list/enable/disable/scan_installed/import_installed/set_enabled/github_direct/github_rebuild/github_save/store_search。
🧭 MDA · CDM · TCT —— 记忆与成本控制
- MDA(Mixing Dialogue Agent)分层: native / workspace 分组 / model 分组(侧边栏 🔀 MDA 分组 里的可折叠树)。
- CDM(CrossDialogueMemory): cdm_list / cdm_search(默认限定在工作区,cross=true 升级到跨区)/ cdm_read —— 取回你在另一段对话里已经想清楚的东西。
- TCT(Temp Chat Tool): det_tct —— 一条提示词,可选预设(review / summary / format / brainstorm),带类型的权限,一条反馈字符串,会话销毁,什么都不留。
- 模型协作(model 分组): mda_card 用 TCT 写某个模型的配置档;mda_activate 把活派给另一个模型(⚠ 很费 token,默认关闭);mda_create_no_workspace_agent 起一个没有工作区的智能体。
📊 DeepSeek 余额 · 价格 · 每轮成本
- 角落状态卡:余额来自 api.deepseek.com/user/balance,每 5 s 刷新一次,可展开看多币种明细和还能撑几天的估算。
- 按模型的价格标签,从官方定价页解析(先取人民币页,美元兜底),在高峰 / 低谷之间切换(北京时间周一至周五 09:00–12:00 与 14:00–18:00 为高峰),缓存 6 h,取不到就用上次的好数据兜底。
- 你当前这段对话的每轮成本。
- 密钥处理: 只由宿主解析(配置 → DSH 凭据接缝 → 环境变量),只存在于请求头里 —— 绝不写入磁盘,绝不记日志,绝不发给客户端。没有 MITM 代理,没有密钥台账,没有遥测。网络只访问 api.deepseek.com 和 api-docs.deepseek.com。
🔧 DLT 集成 —— DLT 的功能,由 DET 托管
DET 可以完全接管 DLT (dsh-light-tool),这样你只跑一个插件,不用跑两个。它自带一份 DLT 引擎的副本(lib/dlt-engine.js + py/),注册同样六个模型工具 —— dlt_env、dlt_run、dlt_build、dlt_doc_read、dlt_doc_write、dlt_doc_convert —— 注入同样的环境/文档系统提示词,并自己渲染同样的三块 UI:
| 组件 | 插槽 | 端点 |
| 每轮费用标签(本轮 ¥x.xx,可展开 token 明细) | conversation.chat.turnTail | dltCost / dltPricingInfo |
| 右侧栏 Word / Excel / CSV 预览 | documentPreviews + sidebar.right.tab.document | dltOffice |
| 输入框 + 旁边的草图按钮(立即绘制 → 图片附件,或在文本模型里给出 PNG 路径) | conversation.input.left | dltDraftSupport / dltDraftSave |
- DET 的总开关打开时,它会声明接管(subordinateGrants().grants.dlt = true)。DLT 随即完全让位:六个工具一个都不注册,提示词段落也不加,费用标签、余额卡片、草图按钮、预览以及它自己的设置页全部撤下。唯一的控制入口变成 设置 → DET 管理器 → DLT 集成(六个分项开关:dltDocs / dltPreview / dltEnv / dltRun / dltCost / dltDraft)。
- 可逆,无需重启: 关掉 DET 的总开关(或设置 det.subordinate.suppress.dlt = false),DLT 会在约 5 秒内收回自己的功能 —— DLT 在启动时以及每 5 秒重新检查一次声明,DET 在每次功能变更时重新检查。
- 不是加载器暂停。 DLT 不在 DET 的全局插件库里,也永远不会像绑定库的插件那样被热卸载;接管是对 ctx.get('dshEssentialTools').subordinateGrants() 的功能性声明。DLT 自己的总开关和 switch.json 照常工作,所以关掉 DET 就能精确恢复你在那里启用的模块。
- 余额和定价仍是 DET 自己的(角落状态卡片 + 价格标签)—— DLT 的余额卡片本来就是重复的那一个;所以集成里没有第二张余额卡片。
- 一行搞定草图导入: 输入框的 ✏ 按钮(在 + 旁边)会打开画布;点 导入 就把画稿以图片形式放进消息里——如果当前模型没有声明 image 输入(dltDraftSupport),DET 会向宿主询问哪些模型支持(dltVisionRoutes),把会话切到其中一个,把 PNG 作为图片草稿附上,并给出一键 切回 <original model>。不调用工具,也不用「自己去读文件」。只有压根没有视觉模型时,才退回到保存 <workspace>/.dsh-drafts/sketch-.png 并粘贴相对路径——而且它会明说。
- 判断是真正实时的(v2.9.4)。 以前有两处会过期,现在都修好了:模型* 现在取自会话投影的 pending ?? lastUsed(你刚在模型选择器里选的那个,而不是已经跑完的上一次请求),客户端 在每次导入时都重新问宿主,而不是复用画布打开时拿到的答案。所以画布开着的时候切换模型,立刻就能看到。「这个模型收不收图片?」只由模型表的 inputModalities 决定;读不到就保守地答「不收」(保存 PNG),而不是等到发送时才失败。
- Sketch 也是独立包:dsh-sketch-draft(v2.9.4)。Sketch 不需要 DET 提供任何东西——只要宿主的 llm / sessions / sessionProjections / attachments——所以它现在独立发布,DET 里的那份是可选的。任何时候只会挂载一个铅笔按钮:DET 在自己的 dltDraft 开启时声明 subordinateGrants().grants.sketchDraft = true,独立包读到这个就让位(它根本不注册槽位)。在这里关掉 dltDraft(或 DET 的总开关),独立包就自动接管——不用重启。
🛡 安全审计 + 网络权限分级
- 可选的执行前审计:每次工具调用都过一次独立的模型审查;高风险调用会被 deny 并记录日志(secCmdAudit、secPromptDefense)。⚠ 每次调用都要付出延迟和 token 代价。
- 网络权限——5 档(输入行内下拉菜单,持久化为 det.webperm):
| 档位 | key | 含义 |
| 禁用网络 | off | 完全无网络 |
| 官方API搜索 | api | 仅 DeepSeek 官方 API(余额/定价需要 ≥1) |
| 搜索API搜索 | search | 搜索 API;通用抓取需要 ≥2 |
| 静默浏览器仿真 | silent | 无头浏览器仿真(读取页面) |
| 使用用户浏览器 | browser | 驱动你的真实浏览器(det_browser 必须用这一档) |
🎛 总开关——一键回到原版 DSH
Settings → DET 管理器打开后,各功能开关上方有一个总开关(det.features.master,默认开启)。
- 关闭 = 完全原生。 DET 只保留两样东西:这个管理页面和开关本身。其余全部卸载——▶🗎🕘🧩🛡 工具栏、角落的余额/费用/MMS 卡片、网络权限控制、VTD 标签页和消息操作、MDA 侧边栏浮层、Global plugins 和 MDA 设置项、所有 det_ / web_ 模型工具和系统提示词注入、安全审计钩子、本地浏览器桥接,以及侧边栏注册表自检。MDA 分组重置为 native。
- DET 管理的插件也会停止——且只停这些。 范围是 Global plugins 库:绑定到加载器条目(通过 scan installed plugins → import,会写入 moduleName)且实际处于开启状态的记录。常驻插件通过加载器热卸载,动态插件的每会话实例被停止。不在库中的插件——例如 dlt,它有自己的设置页面和总开关——归它自己管,永远不会被碰。(这是加载器层面的说法:DLT 的功能仍可通过单独的 subordinateGrants() 声明由 DET 托管——见上文 DLT integration——它从内部抑制 DLT,而不暂停其 fiber。)容器/内置条目(cordis:include,拥有整个 cordis.yml 子树)永远不会被禁用,框架包(@deepseek-ai/)和 DET 本身也不会。
- 停止是经过验证的,不是假设的。 每个目标都会从加载器重新读取并重试一次;任何拒绝停止的都会在管理页面上报告(⚠ 未能停用 + 原因),而不是声称已停止。声称常驻但未绑定到任何加载器条目的库记录会单独列为未停止(det.master.unmanaged),并指向导入操作。停止的集合快照保存在 det.master.paused 中(带 applied 标志),开关重新打开时恢复;常驻插件的浏览器部分只有在页面刷新后才会消失,所以面板提供 刷新前端 按钮,而不是在你背后重新加载页面。
- 开启会恢复全部——包括重新加载总开关停止的插件(常驻插件重新挂载,会话启用记录被恢复,gpSync 会把它们带回来)。各功能开关保留保存的值。开关立即生效并持久化——无需重启,关闭也是可逆的,因为每个注册都作为 disposer 持有。
- 总开关开启时,各功能开关仍像以前一样工作:关闭 plugin manager,所有全局插件被禁用;关闭 MDA,分组恢复为原生。
✅ 指示器跟随现实
Global plugins 列表从不猜测:
- 常驻插件由宿主 loader 上报(只有它决定插件是否挂载),所以 启用/禁用 才是真实状态。如果 DET 记录的意图与 loader 不一致,DET 会修正记录、标记卡片,并显示 fiber 阶段(failed / still loading)。
- 会话状态区分已保存的启用记录与实际运行*:只有运行处于活动状态时才显示「本会话运行中」,否则显示「已启用记录 · 未运行」或「本会话未打开 · 打开后恢复」。面向模型的 det_global_plugin_list 上报的也是同样的实际状态。
🚀 快速开始(60 秒)
环境要求: Windows、DeepSeek Harness 0.1.1-rc.2+、PowerShell、web 配置档(首次运行 dsh web 时自动创建)。
Option A — installer from the clone (recommended: installs + registers the plugin) .\install.ps1 -Profile web
Option B — manual, exactly equivalent
dsh plugin --profile web add dsh-essential-tools
Option C — straight from GitHub (no npm needed)
dsh plugin --profile web add github:LLYlab/DSHEssentialTools
然后重启 DSH。dsh-essential-tools 会出现在 Settings → Plugin inventory 下,并带有自己的 DET 管理器 区块。
包中声明了 dsh.bundle.patch(→ cordis.patch.yml),所以上面三条命令中的任意一条都会自动把插件注册到配置档的 bundle 层——你不需要手动编辑 cordis.patch.yml。下面的手动 insert 只用于直接从源码检出挂载。
手动注册 / 添加项目路径 / 配置参考
追加到 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml:
- insert:
- id: dsh-essential-tools
name: 'dsh-essential-tools'
config: # optional — only needed for the ▶ run / 🗎 file / 🕘 version tools lvalRoot: 'C:\path\to\project' srcDir: 'C:\path\to\project\src' solution: 'C:\path\to\project\App.slnx' msbuild: 'C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe' # optional, auto-discovered configuration: 'Debug' platform: 'x64' rollbackTargetDefault: 'minor' bootFailLimit: 2 # consecutive boot failures before auto-disabling all global plugins
config 留空,除项目工具之外的一切仍然可用。
可选:启用浏览器扩展
1. edge://extensions(或 chrome://extensions)→ 启用 Developer mode → Load unpacked → 选择 browser-extension/。
2. 在 DET 中,把 network permission = 使用用户浏览器 (tier 4)。
3. 点击扩展图标并选择模式——先从 只读 开始,需要时再往上调。
4. 让模型在你打开的标签页上工作;在 DET 中观察 浏览器控制 状态区块。
v1 动态加载(仅开发用) cordis_define 配合 plugin/host.js + plugin/client.js,然后 cordis_run。v2(npm)是受支持的路径。
📚 文档
| 文档 | 内容 |
| docs/GUIDE.md | 🧑🏫 用户指导手册 — 安装、首次运行走查、每项功能的分步说明、权限模型、FAQ、故障排查、卸载 |
| docs/DET功能.md | 功能清单:25 个模型工具、75 个端点、8 个 UI 槽位、存储域、权限层级 |
| docs/DET修改.md | 变更/开发日志:改了什么、为什么改 |
| docs/DET运行思路.md | 架构与运行时流程 |
| docs/SECURITY.md | 安全设计、五维审查、已知边界、缓解措施 |
| CHANGELOG.md | 发布历史 |
| ARCHITECTURE.md | 实现层面的架构 |
🔒 一段话讲清安全
插件代码以 DSH 进程的真实权限运行 —— 这不是沙箱,所以只启用你信任的代码(DET 在每次安装前都会大声提醒)。DET 额外做的事:每次主机侧 fetch 都做 SSRF 防护(仅 http/https、URL 里不带凭据、拒绝私有/回环/元数据地址、解析后重新检查 DNS 以阻断 rebinding、手动重定向逐跳重新校验、最多 5 跳)、15 秒超时与 Content-Length 预检、商店安装时做可疑代码扫描并附 commit-SHA 溯源、对 cmd.exe 的 argv 加引号以杜绝参数拆分/注入、浏览器桥接绑定 127.0.0.1 并做来源校验握手,外加扩展侧一道主机无法覆盖的闸门、Full access 之外的浏览器操作走审批路由,以及一条绝不持久化你 API key 的凭据路径。黑名单扫描器只是提示,不是边界;真正的边界是你的审批。
🤝 参与贡献
欢迎在 LLYlab/DSHEssentialTools 提 Issue 和 PR。浏览器扩展必须通过加载未打包版本进行测试;npm 包从不附带它(.npmignore)。
License
MIT © 2026 L2959159224预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
LLYlab/DSHEssentialTools
DSH 永久插件:LVAL 负责工程运行、代码查看和程序版本快照回退,VTD 提供虚拟对话树(编辑、重试、分支,以及消息小版本),DET 是功能管理器。
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化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,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。