feat: 持久对话 MCP 插件 v1.6.37 · Hub + Panel + MCP 三形态部署

- src/: server.js (MCP 4 工具) + hub.js (HTTP Hub) + cursor-title.js
- web/: panel.html (主面板) + panel.remote.html (远端 1637)
- scripts/: ensure-hub.sh (stdio→http 桥) + mongo_sync.py
- mcp-config/: trae.mcp.json + cursor.mcp.json
- docs/: INSTALL / DEPLOY / MCP_SETUP / ARCHITECTURE / QUICKSTART
- ZIP 原始安装包备查

关键机制:
- 4 MCP 工具:init / select / wait / merge
- 垂直绑定:workspace::cursorTitle@hostIp 三件指纹
- 真挂起:关闭 timedReply 后 wait 真正阻塞,agent turn 不结束
- 双 Hub 部署:远端 NAS 24×7 + 本地 launchd 守护备份
- 三形态组合:远端 + 本地 + Trae 插件,可同时跑
This commit is contained in:
卡若AI
2026-06-26 13:01:08 +08:00
commit 62577508c9
19 changed files with 10493 additions and 0 deletions

154
README.md Normal file
View File

@@ -0,0 +1,154 @@
# Cursor/Trae 持久对话 MCP 插件 v1.6.37
> **垂直绑定 · 真挂起 · 永不断开**
> 一个让 Cursor / Trae / VSCode 与 Agent 之间实现"可持续对话"的 MCP 插件。
[![Gitea](https://img.shields.io/badge/Gitea-fnvtK%2Fpersistent--chat--plugin-blue)](http://192.168.110.101:3000/fnvtk/persistent-chat-plugin)
[![Version](https://img.shields.io/badge/Version-v1.6.37--20260607-green)](#)
[![MCP](https://img.shields.io/badge/MCP-4--tools-orange)](#)
[![Hub](https://img.shields.io/badge/Hub-192.168.110.101%3A13458-purple)](#)
---
## 🎯 一句话描述
普通 MCP 调一次就结束对话;本插件用 **4 个工具 + Hub 长连接**,让 agent 与用户的对话**永不中断**,适合长跑学习清单 / 跨天多计划 / 自动续跑任务。
---
## 📦 仓库内容
```
persistent-chat-plugin/
├── src/ # 核心源码Node 22
│ ├── server.js (42KB) # MCP Server 端4 个工具入口
│ ├── hub.js (89KB) # Hub 主服务HTTP + WebSocket
│ └── cursor-title.js (4KB) # Cursor 标题解析器
├── web/ # 持久对话面板(浏览器 UI
│ ├── panel.html (84KB) # 主面板 v1.6.37
│ ├── panel.remote.html # 远端 NAS 面板panel_remote_v1637
│ └── panel.html.local # 本地备份面板
├── scripts/ # 部署与运维脚本
│ ├── ensure-hub.sh # 启动器MCP stdio → http
│ ├── mongo_sync.py # 会话 → MongoDB 同步
│ └── (deploy scripts...)
├── mcp-config/ # MCP 配置模板
│ ├── trae.mcp.json # Trae CN 配法
│ └── cursor.mcp.json # Cursor 配法
├── docs/ # 完整文档
│ ├── INSTALL.md # 安装
│ ├── DEPLOY.md # 部署
│ ├── MCP_SETUP.md # MCP 配置
│ ├── ARCHITECTURE.md # 架构
│ └── QUICKSTART.md # 5 分钟上手
├── Cursor持久对话-安装包-v1.6.37_20260607.zip # 原始安装包(备查)
└── README.md # 本文件
```
---
## ⚡ 三种部署形态
| 形态 | 端口 | 适用 | 关键 |
|:---|:---|:---|:---|
| **本地备份** | 127.0.0.1:13458 | 单机 | launchd 守护,挂了自动起 |
| **远端 NAS** | 192.168.110.101:13458 | 多人 / 跨机 | Node 守护,跨网段访问 |
| **Trae 插件** | MCP stdio | 与 IDE 集成 | ensure-hub.sh 起 4 工具 |
可同时跑,三者共享同一 Hub 协议。
---
## 🔧 4 个 MCP 工具
| # | 工具 | 用途 |
|:---:|:---|:---|
| 1 | `init_conversation` | 起新 session支持 `newPlan:true` 换计划) |
| 2 | `select_conversation` | 复用旧 session垂直绑定校验 |
| 3 | `wait_for_user_input` | 真挂起,等用户下一条 |
| 4 | `merge_conversation` | 合流两个 session 的上下文 |
**核心机制**Hub 把 session 存在内存 + 周期 savetoken (`ct_xxx`) 垂直绑定到「工作区 + Cursor 标签 + IP」三件指纹。
---
## 🚀 5 分钟上手
```bash
# 1. 克隆
git clone http://192.168.110.101:3000/fnvtk/persistent-chat-plugin.git
cd persistent-chat-plugin
# 2. 部署到 ~/.persistent-chat-local
mkdir -p ~/.persistent-chat-local
cp src/* scripts/ensure-hub.sh ~/.persistent-chat-local/
cp web/panel.html ~/.persistent-chat-local/panel.html
# 3. 编辑 mcp.json填到 Trae/Cursor
cat mcp-config/trae.mcp.json
# 复制内容到 ~/.trae/mcp.json
# 4. Trae Cmd+Q 退出重开,让 MCP 重新加载
# 5. 在 SOLO Agent 窗口发"开始测试"或"继续"
```
详细见 [QUICKSTART.md](docs/QUICKSTART.md)。
---
## 🔒 垂直绑定
每个 session 用「工作区::Cursor 标签 @ IP」做绑定指纹
```
/Users/karuo/Documents/个人::持久对话永久续跑-20260626@192.168.3.1
```
换工作区 / 换标签 / 换 IP 都不会复用 session避免串台。
---
## 📊 核心指标
| 指标 | 值 |
|:---|:---|
| Hub 进程 | Node 22 (`/usr/local/opt/node@22/bin/node`) |
| 端口 | 13458 |
| 协议 | HTTP + 短轮询10s 续约) |
| 保活档 | 10s / 30s / 60s / 2min / 4min / 9min / 15min / 30min |
| 校验频率 | 每次 wait 触发一次 |
| 单 session 容量 | 无限制(内存 + JSON 周期 save |
---
## 🆘 常见问题
**Q: 提示"Token未获取, 未登录"**
A: Trae 需 `Cmd+Q` 完全退出重开,让 MCP 配置生效。
**Q: "任务完成" 是不是对话死了?**
A: 不是。Hub 上 session 仍 holding等用户下一条自动续跑。可在 http://192.168.110.101:13458/ 看到。
**Q: 如何真正关掉对话?**
A: 在对话里说"结束持久对话"agent 会主动 merge。
---
## 📜 许可证
私有项目 · 仅公司内部使用 © 2026 卡若AI
---
## 🔗 相关链接
- **Gitea 仓库**http://192.168.110.101:3000/fnvtk/persistent-chat-plugin
- **远端面板**http://192.168.110.101:13458/
- **本地备份面板**http://127.0.0.1:13458/
- **Trae 配置**`~/.trae/mcp.json`
- **Cursor 配置**`~/Documents/个人/.cursor/mcp.json`