Back to home@CodingYuanLiu

DSH-Chatbot-Plugin

No description

Stars
0
Language
JavaScript
Created
Aug 20, 2026
Updated
Aug 20, 2026
GitHub repo

Introduction

Workspace Chatbot

一个 Cherry Studio 风格的聊天机器人插件,作为 DeepSeek Harness(DSH)动态 Cordis 插件运行:入口在侧边栏底部(设置上方),点开后在右侧主区域打开聊天面板。

功能

  • 多助手:每个助手独立配置名称、系统提示词、提供商、模型、思考深度、temperature、maxTokens
  • 多对话:每个助手可开多个对话,对话继承助手设置,自动以首条消息命名
  • 流式输出:后台生成 + 增量轮询,打字机效果(带闪烁光标)
  • 硬盘持久化:助手、对话、历史全部落盘 JSON,进程重启自动恢复
  • 清除上下文:两步确认,彻底清空当前对话
  • Markdown 渲染:助手消息支持标题、粗体、斜体、行内代码、代码块、列表、引用、链接、表格
  • LaTeX 数学$...$$$...$$ 以等宽数学块样式显示(见"已知限制")

运行环境

本插件不是独立应用,依赖 DSH 的以下运行时机制:

  • 动态 Cordis 插件:通过 cordis_define 定义、cordis_run 激活(详见下方"快速开始")
  • 运行时服务(Host 半边通过 ctx.get 读取):
    • llm —— 模型流式生成(listProviders / listModels / stream
    • fs —— 状态文件读写
    • sandboxPolicy —— 部署工作区根(默认数据目录的候选之一)
  • 浏览器端服务(Client 半边):
    • slots —— sidebar.footer.action(入口)与 shell.overlay(面板)
    • timer —— 流式轮询间隔
    • styles —— 样式注入

快速开始

  1. 打开 DSH Web GUI,在会话中调用 cordis_define
    • 新插件:plugin.kind = 'new'idPrefixchatbot(或你喜欢的 3–6 位小写前缀)
    • code.hostsrc/host.js 的整个函数体(从 return { 到结尾的 }
    • code.clientsrc/client.js 的整个函数体
  2. 用返回的 pluginId / packageId 调用 cordis_run(首次用 mode: 'run')。
  3. 在 UI 中批准该运行(Client 半边需要授权;勾选双勾可自动放行后续版本)。
  4. 刷新页面,点击侧边栏底部(设置图标上方)的 🤖 Chatbot 即可使用。

配置

所有部署相关配置集中在 src/host.js 顶部的 CONFIG 对象:

配置项默认值说明
dataDir''状态文件目录(绝对路径)。留空时自动选择:部署工作区根的 .chatbot/,再退回当前目录的 .chatbot/。建议填本机固定数据目录,如 '/home/you/.dsh'
fileName'chatbot-state.json'状态文件名
defaultTemperature1新助手默认 temperature(Cherry Studio 风格)
defaultMaxTokens''新助手默认 maxTokens;空字符串 = 不发送该参数(由模型自定)

数据存储

状态保存在 dataDir/chatbot-state.json(或自动选定的候选路径),格式:

{
  "assistants": [
    {
      "id": "a1",
      "name": "默认助手",
      "systemPrompt": "你是一个乐于助人的 AI 助手。…",
      "provider": "",
      "model": "",
      "reasoningEffort": "",
      "temperature": 1,
      "maxTokens": ""
    }
  ],
  "conversations": [
    { "id": "c1", "assistantId": "a1", "title": "新对话",
      "messages": [ { "role": "user", "text": "你好" } ] }
  ],
  "seqA": 1,
  "seqC": 1
}

删除该文件即回到全新状态。

已知限制

  • LaTeX 不排版成公式$...$ / $$...$$ 显示为等宽数学块,而不是 KaTeX 排版效果。动态插件无法引入第三方库(无打包器、无 import),真公式渲染需要产品级支持。
  • 流式是轮询近似:Host 与 Client 之间只有单次往返 RPC,因此打字机效果靠 120ms 轮询模拟,而非原生 SSE/WebSocket。
  • 侧边栏均分依赖 cordis 插件:入口与 cordis 插件并排各占一半宽度的 CSS 用 :has() 命中 cordis 的 DOM(data-cordis-badge)。如果你的部署没有 cordis 插件,可删除 src/client.js 中该段 CSS,并将 .dsh-cb-layerflex: 1 1 0 改回 flex: none; width: 100%
  • 界面文案为中文:UI 字符串硬编码在 src/client.js 中,如需其他语言请自行替换。

License

MIT