Skip to content

bcefghj/mingbian

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

明辨 MINGBIAN · 多智能体证据研判引擎

你问一个需要下判断的问题,它派一支专家团联网取证、交叉验证、自我质检, 最后给你一份每句话都能点开看出处的研判报告。

InfiniSynapse × CSDN「Vibe Coding」泛数据分析应用开发大赛 · 参赛作品

在线体验: http://47.119.112.225/mingbian/ 代码仓库: https://github.com/bcefghj/mingbian 健康检查: http://47.119.112.225/mingbian/api/health 调用台账: http://47.119.112.225/mingbian/ledger (每次 InfiniSynapse 调用的 taskId 可核验)


名字的来历

《中庸》讲做学问的五步:博学之,审问之,慎思之,明辨之,笃行之

这不是文案,是这个产品的流水线本身——取证(博学)、质询(审问)、推理(慎思)、 质检与裁定(明辨)、给出行动(笃行)。产品叫「明辨」,取的是第四步: 辨得清,才说得出。


它到底解决什么问题

你在网上搜「这个理财项目是不是骗局」,会得到几十条互相矛盾的说法。 有的是营销号洗稿,有的是几年前的旧闻,有的干脆是同一篇稿子被三家网站转载。 你没有时间一条条点开核实——而这恰恰是唯一有用的事。

明辨做的就是这件苦活:

常见困境 明辨的做法
观点满天飞,不知道信谁 只认可核验的来源,每条结论绑定证据 ID,点一下就能看原文
模型张口就来,编出一个不存在的链接 模型引用的每个 URL 都真去访问一次,打不开的不计入证据强度
三个来源其实是同一篇稿子 按主域归一 + 文本雷同聚类,转载副本不算独立来源
「没搜到」被当成「不存在」 五种取证状态显式区分,没查到就写明查了什么、在哪查的
报告写得漂亮但经不起追问 质检门禁会打回重做,未达标项如实写进报告,不掩盖
置信度就是一个拍脑袋的百分比 拆成基准率 + 每一项调整 + 最终区间,每一步都写明理由

核心设计:三条不肯让步的规矩

1. 无证据不立论

论点强度由代码判定,不由模型自评。规则简单到可以当面手算:

没有证据                 -> unsupported(不支持)
有反向证据且双方都成立     -> contested(存在争议)
≥ 2 个独立主域            -> strong(强,且标记为已交叉验证)
≥ 2 条同源证据            -> moderate(中等)
仅 1 条                   -> weak(弱)

模型可以说得天花乱坠,但它给的每条论点会被拿去和真实抓取到的证据池比对。 绑不上证据的论点,代码会把它标成 unsupported 并计入质检失分。

2. 诚实降级

取证失败时返回的不是空数组,而是一个结构化的缺口(Gap), 写清楚:查了哪些关键词、在什么范围内查的、索引新鲜度、以及「没查到」这件事本身有多可信。

五种取证状态一律显式标注,绝不含糊:

状态 含义
sourced 已取证,原文抓取成功
pending 检索中
retrieval_failed 链接打不开,可重试
no_support_found 检索通道正常,但确实零命中
not_searched 没检索,结论基于模型先验(会明确标出来)

3. 一切可回放

每次运行都有完整的 trace:哪个专家、在哪个阶段、看了哪些证据、做了什么判断、 花了多少毫秒。报告页旁边就是「决策回放」,可以一步步看它是怎么想到那儿去的。


双通道取证

这是明辨和「套个壳调大模型」的根本区别——它自己也会查。

                   ┌─ InfiniSynapse (deepseek-v4-pro)
                   │    引擎自身的 agent 循环,自主联网检索十几轮
   用户问题 ────────┤
                   └─ 明辨自己的取证层
                        ├─ 博查 Web Search   全网索引,结构化摘要 + 发布时间
                        ├─ 语义排序 Rerank   按与问题的相关度重排,滤掉关键词碰巧命中
                        ├─ 行情接口          新浪 / 东财 / Binance / CoinGecko 等实时数字
                        └─ HTML 抓取兜底     搜狗 / 百度 / 360(博查不可用时接管)
                                │
                                ▼
                        逐条访问核验 → 主域归一 → 可信度打分 → 雷同聚类

为什么要接博查: 自己爬搜索引擎 HTML,拿不到发布时间,也拿不到干净的正文摘要。 而来源可信度打分里「有没有发布日期」「时效多久」「摘录够不够长」全是加减分项。 博查直接给结构化字段,取证质量和打分精度一起上来了。没配 key 也能跑, 会自动退到 HTML 抓取,并在报告里如实标明「本次走的是兜底通道」。

为什么可信度不让模型打分: 让模型给自己找的来源打分,等于让考生自己判卷。 明辨的 credibility.py 是一套纯规则打分(0–100):来源类型基础分、 有无发布日期、时效、正文是否真的抓到、域名类别……每一分的来历都会在 UI 上列出来。


专家团:16 席,三层,动态派遣

席位 职责示例
决策层(3,常驻) 首席研判官 · 质检官 · 红队官 统合裁定 / 质检打回 / 专职证伪
分析层(6) 宏观周期 · 行业竞争 · 市场定价 · 财务尽调 · 司法风控 · 关联溯源 各自的专业视角与偏好信源
取证层(7) 官方公告 · 统计数据 · 财经媒体 · 舆情情报 · 社区口碑 · 学术研究 · 历史对照 分头去不同类型的来源里捞证据

派遣是可解释的:报告里会写「问题命中『骗局、稳赚、日返』,判定为反诈类, 除常驻三席外追加派遣司法风控、关联溯源、官方公告、舆情情报、社区口碑」。 不是随机凑人头。

红队官是刻意设计的——它的 KPI 是找出其他专家的漏洞, 绝不为了达成共识而妥协。报告里的「争议点」和「少数派意见」由它产出。


流水线:七节点 DAG,带返工回路

① 意图漏斗      拆问题、判领域、定档位
② 研判计划      派专家、列子问题、定检索策略
③ 博学 · 取证    博查检索 + 行情接口 + 逐条访问核验
④ 审问 · 质询    可信度打分、雷同聚类、独立性检验
⑤ 慎思 · 推理    InfiniSynapse 加权推理与成文
⑥ 质检 · 门禁    规则 + LLM 五维打分 ──未过──┐
⑦ 笃行 · 落地    行动清单、实体图谱、指标      │
                                              │
        ┌─────────────────────────────────────┘
        │ 证据不足 → 打回 ③ 补采
        └ 推理有问题 → 打回 ⑤ 重写

返工不是摆设。规则层会检查:已核验证据数、独立主域数、论点绑证率、 维度覆盖率、必备章节是否齐全。任何一项不达标就生成结构化 Issue, 装进 Envelope 打回对应节点。返工额度用满仍未达标,就把未达标项如实写进报告。

三个档位:

档位 角度 取证 返工 实测耗时
速判(默认) 4 6 条 0 轮 约 3 分半
深研 6 12 条 1 轮 约 8 分钟
专家 9 16 条 2 轮 约 14 分钟

耗时是实测中位数,不是好看的数字。引擎自己要跑十几轮联网检索, 与其写「40 秒」让人干等,不如一开始就说实话。首页的示例卡是提前跑好的真实报告, 点开零等待。


界面

九个页面,同一套深色分析师控制台设计语言:

页面 作用
/ 提问 + 实时工作台:DAG 进度、思维流、证据卡实时流入
/report/{id} 研判报告:结论、置信度拆解、论点卡、证据表、争议点、缺口、行动清单
/trace/{id} 决策回放:一步步重放每个专家的判断
/graph/{id} 实体工作台:力导向图,点实体看它牵连的全部证据与论点
/dashboard 产品指标:效率、覆盖、一致性、准确性、人工修正率(都给公式)
/experts 16 位专家名册与派遣规则
/ledger InfiniSynapse 调用台账:每次调用的 taskId、模型、耗时,可核验
/bench 10 道固定基准题与迭代曲线
/about 方法论:铁律、取证状态、打分规则、IPCC 概率标度、指标定义

交互上花了心思的地方:引用角标显示域名而不是 [1](你一眼知道这条是政府网站还是自媒体)、 点论点高亮对应证据行、划词可以就地深化追问、报告流式生成时用占位骨架而不是空白转圈。


快速开始

git clone <repo> && cd mingbian-app
python3 -m venv .venv && ./.venv/bin/pip install -r requirements.txt
cp .env.example .env      # 填 INFINI_API_KEY 和 BOCHA_API_KEY
./.venv/bin/python run.py # 默认 127.0.0.1:8767

必填配置:

INFINI_API_KEY=sk-xxxx            # InfiniSynapse,主引擎
INFINI_MODEL=deepseek-v4-pro      # 显式锁定模型
BOCHA_API_KEY=sk-xxxx             # 博查检索,不填会退到 HTML 抓取兜底
PRIMARY_ENGINE=infini

生成首页示例(真跑,不是编的):

./.venv/bin/python scripts/seed_demos.py        # 全部六个
./.venv/bin/python scripts/seed_demos.py scam   # 只跑一个

部署到服务器(多项目隔离,独立 venv + systemd + nginx location):

sudo bash deploy.sh

项目结构

app/
  pipeline.py      七节点 DAG 编排、Envelope 传递、返工回路
  models.py        数据契约:Evidence / Claim / Gap / Issue / Quality,以及论点强度规则
  credibility.py   纯规则可信度打分,不经模型
  audit.py         质检门禁:规则层 + LLM 五维评审
  infini.py        InfiniSynapse 客户端,锁定 deepseek-v4-pro,SSE 流式
  minimax.py       降级备用引擎,接口与主引擎一致
  experts.py       16 席名册与动态派遣
  prompts.py       提示词、mb-meta 结构化契约、档位配置
  entities.py      实体归一、关系抽取、雷同聚类
  trace.py         全链路追踪、事件日志、告警规则
  metrics.py       产品指标计算(每个指标都带公式与口径说明)
  bench.py         10 道固定基准题与历史曲线
  store.py         报告存储 + InfiniSynapse 调用台账
  collectors/
    bocha.py       博查 Web Search + 语义排序(主检索通道)
    search.py      检索调度:博查优先,HTML 抓取兜底
    web.py         逐条访问核验,跟随 JS 跳转拿真实域名
    market.py      实时行情接口
web/
  index.html + 八个页面,static/ 下是 mb.css 设计系统与三个 JS 模块

比赛合规说明

  • 主引擎为 InfiniSynapse 官方 Server API,模型显式设定为 deepseek-v4-pro, 每次调用在会话中显式锁定模型,不依赖账户默认值。
  • 每次调用都落台账/ledger):taskId、模型、问题、耗时、分享链接, 可在 InfiniSynapse 后台逐条核验。
  • MiniMax 仅作为降级备用通道,触发降级时 UI 会明确显示「已降级」,不冒充主引擎结果。
  • 博查 Web Search 用于取证层,与引擎自身的联网检索互为补充,两者的检索行为在思维流里都可见。

About

明辨 MINGBIAN · 多智能体证据研判引擎

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages