dsh-sidechat

by realpkuasule

0 会话与消息github 检测到 manifest dsh.plugin.json收录于 08-17

DeepSeek Harness 的 Codex 风格侧聊:在输入框暂存所选内容(不自动发送)、一键新聊天、把回复带回主对话

Codex-style side chat for DeepSeek Harness: stage selections in the input (no auto-send), one-click new chat, bring replies back to the main conversation.

安装

dsh plugin --profile web add github:realpkuasule/dsh-sidechat

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

DeepSeek Harness(DSH)的 Codex 式侧边聊天网页插件:右侧面板提供按主会话隔离的独立 agent 聊天。基于 heartmove/dsh-side-chat(MIT)分叉修改。

English docs: README.md.

功能

  • 右侧面板侧边聊天——每个侧聊都是一个真实的 DSH agent 会话(隐藏、已归档),只属于发起它的那个主会话,并感知其工作目录。
  • 继承主会话上下文——工具集、模型、思考难度、权限预设与工作目录全部继承,且每个侧聊可单独调整。
  • 选中即问,默认不发送——选中主对话文本点「在侧边聊天中提问」,面板打开、内容写进输入框,按回车才发送("立即发送"可在设置里打开)。
  • 一键新建侧聊——面板右上角「+」按钮立即创建一个空侧聊并聚焦输入框。
  • 带回主会话——侧聊 AI 回复可整条或选中片段、直接或摘要后,写入主会话草稿框或注入为折叠上下文行。
  • 问题弹框侧聊——主 agent 弹出问题弹框时,可把问题与各选项带入侧聊先分析、不打断主流程,想清楚后把答案带回再作答。
  • 易用细节——面板可拖宽(280–720 px)与折叠、侧聊可单个/全部删除、「需要时查工作区/主会话」开关、界面跟随 DSH 中英文设置。

与上游(dsh-side-chat)的差异

  1. 选中内容注入输入框,默认不发送。sendImmediately 默认改为关闭;「继续在激活的侧边聊天中提问」会把选中内容追加到已有草稿而不是覆盖。
  2. 一键新建侧聊。面板头部新增「+」按钮,直接创建新侧聊。
  3. 更名为 dsh-sidechat(设置命名空间、记录文件、bundle id 等)。

其余能力与上游一致。

安装

从 GitHub 安装

dsh plugin --profile web add github:realpkuasule/dsh-sidechat

git 安装在安装时从源码构建。pnpm ≥ 10 会拦截构建脚本,第一次 add 会失败并提示"Ignored build scripts"——把提示里打印的包键复制进 profile 的 pnpm-workspace.yaml:

onlyBuiltDependencies:
  - dsh-sidechat

然后重新执行 add。重启 dsh web 并硬刷新页面(Cmd/Ctrl+Shift+R)后生效。

从本地源码安装

dsh plugin --profile web add ./dsh-sidechat

本地源码以软链接安装,改代码即生效,无需重装。

配套插件

dsh-side-notify 提供主动推送:侧聊面板旁「通知主 agent」悬浮胶囊与 /notify、/to-main 命令,把消息直接推给主 agent 作为其下一轮处理。

dsh plugin --profile web add github:realpkuasule/dsh-side-notify

使用

  1. 发起侧聊——选中主对话任意文本点「在侧边聊天中提问」(内容进入输入框、不发送),或打开面板点「+」。
  2. 独立聊天——按需调整每个侧聊的模型/思考难度/权限;需要更多上下文时打开「需要时查工作区/主会话」。
  3. 带回主会话——回复下方「直接带回 / 摘要后带回」(或选中片段),落点为草稿框或折叠上下文行。
  4. 从容回答问题弹框——主 agent 提问等待时,先在侧聊里把问题与选项分析清楚,再把答案带回作答。

设置

DSH 设置 → 侧边聊天(Side chat):

设置 默认值 说明
lookupDefault 关 新侧聊默认是否勾选「需要时查工作区/主会话」。
sendImmediately 关 打开时选中内容立即发送并附加 defaultPrompt;关闭时只写入输入框。
defaultPrompt (空) 「立即发送」时附加的提示词。
bringMode draft 带回内容的落点:写入草稿框,或注入为折叠上下文行。

实现原理

每个侧聊都是一个普通 DSH 会话:meta.parentSession 指向发起它的主会话,创建后立即归档,因此不会出现在会话列表或子代理目录。宿主侧(/sidechat/api JSON 路由)通过实时 agent(agent.followup)创建并驱动这些会话、继承发起会话的组合配置;带回主会话走 agent.inject 或主输入框。客户端是一个 portal 挂载的 React 面板,通过同源 POST 调用宿主路由,请求经过与 DSH API 网关一致的 loopback/可信主机围栏。

开发

pnpm install
pnpm build     # tsc -p tsconfig.build.json && tsdown → lib/
pnpm typecheck

lib/ 即产物:lib/index.js(host)、lib/client.js(profile 渠道)、lib/client-registry.js(插件注册渠道)。prepare 脚本执行同样的 tsdown 构建,因此 GitHub 安装可以直接从源码构建。

src/
  index.ts             host:/sidechat/api 路由、会话/agent 生命周期、转录折叠
  wire.ts              请求/响应工具
  trust-fence.ts       loopback / 可信主机请求围栏
  settings-shared.ts   宿主与客户端共享的偏好词汇
  context-types.ts     Cordis Context 类型增强
  client/
    index.tsx          client:面板、输入框、设置区、浮动菜单
    api.ts             client↔host API 类型
    locales.ts         中/英词典
    client.module.css  面板/输入框/设置样式
    layout.css         #root margin-right 随面板宽度
cordis.patch.yml       bundle 补丁层(dsh.bundle.patch)
dsh.plugin.json        外部插件清单
tsdown.config.ts       bundle 配置(client externals + CSS 内联)

许可证

MIT。基于 heartmove/dsh-side-chat(MIT)分叉修改;信任围栏为上游代码的纯 JS 移植。

原始 README: https://github.com/realpkuasule/dsh-sidechat/blob/main/README.zh.md ↗