
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-side-chat
Advanced tools
DSH 侧边对话插件 —— 并行侧边对话:在主对话之外开一条真实并行 agent 会话(独立上下文、共享工作区),结束后把结论摘要带回主对话,主对话上下文不被污染。
纯 JavaScript、MIT 许可。一份源码两种加载方式:既可作为 DSH 动态 Cordis 插件即时加载(免构建),也可作为 npm 包正式安装(跨重启持久)。
/side 命令:/side 你的问题 直接开一条侧对话(Web 面板自动打开)。| 设计要点 | 本插件实现 |
|---|---|
/side 斜杠命令 | /side [消息] 命令 + 面板「+ 新建」 |
| 独立上下文窗口 | 独立 Session + Agent(继承主会话组合、同工作区) |
| 线程自由切换 | 面板会话列表点击切换 |
| summarize & bring back | side agent 自总结 → 折叠提示行注入主会话 |
| ephemeral / 丢弃 | 关闭即停止 agent;创建即归档(列表隐藏),注册表内存态不跨重启 |
完整设计见 docs/design.md,验收记录见 docs/verification.md。
通过 DSH 动态 Cordis 插件流程加载(免构建、免 npm 依赖):
src/host.js 的完整内容。src/client.js 的完整内容。side,名称 DSH Side Chat。在 DSH profiles 目录安装包(与 web/headless profile 共享的 node_modules):
cd "$DSH_HOME/profiles" # 例如 C:\Users\Lenovo\.dsh\profiles
npm install dsh-side-chat
把包注册为 bundle(与官方 client 插件、dsh-vision 同款机制):在目标 profile 的 package.json(如 profiles/web/package.json)的 dsh.profile.bundles 里加一项:
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-side-chat"]
}
}
包内自带的 cordis.patch.yml 会在启动时自动插入加载行——不要再往 profile 的 cordis.patch.yml 里手动加行,否则重复注册会崩溃。
重启 DSH 即生效。
机制:包内 dsh.client 元数据声明了浏览器半体,DSH 的 client-modules 自动将其编入启动清单(window.__DSH_BOOT__)并从 /plugins/dsh-side-chat/client.js 加载;Host 半体把 RPC 桥接为 /sidechat-api/* HTTP 路由。npm 路径与动态路径共用同一份 src/ 源码,行为一致;lib/ 为构建产物(npm run build 生成,npm run check / npm run smoke 做语法与适配器冒烟验证)。
动态方式零依赖、即改即生效,适合开发调试;npm 方式跨重启持久、可分发,适合日常使用。两者可以共存。
/side 查一下 xxx 直接创建并发送首条消息。Host 半体(src/host.js,DSH Node 进程)
| 职责 | 实现 |
|---|---|
| 侧对话注册表 | 内存 Map,每主会话上限 8 |
| 创建侧会话 | agents.create(注册表 ctx 做 owner;setup 里 composeFrom 继承主 agent 组合) |
| 消息注入 | agent.send(message, 'next-turn', true) |
| 状态同步 | 监听 agent/status、agent/error |
| 摘要带回 | agent.send(总结请求) → whenIdle() → sessions.flush → readSession 取末条 assistant 文本 → mainAgent.inject(摘要, notice 形态)(不唤醒主 agent) |
| 关闭 | handle.dispose() + workspaceRegistry.archiveSession |
| 列表隐藏 | 创建即 archiveSession(归档只是列表记账,不影响 agent 生命周期) |
| 命令 | commands.register 注册 /side |
| RPC | 动态路径 harness.handle;npm 路径桥接为 webServer 路由 /sidechat-api/sidechat/{open,send,state,events,bring-back,close} |
Client 半体(src/client.js,浏览器)
| 职责 | 实现 |
|---|---|
| 入口按钮 | conversation.session.header.actions(id sidechat-toggle,标题栏右侧 ⤳ 图标,支持恢复最小化面板) |
| 侧边面板 | shell.overlay(id sidechat-panel,右侧浮层,可拖拽调宽 300–900px,可最小化为胶囊) |
| 数据刷新 | 面板打开时 1s 轮询 sidechat/state + sidechat/events |
| 消息渲染 | 轻量 Markdown 渲染(React 元素,防 XSS)+ 角色标签 + 时间戳 + 智能自动滚动 |
| 自动开面板 | 监听 openSignal(/side 命令触发) |
| 样式 | styles.insert(npm 路径为 DOM <style> shim)+ --dsw-alias-* 主题变量(明暗自适应,尊重 reduced-motion) |
数据流
面板输入 → host.call('sidechat/send') → sideAgent.send(…, wake) → 侧 agent 处理 → 面板轮询显示回复
带回主对话 → host.call('sidechat/bring-back') → 侧 agent 自总结 → notice 折叠行注入主会话 → 主 agent 下一轮可见
/side 在 Web 输入框的可见性:取决于当前 DSH 版本对自定义命令的暴露程度;面板按钮在所有版本可用。notice 折叠行(一行小字),模型可见全文,界面不刷屏。FAQs
DSH Side Chat — 并行侧边对话插件:真实并行 agent 会话、独立上下文、摘要带回主对话。
The npm package dsh-side-chat receives a total of 0 weekly downloads. As such, dsh-side-chat popularity was classified as not popular.
We found that dsh-side-chat demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.