937862061/dsh-project-workbench0

dsh-project-workbench

Local project, requirement-group, and conversation workbench for DeepSeek Harness Web and Desktop

包名
dsh-project-workbench
版本
0.1.0
许可证
MIT
最近更新
2026年8月23日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:937862061/dsh-project-workbench

项目工作台

中文文档 English documentation

项目工作台是 DSH 侧边栏上的一个插件:把同一个需求相关的多个对话归到一组,统一管理进度和记忆,不用再在会话之间反复解释背景。

它解决什么问题

  • 一个需求常常要开好几个对话分别做分析、实现和验证,每换一个对话都要重新交代一遍背景。
  • 侧边栏按时间排会话,看不出哪些对话属于同一个需求、做到哪一步了。

怎么用

打开工作台:点击侧边栏底部的「项目工作台」按钮,展开或收起工作台。

建组:选一个项目,点「新建需求组」起个名字(比如“登录重构”),把同一需求的对话都放进来。

加对话:组内的「+」下拉框——

  • 「新建对话」:像原生新建会话一样,在组里立刻开一个新对话;
  • 其他列出的都是还没加入任何需求组的已有对话,点一下即可归入。

管对话:每个对话右侧的「⋯」可以重命名、分叉(在最后一步继续开新线)、归档,或移出当前组(方便换到别的组)。对话运行时,行首会有和原生侧边栏一致的动态指示。

记记忆:每个组有「摘要 / 改动点 / 证据」三层备忘。摘要会自动带进组内对话的下一次请求,模型不用你重新解释背景;改动点和证据按需查看、复制。

收尾:需求做完直接归档需求组,组内对话会一并归档。

界面预览

项目与需求组

项目选择、需求组与组内对话

渐进式组记忆

组记忆的摘要、改动点和证据层

折叠状态

折叠后的项目工作台入口

安装

插件需要使用包含 @deepseek-ai/dsh-web-app 的配置文件。

pnpm dsh plugin --profile web add ./plugins/dsh-project-workbench
pnpm dsh --profile web

数据说明

  • 所有数据只保存在当前设备的 DSH 数据目录中,不会上传,也不会跨设备同步。
  • 界面文案会跟随 DSH 当前语言自动切换。

技术介绍

插件由浏览器半与宿主半组成,通过公开的 Cordis 插槽与宿主服务接入,不接管原生侧边栏、会话或输入框。

接入面

  • 浏览器半(client.jswindow.__ModuleLoader__ bundle)注册两个插槽:
    • sidebar.footer.action(order 20):侧边栏 footer 的“项目工作台”入口按钮,与设置、插件面板按钮样式统一;
    • shell.overlay:工作台面板本体(全高 320px 列),通过测量 overlay 前的兄弟列定位在原生侧边栏右侧,并在中间对话列预留同宽空间。
  • 宿主半(index.js)通过 webServer 注册本地路由,并在 agent/pre-step 挂载摘要注入。

宿主路由

  • GET/PUT /project-workbench/state:工作台状态的读写,持久化到当前 profile 的 project-workbench/state.json
  • POST /project-workbench/create-session:经 ctx.apiProxy.sessions.create 真正铸造一个新会话(复用浏览器端的空白会话扫描,仅在没有可复用空白时调用)。
  • GET /project-workbench/session-summary?sessionId=:读取会话首条用户消息(firstUserMessageSummary,纯函数,240 字符截断),用于组记忆播种。

数据模型

状态结构为 projects[workspaceId].groups[],每个需求组包含:idnamestatus(进行中/待验证/已完成)、archivedAtsessionIdsmemory { summary, changes, evidence }。浏览器本地存储仅作离线缓存与旧数据迁移来源。

组记忆注入

agent/pre-step 在组内会话的第一步模型请求前,把当前组摘要作为带来源标识的上下文消息([project-workbench-memory group=… revision=…])加入请求;同一 revision 不会重复注入,摘要更新后下次请求自动带入新版本。

会话行为

  • “新建对话”遵循原生 New Chat 语义:优先复用当前项目尚未发送过消息的空白会话(空白会话不显示时间、不累积),否则经宿主网关新建;
  • “添加已有对话”仅列出未被任何需求组认领、未归档的会话;
  • 组内会话行支持重命名、分叉(ctx.sessions.fork)、归档(ctx.workspaces.archiveSession)与移出需求组;运行状态指示与原生一致。

设计稿与产品边界见 docs/design.md