dsh-second-agent-kit:面向 macOS 的 DSH 第二智能体防护与兼容补丁

前言

在 DeepSeek Harness(DSH)里跑智能体时,常见矛盾是:既要让模型在沙箱里执行命令、读写工作区,又要在浏览器写入、借标签页、发布或删除等操作上保留人工确认;记忆插件若把整仓路径哈希进作用域,Git 与非 Git 工作区行为不一致时,项目级记忆也容易串线。官方沙箱与审批能力存在,但社区里有人需要更小、可审阅的扩展,把上游决策保留下来,并在 macOS 上对受限 shell 进程收紧网络与 Apple Events,同时附带可复现的 Engram 补丁和离线文档渲染脚本。

下面介绍维护者 f0909172434 发布的 dsh-second-agent-kit(分类:admin-security)。它是面向 DSH 0.1.5-rc.2、在 macOS 14+ 上验证过的一组小型可检查扩展,MIT 许可,与 DSH Desktop 自身许可无关。插件目录页:https://www.skillhub.cn/plugins/f0909172434/dsh-second-agent-kit;源码:https://github.com/f0909172434/dsh-second-agent-kit。当前 package 版本为 0.1.4。

这是什么

一句话定位:在 macOS 上为 DeepSeek Harness 提供可审计的第二智能体防护(Cordis 审批、受限 Seatbelt 沙箱子类)以及 Engram / LibreOffice / 实验性 computer-use 相关补丁与工具,不捆绑凭据,也不声称替代主机自带的用户审批插件。

核心功能

Cordis 审批插件

保留上游决策,并在以下操作前询问用户:浏览器写入、借用标签页,以及常见的发布/删除类命令。

受限沙箱提供方(second-agent-sandbox)

在现有 DSH Seatbelt 提供方的子类上实现:保留主机的文件系统策略;在受限制的 shell 进程内拒绝 IP 联网与 Apple Events。本地计算与工作区写入仍可用;shell 里的网络请求仍依赖主机既有的按次升级与用户批准;专用浏览器、Web 与模型工具有各自策略。不支持的沙箱 runner 会失败关闭,而不是静默返回未受限命令。本版本刻意仅支持 macOS。

启用 bundle 后会禁用上游 sandbox 行,插入 second-agent-sandbox(受限提供方)和 second-agent-approval。若本地已有重复的 daily-approval 钩子,验证本插件后应禁用该重复项;不要禁用 DSH 自带的 user-approval 插件。不要将 danger-full-access 作为长期默认——该模式会按设计绕过主机限制。

Engram 0.7.5 可复现补丁

对官方 @kenz1117/dsh-engram@0.7.5 打版本固定的补丁:对整个非 Git 工作区路径做哈希;用 AsyncLocalStorage 将工具存储绑定到会话工作区;自动摄取指向项目存储;用户偏好仍作为显式的跨项目记忆。同等 Git 来源会刻意共享记忆;旧库迁移非自动;设置 UI 仍使用主机工作区。升级或迁移真实记忆前应先测试。

LibreOffice 离线渲染

独立脚本 scripts/render-office.py:使用隔离配置与显式 macOS 系统字体,减轻中文缺字;需官方 LibreOffice;--png 需 PyMuPDF。不覆盖已有 PDF,并会打印页数。LibreOffice 排版不能等同 Microsoft Word;表格计算与演示动画仍需在对应应用中核对。

实验性 macOS computer-use 补丁

随仓库提供 patches/computer-use.patch 等,本 bundle 默认不启用(live Word 面板测试未通过)。面向已校验的焦点文件面板元素的系统 XPC 进程,而非向宿主应用静默投递按键;无全局输入广播、陈旧观测绕过或新的永久应用授权。防护还会在单轮智能体内连续两次已知 UI 失败或 20 次输入调用后阻止进一步 Mac 输入;观测仍可用,新用户轮次会重置限制。这限制的是工具派发,不是模型总花费。

环境与依赖

  • macOS 14+
  • Node 24
  • DeepSeek Harness 0.1.5-rc.2
  • 已有 workspace-write + ask 模式
  • peer:@deepseek-ai/dsh-sandbox-local 0.1.5-rc.2

建议先在独立 profile 中测试。

安装与启用

在插件源码目录执行:

npm ci
npm test
npm pack
mkdir -p "$HOME/.dsh/packages/dsh-second-agent-kit-0.1.4"
tar -xzf dsh-second-agent-kit-0.1.4.tgz -C "$HOME/.dsh/packages/dsh-second-agent-kit-0.1.4"
dsh plugin --profile YOUR_TEST_PROFILE add "file:$HOME/.dsh/packages/dsh-second-agent-kit-0.1.4/package"

说明:npm test 用于验证钩子行为、失败关闭的 runner 处理,以及在 macOS 上内核实际拒绝 TCP/工作区外写入同时允许工作区写入等行为。打包后解压到稳定路径再 dsh plugin add;Desktop 0.15.6 曾错误地把本地 tarball 当缺失目录并在启动时删除,需保持解压目录路径稳定。

典型用法

Engram 补丁与运行时测试

解压官方 @kenz1117/dsh-engram@0.7.5 npm 包后:

python3 scripts/patch-engram.py /path/to/pristine-package /path/to/new-package
# 先在隔离测试 profile 中解析补丁包的依赖。
DSH_ENGRAM_MODULE=/path/to/installed/patched/lib/index.js node tests/memory-runtime.mjs

该测试对 disposable 数据库调用真实记忆工具,覆盖并发项目隔离、更新、遗忘与显式用户共享;需要包内本地 embedding 运行时;DSH_EMBEDDING_CACHE 可指向已有缓存。测试不产生付费 LLM 调用。

Office 渲染

安装 LibreOffice(https://www.libreoffice.org/)并在独立 Python 环境中安装 PyMuPDF 后:

python scripts/render-office.py input.docx new-preview-directory --png

请逐张检查 PNG 输出。

Computer-use 补丁(高级、实验)

仅针对补丁记录的 upstream commit 应用 patches/computer-use.patch 与 patches/computer-use-base.txt,安装依赖并执行上游 pnpm run build 以同时重建 JS 与原生产物;原生 helper 须本地构建,仓库不提供未审阅的预编译可执行文件。测试包含独立的 Swift 路由策略检查。

适用场景与边界

适合谁: 在 macOS 上用 DSH 0.1.5-rc.2 开发或运行第二智能体、需要更小可审源码集、并希望收紧受限 shell 网络与 Apple Events,同时需要 Engram 工作区绑定或离线 docx 预览的开发者。

务必知晓:

  • 插件以当前 dsh 进程权限运行;安装前应阅读源码与 MIT 许可证,并理解 Cordis patch 如何改 sandbox/approval 链。
  • 这不是通用语义防火墙:正则命令识别仅为建议;内核规则只作用于主机加以限制的进程;浏览器/MCP/GUI/插件能力仍须各自审批;公开发布、支付与破坏性操作仍需显式授权。
  • Unix 域套接字仍可用于本地 IPC(含 LibreOffice);本地 IPC 可触达自有权限的服务或代理,不能视为对协作本地服务的出口边界;工作区内被允许的文件仍可能影响读取它的其他进程。
  • 仓库不应包含用户凭据、会话日志、个人文档或生产记忆库;观测结果与未决问题见上游 VALIDATION.md。

结尾

dsh-second-agent-kit 把 macOS 上的审批保留、受限 shell 沙箱、可复现 Engram 补丁与 LibreOffice 渲染拆成可检查的小块,并标明 computer-use 与语义防护的边界。需要安装步骤与补丁细节时,以 GitHub README 为准:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜