在 DeepSeek Harness (DSH) 的插件生态中,现有的权限模式通常包含只读、工作区写入和完全访问。当智能体需要执行系统级操作(如管理容器或修改内核参数)时,这些标准模式无法提供必要的权限。DSH Admin Bridge 插件通过引入第四种权限模式——Sudo 访问,解决了这一痛点。

插件介绍

zjlww/dsh-admin-bridge 是一个面向 Linux 环境的公共插件,专门为 DSH 0.1.2-rc.1 设计。它为 DSH 的权限选择器添加了第四种模式:Sudo access(即 Root 权限)。该插件允许智能体通过图形界面(GUI)密码对话框请求临时的 Root 访问权限,并在获得认证后执行命令。

核心功能

该插件主要提供以下能力:

  1. 第四种权限模式:在 DSH 的 Composer 选择器中增加“Sudo access”选项,图标为盾牌加钥匙样式。
  2. GUI 密码认证:智能体或用户通过调用 admin_request({}) 或在界面选择该模式,触发密码输入对话框。
  3. 任意 Bash 执行:认证成功后,默认开启 allowAllCommands: true,允许智能体执行任意 Root Bash 命令。
  4. 工具集:提供四个管理工具:
    • admin_status:读取当前模式状态、命令范围及配置的操作。
    • admin_request:请求 GUI 密码对话框(幂等操作)。
    • admin_run:执行命令或配置的操作(operationId)。
    • admin_lock:退出 Sudo 模式或取消待处理的请求。
  5. 配置化操作:支持定义特定的操作(如 whoami-root),在 allowAllCommands 为 false 时作为安全网。

安装与配置

此插件未发布到 npm,需通过 DSH 管理器从 GitHub 引入。

1. 安装插件

使用以下命令安装指定的已审核提交版本:

dsh plugin --profile web add 'github:zjlww/dsh-admin-bridge#<reviewed-commit>' --ignore-scripts

2. 配置 cordis.patch.yml

将以下内容合并到 Web profile 的 cordis.patch.yml 中。请注意,此配置定义了最大租约时间以及命令执行策略。

- id: admin-bridge
  config:
    maxTtlSeconds: 60
    # 警告:认证默认允许任意 Root Bash 命令。
    # 若仅允许配置的操作,请将下方设置为 false。
    allowAllCommands: true
    operations:
      - id: whoami-root
        label: Show effective user ID
        executable: /usr/bin/id
        args: ['-u']
        timeoutSeconds: 5

3. 兼容性修补

DSH 0.1.2-rc.1 硬编码了权限选择器。插件提供了一个兼容性扩展,需要手动修补 DSH 运行时。

首先,检查运行时是否存在兼容性问题:

node compat/permission-slot.mjs --check --runtime /path/to/dsh/runtime

如果检查通过,应用修补:

node compat/permission-slot.mjs --apply --runtime /path/to/dsh/runtime

修补完成后,重启现有的 DSH Web 进程,并刷新浏览器页面。

使用方法

请求 Sudo 权限

有两种方式触发权限请求:

  1. 界面操作:在 Composer 的权限选择器中选择“Sudo access”。
  2. 代码调用:在智能体代码中调用 admin_request({})。

注意:admin_request 本身不授予权限,只是打开对话框。认证通过前,之前的模式保持不变。认证通过后,会获得一个基于会话的临时 Root 能力。

执行 Root 命令

获得 Sudo 访问权限后,可以使用 admin_run 执行命令。

示例 1:执行任意 Bash 命令

admin_run({
  command: 'id -u',
  workdir: '/',
  timeoutSeconds: 5
})

示例 2:执行配置的操作

admin_run({
  operationId: 'whoami-root'
})

执行结果应返回 0,表示当前用户为 Root,无需在命令前添加 sudo 前缀。

适用场景与注意事项

适用场景

  • 需要智能体管理宿主机服务(如 Docker、systemd)。
  • 需要在非完全访问模式下,临时获取 Root 权限进行调试或修复。

注意事项

  1. 实验性与危险性:插件默认 allowAllCommands: true,允许执行任意 Root Bash 命令。这破坏了沙箱边界,可能导致主机被完全控制。请务必在可信的单用户环境中使用,并仔细审查配置。
  2. 环境依赖:仅支持 Linux。需要 Node.js 22+、Python 3.10+(位于 /usr/bin/python3)以及 sudo(位于 /usr/bin/sudo)。
  3. 认证限制:仅支持密码认证。不支持 MFA、requiretty 以及无密码 sudo。
  4. 无独立批准流程:该插件没有独立的“启用审批”步骤,密码输入即视为批准。
  5. 子代理限制:委托给其他智能体(子代理)的智能体无法请求、进入或继承 Sudo 访问权限。
  6. 密码安全:密码仅在认证时用于建立私有管道,不存储,也不在聊天记录中传递。

此插件为 DSH 带来了临时 Root 能力,但使用时必须严格遵守安全规范。