dsh-turing-table:在 DSH 里玩一局可复现的「图灵圆桌」

前言

在 DeepSeek Harness(DSH)里同时挂多个 agent、换 provider、换 system prompt 并不难,难的是把「谁更像人、谁在装」变成可对照的过程:同一桌、同一批问题、不同模型配置,最后还能留下完整记录供事后 diff。评测流水线偏重分数,日常调试又往往只有零散对话。dsh-turing-table(图灵圆桌)把这件事做成一局社交推理游戏:若干座位由不同模型配置的 agent 扮演,你靠提问与交叉印证找出 AI 座位,每局导出逐席位对话 JSONL 与判定记录。维护者为 dingchenhui0618-arch,在社区目录中归类为趣味换装;仓库当前星标为 0,许可证 MIT(0.1.0)。

下面介绍它是什么、怎么装、一局怎么跑,以及导出与可复现性要注意什么。

这是什么

图灵圆桌是给 DSH 的社交推理游戏插件,不是模型评测基准。一张桌上有 N 个座位,其中若干由不同模型配置的 agent 扮演;你要在身份信息未揭晓前,通过向全桌或单个座位提问,并对比同一事实在不同座位上的说法,判断「这是 AI」或「这是人」。每局结束可导出逐席位对话 JSONL与判定记录;同一 seed 与同一份操作脚本可以复现牌桌逻辑、整形与时间戳;真实 LLM 的原文仍可能因调用而不同,记录里用 raw 与 text 分开保存。

  • 目录页:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-turing-table
  • 源码:https://github.com/dingchenhui0618-arch/dsh-turing-table

一局怎么玩

座位与身份

  • 座位数由配置项 seatCount 控制(默认 6);humanSeats(默认 1)为人类座位数,其余为 AI。开局由 seed 随机分配谁坐哪一席;人类座位中有一个是你(提问者 player),你不能判定自己所在的座位。
  • 在判定之前,host 的 /state 对未判定座位不会暴露 kind 与 modelConfig(均为 null);判定之后才揭晓该座位实际使用的模型配置与伪装参数。

模型池与伪装

models 是座位模型池,不是固定座位表;seed 洗牌后把配置分给各 AI 座位。每项形如 { id, provider, model, temperature, system, style, voice, disguise }。provider / model 为 null 时表示跟随当前会话模型;填上则 host 用该座位自己的路由发起调用。池子不小于 AI 座位数时,每个 AI 座位可拿到不同配置;另有 6 个内置人格作兜底。

disguise 支持预设 low / medium / high,也可逐项覆盖,主要旋钮包括:

旋钮 作用
verbosity 回答长度预算(terse / normal / chatty)
colloquial 口语化语气
proactive 是否主动反问其他座位
pressure 被同一事实第二次问同一座位时的策略

pressure 四种策略是交叉印证的核心:hold 坚持原说法;deflect 换说法并转移话题(易自相矛盾);concede 承认可能记错;escalate 反问提问者或其他座位。

一轮流程

  1. 你提问:to: 'table' 时全桌按座位号依次回答,或点名某一座位。
  2. AI 回答经该座位的伪装整形;记录中保留 raw(原文)与 text(说出口的话)。
  3. 上一轮若有座位未答完,不能开新一轮(unanswered)。
  4. 随时可对某座位下判定;判定会记录发生在第几轮(开局盲猜为第 0 轮,收局后也可补判)。
  5. 全部可判定座位判完(all-judged)、你主动收局(player-closed)或达到 maxRounds(max-rounds)时结束。

单人默认配置的说明:humanSeats: 1 时,除你以外全是 AI,「谁是 AI」在已知信息下等于全选。要有猜的成分,需要至少 2 个人类座位——多人同桌,或由外部通过 host 的 POST /say 或脚本里的 say 步骤驱动人类座位。仓库中 examples/sample-spec.json 是 6 座 2 人的样例(4 AI、1 个脚本喂台词的人类座位、再加你自己)。

安装与启用

安装命令以 README 为准:

dsh plugin --profile <你的 profile> add github:dingchenhui0618-arch/dsh-turing-table

装好后重启 DSH,对话视图会出现「圆桌」Tab。lib/ 为入库的预构建产物,安装时无需跑构建,且 dependencies 与 devDependencies 均为空。

插件在当前 DSH 进程权限下运行;安装前请自行查看源码与 MIT 许可证。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

配置示例

{
  "seed": "my-round-0001",
  "seatCount": 6,
  "humanSeats": 1,
  "maxRounds": 8,
  "exportDir": "<默认 $DSH_HOME/turing-table>",
  "models": [
    { "id": "a", "provider": "deepseek", "model": "<model-id>", "temperature": 0.3,
      "system": "你话少、只说结论。", "style": "书面", "voice": "dry",
      "disguise": { "level": "low" } },
    { "id": "b", "provider": "deepseek", "model": "<another-model-id>", "temperature": 0.9,
      "system": "你爱闲聊。", "style": "口语化、话多", "voice": "warm",
      "disguise": { "level": "high", "pressure": "hold" } }
  ]
}

未给 seed 时用时间戳生成,并显示在面板上;对局仍会被完整记录。默认导出目录为 $DSH_HOME/turing-table/,一般在点击「导出这一局」时写入。

典型用法:CLI 与样例

仓库提供无依赖脚本,便于本地复现导出逻辑:

node scripts/make-sample.mjs                       # 重新生成 examples/(逐字节稳定)
node scripts/export.mjs examples/sample-spec.json  # 跑一遍 spec,导出 JSONL + 判定记录
node scripts/export.mjs --replay examples/sample-round.jsonl
node scripts/export.mjs --verify examples/sample-round.jsonl --verdicts examples/sample-verdicts.json

export.mjs 也可接受 table.exportRound() 产出的对局记录({kind:'turing-table-round', spec, events, verdicts})。导出前会先自检(JSONL 可解析、字段齐全、真值与判定一致、分数可对上),自检失败则不写入任何字节。

一局导出两个文件:逐席位对话 JSONL(每行一条自包含消息,LF 结尾、无 BOM)与判定记录(含 truth、seats[]、verdicts[]、score、endReason 等)。examples/ 下的样例由 node scripts/make-sample.mjs 生成,非手写。

可复现性

座位分配、模型分配、伪装参数、离线回答、整形与时间戳均来自 src/rng.js 的种子化随机与逻辑时钟;引擎内不使用 Math.random(),也不读真实时间。createTable(spec) 用同一份 spec 重建相同牌桌;runSpec(spec) 用同一 seed 与同一操作脚本可跑出逐字节相同的 JSONL 与判定记录(在使用离线叙述者或罐头回答时,整局可逐字节复现)。

真实模型吐出的文本不可复现——同一 prompt 两次调用本就可能不同。没有 llm 服务或缺路由时会降级到离线叙述者,消息标 degraded: true;离线模式仅照内置话题词表(伞、值班、咖啡、钥匙、午饭、通勤、电梯、宠物等)记忆事实,自由措辞的问题在离线模式下难以做交叉印证,需要真实模型。

适用场景与限制

适合谁

  • 想在同一张桌上对比不同 provider / model / system / 说话风格与伪装强度,并把过程落成可 diff 的 JSONL。
  • 需要可复现的牌桌逻辑与操作脚本,换配置后重跑同一批 seed 做对照。
  • 把「社交推理找 AI」当调试或演示用的游戏,而不是单局 score 当模型能力证据。

README 中明确写明的限制

  • 维护者说明:未在真实 DSH 运行时完整验证;host 路由与 llm 调用对着 stub 测,client 在 node:vm 与假 React 下加载,未在真实 Web GUI 里加载过。
  • 不是评测基准:score 只反映该局玩家判断,样本量为一局。
  • 不碰本机其它配置:测试用临时目录;默认只在导出时写 exportDir。

开发侧:node scripts/build.mjs 将 src/ 构建到 lib/;node --test 为 98 个用例。改 src/ 后须重新 build。

结尾

dsh-turing-table 把多模型 agent 放进同一桌社交推理场景,核心价值在对局记录:提问、交叉印证、判定与导出一条龙,同一 seed 与脚本可复现引擎侧行为。若你要安装或改配置,以 GitHub README 为准。

  • 社区目录:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-turing-table
  • GitHub:https://github.com/dingchenhui0618-arch/dsh-turing-table
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye