Files
dsh-worktable/README.zh.md
T

13 KiB
Raw Blame History

dsh-worktable 🖥️

English · 简体中文

DeepSeek Harness 的 agent 项目工作台——侧边栏「应用抽屉」把每个项目变成可停靠的窗口,再加一个实时监控所有项目的内置「控制室」。

当前源码为 0.5.0,公开状态以 GitHub Release 为准:接口身份校验、项目网页隔离、预览读取限制、小数分栏修复及折叠侧栏弹窗补全。Windows 隔离网页端已测 DSH 0.2.0-rc.2 / 0.2.1-rc.3;用户已在官方 Windows Desktop 0.2.1-rc.3 验证 dev.2 的项目打开、分栏缩放和侧栏设置弹窗。正式包安装/回归与候选 GUI 证据分开记录,不宣称全功能验收。0.1.x 不在本版支持范围。浏览器存储、登录、WebGL 贴图及标注自动取字可能受隔离影响,详见 兼容与安全说明。下方 v0.4.0 内容为历史发布记录。

📸 截图

控制室主界面 🖥️ 控制室主界面 —— 内置默认项目:实时卡片网格监控每个项目(工作中 / 待你决定 / 已完成),蓝图网格上的玻璃拟态卡片
工作台侧边栏 🧩 工作台侧边栏 —— 应用抽屉:项目、快捷方式与固定首位的控制室入口
我们的项目 🪟 我们的项目 —— 每个项目打开为可停靠的分栏工作区(含旅行 Atlas 等入驻应用)

✨ 功能导览

🧩 侧边栏应用抽屉

  • 收纳你的自建项目(以及 dsh-travelatlas 等入驻插件项目)
  • 项目支持改名 / 图标 / 排序 / 隐藏;每个项目有专属文件夹;项目 ↔ 对话绑定——打开项目时右侧对话窗自动切到其绑定对话
  • 收起侧边栏后,每个项目变成可点击的方形小贴片(只留 emoji)

🪟 可停靠的分栏工作区

  • 声明式布局预设(左栏 / 顶行 / 主网格 + 右侧对话窗)
  • 可拖拽分割线、窗格标签页、按布局持久化的宽度记忆
  • 内置窗格:文件资源管理器、终端、浏览器、动画站点、自定义窗口
  • 自定义窗口:把需求发给新建或已有对话,agent 完成后产物自动挂载进对应窗口(锁死)

🖥️ 控制室(内置默认项目)

  • 固定在首位的不可删除项目——首次打开绑定一条管理对话即可
  • 可调列数的卡片网格镜像可见项目的状态:工作中 / 待你决定 / 已完成,附带可用的运行时长与清洗后的最近消息预览
  • 宿主会话快照的事件订阅镜像;状态监控不调用模型
  • 玻璃拟态卡片、深色/白色/跟随系统主题、霓虹状态光效与工作中卡片的旋转彗星光点

一览

🧩 插件类型 Cordis 插件——服务端路由 + Web 客户端,纯增量(不替换任何官方插件)
🪟 工作区引擎 自研分栏引擎,渲染进宿主的 shell overlay 座位
💬 对话窗 复用宿主对话,导航接宿主新版或旧版会话接口
📡 状态数据 宿主会话运行时快照的镜像(订阅驱动)
💾 状态存储 项目/布局/绑定存 localStorage,媒体存 IndexedDB;文件窗访问已配置项目目录
🎨 界面 TypeScript + React(宿主 external)+ 原生 CSS,暗色优先 + 浅色主题

快速开始(已发布 v0.4.0)

v0.4.0 在下述已测范围内增加 Windows 官方桌面端支持。网页端兼容声明仅列 DSH 0.1.1-rc.2 / 0.1.2-rc.1 / 0.2.0-rc.2;桌面已测范围为 Windows 官方桌面端 + 0.2.0-rc.2。桌面页面点测与定向回归不等于最终包完整桌面端业务验收;旧版沿用此前页面验收并补代码回归,未重跑整套旧版 GUI。升级前备份重要数据并核对其他插件,公开发布状态以 GitHub Release 为准。

  1. 安装(二选一):

    A · 一行命令(推荐) —— 直接安装 GitHub Release 的安装包,无需 Git:

    dsh plugin --profile web add "https://github.com/Aisland-SJL/dsh-worktable/releases/latest/download/dsh-worktable.tgz"
    

    B · 本地克隆(想改源码用) —— link: 只接受本地绝对路径(路径不要带空格):

    git clone https://github.com/Aisland-SJL/dsh-worktable.git
    dsh plugin --profile web add "link:<克隆出来的 dsh-worktable 仓库目录的绝对路径>/01_content"
    # 例:克隆到 D:\tools 后 → dsh plugin --profile web add "link:D:/tools/dsh-worktable/01_content"
    

    两种方式 add 都会把 dsh-worktable 注册进 profile 的 bundle 列表(写入 ~/.dsh,可能需要授权确认);若提示找不到 dsh 命令,用 npx @deepseek-ai/dsh 代替。

  2. 重启 DSH web 进程并刷新界面

  3. 打开控制室:点击固定首位的 🖥️ 控制室卡片 → 绑定一条对话(加入现有或新建)→ 得到实时卡片网格

  4. 创建项目:侧边栏 + → 选布局预设、填项目文件夹

Windows 官方桌面端

先保存任务,从应用菜单/托盘完整退出(只关窗口不够);将安装目录占位符替换为实际位置,在 PowerShell 执行,再手动重新打开:

& "<桌面端安装目录>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "https://github.com/Aisland-SJL/dsh-worktable/releases/download/v0.5.0/dsh-worktable-0.5.0.tgz"

必须使用桌面端自带 CLI 与 desktop profile,不用不固定版本的 npx 或网页 CLI 代替。保留实际 DSH_HOME;即便共用会话数据目录,网页与桌面来源的项目/布局/媒体也不会自动同步。

自定义窗口明确选「未分组」时不再偷偷加入宿主分组。控制室新建的是空对话:已测 DSH 0.2 的未分组空对话不能使用原生输入框,因此插件提示并禁用这一创建,请自行选分组或加入可用的现有对话;不自动改组、不发送激活消息。现有分组未选具体项时也不退回默认分组,旧宿主未分组创建行为保持。


架构

一个包同时包含宿主 Cordis 插件与 Web 客户端:

  • 宿主:/api/worktable/* 路由——健康检查、文件系统、git、文件读写、站点托管、mkdir、工作区、原生皮肤模板;WebSocket /api/worktable/term 提供终端窗格(Windows 下为 PowerShell)
  • 客户端:经 slot 协议注入侧边栏与 shell overlay;分栏引擎、标签模型、拖拽与持久化均为自研
  • 控制室:读取宿主会话列表快照(运行中/待决/已完成、后台任务、子代理目录)——事件驱动镜像,模型不参与
  • 窗口任务:「自定义」任务登记项目/窗格/绑定身份,agent 在 .dsh-worktable/project-<项目 ID>/ 下写专属结果;新项目不因共用文件夹而继承其他项目的窗口内容

开发与测试

cd 01_content
npm install
npm run build     # lib/index.js + lib/client.js
node --check lib/index.js
  • 构建必须在 01_content 内执行——在仓库根构建会把 lib 写到错误位置,宿主仍加载旧 bundle
  • 客户端 bundle 保持 window.__ModuleLoader__.load 握手;react 与 @deepseek-ai/* 全部 external
  • 历史诊断 04_test/functional-diag.cjs 与专项探针有本机路径/端口假设,运行前先核对,限定隔离 profile; 发布流水线内嵌:分栏锚点 DOM 回归 04_test/anchor-dom.test.mjs(14 场景,含小数几何)与 数据目录解析回归 04_test/server-home.test.mjs(3 组场景,无循环/路径展开/官方分支夹具)
  • 发布打包唯一入口为 npm run pack,含 122 项源码回归、独立安装与客户端工厂门禁;安装产物另跑侧栏弹窗、14 项锚点、5 项真实 Chromium 与数据目录回归。npm run test:sidebar 可单跑弹窗;npm run test:widget 为 26 项归属/会话隔离/补挂回归。批准发布后,用 npm run verify:remote -- --expect-sha <最终 SHA> <发布 tag> 核对,并另查 latest。

常见问题

Q:DeepSeek Harness 更新后,工作台打不开 / 服务启动失败?

项目、绑定和布局存在浏览器 localStorage,媒体存在 IndexedDB,项目文件保存在自己的项目目录。更改安装前先备份重要数据;需要保留工作台状态时,应保持原浏览器来源,不主动清空浏览器存储。

情况 A:Harness 正常,只是工作台需要更新

  • 打开工作台「设置」→ 点「立即检查」;侧栏「工作台」旁出现琥珀色更新徽标时,点它选择「复制 AI 提示词」,把那段话发给你的 AI 助手执行即可;

  • 网页端可重跑安装命令(安装最新已发布版本),装完重启 dsh web 并刷新;桌面用户须用上方桌面安装步骤:

    dsh plugin --profile web add "https://github.com/Aisland-SJL/dsh-worktable/releases/latest/download/dsh-worktable.tgz"
    

情况 B:Harness 本身挂了(服务起不来 / 报 Failed to load plugins)

  • 记录实际 DSH 版本、插件版本、profile/数据目录位置和第一条完整错误;完整退出重启后再判断。
  • 缺少导出、模块导入失败时,要核对报错所指插件与宿主版本。新版宿主可能改变接口,盲目全部升级不能代替定位原因。
  • 上级 node_modules 目录链接曾用于某个旧版 link: 加载问题,不是通用修法。不要直接创建;已有链接应在确认插件无依赖后再移除,只删链接并保留目标目录。
  • 模型请求返回 HTTP 400 属于独立的请求问题,本工作台发布包不包含宿主层面的对应修复。

指哪打哪标注 📌

每个窗口标题栏折叠键旁边有一个小标注按钮(对话框+加号)。点击后鼠标变成蓝色小冒泡——在任意窗口里点一下想指的位置,会弹出输入框,写下你要的改动(如"把这里的文字放大一点"),点 ✓。这条消息会打包好(窗口编号 + 坐标 + 被点的元素 + 你的要求),填入聊天输入框但不发送——你按回车发出后,AI 会按标注协议处理(能看截图/打开窗口就先核实,不能看就只问一条关键问题确认位置,而不是瞎猜)。

  • 指一下 + 说一句话,不用口头描述位置。
  • 载荷自带说明:任何会话、任何 AI 收到都能按协议配合。
  • 窗口级标注可用;隔离网页内部文字/DOM 读取受限,缺失时应描述目标或提供截图。
  • 同批打磨:控制台新增第 5 键「更新公告」(版本说明/检查更新/复制升级命令);自定义背景媒体库开箱自带两张默认预设图(极光渐变 + 海岸风景)。

已知限制

  • 网页隔离可能影响存储、登录及 WebGL/Cesium 贴图。StarMap 月球纹理已在独立项目中修复,不包含在工作台包中;新项目成功不能证明所有旧网页都兼容。

  • 平台:本版范围见页首与兼容说明。dev.2 已通过用户指定的桌面交互检查,不能外推正式包全部业务;macOS 尚未真机验证。

  • 状态在浏览器本地(localStorage 与 IndexedDB)——项目、绑定、视图与媒体不跨设备同步

  • 终端窗格在 Windows 上是朴素的 PowerShell 宿主(与原生终端应用无 PTY 对等)

  • 自动挂载要求已登记「自定义」任务且写出身份匹配的 v2 结果文件。旧已保存窗口保留,根目录旧 widget-result.json 不再导入;旧对话可从目标窗口「自定义 → 发送到会话」发一次任务建立新关联,随后在同一对话直接继续修改。手动关闭/替换内容会撤销关联,此前误挂的标签需关闭一次。同目录项目若主动写同一个实际文件,文件内容仍可能互相影响。

  • 控制室只监控已绑定对话的项目;未绑定的项目显示为空闲


隐私

插件没有新增分析统计服务。更新检查对 GitHub Releases API 做只读请求,可在设置中关闭;插件还使用宿主 API/WebSocket、加载用户选择的网页,并提供可读写文件和联网的交互式终端。偏好与媒体使用浏览器存储。文件访问、终端继承环境变量等具体边界见权限与外部服务披露。


License

MIT

相关项目