已按 ReAct‑lite 方案改成“单循环 + JSON 思考封装”,并确保思考链只在内部 JSON 里流转,不会展示给玩家。核心变化如下。

改动说明(ReAct‑lite 落地)

用“循环式 Thought/ToolCalls/Observation/Final”替换原三阶段:AIIntelligenceCore.cs
新增 ReAct 专用提示与工具清单构建,统一 JSON 输出结构 {thought, tool_calls, final}:AIIntelligenceCore.cs
新增通用 JSON 对象片段解析,允许从混杂文本中抽取 JSON:JsonToolCallParser.cs
工具执行改为 step 模式(不再区分 query/action 阶段),并更新工具结果指导语以匹配 ReAct‑lite:AIIntelligenceCore.cs
This commit is contained in:
2025-12-31 02:16:02 +08:00
parent 1f86ae7d6c
commit e3f257e8d5
3 changed files with 336 additions and 313 deletions

View File

@@ -95,6 +95,34 @@ namespace WulaFallenEmpire.EventSystem.AI.Utils
return false;
}
public static bool TryParseObjectFromText(string input, out Dictionary<string, object> obj, out string jsonFragment)
{
obj = null;
jsonFragment = null;
if (string.IsNullOrWhiteSpace(input)) return false;
string trimmed = input.Trim();
if (TryParseObject(trimmed, out obj))
{
jsonFragment = trimmed;
return true;
}
int firstBrace = trimmed.IndexOf('{');
int lastBrace = trimmed.LastIndexOf('}');
if (firstBrace >= 0 && lastBrace > firstBrace)
{
string candidate = trimmed.Substring(firstBrace, lastBrace - firstBrace + 1);
if (TryParseObject(candidate, out obj))
{
jsonFragment = candidate;
return true;
}
}
return false;
}
public static bool TryParseObject(string json, out Dictionary<string, object> obj)
{
obj = null;