Skip to content

Akagilnc/ming-salvage-sim

 
 

Repository files navigation

明末力挽狂澜 · 微硬核分支

明末力挽狂澜主页

你是崇祯。

你知道十七年后北京城破,知道煤山那棵树在等你,也知道大明不是死于某一个敌人,而是死于国库空虚、辽东失血、流民四起、党争内耗、官僚敷衍、军队欠饷和一次次“朕已知悉”之后的无力。

但这一次,朕已知悉不能只是四个字。

你可以召见大臣,追问户部银子去了哪里,追问兵部边军为什么又欠饷,追问司礼监宫里谁在递话,追问锦衣卫地方官到底有没有瞒灾。你可以下旨、任免、追责、赈灾、练兵、加税、清丈、议和、开战。大臣会给你建议,也会推诿、隐瞒、站队、阳奉阴违。

你以为自己写下的是圣旨。真正落到地方时,可能已经变成另一件事。

这不是一款“选择 A/B/C”的历史问答游戏,而是一场围绕晚明国家机器的对话式政略模拟:你说什么、信谁、逼谁、放过谁,都会变成下一月的财政、军情、民变和朝局。

这里没有开局送神兵,没有天降忠臣,没有科技树一键升级,也没有一键中兴。你能依靠的只有奏报、大臣嘴里的半真半假、账本上的银子、欠饷的边军、动乱的地方,以及自己的判断:怎么借力打力,怎么拆东墙补西墙,怎么把一句话说成一道能落地的旨。


本分支是什么

本仓库基于 wangwei-ying3/ming-salvage-sim 继续开发,方向是一个更重视后果落地与状态可信的晚明皇帝模拟器。

我们希望保留对话式政略模拟最有意思的部分:大臣奏对、官场推诿、地方回奏、月末邸报、人心变动和历史压力。同时,也希望关键结果能真正进入盘面,而不是只停在一段写得很好看的叙事里。

AI 负责奏对、推演和人心;引擎负责账本、状态和后果。

故事可以由 AI 来讲,局势可以由 AI 来判断,大臣可以推诿、敷衍、站队、误导;但关键结果需要留下可追踪的痕迹。

砍了的人,要真的从人物状态里消失。
欠的饷,要真的留在军队账上。
拨出去的银子,要真的进出账本。
玩家已经干预过的历史事件,不能只靠“史实惯性”强行发生。
一项国策跑完,不能只写一句“卓有成效”,却不给盘面留下任何变化。

这就是本分支所谓的“微硬核”。

它不是要把游戏变成电子表格。它只是要求:朝廷可以骗你,但系统不能骗你。


我们努力的方向

方向 我们希望做到什么
状态可信 邸报、奏对和结算结果尽量落到人物、军队、财政、地区和事项状态里,让下一回合能读到。
后果落库 玩家做过的关键决策,不只在文本里出现,也要尽量进入可追踪的结构化记录。
账本有牙 银子、欠饷、起运、火耗、逋赋、宗禄这些数字不只是氛围,而是会限制行动、制造代价。
历史有门 历史事件不只看年月,也要看盘面前提。玩家已经改动过的人和局势,应当影响事件是否发生。
错误要响 畸形数据、未知字段、落库失败、半落库状态不能悄悄吞掉。系统没办成的事,应当留下告警。
可复盘 每月发生了什么、为什么变成这样、哪些决策真正生效,应该能被玩家和开发者追溯。

我们追求的不是“算得越多越好”,而是让每一层计算都服务于一个目标:让玩家相信,自己面对的是一台会拖延、会变形、会反噬的国家机器,而不是一段每月重新开始的故事。


为什么值得试

看点 说明
圣旨不是按钮 你不是点一个改革按钮,而是通过召见、试探、拟旨和结算,把一句话变成一道可能执行、可能走样、可能被抵消的命令。
大臣不是百科 不同职位、派系、利益和性格的人,会给你不同角度的信息。有人会说真话,有人只说半截,有人会把事情说成对自己有利的样子。
局势会留下痕迹 财政、军队、人物、地方、国策、密令都尽量落成结构化状态,后续回合可以继续读取,而不是每月重新编故事。
代价越来越具体 补饷不是一句“拨银”,清丈不是一句“严查”,赈灾不是一句“体恤”。银子从哪来、谁少拿、谁多怨,都会逐步落到盘面上。
历史不是剧本锁死 皇太极、辽东、流寇、党争、边镇、宗室、士绅都会动,但玩家可以干预。干预之后,系统应该承认这件事已经发生。
适合魔改 人物、事件、地区、军队、外部势力和提示词都在内容层,适合继续扩写。

当前状态

本分支还不是正式发行版。它更接近一个正在推进中的实验分支。

已经比较成型的部分:

  • 月度回合制:月初奏报、召见大臣、拟旨、颁诏、月末结算。
  • 大臣召见:内阁、六部、宦官、将领、地方官、密探等角色参与问政。
  • 诏令流程:对话形成草案,玩家核定后再进入月末结算。
  • 密令暗查:可以绕开朝堂派人查办,办结结果可作为后续定罪或处置依据。
  • 人物状态:在朝、罢黜、下狱、流放、致仕、身故等状态逐步结构化。
  • 事项推进:国策、危机、改革和事件会按月推进。
  • 本地存档:状态保存在本机数据库,可多周目重开。
  • 网页界面:提供地图、朝班、奏报、邸报、密令、拟诏等入口。

正在重点推进的部分:

  • 状态可信链路:修复“邸报说发生了,DB 没发生”的漂移问题。
  • 历史事件前提门:让重大历史事件不只按年份触发,也要读真实盘面。
  • 结算事务边界:避免中途失败后留下半落库状态。(v0.8.0.0 已落地第一阶段:结算后半段单一事务、崩溃断点续跑、推演产物畸形响亮中止 + 诊断错误包)
  • 省级财政基座:从单省财政 spine 开始,把三饷、火耗、起运、欠饷、宗禄等做成可检验账本。
  • fail-loud:畸形数据、未知字段、落库失败不能静默吞掉。(v0.8.0.0 起结算推演产物坏掉已改响亮中止;落库白名单静默裁剪的收口仍在进行)

还在实验或待整理的部分:

  • 长线平衡性。
  • 更完整的结局线。
  • 更细的派系权力联动。
  • 更稳定的历史事件硬门。
  • 新手引导和前端体验。
  • 财政基座从 spike port 到 runtime。

快速开始

环境要求:

  • Python 3.11+
  • Node.js 20+
  • 一个可用于 AI 对话的 API Key
git clone https://github.com/Akagilnc/ming-salvage-sim.git
cd ming-salvage-sim

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt

cd web
npm install
npm run build
cd ..

cp .env.example .env

编辑 .env,至少填入 API Key,并按你自己的服务商填写端点和模型(本项目不绑定特定服务商,任何 OpenAI 兼容服务都可用):

OPENAI_API_KEY=your_api_key_here
# 端点与模型按你的服务商自填,例如:
#   OpenAI 官方   https://api.openai.com/v1   gpt-4o-mini
#   DeepSeek 官方 https://api.deepseek.com    deepseek-chat
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini

启动网页游戏:

set -a
source .env
set +a
python3 -m uvicorn web_app:app --host 127.0.0.1 --port 8010

打开:

http://127.0.0.1:8010

怎么玩

每一回合是一个月。

月初,你会看到上月发生了什么:收了多少税,花了多少饷,哪里闹灾,谁在办差,哪道旨意被执行成了什么样。

然后你开始召见大臣。

你可以直接问,也可以试探;可以让大臣拟旨,也可以要求查账、查军、查地方、查宫里。不同职位、不同人物、不同派系能告诉你的东西不一样,也会有不同的私心。

召见大臣

局势是你判断国家还能撑多久的核心依据。

国库见底,说明再漂亮的改革也可能没钱执行。
皇威太低,说明圣旨出了紫禁城就会被打折。
某省动乱升高,说明地方已经不只是穷,而是在准备掀桌。
边军欠饷不只是一个数字,它可能变成士气下滑、哗变、失守、投敌。
士绅阻力也不只是态度,它会影响清丈、征收、赈济和地方官执行。

等你整理好本月诏令,颁诏,时间推进一个月。系统会结算圣旨执行、财政流动、朝局变化、地区变化、军队变化和外部势力动向。

你的判断会让大明续命,也可能让局势更快崩坏。

游戏菜单与存档


设计原则

1. 后果要落地

玩家做出的关键决策,应尽量落成结构化状态。不是“邸报写了就算发生”,而是人物、军队、地区、财政、国策都要能在下一回合读到。

2. AI 判人心,引擎守账本

AI 适合判断官场反应、地方推诿、政策代价、突发事件和叙事回声。但银子、欠饷、人物状态、军队人数、地区动乱这些关键事实,需要有更硬的账本和边界。

3. 不防爽,不防作弊

这个分支不追求强行阻止玩家爽,也不强行把历史锁死。如果你真的拿出几千万两补饷,那就让系统承认你拿出了几千万两。真正重要的是:这笔钱从哪里来、去了哪里、引发了什么后果。

4. 历史不是单线程剧本

历史事件可以作为压力和锚点,但不能无视玩家已经做出的结构化干预。如果玩家提前安抚、调离、收买、清算或改造了相关人物和势力,事件触发就应该读到这些变化。

5. 错误要响

未知字段、畸形 delta、落库失败、事务半完成、事件结果未落地,都不应该静默吞掉。如果系统没能把一件事落进盘面,就应该让开发者知道。


已实现模块概览

模块 功能 说明
核心玩法 月度回合制 一回合一个月,月初读奏报、召见、下旨,月末结算时局。
大臣召见 多角色问政 内阁、六部、宦官、将领、地方官、密探等按身份与立场回应。
诏令流程 草案 → 核定 → 颁诏 对话中形成草案,玩家可编辑、删除、批准,再进入结算。
执行偏差 圣旨不等于结果 钱不够、皇威低、派系作梗、地方阳奉阴违都会影响执行。
密令暗查 绕开朝堂查办 密令按月推进,办结后可作为后续处置依据。
月末邸报 AI 推演回声 每回合生成一份月末报告,叙述局势变化和旨意回响。
事项推进 国策 / 危机 / 事件 改革和危机以可追踪事项存在,按惯性和玩家行动推进。
人物系统 状态与登场 人物可在朝、罢黜、下狱、流放、致仕、身故;部分人物按史实时间登场。
经济系统 国库 / 内库 / 地方税收 现有模型已能结算收支;省级财政基座正在进一步深化。
世界盘面 地区 / 军队 / 外部势力 两京十三省、边军、后金/清、流寇等都会参与局势变化。
平台 Web 本地运行 本地网页界面,状态存入本机数据库。

路线图

近期优先

  • 状态可信链路内审:冻结 fail-loud、事务边界、状态契约。
  • 修复静默吞异常和畸形数据的问题。
  • 合并人物相关 delta,减少“人事变更 / 人物状态变化”这种近义混淆。
  • 给历史事件接入结构化前提门。
  • 修复 settlement 半落库问题。(v0.8.0.0 已修:月末结算后半段收进单一事务,全有或全无)

中期目标

  • 省级财政基座从陕西单省 slice 开始接入 runtime。
  • 强化派系系统:人物退场、官职权力、派系 leverage 要联动。
  • 增加更清晰的 driver / 测试入口,让长线跑局更容易复盘。
  • 改善新手引导,让第一次当皇帝的人少一点“朕是谁,朕在哪,朕的钱呢”。

长期目标

  • 更完整的结局线:中兴、南迁、议和、迁都、辽东崩盘、流寇入京、权臣架空等。
  • 更强的地方财政与军事循环。
  • 更稳定的多周目统计和关键历史节点回顾。
  • 更丰富的历史人物、地方官、派系网络和事件链。

配置

复制 .env.example.env 后填写配置。

变量 必填 默认值 说明
OPENAI_API_KEY API Key
OPENAI_BASE_URL https://api.openai.com/v1 任意 OpenAI 兼容服务的端点,按你的服务商填
OPENAI_MODEL gpt-4o-mini 模型名,按你的服务商自选(本项目不绑定特定模型)
MING_SIM_DB data/ming_sim.db 存档数据库路径
MING_SIM_SEED 7 随机种子
MING_SIM_START_YM 新存档起始年月,如 1629.04
CLI_API_KEY 回退 OPENAI_API_KEY CLI 单独 API Key
CLI_BASE_URL 回退 OPENAI_BASE_URL CLI 单独 API 地址
CLI_MODEL 回退 OPENAI_MODEL CLI 单独模型名
MING_SIM_LLM_BACKEND agy/codex/claude 走本地 CLI runner 当 LLM 后端(无需 API Key);留空走 API 通道

LLM 执行通道(v0.6.0.0 起):菜单设置面板支持 API / CLI 双通道选择并各自持久化。选 CLI 通道(本地 codex/agy/claude runner)即可脱 API Key 跑;选 API 通道则用上面的 OPENAI_* 配置。MING_SIM_LLM_BACKEND 是不开 UI 时的 legacy env 入口。


目录

.
├── main.py                  # 入口
├── web_app.py               # 网页服务
├── ming_sim/                # 游戏规则、结算、存档、角色对话
├── content/                 # 人物、事件、地区、军队、外部势力、提示词
├── web/                     # 网页界面
├── docs/                    # 设定、架构、ADR 与开发文档
├── scripts/                 # 自动跑局与平衡性测试
├── requirements.txt         # Python 依赖
└── .env.example             # 配置模板

重要文档


致谢

本分支基于 wangwei-ying3/ming-salvage-sim。感谢原项目提供的晚明皇帝模拟器框架、内容基础和玩法方向。

本仓库在此基础上继续探索状态可信、财政基座、结构化落库和长期跑局稳定性。

About

大明力挽狂澜之重生之我是崇祯(P社策略+LLM自定义)

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 73.2%
  • TypeScript 17.1%
  • CSS 6.2%
  • HTML 2.7%
  • Other 0.8%