🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

纯聊面板 MarkJun236/DSH-chat

DeepSeek Harnessv0.1.0-rc.36
MarkJun23679 天前有提交已提供中文文档扫描:含敏感能力

在侧边栏直接开聊,复用已配模型并保存多会话历史

29.6/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:npm 同名包「dsh-chat」归属 baixianger/dsh-chat,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MarkJun236/DSH-chat
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · chat
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 79 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「dsh-chat」归属 baixianger/dsh-chat,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-chat @ 0.1.0-rc.36
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 03:50:06

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 6 处,展示前 6 条)
  • 读取本地文件
    lib/index.js:145
    const parsed = JSON.parse(readFileSync(this.path, 'utf8'))
  • 写入本地文件
    lib/index.js:154
    try { renameSync(this.path, `${this.path}.corrupt-${Date.now()}`) } catch { }
  • 读取本地文件
    lib/index.js:161
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    lib/index.js:161
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    lib/index.js:163
    writeFileSync(tmp, JSON.stringify(file, null, 2) + '\n', { encoding: 'utf8', mode: 0o600 })
  • 写入本地文件
    lib/index.js:164
    renameSync(tmp, this.path)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 侧边栏直接开聊
  • 复用已配模型
  • 多会话历史本地保存

README

由 DeepSeek 最新模型翻译生成
dsh-chat DSH Web GUI 的普通对话插件 —— 不用再为聊个天多开一个 App。 dsh-chat 在 DeepSeek Harness(DSH)Web GUI 的侧边栏里加一个「对话」入口:不绑工作区、不带工具,就是一个纯粹的对话面板。你在 DSH 里已经配置好的任何 provider / model 直接可用,流式输出,多会话历史自动保存。 设计理念 我就是不想要开这么多个 app。 日常工作中,大量场景其实只是“普通对话”:问个问题、查个概念、写段文案、润色一段文字……这些不需要工作区,不需要工具调用,更不需要为它们单独打开一个 ChatGPT 或 Claude 的 App。 于是想法很简单: - 只装一个 Harness。DSH 本身就是你日常开发/工作的地方,它已经配好了你所有 provider 和 model 的 API 凭据。 - 对话能力直接长在 DSH 里。插件不引入任何新的模型适配层,不要求你再配一遍 key,而是直接复用 DSH 的 ctx.llm 模型路由——DSH 里能选的模型,这里就能聊。 - 随用随走,不留负担。打开就是聊,聊完关掉;历史存在本地,下次接着聊。 多一个插件,少一个 App。 这就是 dsh-chat 存在的全部理由。
展开完整文档(README 剩余 1 节)
dsh-chat

DSH Web GUI 的普通对话插件 —— 不用再为聊个天多开一个 App。

dsh-chat 在 DeepSeek Harness(DSH)Web GUI 的侧边栏里加一个「对话」入口:不绑工作区、不带工具,就是一个纯粹的对话面板。你在 DSH 里已经配置好的任何 provider / model 直接可用,流式输出,多会话历史自动保存。

设计理念

我就是不想要开这么多个 app。

日常工作中,大量场景其实只是“普通对话”:问个问题、查个概念、写段文案、润色一段文字……这些不需要工作区,不需要工具调用,更不需要为它们单独打开一个 ChatGPT 或 Claude 的 App。

于是想法很简单:

- 只装一个 Harness。DSH 本身就是你日常开发/工作的地方,它已经配好了你所有 provider 和 model 的 API 凭据。
- 对话能力直接长在 DSH 里。插件不引入任何新的模型适配层,不要求你再配一遍 key,而是直接复用 DSH 的 ctx.llm 模型路由——DSH 里能选的模型,这里就能聊。
- 随用随走,不留负担。打开就是聊,聊完关掉;历史存在本地,下次接着聊。

多一个插件,少一个 App。 这就是 dsh-chat 存在的全部理由。

特性

- 🗨️ 侧边栏独立「对话」入口:与任务看板、SSH 等插件并列,一键进入纯对话模式,不占用工作区界面。
- 🔌 零配置复用 DSH 模型路由:直接走 harness 的 ctx.llm,所有已导入的 provider / model 自动可用,支持切换,无需额外适配器或 API key。
- ⚡ 流式输出:NDJSON 帧流式返回,支持 delta(正文)、reasoning (思考过程)、usage(用量)实时展示。
- 💬 多会话管理:左侧历史列表,新建 / 切换 / 重命名 / 删除;当前会话自动记住上次使用的模型。
- 🏷️ AI 自动标题:根据第一条提问自动生成会话标题(可关闭,也可指定专门的标题模型),手动重命名不会被覆盖。
- 📝 Markdown 渲染:内置 GFM 子集渲染(代码块、行内代码、表格、引用、列表、链接、图片),escape-first + 协议白名单,安全渲染。
- 🎨 跟随 DSH 主题:样式全部基于 DSH 的 --dsw- design tokens,明暗主题自动适配。
- 🔥 热插拔:通过 profile 的 cordis.patch.yml + node_modules 软链挂载,不改 DSH 源码,升级 DSH 不受影响。

工作原理

插件是双面(dual-face)结构,由同一个 npm 包提供宿主端与浏览器端:

┌────────────────────────── 浏览器 (Web GUI) ──────────────────────────┐ │ lib/client.js 侧边栏「对话」入口 + React 对话面板 │ │ (随 /plugins/dsh-chat/client.js 加载) │ └───────────────▲──────────────────────────────────────────────────────┘ │ fetch /api/dsh-chat/(NDJSON 流式) ┌───────────────┴──────────────────────────────────────────────────────┐ │ lib/index.js 宿主端 Cordis 插件 (exports ".") │ │ 注册 /api/dsh-chat 路由族 │ │ 直接调用 ctx.llm.stream() 驱动模型 │ │ 会话历史持久化到 ~/.dsh/dsh-chat.json │ └──────────────────────────────────────────────────────────────────────┘

- 宿主端(lib/index.js):纯 ESM,运行时只依赖 Node 内置模块; llm 与 webServer 来自 Cordis 注入列表。负责模型目录、会话存储 CRUD、流式对话与持久化。
- 浏览器端(lib/client.js):自包含的 React 面板,通过模块加载器注册,DOM 级注入侧边栏入口;样式骑在 DSH design tokens 上。

安装

方式一:作为 profile bundle(推荐)

1. 将 dsh-chat 装进 DSH 的 node_modules(或其软链目录);
2. 在目标 profile 的 dsh.profile.bundles 中列出本包,或在 profile 自己的 cordis.patch.yml 中插入插件行:

- insert:
- id: chat
name: 'dsh-chat'

3. 启动 DSH Web,侧边栏即可看到「对话」入口。

方式二:手动插入 cordis.patch.yml

仓库根目录的 cordis.patch.yml 就是标准 bundle patch,可作为 profile bundle 层(dsh.bundle.patch 清单字段)叠加到 dsh-base 之上。

使用

1. 点击侧边栏「对话」进入面板;
2. 顶部选择 provider / model(默认记住上次选择,存在 localStorage);
3. 输入内容,Enter 发送,Shift+Enter 换行;
4. 左侧历史列表管理多个会话;
5. 齿轮按钮打开设置:可关闭 AI 自动标题,或为标题生成单独指定模型。

API 一览

所有路由仅限本机回环访问(loopback-only),部署在局域网时不会被外部访问。

| 方法 | 路径 | 说明 |
| GET | /api/dsh-chat/models | 列出所有 provider 及其模型目录 |
| GET | /api/dsh-chat/conversations | 会话摘要列表 |
| GET | /api/dsh-chat/conversations?id= | 单个会话完整内容(含消息) |
| POST | /api/dsh-chat/conversations | 新建会话(可选 title) |
| PATCH | /api/dsh-chat/conversations?id= | 重命名会话(title) |
| DELETE | /api/dsh-chat/conversations?id= | 删除会话 |
| POST | /api/dsh-chat/stream | 流式对话(NDJSON 帧:meta / delta / reasoning / usage / done / error) |

数据与隐私

- 会话历史:全部保存在本机 ~/.dsh/dsh-chat.json(0600 权限, tmp + rename 原子写入);列表接口返回的是不含消息的摘要投影。
- 偏好设置:模型选择、标题模型选择存在浏览器 localStorage (dsh-chat.model、dsh-chat.titleModel)。
- 损坏兜底:存储文件损坏时不会破坏插件——自动改名为 .corrupt- 后从空会话开始,绝不静默覆盖原数据。

安全

- 所有 /api/dsh-chat/* 路由都有 loopback trust fence:校验远端地址、 Host / Origin,仅允许本机回环访问,LAN 暴露的 DSH 部署不会把对话接口和模型输出暴露到局域网。
- Markdown 渲染 escape-first + 协议白名单:只放行 http:、https:、 mailto:、锚点与相对路径,javascript: 等危险协议一律拒绝。
- 客户端断连会自动 abort 模型调用,不浪费 token。

目录结构

dsh-chat/
├── lib/
│ ├── index.js # 宿主端:路由族 + ctx.llm 流式 + 会话存储(~508 行) │ └── client.js # 浏览器端:侧边栏入口 + React 对话面板(~1150 行) ├── cordis.patch.yml # bundle patch:向 profile 注册插件行 ├── package.json # 双面导出:exports "."(宿主)/ "./client"(浏览器) └── README.md

License

MIT
预览分享卡片长什么样 ↓MarkJun236/DSH-chat
分享 · DeepSeek Harness Hub
MarkJun236/DSH-chat

在侧边栏直接开聊,复用已配模型并保存多会话历史

这是你的仓库?认领条目

回到顶部