DeepSeek Harness Hub
← 返回列表

invalidnaaaame/dsh-side-workspace

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek Harness DSH 插件:对齐 ChatGPT / Codex 三件套的设计——

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/23 · 已提供中文文档

DSH 插件:Codex 风格的侧边对话(/side、/btw)、集成的右侧工作区(Side/Subagents/Goal)以及 ChatGPT 风格的固定笔记板

综合分
28.9
GitHub 分
28.9
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add invalidnaaaame/dsh-side-workspace
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-timer@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-commands@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-side-workspace

DeepSeek Harness (DSH) 插件:对齐 ChatGPT / Codex 三件套的设计——
side conversations(侧会话)· integrated workspace(右侧集成工作区)· pinned notes(置顶摘要小黑板)

- 仓库名:dsh-side-workspace
- 插件 ID / npm 包名:@dsh-external/dsh-side(不变)

dsh-side-workspace 实机界面

免责声明:本项目是独立开源项目,与 OpenAI、DeepSeek 无关联,未获其背书或赞助。
"ChatGPT"、"Codex" 均为各自权利人商标,此处仅用于描述功能对齐关系。

官方术语对照(起名依据):

| 本插件功能 | 官方叫法 | 出处 |
| --- | --- | --- |
| /side 侧会话 | Codex side conversations | openai/codex#18190 |
| 右侧集成工作区 | ChatGPT Workspace(工作区) | OpenAI 工作区代理 |
| 置顶摘要小黑板 | ChatGPT Notes(消息笔记置顶) | Pin a Note to Any Message |

功能

1. 侧会话 /side — Codex side conversations

/side  把当前会话的完整历史以「边界上下文」方式 fork 到一条后台侧会话,主对话继续聚焦,两者互不阻塞;/btw  是一次性侧问(只读)。子会话是普通顶层会话(ctx.agents.create),继承父会话的 agent preset / model / cwd,并走部署自身的审批与沙箱策略——侧会话产出的内容永不回流到主对话日志。

- 默认 ephemeral:创建即归档,永不进入普通会话列表;空闲超过 TTL(默认 60 分钟)由主机侧定时清扫,运行中/等待审批的子会话永不过期;新的 /side 替换同父会话空闲的旧 /side。
- 清理是小型状态机(active → expiring → removed / cleanup-failed + 有界退避重试),失败的 dispose 不会丢失管理记录。
- 裸 /side 打开空侧会话:不注入任何问题,子会话以「等待输入」状态待命,直接在面板输入框提问;问完后状态恢复正常的运行/完成流转。
- 侧会话可选模型与思考强度:详情页顶部的「模型」行展开后按供应商分组列出模型,选中模型后出现该模型的思考强度(reasoning effort)选项;走宿主 session.selectModel,选择持久化在该子会话上、作用于其下一步。

2. 右侧集成工作区 — ChatGPT Workspace

会话头部开关打开壳的右列(details 列,主对话被挤压),内置分组列表 + 详情页:

- Side:该会话的侧会话列表(运行状态、活动行、失败/清理失败标记),点击进详情页(完整转录 + 可追问输入框;/btw 只读)。
- Subagents:会话的子代理目录(引用计数托管实时目录),运行徽标与面板同源。
- Goal:会话目标(暂停/继续/完成/清除,走 goal RPC)。
- 点击任意条目在同一右栏内打开详情页,左栏与主对话不动;Escape 逐级回退(详情 → 列表 → 关面板)。
- 新状态提醒:侧会话从运行中变为已完成/失败/清理失败时,主对话上方的面板小按钮会出现警示小圆点(未读数进 title 提示),打开面板即标记已读;打开会话时的既有历史是基线,不会重放成提醒。

3. 置顶摘要小黑板 — ChatGPT Notes

右侧工作区顶部的小黑板(自己的图钉按钮开关):收起是细条,展开编辑 标题 / 目标 / 一句话状态 / 下一步(可勾选)/ 决定 等分区。

- 用户编辑优先:本阶段 AI 不写黑板;每次编辑走与服务器同一个 CAS 领域函数(乐观本地应用 + 串行 PATCH 补丁)。
- 冲突处理:版本冲突自动回同步并暂存编辑,横幅 + 重试;补丁 ID 保证重试幂等;「响应丢失但已应用」按内容比对自动识别,不会重复写入。
- 持久化在 $DSH_HOME/dsh-side-boards.json(原子写、坏文件容忍降级),路由 /plugins/dsh-side/board(GET/PATCH/DELETE,同源、遵循部署既有访问规则)。
- 默认只是记录,绝不自动动 /goal:目标区的手动按钮才同步——无会话目标时 goals.create,已有时按投影 CAS 修订 goals.edit;下一步非空时以「下一步」清单附在目标文本后一起提交。

4. 边栏折叠热区(best-effort)

左侧边栏右缘内侧的拖拽条:向左拖过阈值 → 完全折叠到 56px 轨道,从轨道向右拖 → 展开。全部走主机自己的 toggleSidebar(),几何发现是结构性的(不遮蔽 sidebar 槽、不碰主机手柄与内部 store)。

安装(DSH web profile)

本插件是 bundle 型(声明了 dsh.bundle.patch):只能通过 profile 的 bundles 列表挂载——切勿再往 profile 的 cordis.patch.yml 里 insert 同一行(双挂载会响亮地失败)。改完需要你手动重启 dsh web(本插件不提供 HMR):

1. profile package.json 添加 link 依赖
"@dsh-external/dsh-side": "link:"
...并在同一 manifest 的 dsh.profile.bundles 列表注册 "@dsh-external/dsh-side"

2. 在 profile 目录 pnpm install
pnpm install --config.confirmModulesPurge=false

3. 重启 dsh web(浏览器刷新解决不了 stale 插件树)

配置

| 键 | 默认 | 说明 |
| --- | --- | --- |
| retention | ephemeral | ephemeral(归档 + TTL 过期)/ persistent(普通持久顶层会话) |
| idleTtlMinutes | 60 | 侧会话空闲过期分钟(1–1440) |

用法

/side    启动可追问的侧会话(后台运行,完成后右侧面板揭示)
/side          打开一条空侧会话,在面板里直接提问
/btw     一次性侧问(只读,不能追问)
/side list     列出当前会话的侧会话

示意图

UI 布局(三列网格 + 右栏工作区 + 小黑板 + 提醒点)

workspace-layout

架构与数据流(浏览器/主机半部 + 壳服务 + 生命周期)

architecture

实机截图(README 首图)存于 assets/screenshot-workspace.png;如需换图,
可在主对话开 1 个运行中的 /side、右栏展开小黑板时重新截一张全窗口图覆盖它。

架构

src/
index.ts              node 半部:创建/归档/清理状态机 + TTL 清扫 + web 路由
(/plugins/dsh-side/list、/last、/board)+ 命令接线
side.ts               fork 截断(宿主 fork RPC 契约)、模型继承、消息形状
prompts.ts            边界提示 / 人设 / 模式行(自写 /side 等价物)
registry.ts           父→子注册表 + 清理生命周期 + 纯 TTL/重试决策
board.ts              小黑板纯领域:分区、条目、CAS 补丁引擎、锁定保护、大小上限
board-persistence.ts  BoardStore:DSH_HOME 下单个原子 JSON 文件、每板保存链、补丁幂等
client/               浏览器半部:右栏工作区(Side/Subagents/Goal + 小黑板)、
转录数据层(分页历史读取 + 流式合并 + FIFO 缓存)、目录引用计数、
动作准入闸、会话围栏轮询、边栏折叠热区
tests/                  165 个单元测试(领域 / 持久化 / 客户端 store / 注册表 / 转录 …)

开发

pnpm install --config.confirmModulesPurge=false   # 见下方 link 说明
pnpm check    # typecheck(node + client)&& vitest && build

pnpm build 产出 lib/index.js(ESM node 半部)+ lib/index.d.ts + lib/client.js(CJS 浏览器半部,window.__ModuleLoader__.load 包装;react/cordis/dsh-client-* 外部化,lucide 按图标单文件引入,包体约 195kB / gzip 43kB)。

依赖说明:devDependencies 固定使用 npm 上公开发布的官方 @deepseek-ai/* 包(0.1.1-rc.2 线,与安装的 DSH 同源;cordis 走自己的 4.0.1 线、schemastery 3.18.1)。禁止用 npm 上无关的裸 cordis/schemastery 包冒充。pnpm-lock.yaml 不入库(每台机器重新生成)。

提示:部分网络下 registry 的 tgz 下载可能失败,重跑 pnpm install 即可(每次尝试都有进展)。

已知限制(诚实声明)

- 单 details 轨道:壳只有一条右列,小黑板与工作区纵向共用(无「双倍挤压」);真正的双挤压需要主机提供第二列。
- 无公开宽度 setter:壳的内部 layout store 已有 setSidebar/setDetails(钳制 264–420 / 300–520),但 ctx.layout 仍只暴露 toggleSidebar/openDetails/closeDetails——折叠热区维持 toggle 方案,等 setter 进入公开面。
- 侧会话注册表是进程内的:dsh web 重启后侧会话不再出现在面板(默认语义如此,见「保留契约」)。

Roadmap

- 侧会话图片输入(sessions.prompt 支持内联图片部分,composer UI 待做);
- 可选把黑板内容注入侧会话边界上下文(让侧会话照着目标/下一步工作);
- 黑板 AI 提案(owner: assistant-proposal 的数据模型与锁定保护已就绪,等提案入口);
- 边栏真自由拖拽(宿主内部 layout store 已有 setSidebar,等待暴露到 ctx.layout);
- 提醒扩展:子代理/目标阶段变化进同一未读队列;
- persistent 模式给子会话补 workspace 归属(fork spike 发现的缺口,见 docs/fork-spike.md)。

保留契约(改动前必读)

默认 ephemeral(对齐 ChatGPT 临时侧线程): 创建即归档(不进左侧会话列表)、注册表进程内(重启即忘)、空闲超 TTL 由主机清扫(运行中不扫)、清理失败可见重试。设 retention: persistent 恢复 0.2 之前的持久顶层会话行为。

许可

MIT,第三方声明见 licenses/THIRD-PARTY-NOTICES.md。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(invalidnaaaame)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群