← 返回列表
未验证
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)的其他插件
扫码进群