DeepSeek Harness 的 仅支持 macOS 的 QQ 机器人控制中心。
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add prophetcrab/dsh-qqbot该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 64 处,展示前 51 条)
- 发起网络请求client.js:2181
const response = await fetch(path, init) - 读取本地文件host/platform/mac/paths.js:26
return fsExistsSync(expandHome(path)) - 执行外部命令来自配置/变量host/platform/mac/process.js:24
child = execFile( - 执行外部命令固定命令host/platform/mac/process.js:79
output = execFileSync('/bin/ps', ['-axo', 'pid=,command='], { encoding: 'utf8', timeout: 4000, maxBuffer: 4 * 1024 * 1024 }) - 发起网络请求host/platform/mac/http.js:22
const response = await fetch(url, { - 执行外部命令固定命令host/platform/mac/capabilities.js:120
version = execFileSync('/usr/bin/sw_vers', ['-productVersion'], { encoding: 'utf8', timeout: 3000 }).trim() - 读取本地文件host/platform/mac/capabilities.js:152
: firstExisting([expandHome(NAPCAT_INSTALL_DIR)], (path) => fsExistsSync(path)) - 读取本地文件host/platform/mac/capabilities.js:153
const configDir = firstExisting(NAPCAT_CONFIG_DIRS.map(expandHome), (path) => fsExistsSync(path)) ?? (installDir === null ? null : join(installDir, 'c - 读取本地文件host/platform/mac/capabilities.js:179
packageJson = JSON.parse(readFileSync(packagePath, 'utf8')) - 读取本地文件host/platform/mac/capabilities.js:206
const meta = JSON.parse(readFileSync(join(installDir, 'package.json'), 'utf8')) - 读取本地文件host/platform/mac/capabilities.js:217
const plist = readFileSync(join(appPath, 'Contents', 'Info.plist'), 'utf8') - 读取本地文件host/platform/mac/capabilities.js:230
names = readdirSync(configDir) - 读取本地文件host/platform/mac/data-paths.js:72
if (!fsExistsSync(legacy)) continue - 读取本地文件host/platform/mac/data-paths.js:73
if (fsExistsSync(target)) { - 读取本地文件host/platform/mac/data-paths.js:85
if (!fsExistsSync(legacy)) continue - 读取本地文件host/platform/mac/data-paths.js:86
if (fsExistsSync(target)) { - 读取本地文件host/services/setup/index.js:74
templateAvailable: fsExistsSync(join(this.templateDir, 'package.json')), - 读取本地文件host/services/setup/index.js:75
projectExists: fsExistsSync(this.projectDir), - 读取本地文件host/services/setup/index.js:76
hasPackageJson: fsExistsSync(packagePath), - 读取本地文件host/services/setup/index.js:77
hasNodeModules: fsExistsSync(join(this.projectDir, 'node_modules')), - 读取本地文件host/services/setup/index.js:78
hasKoishiYml: fsExistsSync(join(this.projectDir, 'koishi.yml')), - 读取本地文件host/services/setup/index.js:89
bundleAvailable: fsExistsSync(this.bundlePath()), - 写入本地文件host/services/setup/index.js:105
await mkdir(join(this.projectDir, 'runtime'), { recursive: true }) - 写入本地文件host/services/setup/index.js:124
await mkdir(dirname(this.projectDir), { recursive: true }) - 写入本地文件host/services/setup/index.js:129
await mkdir(join(this.projectDir, 'runtime'), { recursive: true }) - 写入本地文件host/services/setup/index.js:246
await writeFile(file, lines.join('\n'), 'utf8') - 写入本地文件host/services/setup/index.js:285
await mkdir(dirname(target), { recursive: true }) - 写入本地文件host/services/setup/index.js:286
await copyFile(seed, target) - 读取本地文件host/services/koishi/index.js:112
if (existsSync(bin)) { - 读取本地文件host/plugins/napcat/routes.js:30
const buffer = await readFile(file) - 读取本地文件host/services/persona/index.js:81
const raw = await readFile(path, 'utf8') - 写入本地文件host/services/persona/index.js:93
await mkdir(dirname(path), { recursive: true }) - 写入本地文件host/services/persona/index.js:94
await writeFile(path, `${JSON.stringify(saved, null, 2)}\n`, 'utf8') - 读取本地文件host/services/persona/presets.js:42
const parsed = JSON.parse(await readFile(path, 'utf8')) - 写入本地文件host/services/persona/presets.js:61
await mkdir(dirname(path), { recursive: true }) - 写入本地文件host/services/persona/presets.js:62
await writeFile(path, `${JSON.stringify(payload, null, 2)}\n`, 'utf8') - 删除本地文件host/plugins/persona/routes.js:88
await rm(persona.path, { force: true }) - 读取本地文件host/services/profiles/index.js:72
const parsed = JSON.parse(await readFile(path, 'utf8')) - 写入本地文件host/services/profiles/index.js:93
await mkdir(dirname(path), { recursive: true }) - 写入本地文件host/services/profiles/index.js:94
await writeFile(path, `${JSON.stringify(payload, null, 2)}\n`, 'utf8') - 读取本地文件host/services/ai/settings.js:54
const parsed = JSON.parse(await readFile(path, 'utf8')) - 写入本地文件host/services/ai/settings.js:64
await mkdir(dirname(path), { recursive: true }) - 写入本地文件host/services/ai/settings.js:65
await writeFile(path, `${JSON.stringify(normalized, null, 2)}\n`, 'utf8') - 写入本地文件host/services/group-loop/store.js:25
async ensure() { await mkdir(this.root, { recursive: true }) } - 读取本地文件host/services/group-loop/store.js:28
try { return JSON.parse(await readFile(path, 'utf8')) } catch { return fallback } - 写入本地文件host/services/group-loop/store.js:53
await writeFile(this.characterPath, `${JSON.stringify(next, null, 2)}\n`, 'utf8') - 写入本地文件host/services/group-loop/store.js:64
await writeFile(this.groupsPath, `${JSON.stringify({ ...groups, updatedAt: new Date().toISOString() }, null, 2)}\n`, 'utf8') - 读取本地文件host/services/group-loop/store.js:69
const text = await readFile(this.memoryPath, 'utf8') - 写入本地文件host/services/group-loop/store.js:90
await appendFile(this.memoryPath, `${JSON.stringify(memory)}\n`, 'utf8') - 发起网络请求host/services/koishi/helpers.js:203
const response = await manager.fetch(url, { - 读取本地文件host/services/napcat/offline.js:130
createReadStream(path)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 的 QQ 机器人控制中心:一键配置 NapCat/Koishi,消息监控、权限管理,还有带人设和记忆的 AI 聊天。
README
由 DeepSeek 最新模型翻译生成dsh-qqbot
DeepSeek Harness 的 仅支持 macOS 的 QQ 机器人控制中心。
当前分支:dshbot-mac。项目已按基于插件的架构重写:
QQ ↔ NapCat ↔ OneBot 11 ↔ Koishi ↔ DSH Host ↔ 面板 / LLM
三端职责
| 端 | 职责 | 不负责 |
| NapCat | QQ 登录、协议、收发消息、OneBot 实现、WebUI | 权限、AI、业务、面板 |
| Koishi | Session、权限、触发、上下文、指令/插件、发送 | QQ 协议、QQ 注入、模型调用 |
| DSH | 安装/启停、配置控制面、AI 网关、人设/画像、面板 | QQ 协议、消息循环、权限执行 |
dsh-qqbot 属于 DSH 端;NapCat/Koishi 是外部运行时,由 DSH 管理。
展开完整文档(README 剩余 1 节)
dsh-qqbot DeepSeek Harness 的 仅支持 macOS 的 QQ 机器人控制中心。 当前分支:dshbot-mac。项目已按基于插件的架构重写: QQ ↔ NapCat ↔ OneBot 11 ↔ Koishi ↔ DSH Host ↔ 面板 / LLM 三端职责 | 端 | 职责 | 不负责 | | NapCat | QQ 登录、协议、收发消息、OneBot 实现、WebUI | 权限、AI、业务、面板 | | Koishi | Session、权限、触发、上下文、指令/插件、发送 | QQ 协议、QQ 注入、模型调用 | | DSH | 安装/启停、配置控制面、AI 网关、人设/画像、面板 | QQ 协议、消息循环、权限执行 | dsh-qqbot 属于 DSH 端;NapCat/Koishi 是外部运行时,由 DSH 管理。 架构 dsh-qqbot/ ├── index.js # 仅组装 ├── host/ │ ├── kernel/ # 插件注册、贡献点、路由/工具/Feature/Tab │ ├── contracts/ # AI/status/config/panel/plugin-manifest schema │ ├── platform/mac/ # 路径、进程、端口、能力 │ ├── services/ # napcat / koishi / setup / ai / persona / profiles / access │ └── plugins/ # lifecycle / napcat / koishi / install / ai / persona / │ # access / messages / features / tools ├── client/ │ ├── index.js # 仅注册 Client 插件 │ ├── runtime/ # api / store / styles / locale │ ├── components/ │ └── plugins/ # overview / ai / messages / access / plugins / features / logs ├── template/ # Koishi 运行时模板(从 qq-bot 同步) ├── vendor/napcat/ # NapCat 离线 payload └── scripts/ # 构建、校验、冒烟、安装 DSH Host 插件模型 每个能力都是一个 host plugin,统一贡献: registerRoute registerTool registerFeature registerStatusProvider registerClientTab provide(service) index.js 只列内置插件;关掉一个插件,它的路由/工具/Feature/Tab 一起消失。 Client 插件模型 client.js 是构建产物,源码在 client/: npm run build:client # client/ -> client.js node scripts/build-client.mjs --check 每个 Tab 都是一个 Client 插件,不再改一个 4000 行单文件。 Koishi 插件模型 template/plugins/ 是 Koishi 侧源码: core / access-control / health / welcome / echo ai/ ├── gateway.ts # DSH HTTP 契约 ├── trigger.ts # 概率/@/回复/跟进 ├── context.ts # 背景/图片 ├── media.ts ├── message.ts ├── delivery.ts ├── config.ts └── index.ts # 编排 插件之间通过 ctx.qqbot. 服务通信,不 deep import 内部实现。 两个外部依赖 NapCat(macOS) | 项 | 值 | | QQ.app | /Applications/QQ.app | | QQ 容器 | ~/Library/Containers/com.tencent.qq/Data | | NapCat 目录 | .../Documents/napcat | | 配置目录 | .../Library/Application Support/QQ/NapCat/config 或 .../Documents/napcat/config | | WebUI | 127.0.0.1:6099 | | 反向 WS | ws://127.0.0.1:5140/onebot | | 离线包 | vendor/napcat/payload/NapCat.Shell-4.18.42.zip | 配置: napcatPort 6099 napcatToken 空 qqPath 空 napcatDir 空 offlineVendorDir 空 offlineNapcatVersion 空 NapCat 只从内置离线包安装,校验 size + SHA-256,不下载。 Koishi | 项 | 值 | | 版本 | 4.18.11 | | 项目 | ~/project/qq-bot | | 端口 | 5140 | | 反向 WS | /onebot | | 本地 CLI | node_modules/koishi/bin.js | | 离线依赖 | template/runtime-bundles/node_modules-darwin-arm64.tar.gz | 配置: projectDir ~/project/qq-bot koishiPort 5140 reversePath /onebot napcatToken 空 autoRestartKoishi true autoInstallDeps true autoSyncSelfId true logLines 200 安装 bash cd ~/project/dsh-qqbot node scripts/install-profile.mjs --profile desktop --install 首次加载会: 1. 从 template/ 创建 ~/project/qq-bot 2. 解压内置 Koishi darwin-arm64 依赖 3. 从 vendor/napcat 离线安装 NapCat 4. 写 OneBot 反向 WS 配置 5. 启动后扫码登录 运行时数据 text ~/project/qq-bot/data/ ├── config/ │ ├── access.json │ ├── ai-settings.json │ └── persona.json ├── state/ │ ├── ai.json │ ├── ai-chat-state.json │ ├── koishi.db │ └── napcat-login-qr.png ├── assets/ │ ├── persona-presets.json │ └── profiles.json └── logs/ DSH 写配置、人设、画像;Koishi 执行权限、触发和发送。旧版平铺的 data/.json 可用 node scripts/migrate-data.mjs ~/project/qq-bot --database 一次性迁移(迁移前停止 Koishi)。 开发 bash npm test # 198 tests npm run build:client npm run smoke:host # 41 routes / 6 tools / 5 features npm run smoke:client npm run check:architecture npm run check:template npm run offline:verify npm run check # 全部 架构规则: - index.js / 插件入口 ≤80 行 - 普通源码 ≤500 行 - 无跨层/跨插件 deep import - 无循环依赖 - process.platform 仅限 host/platform/ - client 源码与生成物同步 - 旧路由、testid、数据格式保持兼容 详细文档: - 模块盘点 - 重构计划 - 文件架构 安全 - NapCat token 不落日志、不返回明文 - 外部命令使用 argv 数组,不拼 shell - 离线包 size/SHA-256 校验失败即拒绝 - 权限策略由 Koishi access-control 执行 - 当前分支只支持 macOS / Apple Silicon - 事件运行时架构计划 - 运行时内核 v1 详细设计 - 小核心人格 + 记忆驱动 + 情绪微调 - 群消息监听与反馈闭环 - 群聊监听状态机 HTML 图
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
prophetcrab/dsh-qqbot
DeepSeek Harness 的 仅支持 macOS 的 QQ 机器人控制中心。
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7
这是你的仓库?认领条目