dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
VS Code 风格代码编辑器:侧边栏文件树浏览工作区,Monaco 编辑,文件读写,Git 状态与差异,搜索与 Markdown 预览。
一个运行在 DeepSeek Harness (DSH) 里的 VS Code 风格代码编辑器插件:在会话主区新增一个「文件」标签页,提供文件树、Monaco 编辑器、跨文件搜索/替换、Markdown 预览、Git 状态等能力。
以**标准 Cordis 插件(npm 包)**形式分发,可通过 dsh plugin add 一键安装、重启后依然生效。
M/A/??…),点击角标查看 diff。Ctrl+P 按相对路径模糊匹配。Ctrl+点击(macOS Cmd+点击)直接切到「文件」页并打开。dsh plugin --profile web add git@github.com:yangshen830-eng/dsh-editor.git
dsh plugin --profile web add file:/path/to/dsh-editor
dsh plugin --profile web add dsh-editor
安装后重启 DSH(dsh web --profile web)即可在会话主区看到「文件」标签页。
说明:
dsh plugin add会把包加入dsh.profile.bundles,profile 启动时依据本包的dsh.bundle.patch(cordis.patch.yml)挂载 Host 端,并依据dsh.client声明加载浏览器端。客户端模块表的扫描结果在进程内缓存,因此插件集变化需重启 DSH 生效。
dsh-editor/
├── lib/
│ ├── index.js # Host 端(Node 进程:fs/git/subprocess 搜索后端 + /editor RPC)
│ └── client.js # Client 端(浏览器:UI、Monaco、搜索、预览,经 /editor RPC 调 Host)
├── cordis.patch.yml # dsh.bundle.patch:把 Host 端插件行 insert 进 profile
├── package.json # dsh.bundle.patch + dsh.client 声明
├── src/ # 动态插件(dynamic Cordis Plugin)形式的等价源码,供参考/单会话快速安装
├── install/INSTALL.md # 安装与迁移说明
├── README.md
└── LICENSE
DSH 的浏览器 UI 插件由两半组成,通过 npm 包的 dsh 字段声明挂载:
lib/index.js):标准 Cordis 插件,inject: ['connection'],在 apply 里用 ctx.connection.rpc.handle('/editor', handler) 暴露私有 JSON RPC。fs:*(文件读写/列举/项目根/搜索)、git:*(状态/diff)各端点走一个 dispatch 表。lib/client.js):window.__ModuleLoader__.load(...) 模块,require("react") 拿 React,inject: ['slots', 'connection', 'timer', 'sessions'],用 ctx.connection.rpc.call('/editor', endpoint, payload) 调 Host,用 ctx.slots.inject 注册「文件」标签页与设置页;sessions 服务提供当前会话的 cwd,作为文件树默认根。两半之间只传输可 JSON 序列化的数据。
src/ 动态插件源码src/host.js 与 src/client.js 是同一编辑器的动态插件(dynamic Cordis Plugin)形式源码,适合临时试玩:在一个 DSH 会话里让 Agent 用 cordis_define + cordis_run 安装即可,无需改 profile。缺点是不落盘、进程重启即失效。详见 install/INSTALL.md。