使用MCP,让你几乎所有的Agent访问QQ/微信/B站,甚至亲自下场水群和发消息!
67/100
综合分
446
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/fumingyang2004/Tulpa.git按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/19) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包Tulpa(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 02:38:48
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 38 处,展示前 33 条)
- 读取密钥环境变量harness/chat-tools.mjs:7
const headers = { Authorization: `Bearer ${process.env.CHATLOCAL_BRIDGE_TOKEN}` }; - 发起网络请求harness/chat-tools.mjs:8
const response = await fetch(`${base}/tools`, { headers }); - 发起网络请求harness/chat-tools.mjs:18
const result = await fetch(`${base}/tools/call`, { - 发起网络请求tulpa_bilibili/ui.js:2
async function api(action,values={}){const r=await fetch('/bilibili/api/action',{method:'POST',headers:{'Content-Type':'application/json','X-Tulpa-Bil - 发起网络请求tulpa_bilibili/ui.js:4
async function refresh(){if(refreshing)return;refreshing=true;try{const r=await fetch('/bilibili/api/status',{cache:'no-store'});if(!r.ok)throw Error( - 发起网络请求web/app.js:107
const r=await fetch(`${API}/gradio_api/run/refresh`,{method:'POST',headers:{'Content-Type':'application/json'}, - 发起网络请求web/app.js:112
const joined=await fetch(`${API}/gradio_api/queue/join`, {method:'POST',headers:{'Content-Type':'application/json'}, - 发起网络请求web/app.js:116
const stream=await fetch(`${API}/gradio_api/queue/data?session_hash=${encodeURIComponent(state.hash)}`); - 发起网络请求web/app.js:157
const r=await fetch('/api/ui-preferences',{method:'PUT',headers:{'Content-Type':'application/json','X-ChatWeave-UI':'1'},body:JSON.stringify({show_rea - 发起网络请求web/app.js:165
const r=await fetch('/api/ui-preferences',{cache:'no-store'}); - 写入剪贴板web/app.js:235
try { await navigator.clipboard.writeText(text); toast('已复制回答'); } catch { toast('复制失败,可以选中文字复制。'); } - 发起网络请求web/app.js:280
const response=await fetch('/api/agent-presets'); - 发起网络请求web/artifacts.js:25
async function api(path,options){const r=await fetch(path,options);const d=await r.json();if(!r.ok)throw Error(typeof d.detail==='string'?d.detail:'请求 - 发起网络请求web/chat.js:9
const response=await fetch(path+'?'+new URLSearchParams(params),{signal:AbortSignal.timeout(12000),cache:'no-store'}); - 发起网络请求web/collections.js:12
async function api(path,method='GET',data){const r=await fetch(path,{method,headers:data?{'Content-Type':'application/json'}:{},body:data?JSON.stringi - 发起网络请求web/desktop.js:62
const r=await fetch('/api/desktop/'+path,{method,cache:'no-store',headers:{'Content-Type':'application/json','X-ChatWeave-UI':'1'},body:body===undefin - 发起网络请求web/desktop.js:124
const r=await fetch('/api/mcp',{cache:'no-store'});if(!r.ok)return;const mcp=await r.json(); - 发起网络请求web/group-admin.js:6
const response=await fetch('/api/group-admin'+path,body===undefined?{cache:'no-store'}:{method, - 发起网络请求web/mcp-bilibili-login.js:5
async function api(action){const r=await fetch('/bilibili/api/action',{method:'POST',headers:{'Content-Type':'application/json','X-Tulpa-Bilibili':'1' - 发起网络请求web/mcp-bilibili-login.js:12
try{const r=await fetch('/bilibili/api/status',{cache:'no-store'});if(!r.ok)throw Error('账号状态暂不可用,请重试。');const d=await r.json();if(v!==version||!dialo - 发起网络请求web/mcp-home.js:8
async function watchApi(path,body,method){const r=await fetch(path,{method:method||(body===undefined?'GET':'POST'),cache:'no-store',headers:{'Content- - 发起网络请求web/mcp-learning.js:3
async function api(path,method='GET',body){const r=await fetch('/api/mcp'+path,{method,cache:'no-store',headers:{'Content-Type':'application/json','X- - 发起网络请求web/mcp.js:46
async function api(path,method='GET',body){let response,data;try{response=await fetch('/api/mcp'+path,{method,cache:'no-store',headers:{'Content-Type' - 发起网络请求web/mcp.js:109
$('mcp-test-onebot').onclick=()=>action(async()=>{const r=await fetch('/api/desktop/onebot/test',{method:'POST',headers:{'Content-Type':'application/j - 写入剪贴板web/mcp.js:138
$('mcp-copy-connection').onclick=()=>action(async()=>{if(!credential)return;await navigator.clipboard.writeText(JSON.stringify({mcpServers:{[credentia - 写入剪贴板web/mcp.js:139
$('mcp-copy').onclick=()=>action(async()=>{if(renderCodexConfig()){await navigator.clipboard.writeText($('mcp-config').value);$('mcp-copy').textConten - 发起网络请求web/reply.js:5
const response=await fetch('/api/replies'+path,{method,cache:'no-store',headers:{'Content-Type':'application/json','X-Reply-UI':'1'},...(body===undefi - 写入剪贴板web/reply.js:120
$('reply-copy').onclick=async()=>{try{await navigator.clipboard.writeText($('reply-text').value);toast('已复制回复。');}catch{toast('复制失败,可选中文字手动复制。');}}; - 发起网络请求web/reply.js:154
const r=await fetch('/api/reply-receipts?'+new URLSearchParams({platform:chatPage.platform,conversation_id:chatPage.conversation_id}),{cache:'no-store - 发起网络请求web/snowluma.js:10
const response=await fetch('/api/desktop/snowluma/'+action,{method:body===undefined?'GET':'POST',cache:'no-store', - 发起网络请求web/snowluma.js:45
const r=await fetch('/api/desktop/status',{cache:'no-store',signal:AbortSignal.timeout(15000)}); - 发起网络请求web/tulpa.js:12
async function api(path,method='GET',body){const r=await fetch('/api/tulpa'+path,{method,cache:'no-store',headers:body?{'Content-Type':'application/js - 发起网络请求web/watch.js:4
const response=await fetch(path,{method:method||(body===undefined?'GET':'POST'),
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
6 张 · 点击查看大图功能亮点
- 访问QQ微信本地数据
- 调用QQ微信功能
- 实时检索与管理消息
基于Windows本地QQ+微信的Harness/MCP:用Agent进行实时检索、跟进、管理、记忆与工作区。同时开放MCP版本,可供DSH,Codex,Antigravity等agent使用
README
由 DeepSeek 最新模型翻译生成Tulpa
使用 MCP,让你几乎所有的智能体访问 QQ/微信/B站,甚至亲自下场水群!
为推动硅基生命的发展和普及贡献一份力量!
Linux 终端版 · MCP 命令行 · 下载 · 快速开始 · 智能体配置教程 · 使用场景 · 完整文档
Tulpa 通过同一条 MCP 连接提供 QQ、微信与哔哩哔哩能力,三个模块分别授权。智能体可以查资料、追溯消息、带着自定义人格参与 QQ 群聊,或从视频字幕、真实画面和评论中寻找信息。
桌面发行版:Windows 10 / 11 x64;Linux:x86_64 / ARM64 终端源码版。
能做什么?
下面是可以交给智能体的请求示例。
让小鲸鱼来水群
用随包的小鲸鱼持续聊天,你也可以自行编写你的人物卡片。
随包提供小鲸鱼(little_whale)、小鲸鱼2号(little_whale_v2)和龙娘(dragon_girl,测试版),你也可以用 Markdown 写自己的角色人设卡片。支持按语境接话、原生 @ 与引用;授权后可看图、发送和收藏表情、给消息贴表情回应,保留理解笔记供后续会话选用。
持续聊天会在当前已授权的机器人账号和群里积累群友表达与黑话,潜水时也能学习;同账号同群重开可接续积累。人物卡与学习参考分开,模型可以选择本轮不用。聊天节奏 · 实时学习
人格卡详见 人格教程与表情链路。
展开完整文档(README 剩余 1 节)
Tulpa 使用 MCP,让你几乎所有的智能体访问 QQ/微信/B站,甚至亲自下场水群! 为推动硅基生命的发展和普及贡献一份力量! Linux 终端版 · MCP 命令行 · 下载 · 快速开始 · 智能体配置教程 · 使用场景 · 完整文档 Tulpa 通过同一条 MCP 连接提供 QQ、微信与哔哩哔哩能力,三个模块分别授权。智能体可以查资料、追溯消息、带着自定义人格参与 QQ 群聊,或从视频字幕、真实画面和评论中寻找信息。 桌面发行版:Windows 10 / 11 x64;Linux:x86_64 / ARM64 终端源码版。 能做什么? 下面是可以交给智能体的请求示例。 让小鲸鱼来水群 用随包的小鲸鱼持续聊天,你也可以自行编写你的人物卡片。 随包提供小鲸鱼(little_whale)、小鲸鱼2号(little_whale_v2)和龙娘(dragon_girl,测试版),你也可以用 Markdown 写自己的角色人设卡片。支持按语境接话、原生 @ 与引用;授权后可看图、发送和收藏表情、给消息贴表情回应,保留理解笔记供后续会话选用。 持续聊天会在当前已授权的机器人账号和群里积累群友表达与黑话,潜水时也能学习;同账号同群重开可接续积累。人物卡与学习参考分开,模型可以选择本轮不用。聊天节奏 · 实时学习 人格卡详见 人格教程与表情链路。 视频链接:点击这里查看哔哩哔哩视频 刷B站(测试中) 直接让智能体帮你刷B站视频,B站信息可直接植入智能体的思维链和工作流。 支持关键词搜索、账号推荐流、视频详情与分 P、带时间戳的字幕、真实抽帧和评论分页。无字幕时可使用已安装的本地 ASR 模型;读不到的内容会明确返回缺失项。B站账号扫码登录,权限在同一 MCP 连接中勾选。B站使用说明 找回聊过的资料和文件 帮我找我的群里的一些我需要的附件,核对时间,并标出消息来源。 按关键词、人物、会话和日期检索,再展开上下文。图片、语音和文件按需读取;轻量版可经 OneBot 下载 QQ 群原文件,交给同机智能体自己的文件工具阅读。 Tulpa 为什么用 Tulpa - 多平台信息整合:把QQ、微信和哔哩哔哩的能力整合到任意智能体上。 - 安装方便:具备图形化界面和CLI界面,直接让你的肥鱼全自动配置即可~ - 全自动部署:自动下载、校验、配置和运行SnowLuma和配置OneBot服务。已获得SnowLuma主开发授权! - 复用熟悉的智能体:MCP协议使得你可以用几乎所有的桌面智能体来使用Tulpa提供的大量接口。 经过测试可完美接入以下。理论上可完全兼容所有已发行智能体: - Codex · - Claude Code · - DeepSeek Harness · - Antigravity · - WorkBuddy 下载 | 版本 | 适合你,如果你想… | 下载 | | Windows MCP 版 | 图形界面或命令行,连接已有智能体 | 0.5.7 ZIP | | Linux MCP 终端版 | Linux x86_64 / ARM64,CLI/TUI 与 MCP 服务 | 0.5.7 tar.gz | 0.5.7 只发布 MCP 版。 Windows 包自带 Python 与命令行入口,使用系统 WebView2 Evergreen Runtime;Linux 包为终端源码包,首次启动安装依赖。语音模型不随包附带。MCP 说明 · 最新发布 · 0.5.7 更新说明 Windows 需要 .NET Framework 4.8。下载 ZIP 后完整解压到可写目录,打开 Tulpa/Tulpa.exe;命令行使用 Tulpa/Tulpa.CLI.exe。不要从压缩包直接运行,GitHub 自动生成的 Source code 也不是 Windows 安装包。QQ / 微信客户端与外部智能体需自行准备;SnowLuma 可由 Tulpa 自动配置。 老用户升级: 按保留数据升级教程检查、备份并更新原目录,无需重新导入。自改的同名随包人格先另存;升级后仍打开原目录 EXE,并重连 MCP。 快速开始 SnowLuma 自动配置 打开并登录 QQ,在 Tulpa 的 OneBot 设置 → 连接 QQ 中勾选协议和自动配置授权,点击 一键配置。Tulpa 自动准备固定版本 SnowLuma 2.1.1,校验运行包、初始化随机凭据、选择空闲端口、配置 HTTP/WS 并核对 QQ 与实时事件。多个 QQ 进程时选择目标,未登录时在 QQ 扫码即可,无需终端、下载路径、手填 Token 或管理密码。 优先使用校验通过的随包运行文件;未随包提供时从官方渠道下载。原有独立 SnowLuma 可在高级选项导入,保留原配置;不会扩大 MCP 授权。第三方许可仍独立适用。操作与恢复 · 本次开发验证 已取得 SnowLuma 主开发作者对自动部署的书面同意,条件是不修改 SnowLuma 本体。查看授权记录。使用者仍需在 Tulpa 内主动同意 SnowLuma 协议。 我要 QQ 水群 无需先导入整库历史。 这条路径直接接收 OneBot 实时事件。 1. 启动 QQ 和 Tulpa;在连接 QQ 中勾选协议并点击“一键配置”,或从高级选项导入已有 OneBot 连接。持续群聊需要 HTTP + 正向 WebSocket。连接教程 2. 点击 开始创建链接,启用 QQ 模块,选择当前群与持续聊天、发送权限;按需加看图、表情发送或收藏。只水群不需勾选历史读取。 3. 点击 一键开启 MCP。名称可留空;按 Agent 教程配置并重连客户端。首页可单独启停或删除连接。 4. 在外部智能体的专用对话中使用上面的水群示例。想换龙娘,选择 dragon_girl。新人格放进当前安装目录的 chatlocal/prompts/mcp_chat/,重新列出即可发现。 保持 QQ、OneBot、Tulpa 和外部智能体运行。宿主结束回合、达到预算、退出或休眠后,Tulpa 不会自行继续推理。可在 Tulpa 点 停止聊天 / 停止全部群聊;已发出的消息不会因此撤回。改过人格后,停止并重新开启会话才会采用新设定。 我要看 B站视频 1. 在左侧 B站账号设置 用 B站 App 扫码登录。 2. 点击 开始创建链接,启用 哔哩哔哩 并勾选只读能力,点击 一键开启 MCP。可以只选 B站,也可和 QQ / 微信共用这条连接。 3. 在智能体中刷新工具列表,直接描述想找的话题。模型可自行搜索、读取推荐、字幕/本地 ASR、真实画面及评论。使用与限制 我想通过命令行配置 Windows 双击 Tulpa.CLI.exe,或在终端执行 Tulpa.CLI.exe --json status。智能体可以直接管理连接、配置 QQ、发起 B站扫码、查询学习库并调用已授权 MCP 工具。CLI 教程;Linux 沿用 ./tulpa CLI/TUI。 我要查 QQ / 微信历史 1. 登录本机 QQ / 微信,在 数据与同步 → 本机账号核对账号,再选会话和日期读取。可以从少量近期消息开始。 2. 点击 开始创建链接,启用对应的 QQ / 微信模块,勾选聊天记录读取及所需附件权限,选择资料范围。 3. 点击 一键开启 MCP,按教程接入外部智能体,从上面的资料查询或总结示例开始。未导入资料时,界面会在选择历史读取后提示导入。 本地历史查询和草稿不需要 OneBot。读取范围受客户端版本、账号、权限及本机缓存影响,无法保证找回未取得的历史;见数据读取与实时摄取。 隐私与权限 - 资料保存在本机,不等于完全离线。 必要消息片段会进入你选择的模型服务;启用识图时也会发送所选图片。 - 看图、发送、收藏和群管理分别授权,默认关闭、可撤销。MCP 的发送和群管理勾选后是持续授权,调用直接执行,不会逐条回到 Tulpa 审批。 - 微信提供资料读取,回复草稿可由外部智能体生成,不提供微信发送能力。 - 不要分享使用过的整个安装目录,尤其是 data/、imports/、.env、Token 和私人诊断。撤销连接不能收回已交给客户端的内容;MCP 范围限制也不是整台电脑的文件隔离。 [!CAUTION] Tulpa 是独立的第三方项目,与腾讯 / 哔哩哔哩无隶属或授权关系。项目仅供学习与技术研究,使用风险自负。 相关文档 - 接入与群聊:Agent 教程 · MCP 权限 · OneBot · 人格 · 表情 - 资料与调查:文件 · 语音 · 调查与证据 · 工作区 · 会话记忆 - 功能与维护:完整功能 · 回复助手 · 群管理 · 升级 · 安全报告 参与开发 从源码运行与贡献 需要 Windows x64、Python 3.13 和 Git,在 PowerShell 执行: git clone https://github.com/fumingyang2004/Tulpa.git cd Tulpa python -m venv .venv .\.venv\Scripts\python.exe -m pip install -r requirements/mcp.txt .\.venv\Scripts\python.exe app_mcp.py 打开 <http://127.0.0.1:7861/>。实时 QQ 与 B站不要求安装历史读取器;历史资料及便携包构建依赖见下方文档。 贡献指南 · 桌面构建 · 验证说明 许可与致谢 Tulpa 自有代码采用 MIT License,第三方组件、模型与客户端遵循各自许可,见 THIRD_PARTY.md。本项目不是腾讯官方产品,与 QQ、微信及模型服务商没有隶属关系。 感谢以下仓库提供的参考或支持! - qq-bridge:群聊行为与提示词设计参考;小鲸鱼基于其角色卡。 - MaiBot:会话的组织逻辑和学习机制参考。 - QQ-agent:表情收藏、语义笔记、候选与用量反馈的设计参考。 - SnowLuma:提供 QQ / OneBot 接入能力;感谢主开发墨梓柒对 Tulpa 自动部署的书面授权与支持。授权记录 - 墨梓柒:感谢您的开源精神以及对本人的支持! SnowLuma 自动部署授权记录 SnowLuma 自动部署授权记录
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
fumingyang2004/Tulpa
使用MCP,让你几乎所有的Agent访问QQ/微信/B站,甚至亲自下场水群和发消息!
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化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