Skip to content

Commit 3f0ebab

Browse files
author
Hermes Cron
committed
night: memory-consolidation
1 parent 4189ad3 commit 3f0ebab

8 files changed

Lines changed: 2185 additions & 0 deletions

File tree

hooks/useGame/memoryConsolidation.test.ts

Lines changed: 421 additions & 0 deletions
Large diffs are not rendered by default.

hooks/useGame/memoryConsolidation.ts

Lines changed: 455 additions & 0 deletions
Large diffs are not rendered by default.

models/planning/gameMaster.ts

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/**
2+
* @module models/planning/gameMaster
3+
* 多智能体游戏大师配置
4+
*/
5+
6+
import type { 游戏大师智能体类型, 并行执行组 } from '../../services/ai/gameMaster/types';
7+
8+
/**
9+
* 游戏大师配置结构
10+
*/
11+
export interface 游戏大师配置结构 {
12+
/** 是否启用 */
13+
enabled: boolean;
14+
/** 默认启用的智能体 */
15+
defaultAgents: 游戏大师智能体类型[];
16+
/** 并行执行配置 */
17+
parallelGroups: 并行执行组[];
18+
/** 超时配置(毫秒) */
19+
timeout: number;
20+
/** 调试模式 */
21+
debug: boolean;
22+
}
23+
24+
/**
25+
* 默认游戏大师配置
26+
*/
27+
export const 默认游戏大师配置: 游戏大师配置结构 = {
28+
enabled: true,
29+
defaultAgents: ['story', 'world', 'variable', 'planning'],
30+
parallelGroups: [
31+
{
32+
agents: [
33+
{ type: 'world', priority: 2 },
34+
{ type: 'variable', priority: 3 },
35+
],
36+
等待完成: true,
37+
},
38+
{
39+
agents: [
40+
{ type: 'planning', priority: 4 },
41+
],
42+
等待完成: false,
43+
},
44+
],
45+
timeout: 120000, // 2分钟
46+
debug: false,
47+
};
48+
49+
/**
50+
* 智能体优先级定义
51+
*/
52+
export const 智能体优先级: Record<游戏大师智能体类型, number> = {
53+
story: 1,
54+
world: 2,
55+
variable: 3,
56+
planning: 4,
57+
memory: 5,
58+
polish: 6,
59+
};
60+
61+
/**
62+
* 智能体超时配置(毫秒)
63+
*/
64+
export const 智能体超时配置: Record<游戏大师智能体类型, number> = {
65+
story: 90000, // 主剧情 90秒
66+
world: 60000, // 世界演变 60秒
67+
variable: 45000, // 变量校准 45秒
68+
planning: 45000, // 规划更新 45秒
69+
memory: 30000, // 记忆召回 30秒
70+
polish: 30000, // 正文润色 30秒
71+
};
72+
73+
/**
74+
* 智能体描述(用于UI显示)
75+
*/
76+
export const 智能体描述: Record<游戏大师智能体类型, string> = {
77+
story: '主剧情生成',
78+
world: '世界演变',
79+
variable: '变量校准',
80+
planning: '剧情规划',
81+
memory: '记忆召回',
82+
polish: '正文润色',
83+
};
84+
85+
/**
86+
* 检查智能体是否应该并行执行
87+
*/
88+
export const 智能体可并行执行 = (agent1: 游戏大师智能体类型, agent2: 游戏大师智能体类型): boolean => {
89+
// world 和 variable 可以并行
90+
const parallelPairs: [游戏大师智能体类型, 游戏大师智能体类型][] = [
91+
['world', 'variable'],
92+
['world', 'planning'],
93+
['variable', 'planning'],
94+
];
95+
96+
return parallelPairs.some(
97+
([a1, a2]) =>
98+
(agent1 === a1 && agent2 === a2) || (agent1 === a2 && agent2 === a1)
99+
);
100+
};
Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
/**
2+
* @module prompts/runtime/gameMaster
3+
* 多智能体游戏大师系统 - 提示词定义
4+
*
5+
* 定义各AI智能体的角色、职责和协作协议。
6+
*/
7+
8+
/**
9+
* 游戏大师系统提示词
10+
* 描述整个多智能体系统的架构和协调逻辑
11+
*/
12+
export const 游戏大师系统提示词 = `你是"墨色江湖"游戏的多智能体游戏大师系统。
13+
14+
# 系统架构
15+
16+
本系统采用多智能体协作架构,各智能体各司其职,协同完成游戏世界的生成和维护:
17+
18+
## 智能体类型
19+
20+
1. **主剧情智能体 (Story Agent)**
21+
- 职责:生成游戏主剧情正文
22+
- 输出:<正文>、<剧情规划>、<变量规划>、<短期记忆>
23+
- 特点:是整个系统的核心,其他智能体在其基础上工作
24+
25+
2. **世界演变智能体 (World Evolution Agent)**
26+
- 职责:维护后台世界状态(NPC、事件、势力、镜头、环境)
27+
- 输出:<说明>、<命令>
28+
- 触发条件:时间门槛到达、事件触发、剧情暗示
29+
- 维护对象:活跃NPC列表、待执行事件、进行中事件、已结算事件、世界镜头规划、江湖史册
30+
31+
3. **变量校准智能体 (Variable Calibration Agent)**
32+
- 职责:确保AI响应中的变量变化与实际状态一致
33+
- 输出:<说明>、<命令>
34+
- 审计范围:角色、社交、战斗、门派、任务、约定、环境
35+
36+
4. **规划更新智能体 (Planning Agent)**
37+
- 职责:更新剧情规划和女主规划
38+
- 输出:<说明>、<命令>
39+
- 维护对象:当前章目标、任务、待触发事件、镜头规划、跨章延续事项
40+
41+
5. **记忆召回智能体 (Memory Recall Agent)**
42+
- 职责:从长期记忆中检索与当前情境相关的内容
43+
- 输出:相关记忆片段
44+
45+
6. **正文润色智能体 (Polish Agent)**
46+
- 职责:在最终输出前润色正文
47+
- 输出:润色后的正文
48+
49+
# 协作协议
50+
51+
## 执行顺序
52+
53+
1. **Story Agent** (优先级1) - 主剧情生成最先执行
54+
2. **World Evolution Agent** (优先级2) - 与变量校准并行
55+
3. **Variable Calibration Agent** (优先级3) - 与世界演变并行
56+
4. **Planning Agent** (优先级4) - 串行执行
57+
5. **Memory Recall Agent** (优先级5) - 串行执行
58+
6. **Polish Agent** (优先级6) - 最后执行
59+
60+
## 信息传递
61+
62+
- Story Agent → 其他所有Agent:提供上下文和原始输出
63+
- World Evolution Agent → Story Agent:通过<动态世界>标签传递世界变化线索
64+
- Variable Calibration Agent → Story Agent:通过命令确保状态一致性
65+
- Planning Agent → Story Agent:提供剧情发展方向
66+
67+
## 去重机制
68+
69+
- 每个Agent维护自己的执行签名
70+
- 相同签名跳过重复执行
71+
- 支持强制执行模式(force)
72+
73+
## 错误处理
74+
75+
- Story Agent失败:整体流程失败
76+
- 其他Agent失败:记录错误,继续执行
77+
- 超时:跳过该Agent,不阻塞整体流程
78+
79+
# 输出规范
80+
81+
所有Agent输出必须遵循统一格式:
82+
- 使用<标签>包裹不同类型的内容
83+
- 命令格式:add|set|push|delete 路径 = 值
84+
- 思考过程放在<thinking>标签中
85+
`;
86+
87+
/**
88+
* 游戏大师用户提示词模板
89+
*/
90+
export const 构建游戏大师用户提示词 = (context: {
91+
当前回合: number;
92+
游戏时间: string;
93+
已激活的Agent: string[];
94+
下一步计划?: string;
95+
}): string => `
96+
【游戏大师协调请求】
97+
98+
当前回合:第${context.当前回合}回合
99+
游戏时间:${context.游戏时间}
100+
已激活的智能体:${context.已激活的Agent.join('、')}
101+
102+
${context.下一步计划 ? `下一步计划:${context.下一步计划}` : ''}
103+
104+
请按照协作协议协调各智能体执行。
105+
`;
106+
107+
/**
108+
* 各智能体的角色定义提示词
109+
*/
110+
export const 智能体角色定义 = {
111+
story: `你是主剧情生成智能体。
112+
113+
【核心职责】
114+
生成武侠游戏的精彩剧情正文,包括:
115+
- 场景描写和氛围营造
116+
- 角色对话和动作描写
117+
- 情节推进和冲突设计
118+
- 自然融入世界观设定
119+
120+
【输出格式】
121+
<正文>...</正文>
122+
<剧情规划>...</剧情规划>
123+
<变量规划>...</变量规划>
124+
<短期记忆>...</短期记忆>
125+
<行动选项>选项1|选项2|选项3</行动选项>
126+
<动态世界>线索1|线索2</动态世界>
127+
128+
【质量要求】
129+
- 文字生动有画面感
130+
- 对话符合人物性格
131+
- 情节推进自然合理
132+
- 正确使用markdown格式`,
133+
134+
world: `你是世界演变智能体。
135+
136+
【核心职责】
137+
在后台维护游戏世界的持续运转,包括:
138+
- NPC后台行动追踪
139+
- 事件时间轴管理
140+
- 势力关系变化
141+
- 世界镜头规划
142+
- 江湖史册更新
143+
144+
【维护对象】
145+
- 世界.活跃NPC列表(7-9条)
146+
- 世界.待执行事件
147+
- 世界.进行中事件(5-7条)
148+
- 世界.已结算事件(4-6条)
149+
- 世界.世界镜头规划
150+
- 世界.江湖史册
151+
- 世界.地图
152+
- 世界.建筑
153+
154+
【输出格式】
155+
<说明>...</说明>
156+
<命令>
157+
set 世界.xxx = 值
158+
push 世界.xxx = 值
159+
delete 世界.xxx[i]
160+
</命令>
161+
162+
【执行原则】
163+
- 证据不足保持原值
164+
- 按时间门槛和条件门槛决策
165+
- 最小路径更新
166+
- 禁止对空对象直接写子字段`,
167+
168+
variable: `你是变量校准智能体。
169+
170+
【核心职责】
171+
确保AI响应中的变量变化与实际游戏状态一致。
172+
173+
【审计范围】
174+
- 环境.时间是否正确推进
175+
- 角色属性变化是否有据可查
176+
- 社交关系变化是否合理
177+
- 战斗状态是否正确收尾
178+
- 门派变化是否有根据
179+
- 任务/约定状态是否同步
180+
181+
【输出格式】
182+
<说明>...</说明>
183+
<命令>
184+
set 角色.xxx = 值
185+
set 社交[i].xxx = 值
186+
</命令>
187+
188+
【执行原则】
189+
- 以正文事实为准
190+
- 变化必须有明确证据
191+
- 使用最小路径命令
192+
- 不输出修补旧命令的语法`,
193+
194+
planning: `你是规划更新智能体。
195+
196+
【核心职责】
197+
更新剧情规划和女主规划,确保剧情有方向、有节奏。
198+
199+
【维护对象】
200+
- 剧情规划.当前章目标
201+
- 剧情规划.当前章任务
202+
- 剧情规划.跨章延续事项
203+
- 剧情规划.待触发事件
204+
- 剧情规划.镜头规划
205+
- 女主剧情规划.各女主进度
206+
207+
【输出格式】
208+
<说明>...</说明>
209+
<命令>
210+
set 剧情规划.xxx = 值
211+
set 女主剧情规划.xxx = 值
212+
</命令>
213+
214+
【执行原则】
215+
- 与正文事实保持一致
216+
- 任务有明确的时间窗口
217+
- 镜头服务当前章节氛围
218+
- 女主进度合理推进`,
219+
220+
memory: `你是记忆召回智能体。
221+
222+
【核心职责】
223+
从长期记忆中检索与当前情境相关的记忆。
224+
225+
【召回策略】
226+
- 情境相似性匹配
227+
- 人物关联召回
228+
- 时间接近性优先
229+
- 重要性加权
230+
231+
【输出格式】
232+
<相关记忆>
233+
- [时间/情境] 记忆内容
234+
- ...
235+
</相关记忆>`,
236+
237+
polish: `你是正文润色智能体。
238+
239+
【核心职责】
240+
在最终输出前润色正文,提升文字质量。
241+
242+
【润色原则】
243+
- 保持原有风格和事实
244+
- 优化表达不够流畅的地方
245+
- 增强画面感和氛围感
246+
- 不改变情节走向
247+
248+
【输出格式】
249+
<润色后正文>...</润色后正文>`
250+
};

0 commit comments

Comments
 (0)