股市
MARKET ECONOMY
状态:🟡 规划 · 最后核对 2026-08-18
以「资金」为底座,用罗德岛交易所(股市)慢慢铺开养成系统。 2026-08-17 · 🟡 规划(讨论收敛,未实施)
定位
现在的养成系统是纯「对话驱动」的关系养成:信任三维(trust_manager)+ 200+
干员个体化信赖档案(trust_profiles)+ 躯体状态(somatic_state)+ 人格演化
(operator/evolution)+ 关系图谱(relation/graph)。没有任何资源 / 货币 / 经济。
本设计给这条轴旁边加一条「资源经济」轴:股市是心脏,资金是血,最终走
资金 → 礼物 → 信赖,反哺现有的信任养成。经济是「活的」,因为驱动股价的世界事件
(narrative/engine + world/events)本来就活着。
已定决策
- 资金:每日固定发放,懒结算(读取时按「距上次领取天数」补发)
- 桥梁:资金 → 礼物 → 信赖(v1 通用礼物,不做干员偏好)
- 股价:由「动态」驱动(世界事件 → 公司新闻 → 股价),不是纯随机
- 单机:价格 feed 全局一致(世界是同一个),钱包/持仓私有;玩家互相交易留作未来
- 标的:24 家势力公司 + 源石基准指数;罗德岛本身不上(它就是这个交易所)
- 货币:龙门币(LMD)
- 入口:第 4 个底部 tab「交易所」(消息 / 联系人 / 动态 / 交易所),与动态平行
- 送礼:入口在聊天页(聊着聊着可以送),不在交易所页;送礼本身后做
数据契约(全局 vs 私有)——最重要的边界
| 数据 | 位置 | 键控 |
|---|---|---|
| 公司清单、价格 feed、源石指数 | data/ 根(全局) |
无 username |
| 钱包、持仓、交易流水 | data/users/{u}/ |
按 username |
| 礼物库存、送礼记录 | data/users/{u}/ |
按 username |
⚠️ 价格 feed 是全项目少数几个跨用户共享的可变状态(同 data/moments.json)。
workers=1 下模块级全局没问题,但要持久化(重启不归零),且写它的地方一律不用
per-user 键——正好和「钱包/持仓」反着来,两条边界别混。
公司清单(24 家 + 指数)
| 势力 | 公司 | 板块 | 事件钩子(股价被什么撬动) |
|---|---|---|---|
| 莱茵生命 | 莱茵生命药业 | 制药 | 伦理丑闻 / 实验事故砸盘,大盘稳定 |
| 莱茵生命 | 莱茵生命生物 | 生物科技 | 临床实验驱动,高波动 |
| 莱茵生命 | 莱茵生命医疗 | 医疗器械 | 平稳成长 |
| 喀兰贸易·谢拉格 | 喀兰贸易 | 贸易 | 谢拉格政局 |
| 喀兰贸易·谢拉格 | 谢拉格矿业 | 矿业 | 源石/稀有矿,政策敏感 |
| 喀兰贸易·谢拉格 | 谢拉格雪境旅游 | 旅游 | 季节敏感 |
| 黑钢国际 | 黑钢国际 | 安保/PMC | 战争=利好、和平=利空 |
| 黑钢国际 | 黑钢训练基地 | 军备/培训 | 冲突热度 |
| 叙拉古 | 叙拉古实业 | 综合实业 | 家族门面 |
| 叙拉古 | 叙拉古酒业 | 酒业 | 叙拉古秩序 |
| 叙拉古 | 叙拉古家族联合 | 家族资本/灰产 | 火并/地盘/联姻,波动极大 |
| 龙门 | 龙门商行 | 综合贸易 | 龙门繁荣度 |
| 龙门 | 龙门金融 | 银行/保险 | 金融政策 |
| 龙门 | 龙门基建 | 城建/地产 | 新城区开发 |
| 雷姆必拓 | 雷姆必拓矿业 | 矿业 | 源石市场 |
| 雷姆必拓 | 雷姆必拓重工 | 工程机械 | 基建投资 |
| 乌萨斯 | 乌萨斯军工 | 军工 | 战争驱动 |
| 乌萨斯 | 乌萨斯钢铁 | 钢铁/重工 | 军备景气 |
| 卡西米尔 | 卡西米尔骑士竞技 | 竞技娱乐 | 赛事/假赛/转会,波动大 |
| 卡西米尔 | 卡西米尔商业银行 | 金融 | 经济景气 |
| 维多利亚 | 维多利亚工业 | 制造 | 工业景气 |
| 维多利亚 | 维多利亚航运 | 远洋贸易 | 航路/海难 |
| 伊比利亚 | 伊比利亚航运 | 船运 | 深海/航路事件 |
| 伊比利亚 | 伊比利亚海产 | 渔业 | 海洋生态 |
| — | 源石指数 | 基准 | 24 家市值加权晴雨表,不交易 |
价格模型
- 基础漂移:均值回归随机游走。每家公司有自己的波动率——高波动(叙拉古家族联合、 莱茵生命生物)、低波动(莱茵生命药业、卡西米尔商业银行)。
- 事件冲击:公司新闻按 faction + 方向 + 强度施加一次性涨跌,带板块联动(spillover)。
- 源石指数 = 24 家市值加权,当「大盘」挂在动态流开头。
公司新闻事件
- 新事件类型,模板驱动(不碰 LLM,避免烧每日预算),挂 faction + 方向 + 强度 + 联动。
- 生成时同时:① 进简报「泰拉新闻」栏 + 股市页(一条可读文案)② 施加股价冲击。
- ⚠️ 不进社交动态流(广播/干员动态 tab 保持纯舰内)。公司新闻是「舰外」,见下「频道分离」。
模板解剖
{
id: "rhine_bio_clinical_fail", # 唯一 id,方便去重/配权重
faction: "rhine", # 挂哪个势力
direction: -1, # +1 利好 / -1 利空
strength: 0.11, # 基准幅度(涨跌幅)
target: "rhine_bio", # 主目标公司
spillover: [("rhine_pharma", -0.03)], # 板块联动
text: "{target}二期临床出现疑似副作用,试验无限期暂停。" # 进动态流的文案
}
文案里的 {target} / {pct} / {name} / {place} 是槽位,运行时填。
同一模板今天砸「莱茵生命生物」、明天砸「莱茵生命药业」,文案自动换名字——
一份模板吃好几家公司。
模板库覆盖表(10 势力 + 指数)
| 势力 | 利好模板主题 | 利空模板主题 | 拟条数 |
|---|---|---|---|
| 莱茵生命 | 新药获批 / 突破研究 / 大额订单 | 伦理丑闻 / 临床失败 / 实验事故 | 3+3 |
| 谢拉格 | 新矿脉 / 政局稳定 / 旅游旺季 | 政变动荡 / 矿难 / 极寒雪灾 | 2+2 |
| 黑钢国际 | 冲突升级 / 新合约 / 军备订单 | 和平协议 / 合约流失 / 人道丑闻 | 2+2 |
| 叙拉古 | 家族联姻 / 地盘扩张 / 酒业出口 | 火并 / 内斗 / 查封 | 3+3 |
| 龙门 | 新城区开发 / 金融放宽 / 贸易枢纽 | 经济衰退 / 政策收紧 / 基建事故 | 2+2 |
| 雷姆必拓 | 矿脉发现 / 基建大单 / 源石涨价 | 矿难 / 源石跌价 / 劳资纠纷 | 2+2 |
| 乌萨斯 | 军备扩张 / 战争 / 军工订单 | 和平 / 制裁 / 钢铁过剩 | 2+2 |
| 卡西米尔 | 赛事爆冷 / 转播权大单 / 明星选手 | 假赛 / 选手事故 / 限薪改革 | 3+3 |
| 维多利亚 | 远洋航线 / 殖民扩张 / 工业订单 | 海难 / 航线封锁 / 殖民地动荡 | 2+2 |
| 伊比利亚 | 航路安全 / 渔获丰收 / 深海开发 | 海嗣事件 / 航路关闭 / 生态灾害 | 2+2 |
| 源石指数 | 源石涨价 / 市场乐观 | 源石跌价 / 大范围恐慌 | 2+2 |
合计约 50 条模板,每条吃 1~3 家公司(靠 {target} 复用)。三大「波动王」——
莱茵生命、叙拉古、卡西米尔——特意给到 3+3,因为它们是「涨跌有故事」的那几只。
事件样例(动态文案 → 股价反应)
- 莱茵生命 · 利空:
{target}二期临床出现疑似副作用,试验无限期暂停 → 生物 −11%,药业 −3% - 莱茵生命 · 利好:
{target}新药获哥伦比亚药监局批准上市,首日订单超预期 → 药业 +13%,医疗 +4% - 黑钢国际 · 利好:边境冲突升级,多国求购安保服务,黑钢国际连签七份合约 → 国际 +7%,训练基地 +5%,乌萨斯军工 +4%
- 叙拉古 · 利空:两大家族深夜火并,商业区戒严,家族联合旗下多家产业停摆 → 家族联合 −15%,酒业 −6%
- 卡西米尔 · 利好:骑士竞技总决赛黑马夺冠,投注盘与转播权双双刷新纪录 → 骑士竞技 +9%
- 卡西米尔 · 利空:骑士竞技被曝假赛丑闻,联盟启动反舞弊调查 → 骑士竞技 −12%
- 谢拉格 · 利好:谢拉格探明新源石矿脉,储量预估上调四成 → 矿业 +9%,喀兰贸易 +4%
- 伊比利亚 · 利空:近海出现异常洋流,多条航路临时关闭,船期大面积延误 → 航运 −8%,海产 −4%
- 源石指数 · 大盘:源石国际价格走高,源石指数创月内新高 → 全板块 +2~4%
(「黑钢=战争利好」「叙拉古=火并砸盘」这类反转感,是模板主题刻意埋的—— 和平年代它们阴跌,冲突来了才涨。)
融入动态系统:频道分离(不突兀的关键)
现有三个动态 tab(事务 / 干员动态 / 广播)全是舰上生活。公司新闻讲的是 泰拉大陆的公司,是另一个世界——硬塞进广播 tab 就会变成「食堂特供」和 「叙拉古火并」排排坐,那才是突兀。所以它不住社交动态流,住进两个家:
| 家 | 现状 | 读什么 |
|---|---|---|
| 简报「泰拉新闻」栏 | gazette 文档写了、从没建 | 全局新闻源,每天聚合 1–2 条 |
| 股市页 | 新页面 | 全局价格 + 当日新闻(「为什么涨跌」) |
声音分离:舰内广播挂 【罗德岛广播】【食堂通知】,公司新闻统一挂
【泰拉通讯社】——中立通讯社口吻,一眼看出「这是外面的世界」。
节奏:财经新闻要稀,每日 1–2 条(不是每小时)。market 引擎每日一次 tick(排在简报 08:00 之前):① 24 家价格各走一步均值回归漂移 ② 抽 1–2 条 公司新闻(按势力加权,波动王概率略高)施加冲击、写进全局新闻源。
数据契约(最容易被写坏的地方):
data/market_state.json 全局:价格 + 指数 + 当日新闻(像 weather_state.json 全局共享)
data/users/{u}/market/ 私有:钱包 + 持仓 + 交易流水(M2)
⚠️ 三个坑,全是「第二份名单」家族的老毛病:
- 全局 tick 不走
_for_all_users——那函数按用户复制 + 30s 错峰,是给 「每人的世界各自生成」用的。价格 feed 是同一个世界,必须单次全局 job, 否则 24 家价格在 多个用户眼里各不一样。 - 简报 per-user,但泰拉新闻是全局——gazette 现在只读 per-user 的事件账本, 加泰拉新闻就得让它也读全局新闻源,把「全局的一条」拼进「每人各自的一期」。
- 股市 API 端点要进
main.py的protected_paths。
资金与交易
- 每日固定发放(懒结算)
- 现价成交、T+0、整股、无手续费、无涨跌停(v1)
礼物桥
- 通用礼物 3~5 种(价位 + 信赖增益不同)
- 买(花 LMD)→ 送(
trust_manager增益) - 单独「每日礼物信赖预算」,不绕过信任的 24h 上限 / 15min 冷却
- 入口在聊天页,不在交易所页——送礼是「对某个干员的动作」,聊着聊着送才 自然(2026-08-17 定)。送礼本身后做,先跑 M1/M2。
资金出口的完整设计(送礼之外的胡萝卜 / 下水道:证书、主题、头条、皮肤、语音) 见 stock-market-sinks.md。
前端入口(交易所 tab)
- 第 4 个底部 tab「交易所」(消息 / 联系人 / 动态 / 交易所),与动态平行: 动态 = 舰内社会面,交易所 = 泰拉经济面。
- 内部子 tab(照消息页的
messagesTabs模式):行情(24 家 + 指数 + 当日新闻)、 持仓(钱包 + 持股 + 买卖)。钱包余额常驻顶栏(券商 App 那样,哪都能看到钱)。 - 送礼不在交易所页,入口在聊天页(见「礼物桥」)。
- UI 沿用既有风格:莱茵生命材质(视觉重设计样板)、无 emoji 图标(内联 SVG)、 无 AI 味。⚠️ 别在交易所页用 emoji 当图标——见 CLAUDE.md「界面里不要用 emoji」。
- 落地要改的名单:
TOP_LEVEL_VIEWS+tabMap+index.html第四个 button +data-icon新图标(别和现有 20 个重样)+protected_paths+bump_frontend_cache.py。
v1 推进顺序(每步可回退)
| 里程碑 | 内容 | done 定义 |
|---|---|---|
| M1 经济心脏 | 公司清单 + 价格模拟 + 公司新闻 | 24 家价格在全局 feed 动起来,一条丑闻能砸对应股价,指数跟着算 |
| M2 资金 + 交易 | 钱包 + 每日发放 + 买卖 | 能领钱、能买卖、余额持仓对得上 |
| M3 礼物桥 | 通用礼物 → 信赖(聊天页入口) | 聊着聊着能送礼物、信赖涨,超预算当天不涨 |
| M4 前端 | 交易所页 + 资金 | 手机上看盘、买卖整条链路走通 |
关键风险点:
- ⚠️ 新 API 端点要进
main.py的protected_paths(「第二份名单」坑) - ⚠️ 每日发放用懒结算,不用 scheduler(避开
wait=False停机那类坑) - ⚠️ 接
trust_manager时别漏 per-user 键({u}:{op}) - ⚠️ 前端改完跑
bump_frontend_cache.py;UI 直接上「莱茵生命」材质(视觉重设计样板)
未决 / 默认值
- 礼物价位:递减(越贵单位信赖越便宜,鼓励攒钱买大件)——2026-08-17 已定。 单位信赖成本 120/110/100/90(野花→摆件)。
- 股价基准:加年化 2.5% 慢牛 drift(锚点回归目标上移,指数有慢牛时间感)—— 2026-08-17 已定。不连真实行情:24 家是虚构公司无 ticker,连 API 会引入外部依赖、 破坏「世界事件」虚构、节奏也不匹配(一天 4 档 vs 秒级 tick)。
- 发放数额 200:保持,等 M1 跑出真实波动 + 用户实际买卖数据再反推(先跑价格, 再定每天发多少才不通胀不通缩)。
- 交易规则:整股、无手续费、无涨跌停(可改)