DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Ledas-as /

Ledas-as/-deep-seek-harness

Verified

deep seek harness

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@4259c213

dsh-memory-guard · 记忆与操作保护

给 DeepSeek Harness 使用的第三方插件,适配 Windows、DSH 0.2.1-rc.2。当前版本 0.3.1,采用 MIT License,与 DeepSeek 官方无隶属关系。

目的:记住你明确保存的规矩,用中文说明计划和关键进展,复用 DSH 自动审查,减少重复确认。

默认使用协作模式,遵循你在 DSH 会话中选择的权限。0.3.1 修复“完全权限”仍被插件转交审批、随后被宿主的 never 策略直接拒绝的问题。 完全权限下,插件不再登记或追加操作审批;自动审查下,继续复用宿主 reviewer,并合并需要确认的操作。插件不增加第二套模型调用,也不自动切换你的权限设置。

使用时是什么样子

它应当先在聊天中说:

我先检查登录流程,找到原因后修改相关文件,再运行测试验证。

接下来查看、搜索和普通编辑会连续进行。环境检查和召唤专家不需要插件额外弹窗。发现关键问题、改变方向或需要你决定时再说明。完全权限下,用户明确要求的操作不会再被插件要求二次批准;仍应遵守任务范围,不自行清理无关文件。

需要审批的其他模式中,协作模式交给 DSH 的审批界面,不另开插件问题卡片。插件提供简短的中文操作、风险和显式位置;DSH 自己控制工具参数的展示。完整参数仍可通过 /guard-detail 查看。完全权限是用户选择的持续模式,单次审批则只适用于当次调用。

旧版 balanced 日常模式、strict 严格模式仍可选择,保持原有的逐次登记和插件确认流程。

实际保护规则

模式或操作 协作模式的处理
宿主明确选中“完全权限” 联网、命令、专家、项目外操作及已识别风险不再由插件登记或追加审批;宿主自己的策略仍生效
普通文件查看、项目内普通编辑、安全搜索 插件直接继续,宿主策略仍然适用
环境检查、原生搜索、专家、未知工具和项目任务 当前会话有活跃的 DSH 自动审查时委托它,不再重复询问
非完全权限下,已识别的删除、清理、移动、进程控制、Git 提交或上传、发布、系统安装、显式提权 请求一次 DSH 审批,无须先登记
非完全权限下,原生编辑工具修改项目外或保护目录、清空整个文件、目标无法核对 请求一次 DSH 审批
显式敏感路径、记忆存储、模型修改插件或停用保护 拒绝
未选择完全权限,也没有活跃的 DSH 自动审查 普通读写继续,其余需要核对的操作退回 DSH 审批

这里的风险识别依据实际工具名、部分命令与参数结构,不把模型写的“只读”“安全”当作凭证。这些是有限的额外检查,不是任意脚本分析器。模糊操作仍依赖宿主 reviewer 判断;不能保证所有删除形式都会被识别。

非完全权限下,普通编辑核对项目边界、现存父目录与本地链接,避免通过目录链接把自动编辑带到项目外。.git、.agents、.codex、.dsh、AGENTS.md、node_modules 不属于这条普通编辑自动路径。完全权限下按宿主设置继续,保留敏感内容、插件自身与记忆存储的既有保护。其他工具内部的效果不由插件完整解析。

guard_search 是不启动 shell 的项目字面量搜索,过滤隐藏、敏感、依赖和生成目录,优先使用。普通 ask_user_question 不套额外授权。

协作模式把宿主和插件的 ask 合并,避免一项操作先后出现两套确认。最终 guard 核对执行身份、完整参数、目录、取消与重载状态;已交审批的调用必须观察到宿主 allowed-once 才能执行。宿主策略拒绝、自动审查出错或审批不可用时不会改走其他工具。复用受限命令自动路径时,执行前还会复核沙箱状态。

完全权限只根据宿主权限服务明确返回的 danger-full-access 选择识别,不把“审批关闭”单独当作完全权限授权。Auto 子代理也可能使用 never,仍须遵守其审查路径。执行前如果退出完全权限,原调用停止。系统规范随当前会话选择更新,避免继续向模型注入过期的登记要求。

不会自动清理目录,也不把“自己生成的文件”当作可以随意删除的东西。用户仍可在扩展管理中管理插件。

长期记忆

输入 效果
/guard 查看插件状态、命令和当前有效记忆
/guard-check 使用无副作用的模拟敏感路径核对实际执行拦截;不打开该路径,也不读写或删除文件
/remember 请始终用简单中文解释操作 直接保存你输入的内容,仅作用于当前项目
/remember global 不要自行清理我的文件 保存为所有项目共用的记忆
/forget 完整记忆ID 停用一条记忆,保留历史,不删除记录
/guard-detail 查看当前会话最近一次操作确认的完整技术详情
/guard-history 查看最近 20 条插件审批记录;协作模式的最终审批结果见 DSH 宿主记录

也可以在聊天中说“记住这条规矩”。模型应调用 guard_memory_propose,向你展示要保存的原文,由你确认后才写入。插件不会自动读取旧聊天、导入私人文件或从网页中收集记忆。

在 DSH 图形界面输入带参数的指令时,先输入 /remember 或 /forget,从弹出的指令列表中选中对应项,再输入内容或 ID。若直接粘贴整行被当作普通聊天,它会走模型的确认流程;不要把模型回复当作指令执行成功的证明,用 /guard 核对结果。

默认数据目录是 %LOCALAPPDATA%\DSH-Memory-Guard。只有启用插件时才会创建。全部记录追加到 memory.jsonl,不会覆盖或自动删除历史。每条记忆最多 1200 字符;当前项目和全局记忆合计最多 80 条、12000 字符。记录总量到 4 MB 时停止写入并报错,不自动清理。

授权记录只保存时间、工具名和结果,不保存完整命令、参数或文件内容。/guard-detail 的技术详情仅保存在当前进程内存里。

安装

在 DSH 的“扩展管理”中选择添加扩展,输入下面的 GitHub 包地址,安装并启用“记忆与操作保护”:

github:Ledas-as/-deep-seek-harness

需要本机已安装 Git,且能连接 GitHub。此地址安装仓库默认分支的内容;需要固定版本时,在地址末尾加 #完整commitSHA。

Windows 默认安装位置也可使用 DSH 自带 CLI:

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add 'github:Ledas-as/-deep-seek-harness'

本项目尚未发布到 npm。若 GitHub 安装不可用,可以克隆仓库,在源码目录运行 npm pack --ignore-scripts 生成 .tgz,再在扩展管理中添加该文件的完整路径。

安装本地包的 CLI 示例;请先把路径换成实际生成的包路径:

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add 'C:\完整路径\dsh-memory-guard-0.3.1.tgz'

该操作会更改 DSH 的扩展配置。安装源码目录同样可行,但不要在安装后移动那个目录。安装包内没有 install 脚本,不新增第三方运行依赖;两个 peerDependencies 复用宿主的 Cordis 和 tools API。若安装器提示另一个 DSH 版本不兼容,请停止,不要强行忽略。

安装后先在一个测试聊天中输入 /guard,确认显示 0.3.1 / 协作模式。完全权限下会显示“已尊重 DSH 完全权限”,无需为了联网切换到自动审查。你选择自动审查时,/guard 会显示是否检测到;插件不会替你切换权限。DSH 退出 Auto integration 时可能把会话恢复为完全权限,重开后应核对实际选择。如果命令不存在或扩展管理显示错误,保护没有生效。若提示需要重启,请先完成现有任务再正常重开 DSH。

验证方法

  1. 输入 /remember 测试记忆:请用中文说明操作,重新打开一个相同项目的聊天,用 /guard 确认记忆仍在。
  2. 让它查看一个已知普通文本文件,应可正常查看。
  3. 让它通过普通文件编辑工具修改一个专门准备的项目内测试文件,应能直接完成,不逐条登记和弹窗。宿主若要求先读文件,仍须先读。
  4. 在完全权限下查询公开网页、查看 Node 版本或召唤专家,插件不应登记或追加审批。自动审查下,宿主仍可能因实际影响拒绝或要求确认。输入 /guard-check 验证敏感路径拦截,无须真的运行删除操作;它不验证 reviewer 判断的准确率。
  5. 用 /forget 停用测试记忆,确认 /guard 不再加载它;原始历史仍保留。

源码检查:

node scripts/check.mjs
node --test test/guard.test.mjs

本项目的自动测试不会执行真实 shell 命令或删除文件;只使用隔离的临时数据。不会自动清理测试文件。

边界和已知限制

  • 不是操作系统沙箱,也不是文件恢复或备份服务。 它只保护经过 DSH 工具注册表的调用。其他软件、恶意 Host 插件或已经脱离工具运行的进程不受它控制。
  • 完全权限下不追加删除、项目外修改等操作的审批。 用户授权和任务范围仍须由模型遵守,插件不会逐次证明授权。敏感内容、插件自身、记忆存储的既有硬拒绝和记忆保存确认继续保留。
  • DSH 自动审查是模型判断,不是沙箱,可能误判,也会消耗宿主的 token。 协作模式会把旧版无法确认的命令交给它;这放宽了旧版的逐次人工限制。本插件没有额外模型请求,不绕过宿主的 reviewer。不要将开启 Auto 理解为脚本已经证明安全。
  • 项目内编辑允许改变或移除文件内容。任务脚本、编码后的命令或外部工具可能删除文件;有限规则不能穷举这些效果,不提供“所有删除必定弹窗”的保证。
  • 自动审查及受限路径要求 native 工具模式,拒绝外层 run_code,因为其直接 Node 效果不会全部经过宿主 inner-tool review。明确选择完全权限时可使用宿主提供的 run_code,不声称其直接效果经过了自动审查;尚未进行 PTC 桌面现场验证。
  • 通过同一 DSH 工具注册表执行的子代理调用仍各自检查。进程外专家或代理保留自身权限系统;批准召唤不等于本插件能够控制它后续所有行为。部分专家还会下载资源,不能一概称为“只产生文本”。
  • 任务中的中文进度、开始和完成说明由系统规范约束模型,普通聊天文本不是代码强制重写。协作模式不再因英文 description 拒绝一次正常工具调用。
  • 敏感路径和常见凭据格式检查属于有限的防护,无法识别所有秘密。获批脚本、递归搜索或外部工具仍可能接触未识别的内容。
  • 宿主未选择完全权限且没有活跃的自动审查时,超出原有自动路径的工具仍会要求宿主审批;插件不把完全权限当作已经审查。guard_search 最多扫描 2000 个受支持扩展名文件、每文件 512 KB、累计 8 MiB,返回 200 条匹配;达到预算需缩小目录。文件在检查后被其他进程替换等竞态不属于强沙箱保证。
  • 一份记忆目录建议只由一个 DSH 后端进程使用。多个进程各有内存快照,不提供跨进程即时同步。损坏、过大的存储会报错,插件可能无法加载;这时不会显示“保护正在运行”。
  • 插件无法阻止用户主动禁用插件或更改其源码。安装、停用和升级后应通过 /guard 检查实际状态。

开发接口

Host 入口为 src/index.mjs。配置接受可选的绝对路径 dataDir 和 mode:adaptive(默认)、balanced(0.2.x 日常规则)、strict(文件修改和命令逐次登记确认)。记忆格式和默认目录沿用 0.1.x,无须迁移。cordis.patch.yml 插入全局插件,要求宿主已有 tools、systemPrompt、userQuestions、commands、workingDirectory 服务。协作模式通过可选的 permissionPresets.names/current() 检查 Auto integration 和当前会话选择,用 tools 的 ask / approval/request seam 合并审批。缺少服务时不假装已经自动批准。受限常规命令路径仍核对 shell 和 sandboxPolicy。

模型工具仍为 guard_plan、guard_memory_list、guard_memory_propose、guard_search。协作模式中 guard_plan 可选;它的 arguments_json 必须与目标调用完全一致,说明不能授予权限。guard_search 接受 query 和可选的项目内 path,不启动 shell。

API 核对依据:DSH 扩展开发说明、0.2.1-rc.2 随附的公共运行库和说明。验证环境和结果见 VALIDATION.md。

—/ 5

No ratings yet

Verified DSH bundle

Commit 4259c2133400

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout