dsh-codex-project:DSH 工作区共享子目录插件

前言

DeepSeek Harness(DSH)的插件生态强调模块化与安全性。在处理跨目录项目时,开发者常面临两难:要么授予模型 danger-full-access 权限,风险较高;要么通过繁琐的手动授权操作,效率低下。dsh-codex-project 插件源自 Codex 的项目处理思想,它允许一个工作区挂载任意数量的共享子目录(支持跨盘符),并且全程保持 workspace-write 权限,无需升级到 danger-full-access。

核心功能

该插件主要包含以下能力:

  • 共享子目录配置:支持跨盘符挂载,支持裸目录(非注册工作区)。
  • GUI 交互:提供「编辑工作区」弹窗、「项目文件夹」侧边栏 Tab、「打开本地目录」入口。
  • 运行时安全:多根沙箱 runner 与多根 fs fence,确保子目录读写在 workspace-write 边界内。
  • 上下文管理:会话上下文提醒,在模型推理时折叠列出共享目录清单。
  • 管理与持久化:支持配置的 CRUD 操作,数据持久化存储。
  • 交互工具:提供 add_dir 模型工具与 /adddir 指令,支持用户与模型主动添加目录。

工作原理

插件通过 Cordis(DSH 的 IoC 框架)提供的钩子切入 DSH 运行循环,不侵入源码。

  1. HTTP 路由桥梁:启动时挂载 /codex-project/api 路由,client 通过 fetch 调用,host 处理配置 CRUD 与文件读写。
  2. 上下文注入:监听 agent/pre-step 事件,根据当前会话命中的配置生成 <system-reminder> 消息,告知模型可写的目录集合。
  3. 工具注册:注册 add_dir 模型工具,模型可调用此工具请求添加目录,经用户确认后生效。
  4. 沙箱包装:wrap sandbox.confine 方法。无共享目录时透传;有多根目录时,使用 runner.js 创建受限令牌(Windows ACL + 空间级 SID),在令牌下执行子进程。
  5. FS 隔离:通过 ctx.fs 提供者(bundle patch)替换核心 fs-sandbox,在进程内通过 fs fence 按可写根集合放行或拒绝操作。

使用方法

1. 通过 GUI 添加/移除目录

在侧边栏的「项目文件夹」Tab 或工作区菜单的「编辑工作区」弹窗中,可以查看当前主根与共享子目录列表。点击「添加」或「移除」按钮,选择目标目录即可完成配置。使用「设为主要」可以改变目录在上下文提醒中的排序和标注。

2. 通过命令行添加

在 composer 中输入 /adddir 并回车。系统会弹出原生目录选择框,选中目录后直接加入当前会话工作区的附加可写集合。

3. 通过模型工具添加

模型在推理过程中可以通过调用 add_dir 工具请求添加目录。此时会弹出确认框,用户批准后,目录被写入 SQLite 数据库并立即生效。

安全与注意事项

  • 权限不升级:插件全程保持 workspace-write 权限。它使用 Windows ACL 受限令牌和空间级 SID 来隔离不同根目录的权限,拒绝列表与空间级 SID 写授权确保不会越权访问其他目录。
  • 失效根处理:配置中的共享子目录如果被物理删除(失效),可写集合会自动收窄(仅保留现存根)。插件不会自动清理失效记录,但会在上下文提醒中标注 (⚠ directory missing)。
  • 根目录冲突:同一目录不能同时作为两条记录的 path。如果会话的 cwd 落在冲突目录,会命中配置文件中靠前的那条记录。
  • 无只读共享:当前版本所有根都授予读写权限,不支持只读共享功能。

配置与数据

配置文件默认存储于 SQLite 数据库:~/.dsh-codex-project/dirs.db。环境变量 DSH_CODEX_PROJECT_CONFIG 可覆盖该路径。

数据表 workspaces 的逻辑模型如下:

{
  "workspaces": {
    "<workspaceId>": {
      "path": "主根(该工作区自身的路径)",
      "dirs": ["共享子目录1", "共享子目录2"],
      "primary": "展示层主要根(可选)"
    }
  }
}

源码与文档

  • GitHub 仓库:https://github.com/luoxunhao/dsh-codex-project
  • 社区目录:https://www.skillhub.cn/plugins/luoxunhao/dsh-codex-project
  • 许可证:MIT
羽毛球分组比赛记分
小程序二维码

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

小夜