强 schema 清洗:所有工具定义在生成时统一清洗,补齐 properties、规整 type、强制 additionalProperties=false,避免 schema 漏洞导致模型随意输出。AITool.cs、ToolSchemaSanitizer.cs

预执行拦截(Claude Code 风格):工具执行前校验 JSON、必填字段、类型、未知字段;失败则返回错误 ToolResult 反馈给模型,允许自修正或降级回复。ToolCallValidator.cs、AIIntelligenceCore.cs
重试清洗:retry_tools 解析前剥离 json 围栏,避免误判。AIIntelligenceCore.cs
工具选择:Query 阶段强制 tool_choice: "required",Action 维持 auto。AIIntelligenceCore.cs
This commit is contained in:
2026-01-02 14:09:39 +08:00
parent 36c182636e
commit 2c4cff8b63
5 changed files with 322 additions and 11 deletions

View File

@@ -22,6 +22,7 @@ namespace WulaFallenEmpire.EventSystem.AI.Tools
public virtual Dictionary<string, object> GetFunctionDefinition()
{
var parameters = GetParametersSchema() ?? SchemaObject(new Dictionary<string, object>(), new string[] { });
parameters = ToolSchemaSanitizer.Sanitize(parameters);
return new Dictionary<string, object>
{
["type"] = "function",