deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness 侧边栏「文件视图」独立插件 —— 「视图选项」菜单新增「查看内容」切换, 对话视图 / 文件视图一键切换;文件视图可浏览工作区目录,并在内嵌 TTY 中 运行 / 调试脚本(按扩展名解析解释器,Python 支持简化版断点调试)。
🤖 纯 AI 创作声明:本仓库的代码与文档均由 AI(DeepSeek 大模型)独立创作完成, 未经人工编写或人工代码评审。功能经单元测试(含真实 Python 断点集成测试)与类型检查验证, 请谨慎用于生产环境。
Ctrl+S)才写回磁盘,未保存时文件名旁有 ● 标记;.md / .html 文件提供 【编辑|预览】 切换。通用设置新增「文件查看缓存」开关(默认关闭):开启后侧栏顶部显示标签页,可缓存多个文件并快速切换,不用回文件树翻找。.py/.js/.ts/.sh/.ps1/.bat/.cmd/无扩展名可执行文件等),文件行悬浮显示 ▶ 运行 / ⏱ 调试 / ⚙ 配置。KEY=VALUE)、启动参数。DSH 的「视图选项」菜单与「输入框」分别位于 ui-workspace / ui-conversation 内部、没有运行时扩展点,
因此本插件采用 「独立插件包 + 最小槽位补丁」 的组合(DSH 的组合惯例:owner 声明 hole,插件填充):
| 部分 | 内容 |
|---|---|
plugin/(本仓库) |
独立双面插件包 @deepseek-ai/dsh-workspace-file-view:node 半用 ctx.webServer 自注册 /fileview/* 路由(列目录 / 重命名 / 新建 / 读取与写入文本 / 运行 / TTY 交互 / SSE 流,并注册 settings namespace,不依赖 directory-picker 与 apiproxy);browser 半填充 sidebar.workspaces.viewContent 槽位(文件树 + 内嵌 TTY + 运行/调试 UI)、提供 fileRefs 服务并填充 conversation.input.refs 槽位(引用块)、填充 conversation.details.editor 槽位(右侧栏编辑器)与 settings.general.item 槽位(文件查看缓存开关) |
patch/ui-layout.diff |
最小布局补丁:ctx.layout.openDetails() 接受可选宽度,编辑器请求更宽敞的右侧栏 |
patch/ui-conversation.diff |
最小槽位补丁:声明 conversation.input.refs(引用块)与可选 fileRefs 服务、发送时折叠目录树;声明 conversation.details.editor 子槽位,并在编辑器打开时让详情面板整列让位给编辑器 |
patch/ui-workspace.diff |
最小槽位补丁:ui-workspace 声明 sidebar.workspaces.viewContent 子槽位、菜单渲染「查看内容」开关、列表区挂载槽位 body |
patch/ui-primitives.diff |
Menu 组件支持开关行(role="menuitemcheckbox" + 胶囊视觉) |
examples/cordis.patch.yml |
web profile 补丁:挂载插件行 |
scripts/ensure-registry.mjs |
安装引导:npmjs 下载过慢(<700 KB/s)自动切换 npmmirror 国内镜像 |
本插件现在是标准 DSH bundle(
package.json的dsh.bundle.patch+ 随包cordis.patch.yml), 可通过dsh plugin add安装;也仍支持源码组合安装(下面的「源码组合」路径)。
发布到 npm 后:
pnpm dsh plugin --profile web add @deepseek-ai/dsh-workspace-file-view
本地未发布版本可以直接 link::
pnpm dsh plugin --profile web add link:/path/to/dsh-workspace-file-view/plugin
dsh plugin 会把这个包加入 profile 的 dsh.profile.bundles,启动时自动应用它自带的
cordis.patch.yml(无需再手写 insert)。如果你此前按旧方式在
~/.dsh/profiles/web/cordis.patch.yml 里手动写过 id: workspace-file-view 的 insert,
请先删掉那一行,避免重复 id 冲突。
pnpm install 从默认 npmjs 源拉取大体积可选二进制时,远距离用户常遇到下载过慢甚至超时
(pnpm error 23,整个安装卡死)。仓库内置了自动测速 + 自动切换国内镜像的引导脚本:
node scripts/ensure-registry.mjs
脚本会:探测当前 pnpm 源的实际下载速度(默认阈值 700 KB/s,可
DSH_REGISTRY_SPEED_THRESHOLD_KBPS=… 覆盖)→ 低于阈值自动执行
pnpm config set registry https://registry.npmmirror.com 并打印还原命令;
已是国内镜像则跳过;只想测速不改配置用 DSH_REGISTRY_PROBE_ONLY=1。
把 plugin/ 目录复制到检出的 packages/extensions/workspace-file-view/。
git apply patch/ui-workspace.diff
git apply patch/ui-primitives.diff
git apply patch/ui-conversation.diff
git apply patch/ui-layout.diff
pnpm install
pnpm run typecheck # 类型检查
pnpm run build:lib:client # 重建客户端插件包(lib/client.js,含本插件、ui-workspace 与 ui-conversation)
pnpm run build:web # 重建 Web 前端(ui-primitives 是 platform 模块,打进 dist)
把 examples/cordis.patch.yml 的内容写入 ~/.dsh/profiles/web/cordis.patch.yml。
pnpm dsh web
# 打开 http://127.0.0.1:3080
# 左侧边栏 → 视图选项 → 查看内容 → 文件视图
# 文件行 → ▶ 运行 / ⏱ 调试(Python 断点)/ ⚙ 配置 / ✎ 重命名(悬浮)
# 文件夹行 → 右键:新建文件 / 新建文件夹;文件行 → 右键:引用到输入框
Ctrl+S)写回磁盘;.md/.html 文件可用 编辑|预览 切换。通用设置 →「文件查看缓存」开启后,侧栏顶部出现标签页缓存多个文件;标题栏最右 × 关闭文件,左边缘按钮收起侧栏但保留缓存。sys.settrace 追踪器);Node 行级断点需要 Inspector/CDP 集成,列为后续。subprocess 的 PTY 能力(base bundle 已内置,Windows 走 ConPTY)。maxEntries 决定(默认 1000)。maxEditBytes 可调)拒绝编辑;保存快捷键为 Ctrl+S(请求中写为 Ctrl+V,但那是粘贴快捷键,故按惯例实现为 Ctrl+S,如需调整请告知)。@codemirror/*、@lezer/*),随插件客户端包内联分发。pnpm exec vitest run packages/extensions/workspace-file-view/tests
pnpm exec vitest run packages/client/ui-workspace/tests/workspace-browser.client.spec.tsx
pnpm exec vitest run packages/client/ui-primitives/tests/atoms.client.spec.tsx
包含:解释器映射、目录列表、TTY 会话注册表、客户端组件(文件树/内嵌 TTY/调试控件), 以及一个真实 Python 断点集成测试(无 Python 时自动跳过)。
MIT —— 基于 deepseek-ai/deepseek-harness(MIT)衍生。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。