2026-03-12 实施状态: 当前仓库已经按本设计完成第一版帮派系统落地,包含世界生成、地图节点、关系矩阵、world turn 外循环、帮派任务、角色页/故事页 faction UI,以及独立的宣纸风世界地图页。地图渲染采用 Canvas 与本地资源混合实现,不使用通用 SVG 地图。
本文件只在 docs/ROADMAP.md 中的 Phase 1 完成后进入实施。
帮派系统不是另起炉灶,而是在现有主流程之上增加:
- 世界上下文
- 外循环模拟
- 新的长期目标
帮派系统的重要参考是 Stanford 的 Generative Agents 工作:
- 论文:
- 开源仓库:
这项工作的核心参考价值,不在于把本项目改造成 Smallville 复刻,而在于它给出了一个适合世界模拟的基本框架:
- observation
- memory
- reflection
- planning
对本项目来说,最合理的借鉴方式是:
- 不直接复制“全镇 25 个自主居民”的重型模拟
- 而是把这套方法缩放成“帮派级 agent + 少量关键 NPC + 世界事件摘要”
玩家在保留现有主流程的前提下,获得一个新的长期目标:
- 让自己的帮派成为天下第一帮派
这个系统要同时提供:
- 世界存在感
- 帮派关系与势力变化
- 动态战争与地图占领
- 可做可推的帮派任务链
- 帮派 AI 自治
- 可视化地图
现有核心循环仍然保留:
创建角色 -> 进入剧情 -> 选择行动 -> 检定推进 -> 状态结算
帮派系统只做两件事:
- 给每次剧情推进增加世界 Context
- 在若干玩家回合之间,跑一次外循环的世界模拟
不要把整套帮派系统全部交给 LLM。
推荐职责划分:
- 代码负责:
- 世界状态
- 帮派属性
- 外循环推进
- 战争结算
- 地图占领
- 任务生成骨架
- 平衡和限制
- AI 负责:
- 帮派风格与文案
- 帮派意图提案
- 新闻、公函、谣言、任务包装
- 剧情中如何体现当前局势
这里要吸收 Generative Agents 的方法论,但不能照搬它的成本结构。
本项目应采用:
代码为主,LLM 为辅
而不是:
LLM 全托管社会模拟
因为本项目要的是稳定、可控、可玩的帮派世界,而不是开放式社会实验。
建议初始帮派数:
5 ~ 7个主要帮派
这样有几个好处:
- 玩家容易记住
- 地图不会太乱
- 战争关系可读
- Prompt 上下文不会膨胀失控
在角色档案生成和展示中加入:
- 所属帮派
- 帮派身份
- 帮派地位
- 帮派当前目标
- 帮派对主角的期待
主角的长期任务从“个人修行”扩展为:
- 修为成长
- 帮派崛起
每次故事生成时,可加入:
- 当前所处区域
- 所属帮派概况
- 邻近敌对/同盟帮派
- 当前战争状态
- 最近世界事件
- 帮派派发任务
建议新增以下核心实体。
- 世界种子
seed - 当前世界回合
worldTurn - 季节 / 时间段
- 世界新闻摘要
地图节点建议不是复杂格子地图,而是“区域节点图”:
- 州府
- 山门
- 坊市
- 秘境
- 矿区
- 渡口
- 要塞
字段建议:
idnametypepositionXpositionYterrainresourceTagsownerFactionIdprosperitydanger
字段建议:
idnametitletype- 宗门
- 世家
- 帮会
- 商盟
- 魔门
elementAffinitydoctrinestyleTagsleaderNameleaderArchetypestrengthMilitarystrengthEconomystrengthEspionagestrengthHeritagestabilityreputationaggressionexpansionDesirecapitalNodeIdcontrolledNodeIdsgoal
维护帮派两两关系:
allianceneutralhostilebloodFeudvassal
再配合一个数值:
relationScore = -100 ~ 100
玩家相关字段:
characterIdfactionIdrankcontributiontrustmilitaryCreditpoliticalStandingfactionGoalProgress
记录世界外循环的结果:
- 结盟
- 宣战
- 占领
- 守城
- 叛乱
- 资源发现
- 帮派任务发布
建议使用固定 seed 的半程序化生成:
- 先生成地图节点骨架
- 再生成 5~7 个主要帮派
- 给每个帮派分配首府与若干初始据点
- 生成关系矩阵
- 生成初始目标
帮派不要完全纯随机,建议先做原型模板,再二次扰动:
- 剑修宗门
- 丹修宗门
- 体修帮会
- 商贾盟会
- 世家门阀
- 邪道势力
- 地方守备势力
每个原型控制:
- 强项
- 弱项
- 领袖性格
- 偏好扩张方式
- 常见任务风格
为了保证“好玩”而不是“完全随机失控”,建议控制:
- 1 个强势霸主
- 2 个中型竞争者
- 2~4 个区域势力
- 玩家所在帮派不要一开局最强,也不要最弱
建议默认方案:
- 角色创建时随机/半指定分配一个初始帮派
- 该帮派会写入角色档案 prompt
- 主角天然带有“振兴本帮”的主线驱动
这一部分最适合吸收 Generative Agents 的设计思想。
建议每 3 ~ 5 个玩家回合跑一次世界模拟,而不是每回合都跑。
这样可以:
- 控制 AI 成本
- 让局势变化有节奏
- 不挤爆主线剧情
- 也更接近“先积累观察,再做反思和计划”的节奏
推荐流程:
- 汇总当前世界状态
- 为每个帮派生成本回合观察记录
- 从观察记录中提炼高层反思
- 每个帮派选择一个“本回合意图”
- 代码解析并冲突仲裁
- 结算战争/占领/联盟/任务
- 生成世界新闻与帮派任务
- 将摘要注入下一轮剧情 Context
对应到 Generative Agents 的映射:
- observation -> 世界观察记录
- memory -> 帮派记忆流
- reflection -> 帮派高层判断
- planning -> 帮派本回合战略意图
建议每个帮派维护一个轻量 agent 状态:
recentObservationsimportantMemoriesstrategicReflectionscurrentPlanlastExecutedAction
其中:
recentObservations- 记录最近几回合发生的战争、外交、资源变化、玩家行为
importantMemories- 保存长期仍有价值的事件,例如灭门、结盟、叛乱、秘境失守
strategicReflections- 将记忆总结成短期战略判断,例如“西境空虚,可趁机取矿”
currentPlan- 本回合最终意图
这会比“每回合让 LLM 读取全量世界 JSON 后自由决策”稳定得多。
帮派每回合可从有限集合中选意图:
- 扩张
- 休养
- 结盟
- 宣战
- 清剿
- 经营
- 争夺资源点
- 培养弟子
- 追杀仇敌
意图建议由两层决定:
- 第一层:代码按当前状态筛出候选
- 第二层:AI 或启发式在候选中给出偏好
这里也适合直接借鉴 Generative Agents 的经验:
- 候选行为由系统限制边界
- 最终计划由记忆与反思驱动
而不是让帮派自由生成任意不可控动作。
战争建议以代码结算为主,不直接让 LLM 判输赢。
战斗值可综合:
- 军事实力
- 地利
- 帮派稳定度
- 资源补给
- 关系加成
- 玩家参与的影响
结算后只让 AI 负责:
- 战报
- 流言
- 门派檄文
MVP 不建议做格子地图。
推荐做:
- 宣纸风节点地图
- 节点之间用山道/水路/传送阵相连
- 每个节点可显示归属、危险、资源、事件
因为它更适合当前项目:
- 更像仙侠世界势力图
- Prompt 上下文更易表达
- UI 更容易做得漂亮
- 规则复杂度显著低于 tile map
优先建议:
- React Flow
- 官方文档描述它是一个可定制的 React 节点式 UI 组件,MIT 开源,适合做可交互节点地图。
- Motion for React
- 适合做节点浮动、战争涟漪、占领切换、卷轴展开等动画。
备选:
- Cytoscape.js
- 如果后面帮派关系图、占领图、图分析复杂度明显上升,可以考虑用它做关系分析或复杂图布局。
建议:
- MVP 地图渲染主库先用 React Flow
- 视觉动效用 Motion
- Cytoscape.js 暂不作为第一选择渲染器
任务不应只是“打怪/送信”。
建议帮派任务分 5 类:
- 扩张类
- 攻占矿区、争夺坊市、护送物资
- 内政类
- 调停派系、处理叛徒、稳定民心
- 外交类
- 结盟、谈判、离间、示威
- 修行类
- 取宝、护法、试炼、秘境争夺
- 复仇类
- 追杀仇家、夺回旧地、守卫祖庭
这些任务应来自:
- 帮派当前目标
- 世界状态
- 玩家帮派身份
- 最近世界事件
Generative Agents 的一个重要启发是:
- Prompt 不应该每次吞下完整世界状态
- 应该吃“检索过的相关记忆 + 高层反思 + 当前目标”
所以本项目的帮派 Prompt 改造,也应采用这个思路。
增加变量:
FACTION_PROFILEFACTION_ROLEFACTION_GOAL
增加变量:
WORLD_STATE_SUMMARYCURRENT_REGIONPLAYER_FACTION_STATUSFACTION_RELATIONSRECENT_WORLD_EVENTSACTIVE_FACTION_MISSIONS
新增结构化 Prompt:
- 输入:世界状态、帮派状态、相邻势力、当前目标
- 输出:有限 schema 的帮派意图
然后由代码解析和结算。
更推荐拆成两个 Prompt:
faction_reflection_prompt- 输入:最近观察 + 重要记忆 + 当前格局
- 输出:本帮当前高层判断
faction_planning_prompt- 输入:高层判断 + 候选行动 + 当前目标
- 输出:结构化战略意图
这样更接近 Generative Agents 中“反思 -> 计划”的架构,也更方便调试与限流。
必须延续当前产品风格:
- 宣纸 / 卷轴 / 古籍感
- 金石墨色
- 五行与门派色彩
- 图像化按钮
- 不是网游管理面板
建议新增:
- 帮派概览卡
- 天下势力榜
- 地图页 / 地图弹层
- 世界事件时间线
- 帮派任务面板
建议视觉效果:
- 山脉阴影
- 水墨边界
- 节点呼吸光点
- 占领切换时有旗帜/墨迹扩散动画
- 战争态节点有涟漪和烽火特效
状态:planned
任务:
- 扩展角色档案数据结构
- 给角色创建加入所属帮派
- 给故事 Prompt 加入帮派上下文
- 前端展示帮派信息
验收:
- 玩家从开局就知道自己属于哪个帮派
- 剧情会提到所属帮派与其目标
状态:planned
任务:
- 生成 5~7 个帮派
- 生成 9~15 个地图节点
- 生成初始控制区与关系矩阵
- 做第一版节点地图 UI
验收:
- 玩家可以打开地图看到当前世界格局
状态:planned
任务:
- 实现 world turn
- 实现帮派 observation / memory / reflection / planning 流
- 实现帮派意图选择
- 实现战争/结盟/扩张结算
- 实现世界新闻摘要
验收:
- 世界会在玩家推进过程中自己变化
状态:planned
任务:
- 实现任务生成骨架
- 将任务接入剧情推进 Context
- 增加玩家对帮派贡献与地位
验收:
- 玩家能感知自己在“帮助本帮崛起”
状态:planned
任务:
- 让帮派根据目标与局势做更稳定的长期决策
- 引入派系性格、外交偏好、复仇记忆
- 优化世界事件表现
验收:
- 帮派看起来像“有个性、有历史”的势力,而不是随机状态机
中高难度点不在“生成帮派名字”,而在:
- 外循环和主循环如何互相影响
- Prompt 上下文如何不爆炸
- 战争与占领如何做得稳定且可读
- 如何把 Generative Agents 的思想缩放成“帮派级 agent”,而不是失控地做成全地图 NPC 社会模拟
中等难度,但要求高。
因为地图不难“做出来”,难的是:
- 做得好看
- 做得像这个产品
- 还要在移动端可读
玩家必须始终感觉:
- 世界在动
- 但不是乱滚
- 自己能影响格局
- 又不是一回合就统一天下
帮派系统的本质不是“加一个新玩法模式”,而是给现有 AI 修仙主循环加上一层可持续演化的世界 Context 和外循环模拟器。
如果用 Generative Agents 来类比,本项目应吸收的是“记忆、反思、计划”的架构方法,而不是完整复刻 Smallville 的实现形态。