程序员的技术剧本杀 —— 把枯燥的面试题包装成 4 阶段沉浸式排障游戏
每局 15-20 分钟,单人即可开局,AI 扮演队友(后端 / SRE / DBA / 产品 …)。 你拿到角色卡 + 私有信息 → 和 AI 队友讨论交换线索 → 在模拟监控/日志面板里找证据 → 提交诊断结论 → AI 评审打分给出复盘。
debugscene/
├── server/ # Go Kratos v2 后端
│ ├── cmd/debugscene/ # 入口 + Wire DI
│ ├── configs/ # 配置示例
│ ├── scenarios/ # ⭐ 场景 YAML 库(每个剧本一个目录)
│ ├── internal/
│ │ ├── scenario/ # YAML 注册中心:启动扫描 + 跨字段校验 + 三种投影
│ │ ├── conf/ # 配置结构
│ │ ├── biz/ # 业务用例(state machine 在 game.go)
│ │ ├── data/ # GORM 仓储
│ │ │ ├── ai/ # Eino 接入 MiMo / OpenAI 兼容
│ │ │ └── wechat/ # jscode2session 真实客户端
│ │ ├── service/ # HTTP handlers
│ │ └── server/ # Kratos transport + JWT 中间件
│ └── migrations/ # golang-migrate SQL
└── miniprogram/ # 微信小程序(TDesign + 暗色作战室主题)
├── styles/ # tokens + TDesign override
├── utils/ # 统一 request / auth / store / timer
├── components/ # 9 个共享组件
└── pages/ # 4 个页面:index / scenario-detail / game / profile
| 阶段 | 你做什么 | 时长 |
|---|---|---|
| 📋 阅读 | 读角色卡、案件背景、自己的私有信息 | 2-3 min |
| 💬 讨论 | 和 AI 队友聊天交换线索,AI 严格保持角色 | 5-6 min |
| 🔧 操作 | 在网格里调用各种「查日志/查监控」操作,根据角色权限解锁线索 | 3-4 min |
| ✅ 答题 | 提交根因 / 解决方案 / 关键知识点,AI 评分给出解析 | 2 min |
倒计时只提示,不强制推进(软计时)。
| 层 | 技术 | 说明 |
|---|---|---|
| 前端 | 原生微信小程序 + TDesign | 暗色作战室主题 + t-icon 替代 emoji |
| 后端 | Go + Kratos v2 + Wire | 三层架构 + DI |
| ORM | GORM + PostgreSQL | 手写 SQL 迁移(golang-migrate) |
| AI | Eino + OpenAI 兼容 | 接 MiMo / Qwen / OpenAI 任一;角色扮演链 + 评分链 |
| 缓存 | Redis(可选) | 启动失败不阻塞 |
每个场景一个目录 server/scenarios/<slug>/,包含 scenario.yaml + README.md。模板示例见 server/scenarios/p0-mysterious-502/。
关键字段(具体看 server/internal/scenario/schema.go):
- metadata:slug / version / title / summary / category / difficulty / tags / personas
- game:phases 三段时长 + roles(恰好 1 个
is_player: true) + operations(带allowed_roles) - evaluation:标准答案 + rubric(权重求和必须 100) + passing_score
- hints:按 level 升序的渐进提示
启动时全部 YAML 必须通过校验,否则进程退出。
需要:Go 1.23+、PostgreSQL 14+、golang-migrate、Node、微信开发者工具
# 1. 数据库
createdb debugscene
make migrate-up # DB_URL 可覆盖
# 2. 配置(填 MiMo API key,开发期保留 auth.dev_mock_login=true)
vim server/configs/config.yaml
# 3. 启动后端
make run
# 4. 小程序
make mp-install # 安装 tdesign-miniprogram
# 然后微信开发者工具 → 导入 miniprogram/ → 工具 → 构建 npm后端 smoke test:
make scenarios-check # 校验 3 个 YAML 全部加载通过
curl :8080/v1/scenarios | jq # 应返回 3 条 summary- ✅ Phase 1:单机 + AI 队友(当前版本)
- ⏳ Phase 2:WebSocket 多人房间,3-5 人组队
- ⏳ Phase 3:剧本编辑器 + 社区 UGC + 排行榜
- 场景即数据:作者投稿 YAML 文件,不改代码即可上线新剧本
- AI 不耦合:通过
biz.AIRepo接口反向依赖,换模型只换 data/ai - 失败可恢复:阶段切换乐观锁;AI 评分失败标 pending 不阻塞游戏
- 生产即默认安全:production env 校验拒绝 mock 登录、弱 JWT、缺 API key
MIT