前言¶
DeepSeek Harness(DSH)把智能体能力拆成可插拔插件,宿主仍要对浏览器写入、发布删除、沙箱内 shell 等行为做审批与隔离。社区里「一切皆插件」的做法很常见,但把确认步骤、Seatbelt 收紧、记忆库升级前检查和离线文档预览放进同一套可 npm test 验证的包里,并不多见。下面介绍维护者 Chih-Kai-Wang 在 SkillHub 分类 admin-security 下的 dsh-second-agent-kit(当前包版本 0.1.4,MIT 许可证;不改变 DSH Desktop 自身许可证)。仓库在 GitHub 上星标为 0,定位是:在 macOS 上、面向 DSH 0.1.5-rc.2 的若干小型、可单独测试的安全加固与兼容工具,而非通用语义防火墙。
这是什么¶
一句话:在保留宿主已有决策的前提下,增加审批插件、受限沙箱提供方、Engram 0.7.6 校验与升级预检、LibreOffice 文档渲染,以及未默认启用的实验性 computer-use 补丁说明。
维护者:Chih-Kai-Wang。目录页:https://www.skillhub.cn/plugins/Chih-Kai-Wang/dsh-second-agent-kit ;源码与说明:https://github.com/Chih-Kai-Wang/dsh-second-agent-kit 。SkillHub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系。
包里包含什么¶
审批插件(Cordis)¶
在宿主已做出的每一项决定之上,增加确认步骤:浏览器写入前、借用已有标签页前,以及常见发布与删除类命令执行前。
受限沙箱提供方¶
继承 DSH 现有 Seatbelt 提供方,保留宿主文件系统策略;额外对被 confine 的 shell 进程拒绝 IP 联网与 Apple Events。工作区内本地计算与写入仍可用;shell 发起网络请求仍需宿主既有的单次升格与用户批准。专用 browser、web、model 工具仍走各自策略。若当前环境不支持 sandbox runner,套件会失败退出,而不是在无 confinement 下静默执行命令。
Engram 校验¶
针对上游 Engram:套件以 0.7.6 为可复现验证基线(README 注明上游 v0.7.7 已合并 PR #4,但本仓库红队测试与观察仍描述 0.7.6;重新验证与升级运行时是独立工作)。提供只读升级 preflight,并复现真实 SQLite 迁移行为;已验证的路由与显式记忆操作来自上游。旧的 0.7.5 补丁仅作历史保留。
Office 渲染¶
scripts/render-office.py 为独立 LibreOffice 渲染器,使用隔离 profile 与显式 macOS 系统字体,便于发现缺失的中文字形。需官方 LibreOffice;--png 还需 PyMuPDF。
实验性 computer-use 补丁¶
patches/computer-use.patch 存在,但实时 Word 文件面板测试失败,本 bundle 不启用该补丁。文档说明其将按键发往已校验、已聚焦文件面板元素的系统 XPC 进程等边界;同一 agent turn 内在连续两次已知 UI 失败或 20 次 input 调用后会停止进一步 Mac 输入(观屏不重置计数,新用户 turn 会重置)。
环境与前提¶
- macOS 14 或更高版本(本版本仅支持 macOS,有意为之)
- Node 24
- DSH 0.1.5-rc.2
- 已有 workspace-write 与 ask 模式
peerDependencies:@deepseek-ai/dsh-sandbox-local0.1.5-rc.2
建议先在独立 profile 试用。勿将 danger-full-access 长期作为默认,该模式会按设计绕过宿主 confinement。Desktop 0.15.6 会将本地 tarball 误判为缺失目录并在启动时删除,因此解压目录需保持在稳定路径。
安装与启用¶
README 给出的流程是先构建包再以 file: 路径安装,而非凭仓库名拼接 dsh plugin add github:...。
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"
安装后 bundle 会禁用上游 sandbox 行,插入 second-agent-sandbox(受限提供方)与 second-agent-approval。若本机已有重复的 daily-approval hook,在确认本插件可用后应禁用该重复项;不要禁用 DSH 自带的 user-approval 插件。套件不需要也不分发凭据。
典型用法¶
Engram 升级前只读检查与验证¶
在升级已有 memory 目录前,先跑只读 preflight;任意非零退出码应停止升级。检查不打开记忆内容、不迁移文件;对用户提供的 workspace 可检测可能属于多个 workspace 的 legacy 文件名。
npm run check:engram-upgrade -- --db-dir /absolute/memory-directory --workspace /absolute/workspace
npm run verify:engram
npm run verify:engram:host
npm run test:migration
验证侧对真实插件与 SQLite 通过 HonestCI 跑六个用例,不允许跳过测试。细节与限制见仓库 docs/ENGRAM-UPGRADE.md。scripts/patch-engram.py 与 tests/memory-runtime.mjs 为 0.7.5 历史物,不是新默认 profile 的操作说明。
Office 文件转 PNG 预览¶
安装 LibreOffice(https://www.libreoffice.org/)并在独立 Python 环境中安装 PyMuPDF 后:
python scripts/render-office.py input.docx new-preview-directory --png
辅助脚本不会覆盖已有 PDF,并会打印页数。需人工查看每一张 PNG;LibreOffice 版式不能等同 Microsoft Word,表格计算与演示动画仍须在目标应用中核对。
computer-use 补丁(高级,非默认)¶
补丁文件为 patches/computer-use.patch,对应上游提交记录在 patches/computer-use-base.txt。仅对该提交应用补丁、安装依赖并运行上游 pnpm run build,以同时重建 JavaScript 与 native 产物;须本地构建 native helper,仓库不提供未经审阅的预置可执行文件。测试含独立 Swift 路由策略检查。
验证与能力边界¶
npm test 覆盖 hook 行为、不支持 runner 时的处理,并检查 macOS 内核是否拒绝 TCP socket、拒绝工作区外写入且允许工作区内写入。纯 Swift 策略检查会拒绝非活动、未观察、不可信或无效的键盘目标。
README 明确:本套件不是通用语义防火墙;靠正则识别命令仅为建议性,内核规则仅作用于宿主 confine 的进程。Browser、MCP、GUI 与插件能力各自需保持审批。公开发布、支付与破坏性操作仍需显式授权。Unix 域套接字仍可用(例如 LibreOffice 本地 IPC),这不构成对本地协作服务的出口边界;工作区内可被 agent 写入的文件也可能被其他进程读取。项目不声称关闭所有 IPC 或间接行动通道。观察结果与未决用例见 VALIDATION.md。
适用场景与注意¶
适合在 macOS 上跑 DSH 0.1.5-rc.2、希望把「二次确认 + 收紧 shell 沙箱 + 记忆库升级前自检 + 离线 Office 预览」捆成可测套件的管理员或安全取向开发者。插件以当前 DSH 进程权限运行;安装前请自行审阅源码与 MIT 许可证,勿将用户凭据、会话日志、个人文档或生产 memory 库放入该仓库(项目亦如此要求)。
结尾¶
dsh-second-agent-kit 把 macOS 上若干与 DSH 智能体相关的加固拆成可 npm test 的模块,并在文档里写明 Engram 基线、computer-use 失败结论与沙箱边界。进一步了解可从 SkillHub 目录页或 GitHub README(含繁体中文版 README.zh-TW.md)入手。
- 目录:https://www.skillhub.cn/plugins/Chih-Kai-Wang/dsh-second-agent-kit
- 仓库:https://github.com/Chih-Kai-Wang/dsh-second-agent-kit