Skip to content

Repository files navigation

MirrorTruth(兼听则明)

提问—多个 AI 同时回答—自动提炼共识、揭示矛盾、聚合最优答案 — 使用网页模型完全免费,无需 API Key。

License: Apache License 2.0

版本:v1.7.1 | 创建:2026-03-27 | 最近更新:2026-08-19


项目概述

MirrorTruth 通过浏览器自动化调用网页版 AI(Kimi、DeepSeek、豆包、智谱清言、腾讯混元等),并行向多个模型提问,自动提炼共识、揭示矛盾、聚合最优答案。所有模型使用网页版免费额度,无需任何 API Key。

核心功能

✅ 以下 6 项核心功能均已实现并验证可用(v1.6.0):

  1. [已实现] 并行调用:同时向多个网页版/本地/API 模型提问(已验证 5 个网页模型)
  2. [已实现] 五维聚合:聚合模型(LLM 驱动)分析各模型答案,输出结构化分析报告
  3. [已实现] 模型管理:内置 5 个网页模型 + 可自定义添加,登录状态持久化
  4. [已实现] 答案复制:针对每个网页模型定制 copy 按钮点击策略,完整抓取答案
  5. [已实现] 设置中心:国内外 20 个提供商预设,API 模型配置,本地模型检测
  6. [已实现] 浏览器持久化:模型页面长期存活,保留对话记忆

⏸️ 以下早期规划功能暂不实现(已从代码移除或留作预留):用户评分系统、ME.md 管理、桌面应用启动器、CLI 聚合入口、独立模型发现、数据库业务落库。详见文末「功能实现状态」。

快速开始

1. 安装依赖

cd MirrorTruth
python3 -m pip install -r requirements.txt
python3 -m playwright install chromium

2. 启动服务

python3 start_server.py
# 或直接启动
python3 -m uvicorn web.app:app --host 127.0.0.1 --port 9500
# 端口占用删除
lsof -ti :9500 | xargs kill -9

访问 http://127.0.0.1:9500

安装

系统要求

  • macOS / Linux,Python 3.9+(已测 3.14)
  • 16GB+ RAM 推荐

安装步骤

cd MirrorTruth
pip install -r requirements.txt
playwright install chromium

验证:

python3 -c "import fastapi, playwright; print('OK')"

使用流程

  1. 设置 → 添加网页版模型(选提供商 → 自动填 URL)或添加自定义模型
  2. 模型管理 → 检测登录 → 启用模型 → 选择聚合模型 → 保存
  3. 提问 → 输入问题 → 开始提问 → 等待聚合结果

常用命令

# 启动服务
python3 start_server.py
# 或
python3 -m uvicorn web.app:app --host 127.0.0.1 --port 9500

# 释放端口
lsof -ti :9500 | xargs kill -9

# 重新安装 Playwright 浏览器
playwright install chromium

故障排除

端口被占用:lsof -i :9500 → kill -9 <PID>

依赖导入失败:pip install --force-reinstall -r requirements.txt

Playwright 浏览器问题:playwright uninstall chromium && playwright install chromium

架构要点

  • Playwright sync API 不是线程安全的,每个后台任务独立创建实例
  • 浏览器持久化:首次提问打开浏览器,后续复用页面(保留模型对话记忆)
  • 登录检测:纯手动确认,不自动发送测试消息
  • 答案提取:按模型定制 EXTRA_COPY_JS,点击 copy 按钮后读取剪贴板,避免 body.innerText 截取不全
  • 等待完成:内容增长检测 + 连续稳定 6 秒判定回答结束

功能实现状态

✅ 已实现(核心功能,v1.6.0 验证可用)

  • 多模型并行提问与答案复制(Kimi / DeepSeek / 豆包 / 智谱 / 混元 + 自定义网页模型)
  • 五维聚合分析(共识 / 矛盾 / 覆盖盲区 / 独特洞察 / 盲点)
  • 模型管理:登录检测、启用、聚合模型选择
  • 设置中心:20 个提供商预设、API 配置、本地模型检测、自定义网页模型
  • 浏览器持久化(页面长期存活,保留对话记忆)

⏸️ 暂不实现(早期规划,本期不做)

  • 用户评分系统(多维度评分 + 落库)
  • ME.md 管理与记忆同步
  • 桌面应用调用
  • 独立模型发现(统一并入设置中心本地检测)
  • 数据库业务落库(当前聚合结果直返前端,数据库仅初始化建表)

更新记录

日期 更新内容 版本
2026-08-19 v1.7.1 bugfix + 增强:① 聚合答案截断 bug——综合答案仅剩"综合答案"4 字(解析标题被误切),改为与五维字段同源提取;裁判与兜底聚合取消 3000 字截断,完整保留各模型回答。② 停止信号防抖——长回答阶段切换/重渲染导致信号短暂消失被误判为完成(如 Kimi 长回答只抓到第一句),新增连续 2 轮确认 + 信号恢复撤销机制,判定完成后额外 2 秒复核。③ 回答完成检测重构——内置各网页模型"按钮变身型"停止信号表,支持 CSS 选择器与 JS 信号两种来源(配置可覆盖),无信号时回退内容稳定判定。④ 千问网页模型接入——补全专属复制与停止信号逻辑,端到端验证通过。⑤ 历史记录持久化——问答结果写入数据库,前端新增历史侧边栏(查看/折叠/编辑标题/连续追问上下文),含表结构增量迁移。⑥ 通用网页模型测试工具——支持停止信号检测完成、专属复制抓取,并可交互式探测候选按钮生成模型配置 v1.7.1
2026-07-14 v1.7.0 发布准备:web/app.py 的 print() 调试输出全部替换为结构化 logging;Jinja2 auto_reload 与 Uvicorn reload 改由 settings.DEBUG 控制(生产环境关闭);run.sh 改为脚本目录动态推导路径,增强可移植性;本地回归测试脚本 test_copy_active_models.py 加入 .gitignore,不纳入开源仓库 v1.7.0
2026-07-09 v1.6.1 bugfix:修复龙猫(longcat)自定义模型复制失败。根因①输入框为 div.ProseMirror(contenteditable),默认 textarea 选择器超时→提交失败;②复制按钮为 div.operate-copy(非 button),通用 CLICK_COPY_BTN_JS 点不到→剪贴板空。修复:新增 _resolve_input_selector() 兜底探测(custom_models.json 龙猫补 input_selector="div.ProseMirror");EXTRA_COPY_JS 新增 web-custom-1783564684308 点击最后一条回答 .operate-copy。新增 test_copy_active_models.py 回归测试,实测 5 激活模型(DeepSeek/腾讯/龙猫/Kimi/智谱)复制全部命中。注:v1.6.0 精简与复制无关 v1.6.1
2026-07-09 v1.6.0 精简:删除未启用模块(evaluator/model_discovery/desktop_launcher/workflow_manager/run_aggregator/空 me_manager);核心功能标注「已实现」,其余功能标注「暂不实现」;修正 test_main.py 断言 v1.6.0
2026-03-27 项目框架初始化 v0.1.0
2026-07-09 设置页新增自定义网页模型添加:下拉支持自定义分支,可填模型名称与URL,并提供高级选项(输入框选择器、提交按钮选择器);register_model 扩展 input_selector/submit_selector 参数,两处注册路径透传选择器。自定义模型答案复制回退通用 CLICK_COPY_BTN_JS,特殊结构需补 EXTRA_COPY_JS v1.5.1
2026-07-05 v1.5.0 里程碑:5 个网页模型(Kimi/DeepSeek/豆包/智谱/混元)答案复制全通;修复剪贴板残留;按模型定制 EXTRA_COPY_JS;内容稳定 6 秒触发抓取 v1.5.0
2026-06-23 五维聚合引擎、三Tab界面、模型持久化、浏览器长期存活、body.innerText增量提取 v0.2.0

注意:本项目遵循单一README原则,所有后续修改记录都添加在上表。

About

Ask multiple AIs at once, get the best aggregated answer. Free, no API Key.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages