gqy20
dsh-showrunner
Agent show/game engine for DeepSeek Harness: scenario packs, machine-adjudicated matches (archaeology MVP), replayable event logs
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-showrunner
Agent 节目与游戏引擎:DeepSeek Harness 负责 Agent 运行时,Showrunner 负责权威比赛状态,Scenario Pack 定义每种节目。
首个节目《消失古城的最后七天》:三名 Agent 考古队(领队/铭文学者/环境考古员)带着各自的私有提示,在有限挖掘点与检测预算下发掘一座虚构遗址,提交带证据的历史假说,由机器揭晓真相。4 个 Agent(1 导播 + 3 玩家)可全自动打完一局,web 界面有地图/证据板/揭晓的游戏卡片。
安装(DeepSeek Harness 插件)
dsh plugin --profile web add github:gqy20/dsh-showrunner
dsh --profile web --dump-config | grep -A2 showrunner # 应出现插件行
dsh web # 对 agent 说「开始一局考古比赛」
要求:已配置任意 LLM provider(DeepSeek 官方或 pi-ai 路由均可)。发布细节见 docs/engineering/01-release.md。
结构
src/core/ 纯 TS 状态机(零 cordis 依赖,可独立单测)
types.ts Match / Action / Scenario / GameEvent
reduce.ts applyAction:唯一写入口;说话零效力
projection.ts publicView / playerView:防泄漏的唯一防线
oracle.ts 假说 vs 隐藏历史的机器对照
schema.ts scenario YAML 装载与校验
src/host/ cordis 适配层(待实现,见 src/host/README.md)
scenarios/ Scenario Pack(数据不是代码)
tests/ core 单测
docs/ 选题库、平台调研、可行性评审
当前状态
- core:考古状态机(survey/dig/test/hypothesize/advance)、逐层挖掘、资源扣减、防泄漏投影、oracle 计分
- scenario:archaeology-lost-city(3 角色、4 区域 × 3 地层、12 证据、2 假说线、隐藏历史)
- host:玩家 subagent(spawn provider、persona+私有提示、session 身份绑定、advance 时观察分发)+ game_export
- 端到端验证:4 agent(1 导播 + 3 玩家)完整打完一局(glm-5.3),终局与 game_export 数据零出入
- 引擎提示:阶段推进时机由状态机判定(LLM 导播会幻觉终局——三局对比见 docs/README 或 session 记录)
- 自动推进:phaseComplete 级联 advance(core 纯函数,13 测试),一局全程无需导播决策
- 持久化:~/.dsh/showrunner-match.json 单文件覆写;重启恢复 Match/玩家 childId/导播(第一个 root 接管并唤醒冷恢复玩家)
- client:GameCard 工具卡(tool.call.toolview 注册 7 个游戏工具,地图网格/证据板/资源条/揭晓区),web 端截图验证渲染
- 传话第 0 期内容试验(独立小脚本,不经本引擎)
- client:composer 挂资源条 / conversation.view 独立游戏 tab(按需)
测试与构建:npx vitest run(13 用例)、npx tsc --noEmit、../deepseek-harness/node_modules/.bin/tsdown(host lib/ + 浏览器 lib/client.js)。
开发期接入(已持久化到 ~/.dsh/profiles/{web,headless}/cordis.patch.yml,含 GLM-5.3 玩家模型,免 flag):
cd ../deepseek-harness
pnpm dsh web # 浏览器 http://127.0.0.1:3080,对 agent 说"开始一局考古比赛"
pnpm dsh --profile headless "<导播 prompt>" # 命令行跑一局
使用
pnpm install
pnpm test # vitest,13 个用例
npx tsc --noEmit # 类型检查
文档
见 docs/README.md(文档地图):research/ 产品调研与评审 · product/ 选题与互动策略 · topics/ 19 个选题(按优先级编号)· engineering/ 发布与工程流程。