dsh-bot

为 DeepSeek Harness 提供 QQ 接入、人格与认知服务的插件。通过 OneBot v11 连接 NapCat、SnowLuma、Lagrange.OneBot 或 LLOneBot,提供网页管理面板和本地持久化。
实机演示
下面是在真实 DSH 0.2.1-rc.3 中运行 dsh-bot v0.10.0 的历史演示截图(当前工作区为 v0.11.5)。账号、人格和消息为合成演示数据,QQ 链路使用仓库自带的模拟 OneBot 网关;不代表真实 QQ 登录或外部模型调用。

查看演示环境、验证结果与复现步骤。顶部横幅为 AI 宣传插画,实际界面以实机截图为准。
能力与要求
手动跨平台身份登记(M7-v,未发布):默认空的全局 registry;主人
/identity列表、/identity link platform externalId personId [label]登记/重链、/identity unlink platform externalId移除。只存人工对应关系,不创建/修改/合并人物;无新配置/依赖、网络调用、API/面板、Telegram/Discord adapter、自动验证或消息路由,QQ 行为不变。#32 为 partial,6 has / 40 partial / 0 none / 1 limited / 6 leading / 8 exempt,remaining 47,#31/#42/#49/#50 不变;见身份登记用法。QQ 管理审批(M7-s,未发布):
cognition.qqAdmin.requireApproval=false默认保留直接执行;开启后管理/文件动作写入持久化主人待办(10 分钟、最多 50 条),/approvals查看,/approve apr_ID confirm批准后在原聊天执行,/reject apr_ID confirm拒绝。既有req_请求处理和原动作 confirm 保留。无审批 HTTP/面板、全服务/工具统一审批或 PII/媒体扫描;#15 与 #14 操作员/deny-list 仍 partial,6 has / 40 partial / 0 none / 1 limited / 6 leading / 8 exempt、remaining 47。仅 fake QQ 离线测试,见配置。QQ 连接、账号核验、事件接收、群聊与私聊消息发送。
访问控制:
open/allowlist、主人 QQ、默认空的只读操作员列表、私聊/群白名单、统一出站闸门与审计。可选 DSH Session 运行时:
runtime.engine=agent时每聊天一个 DSH Session;仅主人私聊在运行时挂载 3 个当前会话 QQ 工具,失败自动回退 oneshot。只读操作员(M7-r,未发布):
access.operators=[]默认保持行为;仅/help、/status、无参数/model、/bili、/groupinfo、/memberinfo。allowlist 放行其私聊,群仍须白名单;主人优先,模块 ownerOnly 与命令禁用列表保持约束。无完整 per-tool/per-action RBAC 或 admin/approval 档位;#13 partial、#14 仍 partial,矩阵 6 has / 40 partial / 0 none / 1 limited / 6 leading / 8 exempt,remaining 47。见访问配置。QQ 命令(主人):
/status/steer/quiet/active/model/remember/forget/identity/tts/say/sticker/bili/help;支持按聊天覆盖模型。主人会话插话(M7-o):
/steer 文本将 1–1000 Unicode 字符注入当前 agent Session,复用或创建会话;oneshot 不可用。仅显式主人命令,不自动 steer、不写配置;无插话面板/API,真实 DSH/QQ 未验证,#9 为 partial,remaining 47;见用户手册。私聊输入状态(M7-q):
cognition.typing={enabled:false},默认关闭;开启后私聊/C2C 轮次前后调用set_input_status(1 输入中、2 暂停),失败不影响回复。依赖网关支持,无群聊输入状态/群set_input_status、输入状态限频或专用状态面板;仅离线测试,真实 QQ 未验证。#9 仍 partial,remaining 47,#31/#42/#49/#50 不变;见配置。命令禁用列表(M7-n):
cognition.permissions.deniedCommands=[]默认保持原行为;本机面板维护者可按小写命令名禁用内置或模块命令,派发前拦截且不调用处理服务或写配置。仅覆盖命令入口,没有所有服务/工具的逐项权限矩阵或统一审批,#14 仍 partial,remaining 47;见配置。M7-l 新增默认关闭的主人本地提醒:
/remind <秒|ISO时间> <文本>、/reminders、/forgetreminder <id>。只发送固定文本,按人格和当前聊天隔离,统一经过访问控制、限频与文本防泄漏;没有 DSH jobs、长任务、LLM 任务执行或提醒管理面板/API。真实定时器/QQ 未验证,#8/#40 仅 partial,remaining 47。使用方法见 用户手册。回复分条、可配引用/@、连续未点名接话上限,避免长文刷屏与自说自话。
群聊词法相关度(M7-p):
cognition.turn.groupRelevance={enabled:false,minScore:0.15},默认保持原行为;开启后未点名消息按已检索记忆词法相关度门控,无记忆/低分只写记忆、不分析,点名绕过,异常放行,无新增外部调用。无 LLM 话题理解/接梗/语义打分,#20 仍 partial、remaining 47;见配置。合并转发展开、拍一拍回应、表情表态归因;主人命令
/like/poke/groupinfo/memberinfo。可选媒体:图片下载/视觉描述、语音 ASR/TTS、图片/语音发送、群/私聊文件上传,以及本地表情包库与媒体面板;M7-c 增加 OpenAI 兼容生图/改图和
/draw/redraw/image;外部 provider 默认关闭。本地文件面板(M7-k/M7-u,M7-u 未发布):媒体页上传、列出、下载、确认删除并刷新
files/文件,显示相对路径/大小/时间;下载用 base64 JSON 转 Blob,上传/下载/删除共用忙碌锁并显示错误。要求媒体与文件双开关,仅安全存储 basename≤120、白名单扩展名、普通非符号链接文件,无任意本地路径;默认行为不变。发送仍用主人/file 相对路径,无发送按钮,真实 QQ 文件兼容性未验证,#45 仍 partial。矩阵 6 has / 40 partial / 0 none / 1 limited / 6 leading / 8 exempt,remaining 47;#31/#42/#49/#50 不变。本地模块内核:从数据目录加载操作员安装的 JS 模块,提供显式权限 API、命令/事件/存储、错误隔离、热重载和模块面板;不含远程安装或 marketplace。
可选 B站公共内容(M7-m):搜索、热门、BV 视频信息与公开评论、离线分享链接,提供
/bili comments BV号、/bili share BV号、REST API 与「内容」页。默认关闭,不使用 Cookie/WBI/登录态,不含字幕或发布评论;真实接口未验证,#48 仍 partial,remaining 47。QQ空间因登录授权与服务条款边界未实现。本地目录备份与「备份」面板:默认 200 MiB / 5000 文件 / 保留 10 份;恢复默认暂存,应用需显式开启并先创建恢复前备份。快照含密钥与认知隐私,请按秘密保护;复制 SQLite 前停止写入,恢复后重启。无 zip、云端传输、自动恢复或工作区迁移,见备份说明。
「安全」页:只读访问审计与危险面、上线检查清单;默认关闭的手动 GitHub Release 版本检查,stable/beta 仅改变发布过滤,不自动更新、下载或安装。保持 DSH 本机信任边界,不改变 API 鉴权;不提供工作区迁移或离峰省钱,见安全与上线检查。
目的系统(目标/计划/意图,面板与
/purpose管理);M7-t(未发布)新增主人/purpose plan ID生成并保存最多 8 步,/purpose step ID N [done|undo]手动标记、/purpose steps ID查看进度。无新配置,仅显式 plan 调用现有 JSON LLM,不执行步骤/绑定动作/接入审批;#38 仍 partial,6 has / 40 partial / 0 none / 1 limited / 6 leading / 8 exempt、remaining 47。见目的用法。每日记忆整理与按作用域反思;时间轴只读回忆日志。可选语义检索(M7-f):默认关闭的 OpenAI 兼容 embeddings 重排词法候选,出错回退词法;仅 fake provider 离线测试,真实 provider 未验证。无本地模型、独立 reranker 或向量数据库,见配置。
多人格管理,按人格隔离记忆、人物、关系、情绪及策略数据。
QQ 通知与请求(M7-j):十种已知通知写入当前人格时间轴,好友/群申请只存待办;主人
/requests查看、/approve ID confirm或/reject ID confirm显式处理。无自动审批/审批面板,真实 QQ 未验证,#3/#15 仍 partial;见用户手册及配置。出站文本防泄漏(M7-i):默认启用 + 脱敏,可选阻止;仅统一认知出站 text 段,安全页只读开关/策略。无 PII/熵或媒体/文件扫描,可能误报/漏报;#15 仍 partial(缺统一审批/逐项权限)。见安全配置。
人物/群印象与关系编辑(M7-g):当前人格 facet 内容/置信度/状态、原作用域内的关系维度手动调整,显式保存并记录人工来源;见认知面板用法与边界。
旧档案导入:认知记忆页/API 将通用 JSON/JSONL 导入当前人格,支持记忆(默认)或时间轴事件,默认最多 5 MiB/5000 项,按作用域/人物/正文(事件还含时间)幂等去重,本地处理。
OpenAI Chat/Responses、Anthropic、Gemini、Ollama 等模型协议与路由配置。
连接、消息、人格、模型、认知、日志及系统设置面板。
需要 DSH >=0.2.0 <0.3.0、Node.js >=22.13.0,以及已登录的 OneBot v11 网关。运行时无额外第三方依赖。能力边界见实现状态,长期目标见项目愿景。
安装与下载
v0.11.5 已发布,可通过以下 GitHub 直链安装或下载;真实 QQ/媒体验收仅完成部分,见发布检查表。
| 入口 | 下载 |
|---|---|
| 最新稳定版 | 安装包 tgz · 解压包 zip |
| 固定版本 0.11.5 | 安装包 tgz |
| 完整版本与校验文件 | GitHub Releases |
| 开发源码 | main.zip |
将 desktop 换成实际使用的 DSH profile:
dsh plugin --profile desktop add https://github.com/reina0721/dsh-bot/releases/download/v0.11.5/dsh-bot.tgz
也可下载并查看安装脚本后执行:
Invoke-WebRequest https://raw.githubusercontent.com/reina0721/dsh-bot/main/scripts/install.ps1 -OutFile install.ps1
.\install.ps1 -Profile desktop -Version 0.11.0
curl -fL https://raw.githubusercontent.com/reina0721/dsh-bot/main/scripts/install.sh -o install.sh
sh install.sh --profile desktop --version 0.11.0
脚本验证发布包 SHA-256,支持自定义 DSH 路径;不会自动重启 DSH。源码安装在仓库根目录执行 dsh plugin --profile desktop add .。详见安装、升级与回退。旧版用户先阅读迁移说明。
M7-c 生图/改图与普通图片发送已接入服务、主人命令和媒体面板。生成/改图默认关闭,仅接收受大小/尺寸限制的 PNG base64,不抓取返回 URL;源图限媒体根内相对路径,realpath 防符号链接逃逸。改图只支持 OpenAI 兼容 edits;面板/API 只落盘,QQ 命令先检查 access。自动化使用 fake provider,真实 provider/QQ 生图改图未验证,#44/#46 仍保留差距。配置和限制见 CONFIG 媒体 与 用户手册。
M7-b 新增默认关闭的主人 QQ 管理命令:资料、当前群管理、精华/撤回与媒体根内文件上传。需启用 cognition.qqAdmin.enabled,踢人始终 confirm、撤回默认确认;群管需机器人具备权限,无任意 action 透传或新增 Agent 工具,真实 QQ 管理/资料/文件动作尚未验证。用法见 用户手册,配置见 CONFIG。2026-11-06 用户批准的发布门槛豁免见 GAP §8.1,其他差距继续跟踪。
M7-h 扩展通用 JSON/JSONL 旧档案导入:记忆页选择「记忆」(默认)或「时间轴」,或调用 POST /cognition/import 并指定 kind: "memory"或"timeline",内容写入当前人格并幂等去重。时间轴事件要求提供时间,在时间轴的「事件」筛选中查看;本地处理、不自动发送 QQ。无 Aurabot 专用迁移或向量导入,尚无真实旧档案样本验证,#30 仍 partial。格式与用法见 用户手册,开关和限额见 CONFIG。
M7 发布候选的强制检查、回滚与声明边界见 发布检查表;当前未达全量 parity,不得宣称与 Aurabot 完全一致。
首次连接
- 在 QQ 网关启用正向 WebSocket 与 HTTP 服务,设置 access token。
- 重启目标 DSH profile,在侧栏「QQ 连接」填写网关地址、token 和机器人 QQ 号。
- 保存并连接,确认「已连接」「核验通过」,再到消息页测试收发。
- 打开「安全」页检查白名单/主人、备份、raw action、媒体 provider 与本地模块审核状态。
配置默认存放于 $DSH_HOME/plugins-data/dsh-bot/,可用 DSH_BOT_DATA_DIR 覆盖。不要公开含密钥的配置文件。
文档与开发
文档首页 · 用户手册 · 配置参考 · 本地模块 · 模型网关 · Aurabot 对标 · 视觉基线 · 故障排查 · 贡献指南 · 变更记录
npm test
npm run check:docs
npm run check:parity
npm run smoke:temp # 需要本机 DSH;仅临时 profile,不连接 QQ/外部服务
npm run pack:release
npm run check:package
对标审计与临时 profile smoke记录当前计数、剩余项与证据边界;审计会因矩阵结构错误返回 1,剩余差距本身不会导致失败。smoke:temp 可用 DSH_BIN=/path/to/dsh 指定 DSH,始终新建并清理临时 DSH_HOME。
目录:src/ 为宿主实现,client.js 为网页面板,test/ 为测试,scripts/ 为开发与安装工具,docs/ 为用户、开发与研究文档。
许可
MIT。复用来源及版权声明见 THIRD_PARTY_NOTICES.md。
No comments yet. Be the first to write one.