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

群聊人格引擎 ProfYangShengXu/chatfish

DeepSeek Harness
ProfYangShengXu11 天前有提交已提供中文文档扫描:含敏感能力

让大模型在 QQ 群里像真人一样聊天、记事、有性格

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ProfYangShengXu/chatfish
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · platform
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 11 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令发起外部网络请求
查看扫描证据(共 21 处,展示前 21 条)
  • 发起网络请求
    bridge/src/bridge.js:774
    const response = await bot.request('fetch_custom_face_detail', { count });
  • 发起网络请求
    bridge/src/bridge.js:863
    const res = await fetch(`${httpUrl}/${action}`, {
  • 发起网络请求
    bridge/src/bridge.js:909
    const response = await bot.request('modify_custom_face', { emoji_id: entry.id, desc: cleanRemark });
  • 发起网络请求
    bridge/src/bridge.js:950
    const addRes = await bot.request('add_custom_face', { file });
  • 发起网络请求
    bridge/src/bridge.js:960
    const modRes = await bot.request('modify_custom_face', { emoji_id: emojiId, desc: cleanRemark });
  • 发起网络请求
    bridge/src/bridge.js:4937
    const res = await fetch(`${httpUrl}/${action}`, {
  • 执行外部命令固定命令
    bridge/src/bridge.js:5482
    spawnSync('wsl.exe', ['-u', 'root', '--', 'mkdir', '-p', dir], { timeout: 15000 });
  • 发起网络请求
    bridge/src/dsh-client.js:142
    const res = await fetch(url, { redirect: 'manual', signal: AbortSignal.timeout(this.timeoutMs) });
  • 发起网络请求
    bridge/src/dsh-client.js:267
    const response = await fetch(input, { ...init, headers });
  • 发起网络请求
    bridge/src/mcp-host-server.js:75
    const res = await fetch(`http://127.0.0.1:${getConsolePort()}/api/status`, {
  • 发起网络请求
    bridge/src/mcp-host-server.js:92
    const res = await fetch(`${httpUrl}/get_login_info`, {
  • 执行外部命令固定命令
    bridge/src/mcp-host-server.js:119
    const out = execFileSync('powershell.exe', ['-NoProfile', '-Command', byPort], { timeout: 15000, windowsHide: true, encoding: 'utf8' });
  • 执行外部命令固定命令
    bridge/src/mcp-host-server.js:129
    const cmd = execFileSync('powershell.exe', ['-NoProfile', '-Command', `(Get-CimInstance Win32_Process -Filter "ProcessId=${pid}").CommandLine`], { tim
  • 执行外部命令固定命令
    bridge/src/mcp-host-server.js:178
    const child = spawn('cmd.exe', ['/c', 'start', '', `"${hc.launcher}"`], { detached: true, stdio: 'ignore', windowsHide: true });
  • 执行外部命令固定命令
    bridge/src/mcp-host-server.js:215
    execFileSync('taskkill.exe', ['/PID', String(pid), '/T', '/F'], { timeout: 10000, windowsHide: true, stdio: 'ignore' });
  • 发起网络请求
    bridge/src/mcp-snowluma-safe.js:102
    const res = await fetch(`${httpUrl}/${action}`, {
  • 发起网络请求
    bridge/src/mcp-snowluma-safe.js:148
    const res = await fetch(`${agentApiBase()}${path}`, { ...rest, headers, signal: AbortSignal.timeout(timeoutMs) });
  • 发起网络请求
    bridge/src/mcp-web-search-safe.js:72
    const res = await fetch(url, {
  • 发起网络请求
    bridge/src/mcp-web-search-safe.js:154
    const res = await fetch(ENDPOINT, {
  • 执行外部命令来自配置/变量
    bridge/src/mcp-web-use.js:35
    execFile(
  • 发起网络请求
    bridge/src/safe-fetch.js:180
    req = mod.request({
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

完整的 QQ 聊天机器人框架:社交模拟、分层记忆、人格工程和跨会话上下文,基于 QQbridge 构建。

README

由 DeepSeek 最新模型翻译生成
chatfish 一套完整的 QQ 聊天机器人框架 —— 把大模型变成群友:在群里待得住、记得住人、说得出人话。 本项目脱胎于 QQbridge,在此郑重致敬。 QQbridge 解决了「消息怎么进来、怎么出去」这一半;chatfish 在它的基础上补完了另一半:社交仿真、分层记忆、人设工程、跨会话上下文 —— 让它不只是个能收发消息的壳,而是一套能长期运转的框架。 English: README.en.md 它解决什么问题 把 LLM 接进群聊,五分钟就能跑通。但真扔进一个活跃的群,一周之内一定会遇到这四件事: | 问题 | 一般做法 | chatfish 的做法 | | 太快 —— 每条都回,像客服 | 加个概率 | 防抖攒批 + 频率闭环 + 沉默权 | | 记不住 —— 三天前的梗全忘 | 塞进 system prompt | 三层记忆(常驻 / 情境 / 长期向量) | | 不像人 —— 句号、总结、面面俱到 | 写「不要像 AI」 | 黑名单 + 反例示例 + 允许犯错条款 | | 割裂 —— 群里聊的和私聊聊的对不上 | 无 | 定时跨会话同步 + 带来源标签注入 | 这四件都不靠提示词硬凑,靠的是机制。
展开完整文档(README 剩余 1 节)
chatfish

一套完整的 QQ 聊天机器人框架 —— 把大模型变成群友:在群里待得住、记得住人、说得出人话。

本项目脱胎于 QQbridge,在此郑重致敬。
QQbridge 解决了「消息怎么进来、怎么出去」这一半;chatfish 在它的基础上补完了另一半:社交仿真、分层记忆、人设工程、跨会话上下文 —— 让它不只是个能收发消息的壳,而是一套能长期运转的框架。

English: README.en.md

它解决什么问题

把 LLM 接进群聊,五分钟就能跑通。但真扔进一个活跃的群,一周之内一定会遇到这四件事:

| 问题 | 一般做法 | chatfish 的做法 |
| 太快 —— 每条都回,像客服 | 加个概率 | 防抖攒批 + 频率闭环 + 沉默权 |
| 记不住 —— 三天前的梗全忘 | 塞进 system prompt | 三层记忆(常驻 / 情境 / 长期向量) |
| 不像人 —— 句号、总结、面面俱到 | 写「不要像 AI」 | 黑名单 + 反例示例 + 允许犯错条款 |
| 割裂 —— 群里聊的和私聊聊的对不上 | 无 | 定时跨会话同步 + 带来源标签注入 |

这四件都不靠提示词硬凑,靠的是机制。

组成

chatfish/
├── bridge/ QQ ↔ Agent 桥接(Node.js) │ · 社交状态机:观望 / 活跃 / 潜水 │ · 防抖攒批、频率闭环、沉默权、注意力漂移 │ · MCP 工具层:发送、记忆、表情、联网 │ · 人设装配:system 恒定前缀 + 唤醒增量 ├── memory/ 长期记忆服务(Python + PostgreSQL + pgvector) │ · 向量检索 + 关键词混合召回 │ · 会话结束 → LLM 提炼事实 → 入库 │ · 常驻区自动维护(写回 AGENTS.md) ├── roles/ 角色卡系统 │ · 人格 / 行为 / 说话方式分三段 │ · 工具手册与人格分离,按需读取 └── docs/ 架构与设计文档

bridge/

桥接层。上游接 SnowLuma(OneBot v11),下游接任意支持 ACP / HTTP 的 agent runtime(默认 DeepSeek Harness)。

核心不是协议转换,是「什么时候该说话」的判断:

- 防抖攒批:同一波消息合并成一回合读,而不是逐条追
- 频率闭环:按一小时滑动窗口的实际发言数做负反馈,避免概率掷骰的抖动
- 沉默权:不发言是一等公民,不是异常
- 注意力漂移:拆成「能跑多远」×「多久拉回」两个正交旋钮,比写「不要太死板」有效

memory/

长期记忆。三层:

| 层 | 载体 | 特点 |
| 常驻 | AGENTS.md | 每次会话开头注入,内容稳定 |
| 情境 | 会话状态 JSON | 进行中的话题、想说的话、对某人的印象 |
| 长期 | PostgreSQL + pgvector | 语义召回,按需查 |

写入走「会话结束 → 提炼 → 去重 → 入库」,不是每条消息都记。

roles/

角色卡和工具手册分开:

- 人格进系统提示词(跨轮不变,缓存友好)
- 工具用法留在角色卡,由 agent 按需读取

这样人设写得再长,也不会把每一轮的工具 schema 挤爆。

架构

QQ ←→ SnowLuma (OneBot v11)
↕
bridge/ ──── 社交状态机、防抖、工具层 ↕ ──── MCP / ACP agent runtime(默认 DSH) ↕ memory/ ──── PostgreSQL + pgvector

细节见 docs/ARCHITECTURE.md。

快速开始

目前仍在快速演进,接口会变。建议先通读 docs/,再动手接。

git clone https://github.com/ProfYangShengXu/chatfish
cd chatfish

桥接层
cd bridge && npm install && cp config.example.json config.json
填入 SnowLuma 的监听地址、agent runtime 的 endpoint 与 token

记忆服务
cd ../memory && uv sync && cp .env.example .env
填入数据库连接与模型 key

具体配置项见各目录下的 README。

设计原则

1. 机制优先于提示词 —— 能用状态机解决的,不写进 prompt
2. 可变量的放最后 —— 系统提示词零改写,动态内容只追加在尾部(前缀缓存友好)
3. 判据必须能响 —— 每条新规则都要有负向测试,不做「看起来对」的修改
4. 允许犯错 —— 允许答错、答一半、说不知道。完美的机器比不完美的人更像 AI
5. 人在环 —— 人管抽象决策,agent 干活

致敬

- QQbridge —— chatfish 的直接源头。消息桥接、MCP 工具层、表情包链路都来自它
- MaiBot —— 人性化机制的参考:防抖控制器、沉默权、表达学习、注意力漂移
- DeepSeek Harness —— 默认的 agent runtime
- SnowLuma —— OneBot v11 实现

许可证

AGPL-3.0 —— 见 LICENSE。

简单说:你可以自由使用、修改、部署,但如果你把它作为服务提供给他人使用,你必须公开你的修改。这是为了防止有人拿这套框架做闭源商用。

如果你想闭源商用,请联系作者谈商业授权。
预览分享卡片长什么样 ↓ProfYangShengXu/chatfish
分享 · DeepSeek Harness Hub
ProfYangShengXu/chatfish

让大模型在 QQ 群里像真人一样聊天、记事、有性格

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部