zuoguyoupan2023/openharness-reader ↗★ 0
openharness-reader
OpenHarness Reader — workspace file browser/editor with Markdown preview for DeepSeek Harness Web
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zuoguyoupan2023/openharness-reader说明文档
阅读完整 README ↗openharness-reader
OpenHarness Reader —— DeepSeek Harness Web 的工作区文件阅读/编辑器插件(平行项目,非壳功能)。
规划文档:000-file-editor-plugin.md(本仓库内跟踪)。
路线
| 里程碑 | 内容 | 状态 |
|---|---|---|
| M1 | 骨架:package.json + cordis.patch.yml + host/client 两半 + esbuild;注册 details 面板(占位) | ✅ 2026-08-14 |
| M2 | 文件浏览:host fs RPC(list/stat/read)+ client 树/列表 | ✅ 2026-08-14(v0.2.0) |
| M3 | 编辑保存:CodeMirror 6 + ctx.fs 写回(版本守卫 + 冲突提示) | ✅ 2026-08-14(v0.2.0) |
| M4 | Markdown 渲染预览(GFM + 高亮) | ✅ 2026-08-14(v0.2.0) |
| 挂载方案改方案 1 | 彻底弃用 details 槽:client 改为 body portal + fixed 定位面板(照 DSH-better-sidebar);per-session store 管布局;apply 全包 try/catch + 错误条兜底;唯一官方槽位 = settings.section(list 槽) | ✅ 2026-08-14(v0.3.0) |
| M5 | npm 发布 + 壳 AUTO_INSTALL_PLUGINS 预装 | ⏳ |
功能(v0.2.0 · M2–M4;v0.3.0 改挂载方案)
- 文件浏览:右侧 fixed 面板按当前会话 workspace(cwd)懒加载目录树;目录点击展开、文件点击打开;文件名过滤;目录优先排序;面板可拖拽调宽 / 收起 / 窄屏抽屉(per-session 布局)。
- 编辑保存:CodeMirror 6(JS/TS/JSON/Markdown/Python/CSS/HTML/XML + shell/yaml/toml/sql 等 legacy 模式);保存走
ctx.fs.writeText,以读取时版本做replaceIfVersionCAS —— 磁盘文件被外部(如 agent 工具)改动时弹出冲突对话框:重新加载 / 覆盖保存。 - Markdown 预览:marked(GFM:表格/删除线/自动链接)+ highlight.js 代码高亮;
.md文件支持 编辑 / 预览 切换;预览容器带data-adhdgofly-highlight属性契约,已装 adhdgofly-dsh-ext ≥ v0.1.2 时自动获得词性高亮(名绿/动红/形紫/其他灰,与对话共享色板/筛选/主题)。 - 树滚动(v0.3.3 修复):浏览器视图为 flex 列(
.ohr-browser),文件树overflow:auto真正生效,深目录可上下滚动;编辑器视图滚动不受影响。 - 挂载稳定(v0.3.4 修复):面板 Shell 的
useSyncExternalStore无条件调用(修复 hook 数量突变导致的Uncaught TypeError: Cannot read properties of undefined (reading 'length')——sessions 服务晚就绪时面板不挂载/半挂载),会话何时就绪都能稳定显示。 - 只读保护:超过
maxReadBytes(默认 5 MB)的大文件与二进制文件(FS_NOT_TEXT)只读打开。 - 策略一致:host 读写全部走
ctx.fs缝隙,并派发fs/write-intent/ / 事件(actor 携带会话),与 agent 的 fs 工具共享观察状态与守卫。