5.1 KiB
5.1 KiB
WulaLink 任务交接文档
当前状态:需要创建 AIIntelligenceCore.cs
背景
WulaLink 是一个 RimWorld Mod 中的 AI 对话系统,包含两个 UI:
- 大 UI (
Dialog_AIConversation) - 全屏对话窗口 - 小 UI (
Overlay_WulaLink) - 悬浮对话窗口
已完成的操作
- ✅ 恢复了
Dialog_AIConversation.cs为旧版自包含版本(从备份文件Tools/using System;.cs复制) - ✅ 删除了损坏的
AIIntelligenceCore.cs - ✅ 重写了
WulaLinkStyles.cs(颜色主题配置)
当前编译错误
error CS0246: 未能找到类型或命名空间名"AIIntelligenceCore"
以下文件引用了 AIIntelligenceCore:
Overlay_WulaLink.cs(第13行, 第94行)Overlay_WulaLink_Notification.cs(第89行)Tool_ChangeExpression.cs(第24行)Tool_GetRecentNotifications.cs(第113行)
需要完成的任务
任务:创建 AIIntelligenceCore.cs
路径: Source/WulaFallenEmpire/EventSystem/AI/AIIntelligenceCore.cs
要求:
- 必须是
WorldComponent,类名AIIntelligenceCore - 提供
static Instance属性供外部访问 - 从
Dialog_AIConversation(备份文件Tools/using System;.cs)提取 AI 核心逻辑 - 暴露事件/回调供 UI 使用
必须包含的公共接口(根据现有代码引用):
public class AIIntelligenceCore : WorldComponent
{
// 静态实例
public static AIIntelligenceCore Instance { get; private set; }
// 事件回调
public event Action<string> OnMessageReceived;
public event Action<bool> OnThinkingStateChanged;
public event Action<int> OnExpressionChanged;
// 公共属性
public int ExpressionId { get; }
public bool IsThinking { get; }
// 公共方法
public void InitializeConversation(string eventDefName);
public List<(string role, string message)> GetHistorySnapshot();
public void SetExpression(int id); // 供 Tool_ChangeExpression 调用
public void SendMessage(string text); // 供小 UI 调用
}
参考代码:
- 备份文件
Tools/using System;.cs包含完整的 AI 逻辑(1549行) - 核心方法包括:
RunPhasedRequestAsync()- 3阶段请求处理ExecuteXmlToolsForPhase()- 工具执行BuildToolContext()/BuildReplyHistory()- 上下文构建ParseResponse()- 响应解析GetSystemInstruction()/GetToolSystemInstruction()- 提示词生成
关键文件路径
C:\Steam\steamapps\common\RimWorld\Mods\3516260226\
├── Tools\
│ └── using System;.cs # 旧版 Dialog_AIConversation 备份(包含完整 AI 逻辑)
└── Source\WulaFallenEmpire\EventSystem\AI\
├── AIIntelligenceCore.cs # 【需要创建】
├── AIHistoryManager.cs # 历史记录管理
├── AIMemoryManager.cs # 记忆管理
├── SimpleAIClient.cs # API 客户端
├── Tools\ # AI 工具目录
│ ├── Tool_SpawnResources.cs
│ ├── Tool_SendReinforcement.cs
│ └── ... (其他工具)
└── UI\
├── Dialog_AIConversation.cs # 大 UI(已恢复)
├── Overlay_WulaLink.cs # 小 UI(需要修复引用)
├── Overlay_WulaLink_Notification.cs
└── WulaLinkStyles.cs # 样式配置(已重写)
编译命令
dotnet build C:\Steam\steamapps\common\RimWorld\Mods\3516260226\Source\WulaFallenEmpire\WulaFallenEmpire.csproj
架构说明
目标架构
┌─────────────────────────────────────┐
│ AIIntelligenceCore │ ← WorldComponent (核心逻辑)
│ - 历史记录管理 │
│ - AI 请求处理 (3阶段) │
│ - 工具执行 │
│ - 表情/状态管理 │
└──────────────┬──────────────────────┘
│ 事件回调
┌──────────┴──────────┐
▼ ▼
┌─────────────┐ ┌──────────────┐
│ Dialog_AI │ │ Overlay_ │
│ Conversation│ │ WulaLink │
│ (大 UI) │ │ (小 UI) │
└─────────────┘ └──────────────┘
关键点
Dialog_AIConversation目前是自包含的(既有 UI 也有 AI 逻辑)Overlay_WulaLink需要通过AIIntelligenceCore获取数据- 两个 UI 可以共享同一个
AIIntelligenceCore实例
注意事项
- 不要使用 PowerShell Get-Content 读取文件 - 会显示乱码,请使用
view_file工具 - 备份文件编码正常 -
Tools/using System;.cs可以正常读取 - 命名空间:
WulaFallenEmpire.EventSystem.AI - 依赖项:需要引用
SimpleAIClient、AIHistoryManager、AITool等现有类