Skip to content

Latest commit

 

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

多 Agent 文字游戏 (multiAgentGame)

基于 Overlord 世界观的多智能体文字游戏。角色通过文件配置,有"系统/导演"编排剧本、触发事件、推动剧情;每个角色有各自长期记忆;主角由玩家操控(战斗可 AI 托管)。

状态

M0 + M1 + M2 + v1.1 + v2 + v3 全部完成,129 个测试通过 + 2 跳过(真实 LLM)。

v3 新增(基于用户反馈,见 docs/feedback-log.md):

  • 增强界面:prompt_toolkit Tab 补全(@角色 / /命令)、彩色输出(发言/系统/心声/行动/描述五色)、LLM 思考进度 spinner

  • 群聊串行调度:多 agent 按 position_rank 依次发言,后发言者引用前人发言(不再各说各话)

  • 内容点名路由:无 @ 时按文本内容路由(如"shalltear你去吧"→夏提雅)

  • 任务时间线:任务派发后持续推演,/next 推进系统↔队长自动交互(局势推演+汇报+请示),玩家可旁观或介入

  • Actor 模型(单线程协作式):角色/导演都是 actor,信箱通信

  • 记忆:SQLite 原始流水 + ChromaDB 向量(LlamaIndex 检索),每角色独立 collection,反思层(高阶信念合成)

  • 导演:声明式剧本 + 受限 trigger DSL + player_directives 自主推进 + 张力曲线管理

  • 战斗:完整公式(乘法防御 + 命中/闪避/暴击/克制/魔抗 + 天赋),纯函数 resolver,种子可复现,AI 托管

  • 任务方针:战略(雅儿贝德给目标)→ 队长执行 → 玩家中途拍板,数据驱动方针池(7 个,config 可扩展),含终止护栏

  • 角色卡生成:遇新角色 LLM 生成(不审核),数值钳制

  • 关系/情绪:affinity(玩家可见)+ mood(影响发言)

  • 内心戏:主角旁白特权(他人不感知)

  • 群聊:@多人(@夏提雅 @雅儿贝德 文字)、@all 全员在场、@单角色 一对一

  • @自动补全:单独 @ 列候选,前缀匹配;追问默认沿用上次对象

  • 超越点:满级后 exp 转 overlord_points,可消费换永久属性

  • 信念建模:角色对其他角色的已知信息建模(权谋/信息隔离)

  • 存档/回放:步边界存档,think-trace + provenance 日志

  • 真实 LLM:HttpLLM(OpenAI 兼容),异构多模型(雅儿贝德=kimi-k2.6、夏提雅=glm-5.2、其余=deepseek-v3.2)

运行

# 安装(需 Python 3.11+,本机用 py -3.14)
pip install -e ".[dev]"

# 配置真实 LLM(OpenAI 兼容,如 cp.compshare.cn)
cp .env.example .env
# 编辑 .env 填入 MAG_LLM_BASE 和 MAG_LLM_KEY(.env 已 gitignore)

# 跑游戏(自动加载 .env)
py -3.14 main.py

# 跑测试(无凭据时自动回退 StubLLM,跳过真实 LLM 测试)
PYTHONUTF8=1 py -3.14 -m pytest -q
# 跑含真实 LLM 的测试:
MAG_LLM_BASE=... MAG_LLM_KEY=... PYTHONUTF8=1 py -3.14 -m pytest tests/adapters/test_http_llm.py -q

命令

  • @角色 文字 — 与该角色一对一对话
  • @A @B 文字 — 多人在场群聊(B 模式)
  • @all 文字 — 全员在场群聊(C 模式)
  • @ 单独输入 — 列出可选角色(自动补全)
  • 追问(无 @) — 沿用上次对话对象
  • @系统 生成剧情 [主题]系统命令:导演据玩家基调 LLM 生成剧情事件+敌人卡,注入为待执行任务
  • @系统 跳过 — 取消当前待办任务
  • @系统 在场谁 — 列出在场角色
  • @系统 文字 — 对导演自然语言提问(走 LLM)
  • /leave — 退出当前对话
  • /next — 推进一个时间步(按剧本 trigger 触发事件)
  • /approach 战斗|逃跑|打探情报 — 对当前待办任务拍板方针执行
  • /save /stats /quit

触发剧情任务

两种方式:

  1. 配置剧本:config/scripts/*.yaml 定义事件 + trigger(on_time at_step:N / on_flag / on_condition),/next 推进到触发步时导演自动点燃。
  2. 系统生成:@系统 生成剧情 [主题] → 导演用真实 LLM 据玩家 directives 生成事件 + 数值钳制的敌人卡 → /approach 战斗 出击 → 真实回合战斗 → 结果存档。

配置

  • config/characters/*.yaml — 角色卡(人设/属性/技能/天赋/动机/好感/模型)
  • config/scripts/*.yaml — 剧本弧(事件/触发/分支)
  • config/settings.yaml — 全局(LLM 模型池/记忆/导演/战斗/恢复)
  • config/player_directives.yaml — 玩家剧情规则(基调/节奏/主题/种子)

架构

详见 docs/superpowers/specs/2026-07-19-multi-agent-game-design.md。 模块:

  • domain/ 纯数据(character/world/scene/message)
  • actors/ actor(character_actor/director_actor)
  • memory/ LlamaIndex 检索层(store/retriever)
  • director/ 导演大脑(event_rules/power/flee/approach_sim/char_card_gen/consequences)
  • combat/ 战斗(resolver/scene/ai_pilot)
  • engine/ 运行时(scheduler/game_loop/game_log/save/recovery)
  • adapters/ 外部(llm/cli/config_loader)

延后(可选,接口已留)

摘要级联压缩、真并发 actor、天赋通用脚本引擎、觉醒天赋解锁树。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages