DeepSeek Harness Hub
← 返回列表

只读侧边聊天Lings01/dsh-sidechat-plugin

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

用 /side 唤起继承上下文的只读智能体,随时旁路提问

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

DSH 的只读侧边聊天:/side 会打开一个独立的代理,它继承你会话的上下文、人设和只读工具。

综合分
27.4
GitHub 分
27.4
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Lings01/dsh-sidechat-plugin
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-sidechat-plugin

License
Release
Stars
Downloads

一个用于 DSH(DeepSeek Harness)的侧边聊天插件。在任意会话中输入 /side,右侧便会滑出一个只读侧边聊天。它会将当前会话的上下文复制为自己的记忆,继承主智能体的角色设定和模型,但被限制为只读工具——并在关闭时完全释放。

功能特性

- /side 打开:侧边聊天面板从右侧滑入(视口 ≥1280px:真正的布局侧边栏,会挤压对话区域;窄视口:回退为覆盖式抽屉,可在任意宽度下使用)
- 复制上下文但不显示:主会话的历史记录被完整复制到独立智能体的会话中作为其记忆,但面板只显示侧边聊天自身的新消息
- 输出与主界面一致:侧边聊天是一个真正的独立智能体——它通过 agentPresets.composeFrom 继承主智能体的完整预设(角色设定 / 系统提示词 / 技能),并复用主智能体的模型
- 只读工具白名单:仅限 read / glob / grep / read_image / web_search / skill / job_list / job_output / ask_user_question / cordis_inspect_* / get_goal / list_agents;不包含 bash、write、edit 或任何其他会产生变更的工具
- Markdown 渲染:内置轻量级 Markdown 渲染器(表格、代码块、标题、列表、粗体/斜体/行内代码、链接、引用块、分隔线),使用主主题的 CSS 变量进行样式设置
- 关闭即释放:点击“关闭”会调用 AgentHandle.dispose()——智能体停止运行,其会话被移除;不会持久化或保留任何内容
- 不产生未分组的工作区会话:侧边会话在创建时即被归档到工作区注册表中,因此它永远不会出现在工作区 / 未分组会话列表中
- 主智能体运行时也可用:当未运行 /side 命令时(例如重启后或关闭后),面板按钮(以及发送消息)会自动从最后已知的主智能体重建智能体

安装

1. 在 DSH Web 插件页面中,创建一个新的 Cordis 插件
2. 宿主代码:粘贴 plugin/host.js 的完整内容
3. 客户端代码:粘贴 plugin/client.js 的完整内容
4. 运行插件并批准它

代码是纯 JavaScript 函数体(return { apply(ctx) { … } })——没有导入、JSX 或 TypeScript,因此动态插件沙箱可直接加载它。

使用方法

/side
- 主会话显示“侧边聊天已打开(只读模式,已复制 N 条上下文)”,面板从右侧滑出
- 在面板内独立聊天——它会记住主会话,共享主 UI 的人格,但只能读取,绝不能修改
- 点击面板标题栏中的“关闭”以释放所有内容(命令栏也提供“打开面板”按钮以重新打开它)

架构

| 层级 | 文件 | 职责 |
| --- | --- | --- |
| 宿主 | plugin/host.js | 注册 /side 命令;通过 sessions + agents 创建一个真正独立的代理(种子 = 主会话事件,composeFrom 继承预设,tools.restrict 强制执行只读白名单);归档侧边会话(workspaceRegistry.archiveSession),使其永远不会出现在工作区中;当句柄缺失时,在打开/发送时从最后一个主代理自动重建代理;通过 harness.handle 暴露 ensureOpen / getState / send / close RPC;getState 使用 session.firstLiveSeq 仅渲染实时片段 |
| 客户端 | plugin/client.js | details 插槽(宽窗口侧边栏)+ shell.overlay 插槽(窄窗口抽屉);conversation.chat.commandview(键为 side)驱动事件驱动的打开;500ms 轮询回退;轻量级 Markdown 渲染器 |

数据流:客户端发送消息 → host.call('side.send') → agent.followup() → 独立代理运行其完整循环(相同的预设模型 + 只读工具)→ 输出落入其会话 → 客户端轮询 getState 并流式显示。

注意事项

- 独立代理运行在一个全新的分叉会话上;它永远不会写回主会话的日志,因此主 UI 不受影响
- 动态插件定义是进程本地的,重启后会丢失——需要重新安装才能再次使用
- 插件运行时,details 插槽被占用,因此内置的工具详情面板被遮蔽;插件停止后它会自动恢复

许可证

MIT——参见 LICENSE。

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

同作者(Lings01)的其他插件

💬 加入 DPharness 群聊

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

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