前言¶
在使用 DeepSeek Harness (DSH) 进行 Agent 开发时,Agent 通常默认拥有对整个工作区的完全访问权限。这种全量可见性可能导致权限越界、误操作或暴露敏感目录。dsh-session-scope 旨在解决这一问题,它提供了一个独立的会话级工作区可见性层。
该插件的核心设计原则是:权限 != 范围。权限决定了 Agent 能对文件做什么(只读、写入或完全访问),而范围则决定了 Agent 能看到哪些目录。它允许在保持 Session 原始工作区不变的前提下,仅向 Agent 暴露选定的目录。
插件定位¶
- 名称:
dsh-session-scope - 维护者:
xarleyn - 分类:admin-security
- 核心价值:提供
full、focused、isolated三种会话作用域状态,通过代码层面的文件系统投影和 Linux 下的进程隔离机制,限制 Agent 的可见性与操作范围。
核心功能¶
- 权限与范围分离:独立管理权限(
read-only、workspace-write、danger-full-access)和范围(full、focused、isolated)。 - 会话级投影:通过
session-scope投影,过滤目录列表和搜索根目录,隐藏未选中的文件。 - Linux 进程隔离:在 Linux 后端,
isolated状态利用bubblewrap配置文件对 bash 和 PTY 创建进行强隔离,限制子进程行为。 - 命令支持:提供
/scope命令用于动态切换作用域状态。
安装与配置¶
该仓库已归档并设为只读。新的开发与发布已迁移至 xarleyn/dsh-plugins monorepo,发布包名为 @yadsh/dsh-session-scope。
旧的安装命令仍可使用,但建议使用新的包名:
npm install dsh-session-scope
或
npm install @yadsh/dsh-session-scope
前置要求:Node.js 20 或更高版本。
典型用法¶
安装插件后,DSH 会加载 cordis.patch.yml 并暴露服务。通过 /scope 命令设置当前会话的状态:
- 设置完全访问:
/scope full
- 设置聚焦范围:
/scope focused
- 设置隔离范围:
/scope isolated
同时,可以设置会话权限。例如,将权限设置为只读:
# 权限设置为 read-only
适用场景与限制¶
- 适用场景:需要精细控制 Agent 工作目录、防止 Agent 访问敏感配置文件、在多租户或沙盒环境中运行 Agent 的场景。
- Linux 依赖:
isolated状态依赖于 Linux 后端,且需要启用 bubblewrap 配置文件。在 macOS 或 Windows 后端上,isolated不可用。 - 进程限制:
focused模式仅限制 DSH 的文件服务,不限制任意 Shell 进程。只有isolated模式在 Linux 下能限制 bash 和 PTY 进程。 - 组合限制:
isolated状态目前不能与danger-full-access权限组合,否则会失败关闭。 - 许可证:上游目录选择器部分采用 MIT 许可证。
总结¶
dsh-session-scope 为 DSH 提供了基础的安全隔离能力。通过 /scope 命令和权限控制,开发者可以构建更安全的 Agent 工作流。目前项目已迁移至 xarleyn/dsh-plugins 仓库。