dsh-im
xmanrui
通过扫码或机器人凭据把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord和WhatsApp)。 Connect IM bots to DeepSeek Harness via QR code or credentials (9 channels).
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:xlennart/dsh-side-chat
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
简体中文 · English
在 DeepSeek Harness 主对话旁边,打开一个真正独立、原生、理解上下文的并行对话。
界面预览 · 快速开始 · 使用方式 · 会话与数据 · 核心能力 · 架构边界
[!NOTE] 侧聊不是浮在主对话上方的临时面板,也不是手写的聊天界面。它是一个真实 DSH Session,直接复用 DSH 原生会话组件,并通过有界工具按需理解主对话。
release/dsh-side-chat-1.2.1.tgz,按下方命令安装。npm test,它会构建插件并执行全部回归测试。
主对话与侧聊使用同一套 DSH 原生会话界面。中间分隔线可以拖动,两个输入框保持对齐,侧聊不会出现在左侧会话列表。
| 主对话选文入口 | 原生设置页 |
|---|---|
![]() |
![]() |
要求:Node.js 22 或更高版本,以及能够加载 Web 插件的 DeepSeek Harness。
下载已经构建好的插件:优先从 GitHub Releases 获取最新包,也可以直接使用仓库内 release/ 目录;安装时不需要再次运行构建脚本:
# 从 GitHub Release 下载后:
dsh plugin --profile web add .\dsh-side-chat-1.2.1.tgz
# 或使用仓库内副本:
dsh plugin --profile web add .\release\dsh-side-chat-1.2.1.tgz
从希望 Agent 操作的工程目录启动 DSH:
cd D:\path\to\your-project
dsh web --port 3080
打开 DSH 输出的网址,插件会自动加载到 Web 客户端。
git clone https://github.com/KarlOfLaw/dsh-side-chat.git
cd dsh-side-chat
npm test
$DshSource = "D:\path\to\deepseek-harness"
$PluginSource = (Get-Location).Path
pnpm --dir $DshSource dsh plugin --profile web add $PluginSource
pnpm --dir $DshSource dsh web
已安装时:
npm test
pnpm --dir $DshSource dsh plugin --profile web update dsh-side-chat
npm test 会构建动态产物、正式本地包,并运行 core、host integration、client contract 与 smoke tests。
从源码目录注册插件时,DSH 加载的是 dist/formal-host.mjs 和 dist/formal-client.cjs,而不是直接读取 src/。修改源码后请重新运行 npm test(或 npm run build),然后重启 dsh web;否则浏览器中仍可能是上一次的构建结果。
Shift 可加速调整。session.v4.jsonl.zstd;即使存储后端拒绝删除,也会关闭侧栏、恢复主对话并明确提示数据已保留。第一次打开时,插件创建一个带 parentSession 的真实 DSH Session,并立即将它归档,因此它不会出现在 workspace 左侧会话列表。保留过的同模式侧聊会在下次打开时恢复,而不是重新创建空会话。
插件不会把主 transcript 复制到侧聊。选中的文字保存在侧聊自己的引用状态中,不写入原生输入框草稿;只有用户发送消息时才会投影进该次侧聊请求。当侧聊确实需要更多背景时,可以通过 side_chat_context 按需读取有界、相关且按时间排序的父会话片段。
主会话与侧聊共享同一个 workspace。侧聊中的文件修改、命令执行、审批和其他工具副作用都是真实的;隐藏、保留或关闭面板不会撤销这些操作。
| 能力 | 实现方式 |
|---|---|
| 真实独立会话 | 通过 DSH agents.create/resume 创建或恢复带 parentSession 的 Session,不占用 subagent routing。 |
| 完整原生 UI | DSH 0.2 通过官方 conversation.content Factory 渲染侧聊,0.1 继续复用 ConversationRoot;消息、工具、审批、附件、输入框、模型和权限控件均由 DSH 提供。 |
| 发送前即完整可用 | 空白侧聊也显示原生会话正文、输入框以及隐藏/关闭控制,发送消息前后使用同一套原生界面。 |
| 按需理解主对话 | 不复制主 transcript;需要背景时,通过 side_chat_context 检索有界、相关的父会话片段。 |
| 真正并排 | 只增加最小 split shell;主对话在窄窗口也不会被隐藏,分隔条支持拖拽和方向键微调,侧聊占比限制在 25%–70%。 |
| 不污染会话列表 | 新侧聊立即归档,不出现在 workspace 左侧列表中。 |
| 选文即问 | 选中主消息文字后出现“引用到侧聊”;引用可预览、可删除,且不会在原生输入框中残留 @ 或隐藏文本。 |
| 兼容 Better Sidebar | 可选注册为 Better Sidebar 页面,同时始终保留 Side Chat 自己的快捷入口;没有安装 Better Sidebar 时保持完整独立功能。 |
| 可隐藏、可恢复、可删除 | 隐藏只收起面板;保留后可以恢复,关闭时也可选择安全删除。 |
| 原生模式与模型 | 新侧聊默认标准模式,可选 PTC、极简或创造模式;模型选择器保持 DSH 原生行为。 |
SessionProvider 和 conversation.content Factory;兼容 DSH 0.1 时仍保留旧 BindingContext 适配路径。任一路径失效都会显式报错,不会退回自定义聊天界面。host 只增加侧聊需要的生命周期与上下文能力:
主 Session
└─ archived side Session (parentSession=主 Session)
├─ 原生 DSH Agent / preset / tools / approvals
├─ 独立 transcript,共享 workspace
└─ side_chat_context → 按需读取父会话的相关上下文
client 保留 DSH 已注册的主 conversation component,并在 DSH 0.2 中通过官方 Factory 为侧 Session 创建第二个原生 conversation content;0.1 走兼容适配器。插件没有自己的消息 renderer 或 composer。最小 split shell 只负责布局、分隔条和生命周期入口。
src/core.mjs 纯函数:side id、上下文筛选与 retained child 选择
src/host.template.js DSH child 生命周期、上下文工具、关闭/保留/删除
src/client.js 原生 ConversationRoot 双绑定与最小 split shell
dev/ 隔离 DSH profile、构建与本地验收种子
tests/ core、integration、client contract、smoke
release/ 可直接安装的预构建插件包
仓库同时保留源码与预构建 .tgz:开发者可以阅读、构建和测试源码,普通用户可以直接安装 release 包。
替换 release/ 中的安装包后更新插件,并重启 DSH Web:
dsh plugin --profile web update dsh-side-chat
卸载插件:
dsh plugin --profile web remove dsh-side-chat
MIT。参考的 DeepSeek Harness checkout 同为 MIT。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: deepseek-chat、dsh-better-sidebar、dsh-side-chat、parallel-chat、side-chat。