French Ship Madame De Pompadour
基于《星际迷航》创作科幻叙事的社交模拟与故事生成器。使用OOP Python/Flask,包含一些数据结构、Gemini API,前端采用React/Vite/Tailwind。
受《星际迷航》启发,采用人工智能和随机行动机制的飞船模拟器。
FS Madame de Pompadour 是一款基于文本的叙事模拟器,能在科幻宇宙中创造动态且不可预测的故事。点击“下一步”即可逐回合推进模拟进程,观察角色们如何基于预定义行为与生成式人工智能的结合相互互动。

该项目的目标是打造一个“数字生态缸”,让复杂的社会动态和意想不到的事件从简单的规则以及AI的创造力中自然涌现。
欢迎来到FS“蓬帕杜夫人”号。
佩皮洛船长转向船员哈罗德厉声喝道:“汇报一下对冯采取的纪律处分措施。”
佩皮洛船长转向通讯台,厉声命令道:“立刻给我接通杜波依斯中尉。”
泰德里克俯身凑近船员韦伦,低声说道:“你看到冯干了什么吗?看来佩皮略船长今天心情不太好,”同时他巧妙地整理了一下制服,让自己看起来体面些。
康斯坦丁迅速瞥了哈罗德一眼,随即低声对穆罕默德嘀咕道:“真不知道冯这次又做了什么惹恼了船长,”同时他正不着痕迹地擦拭着附近栏杆的一段。
船员冯紧张地整理了一下制服,随后与船员以西结四目相对,低声嘀咕道:“今天可真漫长啊,”希望以西结能回应他。
船员穆罕默德注意到康斯坦丁正在悄悄擦拭栏杆,瞥了一眼栏杆说道: “看来得好好刷刷才行,对吧?要不我们一起清理这一段,康斯坦丁?”
船员哈罗德察觉到紧张的气氛和船长的命令,随手整理了一下自己的制服,对船员塞巴斯蒂安低声说道:“看来冯这回是惹上麻烦了,对吧? 要不趁任务变得更难受之前,去喝杯咖啡缓和一下气氛?”
西斯利船员察觉到紧张气氛,转头问弗林船员:“你听说冯的事了吗?看来船长心情不太好,我们最好把各自岗位打扫得一尘不染。”
佩皮略船长向哈罗德船员征求专业意见。
佩皮略船长转向冯船员厉声问道:“冯,立即向我汇报你当前岗位及系统状态。”
水手韦斯特利注意到船长对冯的严厉命令,迅速转向水手弗林,低声说道:“弗林,咱们去检查一下补给柜,我觉得船长可能想清点一下应急口粮,”他希望借此显得忙碌,从而避免引起不必要的注意。
船员穆罕默德看到佩皮略船长周围的紧张气氛,悄悄走到船员以西结身边低声问道:“你觉得我们是不是该准备些清洁用品,以防船长需要赶紧处理什么事情?”


在这张来自FS《蓬帕杜夫人》模拟的演示截图中,我们观察到一个复杂且充满活力的社会生态系统正在运转。该系统展现了其生成自发叙事的能力——并非通过预先编排的事件,而是通过让独立代理相互交互,从而在底层甲板上编织出一幅丰富而真实的生活图景。
模拟的启动源于一个明确的催化剂:一位高级权威人物——佩皮略船长——通过直接下达命令,立即引发了高风险的紧张局势。这种“命令级联”成为了整个社会生态系统的核心引力点。 请注意,他的要求不仅触发了个别角色的剧本,更引发了一场统一且高压的事件。这彰显了系统对等级结构的新关注——在该结构中,单个角色的行动可以决定共享环境中其他所有角色的关注点、情绪以及战略目标。
随着船长的命令在船员中传开,我们看到复杂而富有反应性的社交策略应运而生。船员们不再继续从事无意义的琐事,而是立即开始应对这一新现实。请观察泰德里克和康斯坦丁等角色如何组成临时交谈小组,一边闲聊一边分析局势,试图理清新的权力动态。 更令人印象深刻的是,船员韦斯特利展现出了更高层次的自发逻辑:他主动制定了一套生存策略——建议他和一名船员佯装忙于公务,以此避免船长的怒火。 这并非预先编写的行为,而是AI针对感知到的威胁所产生的合乎逻辑的社会结论,展现了强大的风险评估能力。
这一短暂的瞬间揭示了一个强大的自发叙事引擎,它将职业角色与个人焦虑无缝融合。我们看到船员哈罗德被迫从随意的低声交谈,转为针对船长的要求发表正式、专业的意见,这说明了该系统管理冲突性社交情境的能力。 整个模拟围绕与冯的中心冲突展开,营造出一个统一的叙事高压锅,而非一连串独立而平淡的戏剧片段。该引擎已超越单纯生成生活图景的阶段,如今展现出模拟复杂社会博弈、战略联盟以及在压力下涌现的群体思维的能力。
《FS 庞巴杜夫人》基于现代的解耦式Web架构构建,将后端模拟引擎与前端用户界面分离,以实现模块化和高性能。
后端:Python、Flask 和 Gemini
整个模拟核心和逻辑均位于 Python 后端。
- Python: 凭借其强大的数据处理能力以及健全的 AI/ML 生态系统,是理所当然的选择。面向对象的方法使得
Crewman和ActorManager类具有模块化特性,易于扩展。 - Flask: 一个轻量且灵活的 Web 框架,用于创建前端通信所需的 API。其唯一职责是接收下一回合的请求,触发模拟逻辑,并返回结果。
- Google Gemini: 即“机器中的幽灵”。该项目通过集成 Gemini API 来驱动其智能行动系统。 当角色决定“智能”行动时,后端会向 Gemini 模型发送一条提示——其中包含飞船的背景、角色的身份以及最近的行动历史——随后 Gemini 模型会返回一个富有创意且符合上下文的行动方案。
前端:React、Vite 和 Tailwind CSS
用户界面是一个快速、现代的单页应用程序(SPA)。
- React: 一个用于构建动态且基于组件的用户界面的强大 JavaScript 库。整个事件日志是一个 React 组件,当接收到来自后端的新的动作时,该组件会高效地进行更新。
- Vite: 一款新一代前端构建工具,提供极快的开发服务器和优化的生产环境构建。
- TypeScript: 用于为 JavaScript 代码添加静态类型,从而提升开发者体验并减少错误。
- Tailwind CSS: 一个“实用性优先”的 CSS 框架,允许直接在 HTML 中进行快速且一致的样式设置,如组件的类名所示。
整体架构
单轮流程简单而高效:
- 用户点击基于 React 的 UI 中的 “下一步” 按钮。
- 前端向运行在 Flask 上的后端
/action端点发送一个fetch请求。 - Flask 服务器调用 Python
ActorManager,该类会运行模拟的一个回合,期间可能会调用 Gemini API。 - 后端将生成的动作字符串作为 JSON 对象返回。
- React 前端接收 JSON 数据,更新其状态,并在屏幕上渲染新事件,同时自动滚动至最新条目。
