fix: Tag-Feld für Sub-Agent-Messages – verhindert API 400 bei tool_use ohne tool_result
- MessageRecord: neues Tag-Feld (null=normal, preparer/review/finalizer=Sub-Agent) - DatabaseService: Migration tag-Spalte, INSERT-Statements erweitert - AnthropicService: RunAgentChat setzt Tag=agentType bei allen 4 SaveMessage-Aufrufen - ChatService: BuildHistoryFromDb filtert getaggte Messages aus API-History Sub-Agent-Messages bleiben in der DB (Frontend-Anzeige), werden aber nie an die Claude API geschickt – löst das Problem für Preparer, Review und Finalizer gleichermaßen.
This commit is contained in:
1 parent
494f431963
commit
43d3e9dc26
4 files changed
+17
-9
No files matched your search
@@ -181,6 +181,7 @@ public class DatabaseService
|
||||
TryAddColumn(conn, "agents", "allow_user_choice", "INTEGER NOT NULL DEFAULT 1");
|
||||
TryAddColumn(conn, "chains", "plan_mode", "INTEGER NOT NULL DEFAULT 0");
|
||||
TryAddColumn(conn, "sessions", "preparer_agent_id", "TEXT");
|
||||
TryAddColumn(conn, "messages", "tag", "TEXT");
|
||||
|
||||
conn.Execute(@"
|
||||
CREATE TABLE IF NOT EXISTS agent_skills (
|
||||
@@ -629,8 +630,8 @@ public class DatabaseService
|
||||
using var conn = CreateConnection();
|
||||
record.CreatedAt = DateTime.UtcNow.ToString("o");
|
||||
return await conn.ExecuteScalarAsync<long>(@"
|
||||
INSERT INTO messages (chain_id, role, type, content, tool_name, tool_call_id, is_error, iteration, attachment_count, created_at)
|
||||
VALUES (@ChainId, @Role, @Type, @Content, @ToolName, @ToolCallId, @IsError, @Iteration, @AttachmentCount, @CreatedAt);
|
||||
INSERT INTO messages (chain_id, role, type, content, tool_name, tool_call_id, is_error, iteration, attachment_count, tag, created_at)
|
||||
VALUES (@ChainId, @Role, @Type, @Content, @ToolName, @ToolCallId, @IsError, @Iteration, @AttachmentCount, @Tag, @CreatedAt);
|
||||
SELECT last_insert_rowid();
|
||||
", record);
|
||||
}
|
||||
@@ -651,8 +652,8 @@ public class DatabaseService
|
||||
record.AttachmentNames = System.Text.Json.JsonSerializer.Serialize(names);
|
||||
}
|
||||
var messageId = await conn.ExecuteScalarAsync<long>(@"
|
||||
INSERT INTO messages (chain_id, role, type, content, tool_name, tool_call_id, is_error, iteration, attachment_count, attachment_names, created_at)
|
||||
VALUES (@ChainId, @Role, @Type, @Content, @ToolName, @ToolCallId, @IsError, @Iteration, @AttachmentCount, @AttachmentNames, @CreatedAt);
|
||||
INSERT INTO messages (chain_id, role, type, content, tool_name, tool_call_id, is_error, iteration, attachment_count, attachment_names, tag, created_at)
|
||||
VALUES (@ChainId, @Role, @Type, @Content, @ToolName, @ToolCallId, @IsError, @Iteration, @AttachmentCount, @AttachmentNames, @Tag, @CreatedAt);
|
||||
SELECT last_insert_rowid();
|
||||
", record, tx);
|
||||
|
||||
|
||||
Reference in new issue
Block a user