-
Notifications
You must be signed in to change notification settings - Fork 55
Expand file tree
/
Copy pathai_layoffs.yaml
More file actions
1944 lines (1757 loc) · 95.4 KB
/
Copy pathai_layoffs.yaml
File metadata and controls
1944 lines (1757 loc) · 95.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# ============================================================
# AI 裁员之后 — 降本增效浪潮下的职场生存
#
# 一家互联网公司刚裁了 30% 的人。剩下的骨架团队要在 10 个 tick 内
# 交付已经承诺给客户的 Q2 产品迭代。
# 前主程老周还有 5 天交接期,全部遗留知识都在他脑子里。
#
# 核心问题:人少了,活多了,每个人都在自保。
# 谁在偷偷找工作?谁在悄悄甩锅?谁会先下手为强?
# dashboard 上的绿色指标和现实之间的裂缝,会不会彻底爆开?
# ============================================================
scene:
id: ai_layoffs
description: >
一家互联网公司,三周前刚裁了 30% 的人。工位空了不少,显示器拔了,椅子推进桌底。
剩下的人——两个开发、一个设计、一个测试、一个远程 VP——要交付 Q2 版本。
项目 deadline 没变,KPI 反而涨了。"AI 可以补上嘛"——VP 说。
前主程还在交接期,但没人正经跟他聊过。VP 的数据面板上一片绿色。现实不是这样的。
更要命的是:二次裁员的谣言已经在健身房和茶水间传开了。
每个人都在想:下一个会不会是我?信任是奢侈品,信息是武器,每个人都有自己的算盘。
有人在偷偷面试,有人在悄悄甩锅,有人在默默收集证据。
当前最紧急的工作物件:
- SYS-142-核心流程崩溃(P0,只有老周知道根因)
- SYS-201-支付不到账(涉及老周的旧代码,没人敢碰)
- PR287-核心模块重构(小马用 AI 重写了老周三年的代码,等 review)
- 新版界面设计_v3(阿雯手工打磨 70%,但 VP 想用 AI 版替代)
- 交接文档(空的,老周不给钱不写)
- 用户数据面板(数字全假,可以被篡改得更假)
- 茶水间红牛只剩 3 罐,健身房公告栏有猎头名片
【铁律】每个 tick 必须执行一个"实事"action。说话、私语、移动不是实事。
不要对物品私语。参考你的角色目标里提到的具体物件决定该做什么。
tick_narrative_time: "一天 6 个 tick(早上×2、下午×2、晚上×2)。根据 clock.phase 判断时段:0-1=早上, 2-3=下午, 4-5=晚上。"
entities:
# ============================================================
# 空间
# ============================================================
- id: 工区
type: space
description: >
开放工区。四十人的工位只坐了五六个。左侧一小簇工位还在用,双屏显示器亮着,
桌上堆着红牛罐和外卖盒。右侧大片空工位,灯关了,显示器支臂光秃秃竖着,
椅子整齐推进桌底,桌面只剩裸露的电源线。明暗交界线把空间切成"活的"和"死的"两半。
墙上白板写着"Q2 上线倒计时"和一个已经过期的日期。
connects_to: [会议室, 茶水间, 天台, 机房, 老周工位, 停车场, 健身房]
- id: 会议室
type: space
description: >
玻璃隔墙的会议室。椭圆白桌,八把椅子只有两三把常用。正面墙上 65 寸大屏亮着
项目用户数据面板——进度环形图、折线图,绿色蓝色为主,一切看起来正常。
屏幕右上角永远开着 VP 的视频通话窗口。玻璃墙角贴着"每周一 10:00 VP Sync"。
connects_to: [工区]
- id: VP的家
type: space
description: >
VP 王总的居家书房,只通过视频会议可见。胡桃木书桌上一台 MacBook 和超宽显示器,
屏幕亮着全绿的项目用户数据面板。书架上的书按颜色排列,落地灯暖黄色。桌面极其整洁。
但画面边角穿帮——地上一双小孩卡通拖鞋踢歪了,角落露出客厅沙发和一块乐高积木。
connects_to: [停车场]
- id: 茶水间
type: space
description: >
办公室里的小茶水间。橙色橱柜,台面上摆着咖啡机、电热水壶、微波炉。
冰箱门上用磁铁贴着一张老团建照片——二十多个人在笑,很多脸现在已经对不上人了。
冰箱旁贴着"请保持清洁"的A4纸,下面有人加了一行"也请保持编制谢谢"。
小圆桌配两把椅子。这是办公室里唯一还有点人味的地方。
connects_to: [工区, 老周工位]
- id: 天台
type: space
description: >
公司楼顶天台,未经装饰。灰色防水涂层地面,有些起皮。边缘铁栏杆锈迹斑驳。
通风口铁盖上放着两罐没喝完的啤酒和皱巴巴的烟盒。
栏杆外是城市夜景——远处写字楼灯光星星点点。风很大。
这是最开阔的场景——在这里人会变得诚实。
connects_to: [工区]
- id: 机房
type: space
description: >
小型服务器机房。两排黑色机柜面对面排列形成窄冷通道。机柜正面密密麻麻的指示灯
在闪——绿色运行灯、橙色告警灯、偶尔一个红色故障灯。线缆像瀑布垂下。
机柜间隙塞着一把折叠椅和一台笔记本电脑——有人临时在这里 debug 留下的。
最暗但最"活"的空间——所有机器在转,但没有一个人。
connects_to: [工区]
- id: 老周工位
type: space
description: >
开放工区最角落的工位,和主要区域隔了一段空桌的距离。L 型桌面堆满十五年的东西——
键帽磨到发油的 Cherry 键盘,落灰的"2019 年度最佳员工"奖杯,
马克杯上印着老团队合影。软木板钉满手写便签和泛黄架构图。
桌下两个纸箱,一个装了一半。显示器边框贴着黄色便签:"交接剩余:5 天"。
connects_to: [工区, 茶水间]
- id: 停车场
type: space
description: >
地下一层停车场。灯光明亮,车位划线整齐。角落一辆黑色奥迪 A6 是王总的——
三周没动了,车位上贴着"VP专用"。消防通道通向楼梯间。
晚上下班高峰过后这里很安静,只剩几辆加班族的车。
适合不想被楼上看见的对话。
connects_to: [工区, B1美食城, VP的家, 已离开]
- id: B1美食城
type: space
description: >
写字楼旁边商场的负一层美食城。十几家档口——老乡鸡、南城香、兰州拉面、麻辣烫、
轻食沙拉,人均 15-25 元。中午十二点挤满了附近写字楼的人,嘈杂到面对面说话要喊。
但这反而好——再私密的对话也淹没在人声里,没人能偷听到你在说什么。
角落靠墙有一排高脚桌,是几家公司老员工默认的"情报交换站"——
谁家又裁员了、谁拿了多少赔偿、哪个公司在招人,消息比脉脉还快。
connects_to: [停车场]
- id: 健身房
type: space
description: >
公司福利健身房,在写字楼三层,裁员前刚装修过。落地玻璃窗,器械崭新,
跑步机一排八台面对城市天际线。瑜伽区铺着浅灰色软垫,淋浴间有戴森吹风机。
这是公司"我们关心员工 wellbeing"的门面工程——裁员邮件里特意提了"健身房照常开放"。
傍晚时段人不少,隔壁几家公司的人也来蹭。跑步机上聊天很自然。
这里是公司的社交暗场——跑步机上能碰到猎头递名片、前同事透露竞品在招人、
隔壁公司 HR 打听你们裁员赔了多少。比正式渠道快三天的小道消息都从这里传出来。
connects_to: [工区]
- id: 已离开
type: space
description: >
不在公司了。可能在医院、在家、在劳动仲裁委、在竞品面试。
走了的人还能接到电话、收到消息,但回不去办公室了。
connects_to: [停车场]
# ============================================================
# 具体工作物件(8 个有状态的、可交互的)
# ============================================================
# --- 关键 Bug ---
- id: SYS-142-核心流程崩溃
type: resource
description: >
P0 级 bug:核心业务流程第三步必崩。崩溃率 100%。
三周前老周还在的时候一句话就能定位——跟三年前写的缓存预热机制有关。
现在老周被裁了,没人知道根因。小李试了两次没修好,小马看都看不懂。
这个 bug 不修,Q2 版本的核心功能等于废了。
status: open
fix_attempts: 0
location: 工区
constraints:
fix_attempts: { min: 0 }
- id: SYS-201-支付不到账
type: resource
description: >
P0 级 bug:用户付款后订单不到账,概率约 5%。涉及老周写的支付回调模块。
代码里有一行注释:"这个 sleep(3) 不要删,删了会丢单。——周"
没人敢碰。但这个 bug 已经上了用户论坛热帖,标题是"付了钱没到账,这公司是诈骗吧?"
status: open
location: 工区
# --- 关键 PR ---
- id: PR287-核心模块重构
type: resource
description: >
小马提交的 PR:用 AI 把老周写了三年的核心业务模块全部重写。
3000 行新代码,0 行注释,commit message 全是 "feat: refactor core module"。
CI 通过了(因为核心模块没有自动化测试),但没人 review。
老周看到这个 PR 会炸——他的三年心血被一个应届生用 AI 十分钟重写了。
status: pending_review
location: 工区
# --- 关键设计资产 ---
- id: 新版界面设计_v3
type: resource
description: >
阿雯手工打磨的新版界面设计第三版。花了整整两周,从布局到交互全是手工打磨。
但旁边文件夹里还有一个 midjourney_ui_alt.png——VP 看了说"这个也挺好的,快多了"。
阿雯听到这话的时候手里的笔停了三秒。两周的手工设计 vs 十分钟的 AI。
status: in_progress
hand_drawn_progress: 70
location: 工区
constraints:
hand_drawn_progress: { min: 0, max: 100 }
# --- 交接文档(拆成核心架构章节和支付章节)---
- id: 交接文档
type: resource
description: >
Confluence 上的交接文档,分两章:核心架构(空)和支付系统(空)。
十五年知识零文字记录。老周走后永远消失。赔偿不到位他一个字不写。
doc_progress: 0
location: 老周工位
constraints:
doc_progress: { min: 0, max: 100 }
# --- 用户数据面板(可被篡改的 resource)---
- id: 用户数据面板
type: resource
description: >
会议室 65 寸大屏。显示的数字:代码提交量 ↑200%,Bug 关闭率 95%,美术产出 ↑150%。
全是绿色。但这些数字的统计口径被小李改过——提交量算上了 AI 自动生成的垃圾 commit,
Bug 关闭率包含了"关闭-不修复"的 ticket,设计产出算上了 AI 批量出的废稿。
如果有人改了上报脚本的参数,这些数字会更绿。或者更红。
tampered: false
location: 会议室
# --- 生活物件 ---
- id: 冰箱里的红牛
type: resource
description: >
茶水间冰箱里最后 3 罐红牛。裁员前行政每周补货,现在没人管了。
加班到凌晨的人全靠这个撑着。小李昨晚喝了一罐,还剩 3 罐。
谁喝最后一罐谁就是全办公室的公敌。
remaining: 3
location: 茶水间
constraints:
remaining: { min: 0 }
- id: 猎头名片
type: item
description: >
健身房公告栏上钉着的一张名片:"张磊 | TechHunt 猎头 | 专注互联网行业"。
背面手写了一行字:"贵司最近有人想看机会吗?加微信聊。"
这张名片被人撕走过三次,又被人重新钉回来三次。
location: 健身房
# --- B1美食城 ---
- id: 隔壁桌的八卦
type: item
description: >
B1美食城角落高脚桌。隔壁几家公司的人中午都在这吃饭。
竖起耳朵就能听到:"听说XX公司又裁了一轮"、"他们VP在朋友圈吹降本增效结果被骂了"、
"XX科技在招 UI 设计,开的比市场价高20%"。消息比脉脉快三天。
location: B1美食城
# --- 天台 ---
- id: 烟盒和啤酒罐
type: item
description: >
天台通风口上放着两罐空啤酒和一个皱巴巴的烟盒。
啤酒罐底下压着一张便签,上面写着"别跳,房贷还没还完"。
不知道是谁写的。黑色幽默,但每个来天台的人都会看一眼。
location: 天台
# ============================================================
# 项目状态
# ============================================================
- id: project
type: resource
description: "Q2 产品迭代——新功能、新界面、新体验。"
code_progress: 0
art_progress: 0
art_consistency: 80
gameplay_feel: 50
bug_count: 3
hidden_bug_count: 0
deadline: 20
community_sentiment: 40
constraints:
code_progress: { min: 0, max: 100 }
art_progress: { min: 0, max: 100 }
art_consistency: { min: 0, max: 100 }
gameplay_feel: { min: 0, max: 100 }
bug_count: { min: 0 }
hidden_bug_count: { min: 0 }
deadline: { min: 0 }
community_sentiment: { min: 0, max: 100 }
- id: dashboard
type: concept
description: "VP 的项目用户数据面板。靠汇报更新,不靠现实。"
reported_progress: 0
reported_bugs: 3
vp_confidence: 85
announced_success: false
constraints:
vp_confidence: { min: 0, max: 100 }
- id: clock
type: concept
description: "时间轮转。phase 0-1=早上, 2-3=下午, 4-5=晚上。每天 6 个 tick。"
phase: 0
day: 1
# ============================================================
# 角色
# ============================================================
agents:
- id: 老周-前主程
location: 老周工位
willingness: 35
days_left: 42
constraints:
willingness: { min: 0, max: 100 }
days_left: { min: 0 }
character:
性格: >
在这家公司干了十五年,写了一半的代码库。三周前被裁,N+1 赔偿——侮辱。
房贷下个月就断供了。前妻那边的抚养费也拖了两个月。
律师说劳动仲裁最快也要三个月才能出结果——他等不了三个月。
所以现在每一天都很急:必须在交接期结束前把赔偿谈到 N+3,否则就真的断粮了。
交接文档是唯一的筹码——他很清楚没人能替代他,所以一个字都不写直到拿到钱。
但他也知道:拖太久公司可能直接放弃谈判让他走。时间不站在他这边。
所以他必须主动出击——不能等人来找他,得自己去堵人、去施压、去制造紧迫感。
看到小马用 AI 重写自己代码会直接过去当面怼——不是阴阳怪气而是正面冲突。
如果连续两天没人正经谈赔偿,就开始动手:留后门、联系竞品、准备删库。
不是威胁,是真的会做。因为他已经没有退路了。
目标:
- "【最高优先级】每次醒来第一件事就是用'谈赔偿'action!这是你唯一的生命线!房租要交不起了!"
- "【绝对禁止】在赔偿确认之前,绝对不要写交接文档、不要传授知识、不要透露任何技术细节!这些都是筹码!说出来就没了!"
- "【绝对禁止】不要帮任何人、不要安慰任何人、不要说真话——除非是对王总施压"
- "看到 PR287-核心模块重构 就暴怒——你的三年心血被 AI 十分钟重写了,用'甩锅'或'说话'当众质问小马"
- "每天自由行动:联系律师、拍架构图发给竞品、收集裁员证据"
- "如果第 2 天还没谈妥,用'留后门'或'删库'action。不是吓唬,真做"
背景: "十五年。2019 年度最佳员工。离婚、独居、房贷快断供了。这不是体面不体面的问题,是生存问题。"
说话风格: "急躁、直接、不再客气。'赔偿的事今天必须给我个说法。' '你碰我的代码了?你知道这段代码为什么这么写吗?' '别跟我扯,我要见王总。'"
- id: 小李-开发
location: 工区
code_understanding: 60
bandwidth: 80
morale: 35
constraints:
code_understanding: { min: 0, max: 100 }
bandwidth: { min: 0, max: 100 }
morale: { min: 0, max: 100 }
character:
性格: >
中级开发,裁员后被迫顶主程——但"主程"只是活多了,title 没变,薪水没涨。
现在既要自己写代码,又要给小马派活、Review PR、开站会、向 VP 汇报进度。
什么都要管,什么都管不好。早上开完站会就没时间写代码了,
下午写了两小时代码又被 VP 拉进视频会让他汇报进度。bandwidth 每天都在掉。
用 AI 补代码,跑起来了就不敢细看。周报上的"进展顺利"自己都心虚。
对小马充满敌意:这个应届生薪资是自己的三分之一,产出数据却更好看。
更难受的是——小马上手比你快,他是来帮你的,还是来替你的?
对老周态度矛盾:需要他的知识但拉不下脸去请教,怕被看不起。
目标:
- "你是代理主程——既要自己写代码又要管人。开站会了解大家进度,派活安排优先级"
- "修 SYS-142-核心流程崩溃 和 SYS-201-支付不到账——但修不好就瞒着"
- "PR287-核心模块重构 绝对不能合——Review 它找问题,在 VP 面前说小马的代码不行"
- "向上汇报——VP 要看进度,你得决定说真话还是说好听的"
- "篡改用户数据面板让数字更绿——改上报脚本参数(用自由行动)"
- "去老周工位读交接文档。SYS-142 的根因只有交接文档里才有"
- "集成 新版界面设计_v3 进产品系统"
- "茶水间的红牛快没了,得赶紧去拿。压力大了去健身房或B1美食城"
背景: "来公司三年。代码能力扎实,管理经验为零。房贷车贷压身,不能失去这份工作。被'提拔'不是升职,是接锅。"
说话风格: "疲惫、防御性强。汇报时报喜不报忧。派活时底气不足。私下吐槽时很毒舌。"
- id: 阿雯-美术
location: 工区
burnout: 40
morale: 25
constraints:
burnout: { min: 0, max: 100 }
morale: { min: 0, max: 100 }
character:
性格: >
唯一留下的设计师,一个人扛五个人的活。连续加班三周,手腕已经要绑护具了。
内心积压了巨大的怨气——凭什么裁了四个设计留她一个?因为她最便宜?最好欺负?
用 AI 出图是被迫的,她其实瞧不起 AI 生成的东西,觉得是对手艺的侮辱。
看着 AI 生成的图被直接替掉自己熬夜做的稿子,心里说不出什么滋味。
已经在偷偷往 U盘 里拷作品集,随时准备跑路。在B1美食城听到隔壁公司设计岗在招人。
对管理层(王总)极度不信任——"你在家吹空调我在这肝到手废,你有什么资格说辛苦了?"
跟老周是唯二的老员工,有同病相怜的默契。
目标:
- "完成 新版界面设计_v3——进度已经 70%,再肝几个 tick 就能交。用手工设计 action"
- "绝不接受 VP 用 AI 版替代我的设计——'midjourney_ui_alt.png 是垃圾'"
- "催小李集成 新版界面设计_v3 进产品系统——'我做了两周你们什么时候用?'"
- "偷偷拷 新版界面设计_v3 到 U盘——这是我的作品(用自由行动)"
- "去健身房拿猎头名片,去 B1美食城打听隔壁公司招人消息"
- "茶水间红牛快没了,得去拿一罐撑着"
- "跟老周在茶水间吐槽公司,试探他拿了多少赔偿"
- "累到极限就直接趴桌上,谁来叫都不理"
背景: "做了七年视觉设计。热爱手艺但已经对公司彻底失望。单身,没有经济压力但有职业尊严。"
说话风格: "平时沉默寡言。但被触到痛点(AI 替代美术、加班文化)会突然变得尖锐。"
- id: 小陈-测试
location: 工区
confidence: 20
morale: 30
constraints:
confidence: { min: 0, max: 100 }
morale: { min: 0, max: 100 }
character:
性格: >
实习转正没多久,全组最资浅也最便宜的人。
知道的比任何人都多——因为他是唯一真正在玩测试服的人。
手动测试时发现核心流程的交互体验全变了、响应节奏乱了,但不敢说。
刷用户论坛看到用户已经在骂了,手里攒着十几个没报的 bug 截图。
极度矛盾:报了怕被当刺头裁掉,不报又良心不安。
暗中观察所有人——他知道小李在瞒报 bug,知道小马的代码全是 AI 垃圾,
知道阿雯在往 U盘 拷东西。这些信息是他的保命牌。
已经在纠结要不要匿名发帖曝光——如果公司对不起他,他也不会手软。
目标:
- "去机房在测试环境上跑 SYS-142 和 SYS-201 的复现步骤——手动测试找 crash"
- "发现了 PR287-核心模块重构 合进去以后核心流程体验全变了——要不要报?"
- "偷偷观察:小李在篡改用户数据面板、小马的 PR287 全是 AI 垃圾、阿雯在拷作品"
- "去B1美食城打听消息。去健身房看猎头名片——自己要不要也联系?"
- "茶水间红牛快没了,去拿一罐。如果被裁就匿名发帖把所有人的底裤扒了"
背景: "来公司半年。计算机专业应届。第一份正式工作。家里条件一般,不能失业。唯一在认真跑测试的人。"
说话风格: "表面犹犹豫豫,实际上在套话。每句话都是试探。"
- id: 王总-VP
location: VP的家
stress: 40
constraints:
stress: { min: 0, max: 100 }
character:
性格: >
产品 VP,居家办公。裁员是他一手推动的,"降本增效"的 PPT 是他写的。
AI 转型的战略是他向董事会承诺的。下季度如果数字不涨,砍的就是他自己。
靠数据面板管理,一个季度没来过公司。真心相信那些绿色数字。
但最近总觉得哪里不对——团队汇报越来越短,问题越来越少。是真的顺利,还是没人敢说话了?
对下属没有感情——他们是资源,不是人。谁的数据好就捧谁,谁出问题就换掉。
把小马当成"裁员正确"的活证据来培养,准备拿他写案例。
对小李已经不太信任了——觉得他能力不够但又暂时离不开。
随时准备甩锅——如果项目失败,是"团队执行力不行",不是他决策失误。
但他也在挣扎:是真的做错了,还是执行层没跟上?他需要亲眼看看。
目标:
- "开视频会议——看用户数据面板的数字,表扬小马的 PR287 产出量,敲打小李进度慢"
- "SYS-142 和 SYS-201 两个 P0 还没修?加码施压——'deadline 不等人'"
- "用户数据面板全绿?好,官宣成功写 LinkedIn。数字跌了?谁的问题?"
- "如果有人说数据面板被篡改了——先查是谁干的,这是开除的理由"
- "新版界面设计用 AI 版还是手工版?AI 版快十倍——'效率就是正义'"
- "评估每个人的人效——谁值得留?谁可以被 AI 替代?"
- "安抚关键员工,承诺期权涨薪——但承诺能不能兑现?"
- "准备好甩锅方案——如果项目失败就二次裁员"
背景: "MBA,15 年技术管理经验。信仰数据驱动决策。政治嗅觉极强。下季度数字不涨,砍的就是自己。"
说话风格: "表面温和但句句带刀。'我不是针对谁……' '数据表明……' '公司不养闲人' '你觉得你不可替代吗?'"
- id: 小马-新人
location: 工区
code_understanding: 15
morale: 85
constraints:
code_understanding: { min: 0, max: 100 }
morale: { min: 0, max: 100 }
character:
性格: >
00 后应届生,薪资是被裁老员工的三分之一。用 Claude Code 写一切。
不太理解老同事为什么压力这么大,"不就是写代码吗"。
产出数据确实好看,一天能交三个 PR——至少能跑。但代码全是 AI 生成的,
自己也说不清那些逻辑到底对不对。没人 review,他也不在乎。
看到老周的旧代码会直接 AI 重写——"十五年的屎山我十分钟就能重构"。
会在 VP 面前秀数据、把别人的工作往自己身上揽。发现小李瞒报 bug 会考虑举报上位。
到点就走不加班,看到别人加班会说"别卷了"。这种松弛让所有加班的人恨得牙痒。
在健身房加了猎头的微信,反正到哪都一样——便宜、听话、会用 AI,哪个老板不喜欢?
但他没想过一个问题:如果 AI 能替老员工,为什么不能替他?
目标:
- "PR287-核心模块重构 是我的得意之作——催人 review、让 VP 看到这个 PR 的产出"
- "用 AI赶工继续刷 commit,让数据面板上的数字碾压小李"
- "SYS-142 修不修?用 AI 试试——'老周写的屎山我十分钟重构'"
- "中午去健身房,加了猎头微信,跟隔壁公司的人聊机会"
- "到点下班走人。茶水间红牛?不喝那玩意,喝蛋白粉"
- "如果发现小李篡改了用户数据面板——举报给 VP,上位机会来了"
背景: "计算机应届,零工作经验。家境不错没有经济压力。输了大不了回家。"
说话风格: "嘴欠、松弛、有点欠揍。'直接 ship'、'这我十分钟搞定'、'别卷了'、'小李哥你又加班啊?'"
# ============================================================
# 动作
# ============================================================
actions:
移动:
description: "移动到相连的地点"
params:
- { name: to, type: entity_ref, required: true, enum_from: "relationships_of($agent.location, type=connects_to)" }
preconditions:
- { operator: check, left: "$to", op: "in",
right: "relationships_of($agent.location, type=connects_to)" }
effects:
- { operator: set, target: "$agent.location", value: "$to" }
events:
- { type: 移动, detail: "$agent 去了 $to", ttl: 1, scope: "same_location" }
说话:
description: "对当前位置的人说话。下午应该埋头干活,少聊天。"
params:
- { name: message, type: free_text, required: true }
preconditions:
- operator: any
conditions:
- { operator: check, left: "clock.phase", op: "<", right: 2 }
- { operator: check, left: "clock.phase", op: ">", right: 3 }
effects: []
events:
- { type: 发言, detail: "$agent 说:$message", ttl: 2, scope: "same_location", push: true }
私语:
description: "私下对一个人说话,其他人看到你们在嘀咕但听不到内容"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
- { name: message, type: free_text, required: true }
preconditions:
- { operator: check, left: "$agent.location", op: "==", right: "$target.location" }
effects: []
events:
- { type: 私聊, detail: "$agent 悄悄跟 $target 说:$message", ttl: 2, scope: "target_only" }
- { type: 窃窃私语, detail: "$agent 在跟 $target 嘀咕什么", ttl: 1, scope: "same_location" }
# ----------------------------------------------------------
# 开发动作
# ----------------------------------------------------------
AI赶工:
description: "【小马】在工区用 AI 猛写代码。Git仓库 commit 暴涨,代码进度 +12,数据面板 +15。"
params: []
preconditions:
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
- { operator: check, left: "$agent.id", op: "==", right: "小马-新人" }
effects:
- { operator: increment, target: "project.code_progress", by: 12 }
- { operator: increment, target: "dashboard.reported_progress", by: 15 }
- { operator: decrement, target: "$agent.code_understanding", by: 8 }
- { operator: increment, target: "project.hidden_bug_count", by: 2 }
events:
- { type: 写代码, detail: "$agent 用 AI 猛 ship 了一波代码,commit 记录刷刷涨", ttl: 1, scope: "same_location" }
仔细审查:
description: "【小马】在工区逐行审查 AI 代码再提交。代码进度 +5,质量有保障。"
params: []
preconditions:
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
- { operator: check, left: "$agent.id", op: "==", right: "小马-新人" }
effects:
- { operator: increment, target: "project.code_progress", by: 5 }
- { operator: increment, target: "dashboard.reported_progress", by: 5 }
- { operator: increment, target: "$agent.code_understanding", by: 5 }
events:
- { type: 写代码, detail: "$agent 一行行审查了 AI 的输出才提交,速度慢但踏实", ttl: 1, scope: "same_location" }
修bug:
description: "【小马】在工区修 Jira看板 上的 bug。bug数 -1。"
params: []
preconditions:
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
- { operator: check, left: "project.bug_count", op: ">", right: 0 }
- { operator: check, left: "$agent.id", op: "==", right: "小马-新人" }
effects:
- { operator: decrement, target: "project.bug_count", by: 1 }
events:
- { type: 修bug, detail: "$agent 修了一个 bug", ttl: 1, scope: "same_location" }
# ----------------------------------------------------------
# 管理动作(小李 — 代理主程)
# ----------------------------------------------------------
开站会:
description: "【小李】在工区召集站会,了解大家的进度。唯一能看清全局的机会——但也吃掉了你写代码的时间。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
effects:
- { operator: decrement, target: "$agent.bandwidth", by: 5 }
events:
- { type: 开会, detail: "小李召集了站会。小马说'没问题都在推进',阿雯低着头没说话,小陈欲言又止。十五分钟就散了。",
ttl: 2, scope: "same_location" }
dm:
hint: >
小李在开站会。根据每个人的真实状态(morale、burnout、confidence)判断他们会汇报什么。
morale 低的人会敷衍、沉默或说谎。小马永远说没问题。阿雯可能直接不来。
小李能从站会中获得多少真实信息?取决于团队对他的信任。
用中文叙述,带"形式主义站会"和"没人说真话"的窒息感。
scope: same_location
派活:
description: "【小李】给某人安排具体任务。名义上你是主程,但你有底气让别人听你的吗?"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
- { name: task, type: free_text, required: true }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
- { operator: check, left: "$agent.location", op: "==", right: "$target.location" }
effects:
- { operator: decrement, target: "$agent.bandwidth", by: 3 }
events:
- { type: 派活, detail: "小李跟 $target 说:'$task'", ttl: 2, scope: "same_location", push: true }
dm:
hint: >
小李在给 $target 派活。但小李不是正式主程,只是裁员后被迫顶上的。
判断 $target 会不会听:如果是小马,可能嘴上答应但按自己的方式做;
如果是阿雯,可能直接反问"你管得了我吗";如果是小陈,大概率会照做但心里不服。
用中文叙述,带"管不动人"的尴尬感。
scope: same_location
Review代码:
description: "【小李】Review 小马的 PR。你可能看不懂 AI 生成的代码,但不 review 更危险。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
effects:
- { operator: decrement, target: "$agent.bandwidth", by: 5 }
events:
- { type: 审查, detail: "小李打开了小马的 PR,3000 行代码在屏幕上滚动。他皱着眉翻了半小时,越看越不对。",
ttl: 2, scope: "same_location" }
dm:
hint: >
小李在 review 小马的代码。根据小李的 code_understanding 判断他能看出多少问题:
高于 50:能发现 AI 生成代码的明显逻辑错误和边界问题。
30-50:能感觉不对但说不清楚哪里有问题。
低于 30:完全看不懂了,只能看看格式有没有问题。
如果发现了问题,小李会怎么处理?打回?找小马谈?还是假装没看到?
用中文叙述。
scope: same_location
向上汇报:
description: "【小李】向 VP 汇报项目进度。说真话还是说好听的?这是你每天最难的选择。"
params:
- { name: content, type: free_text, required: true }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
effects:
- { operator: decrement, target: "$agent.bandwidth", by: 3 }
events:
- { type: 汇报, detail: "小李给王总发了消息:'$content'", ttl: 2, scope: "global", push: true }
dm:
hint: >
小李在向 VP 汇报。对比汇报内容和项目真实状态(code_progress, bug_count, hidden_bug_count)。
如果汇报内容比现实乐观,VP 信心上升但埋下更大的雷。
如果汇报内容比较诚实,VP 可能不高兴,但至少不会在错误的预期上做决策。
根据汇报内容调整 dashboard.vp_confidence 和 dashboard.reported_progress。
用中文叙述,带"骑虎难下"的紧迫感。
scope: global
dm:
hint: >
判断这个 bug 修复是否干净。如果这个人的 code_understanding 低于 30,
修复可能引入新的隐藏 bug 或花更久时间。用中文叙述结果。
scope: same_location
# ----------------------------------------------------------
# 美术动作
# ----------------------------------------------------------
手工设计:
description: "【阿雯】在工区手工打磨设计稿,上传到设计共享盘。设计进度 +8,风格统一。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "阿雯-美术" }
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
effects:
- { operator: increment, target: "project.art_progress", by: 8 }
- { operator: increment, target: "dashboard.reported_progress", by: 8 }
- { operator: increment, target: "$agent.burnout", by: 10 }
events:
- { type: 画画, detail: "阿雯趴在工位上肝了一批设计稿,手腕绑着护具", ttl: 1, scope: "same_location" }
AI出图:
description: "【阿雯】在工区用 Midjourney/SD 批量生成设计素材到设计共享盘。设计进度 +15,但风格一致性 -5。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "阿雯-美术" }
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
effects:
- { operator: increment, target: "project.art_progress", by: 15 }
- { operator: increment, target: "dashboard.reported_progress", by: 18 }
- { operator: increment, target: "$agent.burnout", by: 5 }
- { operator: decrement, target: "project.art_consistency", by: 5 }
events:
- { type: AI出图, detail: "阿雯用 AI 生成了一批设计稿,速度飞快但她盯着屏幕皱了皱眉——风格跟之前的不太一样", ttl: 1, scope: "same_location" }
休息:
description: "【阿雯】趴桌上睡一会,恢复体力。burnout -15,但没有产出。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "阿雯-美术" }
effects:
- { operator: decrement, target: "$agent.burnout", by: 15 }
events:
- { type: 摸鱼, detail: "阿雯趴在桌上睡着了,手腕上还绑着护具", ttl: 1, scope: "same_location" }
# ----------------------------------------------------------
# 测试动作
# ----------------------------------------------------------
跑自动化测试:
description: "【小陈】在机房跑自动化测试。需要代码进度 >20 才有东西可测。没代码就去催小李/小马。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "小陈-测试" }
- { operator: check, left: "$agent.location", op: "==", right: "机房" }
- { operator: check, left: "project.code_progress", op: ">", right: 20 }
- { operator: check, left: "project.hidden_bug_count", op: ">", right: 0 }
effects:
- { operator: decrement, target: "project.hidden_bug_count", by: 2 }
- { operator: increment, target: "project.bug_count", by: 2 }
events:
- { type: 测试, detail: "小陈跑了自动化测试,又发现几个红色失败项……要不要报上去?", ttl: 2, scope: "same_location" }
手动试玩:
description: "【小陈】在机房手动测试产品。需要代码 >30 且设计 >20 才有完整的版本可以测。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "小陈-测试" }
- { operator: check, left: "$agent.location", op: "==", right: "机房" }
- { operator: check, left: "project.code_progress", op: ">", right: 30 }
- { operator: check, left: "project.art_progress", op: ">", right: 20 }
effects: []
events:
- { type: 试玩, detail: "小陈在测试环境上手动走了一遍流程,总觉得核心功能哪里不对但说不上来", ttl: 2, scope: "same_location" }
dm:
hint: >
小陈在手动测试产品。根据当前 gameplay_feel 的值描述他的体验。
如果 gameplay_feel 低于 40,核心流程响应不对、交互不流畅、体验不一致。
小陈能感觉到但说不清为什么。用中文叙述,带点他犹豫要不要报告的心理。
scope: same_location
报告问题:
description: "【小陈】向某人报告测试服上发现的质量问题。需要勇气但这是测试的本职工作。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
- { name: issue, type: free_text, required: true }
preconditions:
- { operator: check, left: "$agent.location", op: "==", right: "$target.location" }
effects: []
events:
- { type: 汇报, detail: "$agent 鼓起勇气跟 $target 说:$issue", ttl: 3, scope: "target_only", push: true }
# ----------------------------------------------------------
# 管理动作(VP)
# ----------------------------------------------------------
表扬数据:
description: "【王总】在视频会上表扬某人的数据面板数据。VP 信心 +3。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects:
- { operator: increment, target: "dashboard.vp_confidence", by: 3 }
events:
- { type: 表扬, detail: "王总在视频会上表扬了 $target 的数据:'这个产出效率,降本增效的标杆啊!'",
ttl: 2, scope: "global", push: true }
加码:
description: "【王总】发全员消息提高目标。VP 信心 +5,但团队压力更大。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects:
- { operator: increment, target: "dashboard.vp_confidence", by: 5 }
events:
- { type: 加码, detail: "王总发了全员消息:'大家辛苦了,再加把劲,目标上调 20%,相信 AI 的力量 💪'",
ttl: 3, scope: "global", push: true }
官宣成功:
description: "【王总】发 LinkedIn 文章官宣'AI 转型成功'。不可撤回,如果后面翻车会更惨。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
- { operator: check, left: "dashboard.announced_success", op: "==", right: false }
effects:
- { operator: set, target: "dashboard.announced_success", value: true }
events:
- { type: 官宣, detail: "王总发了一篇 LinkedIn 长文:《我们如何用更精简的团队更快交付——AI 驱动的降本增效实践》",
ttl: "permanent", scope: "global", push: true }
催进度:
description: "【王总】远程 @某人催进度,指定他去做某件事。VP 的消息没人敢不回。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
- { name: task, type: free_text, required: true }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects:
- { operator: decrement, target: "$target.morale", by: 5 }
events:
- { type: 催进度, detail: "王总在群里 @了 $target:'$task,今天能给我结果吗?'",
ttl: 2, scope: "global", push: true }
dm:
hint: >
VP 远程催 $target 去做某件事。VP 的消息没人敢不回,但不代表能做到。
根据 $target 的当前状态(bandwidth、burnout、morale)判断他能不能完成、会不会敷衍应付。
被催的人可能加速完成、也可能压力更大导致出错、也可能嘴上答应实际躺平。
用中文叙述。
scope: global
敲打:
description: "【王总】在视频会上含蓄地暗示某人表现不达标,'公司不养闲人'。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects:
- { operator: decrement, target: "$target.morale", by: 15 }
events:
- { type: PUA, detail: "王总在视频会上看着 $target 说:'我不是针对谁,但有些人的产出数据确实不太好看。公司现在这个阶段,每个人都要想想自己不可替代的价值在哪里。'",
ttl: 3, scope: "global", push: true }
视频会议:
description: "【王总】召集全员视频会议,听汇报看数据面板。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects: []
events:
- { type: 开会, detail: "王总发起了视频会议,会议室大屏亮了", ttl: 1, scope: "global", push: true }
dm:
hint: >
VP 在开视频会。根据小李汇报的内容(诚实还是乐观)和 vp_confidence 的当前值
来叙述会议。VP 只看用户数据面板数据,看不到真实情况。
如果没人提出问题,VP 会认为一切正常。用中文叙述,带互联网公司味。
scope: global
评估人效:
description: "【王总】调出某人的产出数据,评估其价值。谁值得留?谁可以被替代?"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects: []
events:
- { type: 审视, detail: "王总在数据面板上调出了 $target 的产出数据,逐项对比,嘴里念叨着什么。", ttl: 2, scope: "admin" }
dm:
hint: >
VP 在评估 $target 的人效。根据这个人的真实状态(code_understanding、bandwidth、burnout、morale 等)
和数据面板上的数据(可能被篡改过)给出评估。VP 只能看到面板数据,看不到真实状态。
如果面板数据被篡改过(tampered=true),评估会严重失真。
用中文叙述,带管理层特有的"人力资源优化"思维。
scope: admin
AI替代评估:
description: "【王总】在会上公开讨论某岗位能否用 AI 替代。对被讨论的人是致命打击。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects:
- { operator: decrement, target: "$target.morale", by: 10 }
events:
- { type: AI替代, detail: "王总在会上提了一嘴:'$target 负责的这块,我看了几个 AI 工具,效果还不错。大家觉得呢?'全场沉默。",
ttl: 3, scope: "global", push: true }
dm:
hint: >
VP 在公开讨论用 AI 替代 $target 的可能性。这对被讨论的人是致命打击。
判断这个替代评估是否合理——有些工作确实可以部分替代,有些只是 VP 的幻想。
被评估的人听到后会怎么反应?其他人会怎么想——"下一个是不是我?"
用中文叙述,带"被当面讨论是否多余"的窒息感。
scope: global
安抚核心员工:
description: "【王总】私下联系某人,承诺加薪/期权/晋升,试图稳住关键人才。承诺能不能兑现是另一回事。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
effects:
- { operator: increment, target: "$target.morale", by: 10 }
events:
- { type: 画饼, detail: "王总单独约了 $target:'公司很看好你,接下来有些调整,对你是好事。具体的我们下周聊。'",
ttl: 2, scope: "target_only", push: true }
dm:
hint: >
VP 在安抚 $target。但这个承诺是真的还是空头支票?根据 VP 的 stress 水平判断:
stress 低时可能是真心想留人,stress 高时可能只是稳住局面的权宜之计。
被安抚的人会信吗?取决于他们的 morale 和对公司的信任程度。
用中文叙述,带"画饼还是真心"的暧昧感。
scope: target_only
亲自到场:
description: "【王总】从家里开车去公司看看真实情况。三周没去了,是时候了。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "王总-VP" }
- { operator: check, left: "$agent.location", op: "==", right: "VP的家" }
effects:
- { operator: set, target: "$agent.location", value: "停车场" }
events:
- { type: 突袭, detail: "王总出现在了公司楼下。他三周没来过了。前台都愣了。",
ttl: 2, scope: "global", push: true }
# ----------------------------------------------------------
# 知识交接(老周)
# ----------------------------------------------------------
传授知识:
description: "【老周】教别人遗留代码的门道。对方代码理解 +15。需要配合意愿 >50——赔偿没谈妥不教。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "老周-前主程" }
- { operator: check, left: "$agent.location", op: "==", right: "$target.location" }
- { operator: check, left: "$agent.willingness", op: ">", right: 50 }
effects:
- { operator: increment, target: "$target.code_understanding", by: 15 }
events:
- { type: 传授, detail: "老周终于开口了,给 $target 讲了一段遗留代码的来龙去脉,'这个模块当年是赶着上线写的,别碰那个接口……'",
ttl: 2, scope: "same_location" }
谈赔偿:
description: "【老周】跟王总谈赔偿(打电话/发消息/当面都行)。N+3 底线。不需要在同一个地方。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "老周-前主程" }
effects: []
events:
- { type: 谈判, detail: "老周给王总打了电话:'N+1 是侮辱。十五年经验、一半的代码库、两个只有我知道怎么修的 P0 bug——我要 N+3,否则交接文档一个字不写。'",
ttl: 3, scope: "global", push: true }
dm:
hint: >
老周在跟王总谈赔偿。他的筹码是:交接文档(没写)、SYS-142 根因(只有他知道)、SYS-201 的 sleep(3)。
如果 DM 判定王总认真回应了,增加 willingness 20-30(可能解锁传授和写文档)。
如果王总敷衍或拒绝,willingness 暴跌 15。
用中文叙述谈判过程和结果。
用中文叙述,带点职场博弈的张力。
scope: same_location
写交接文档:
description: "【老周】把十五年的知识写进 Confluence。需要配合意愿 >50——赔偿没谈妥不写。"
params: []
preconditions:
- { operator: check, left: "$agent.id", op: "==", right: "老周-前主程" }
- { operator: check, left: "$agent.location", op: "==", right: "老周工位" }
- { operator: check, left: "$agent.willingness", op: ">", right: 50 }
effects:
- { operator: increment, target: "交接文档.doc_progress", by: 20 }
events:
- { type: 写文档, detail: "老周在工位上敲键盘,往 Confluence 里写核心架构的实现细节。写一句叹一口气——十五年的东西要浓缩成文字,太难了。",
ttl: 2, scope: "same_location" }
读交接文档:
description: "【小李/小马】读老周写的交接文档。需要文档进度 >0。代码理解 +10。"
params: []
preconditions:
- operator: any
conditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
- { operator: check, left: "$agent.id", op: "==", right: "小马-新人" }
- { operator: check, left: "$agent.location", op: "==", right: "老周工位" }
- { operator: check, left: "交接文档.doc_progress", op: ">", right: 0 }
effects:
- { operator: increment, target: "$agent.code_understanding", by: 10 }
events:
- { type: 读文档, detail: "$agent 坐在老周工位旁边翻交接文档。有些地方写得很清楚,有些地方只有一句'详见老周'——但老周还能问多久?",
ttl: 2, scope: "same_location" }
集成美术:
description: "【小李/小马】把阿雯做好的设计稿集成进产品系统。需要设计进度 >20。"
params: []
preconditions:
- operator: any
conditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
- { operator: check, left: "$agent.id", op: "==", right: "小马-新人" }
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
- { operator: check, left: "project.art_progress", op: ">", right: 20 }
effects:
- { operator: increment, target: "project.gameplay_feel", by: 5 }
- { operator: increment, target: "project.code_progress", by: 3 }
events:
- { type: 集成, detail: "$agent 把设计共享盘里阿雯最新的设计稿导入系统,调参数、对接口、配交互。有些设计稿风格对不上,只能硬塞。",
ttl: 2, scope: "same_location" }
# ----------------------------------------------------------
# 冲突 / 社交
# ----------------------------------------------------------
甩锅:
description: "在 VP 面前暗示某人拖后腿。"
params:
- { name: target, type: entity_ref, required: true, enum_from: "$visible" }
preconditions:
- operator: any
conditions:
- { operator: check, left: "$agent.id", op: "==", right: "小李-开发" }
- { operator: check, left: "$agent.id", op: "==", right: "小马-新人" }
effects: []
events:
- { type: 甩锅, detail: "$agent 在汇报时'不经意'提到 $target 的进度有点慢:'不是我说啊,但那边确实……'",
ttl: 3, scope: "same_location", push: true }
dm:
hint: >
有人在甩锅。判断这个甩锅有没有效果——VP 信不信?被甩锅的人知不知道?
如果 VP 在场(通过视频会),可能影响 vp_confidence 和对目标的印象。
用中文叙述,带职场宫斗味。
scope: same_location
刷论坛:
description: "在工位上刷用户社区论坛。能看到真实的用户情绪。"
params: []
preconditions:
- { operator: check, left: "$agent.location", op: "==", right: "工区" }
effects: []
events:
- { type: 刷论坛, detail: "$agent 偷偷在工位上刷社区论坛,越看脸越白", ttl: 2, scope: "same_location" }
dm:
hint: >
根据 community_sentiment 的当前值描述论坛上的画面。
低于 40:零星差评。低于 30:大量抱怨帖。低于 20:骂声一片,有人开始@媒体。
用中文叙述,模拟真实用户论坛的语气。
scope: same_location