feat: 添加工具执行时长字段到消息存储,增强消息记录功能
This commit is contained in:
parent
5f2bc950b1
commit
590ea9abb0
@ -572,8 +572,8 @@ impl SessionStore {
|
|||||||
"
|
"
|
||||||
INSERT INTO messages (
|
INSERT INTO messages (
|
||||||
id, session_id, topic_id, seq, role, content,
|
id, session_id, topic_id, seq, role, content,
|
||||||
system_context, reasoning_content, media_refs_json, tool_call_id, tool_name, tool_calls_json, created_at
|
system_context, reasoning_content, media_refs_json, tool_call_id, tool_name, tool_calls_json, tool_duration_ms, created_at
|
||||||
) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)
|
) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)
|
||||||
",
|
",
|
||||||
params![
|
params![
|
||||||
message.id,
|
message.id,
|
||||||
@ -588,6 +588,7 @@ impl SessionStore {
|
|||||||
message.tool_call_id,
|
message.tool_call_id,
|
||||||
message.tool_name,
|
message.tool_name,
|
||||||
tool_calls_json,
|
tool_calls_json,
|
||||||
|
message.tool_duration_ms.map(|v| v as i64),
|
||||||
message.timestamp,
|
message.timestamp,
|
||||||
],
|
],
|
||||||
)?;
|
)?;
|
||||||
@ -649,8 +650,8 @@ impl SessionStore {
|
|||||||
INSERT INTO messages (
|
INSERT INTO messages (
|
||||||
id, session_id, topic_id, seq, role, content,
|
id, session_id, topic_id, seq, role, content,
|
||||||
system_context, reasoning_content, media_refs_json,
|
system_context, reasoning_content, media_refs_json,
|
||||||
tool_call_id, tool_name, tool_calls_json, created_at
|
tool_call_id, tool_name, tool_calls_json, tool_duration_ms, created_at
|
||||||
) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)
|
) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)
|
||||||
",
|
",
|
||||||
params![
|
params![
|
||||||
message.id,
|
message.id,
|
||||||
@ -665,6 +666,7 @@ impl SessionStore {
|
|||||||
message.tool_call_id,
|
message.tool_call_id,
|
||||||
message.tool_name,
|
message.tool_name,
|
||||||
tool_calls_json,
|
tool_calls_json,
|
||||||
|
message.tool_duration_ms.map(|v| v as i64),
|
||||||
message.timestamp,
|
message.timestamp,
|
||||||
],
|
],
|
||||||
)?;
|
)?;
|
||||||
@ -1455,7 +1457,7 @@ impl SessionStore {
|
|||||||
tool_call_id: row.get(7)?,
|
tool_call_id: row.get(7)?,
|
||||||
tool_name: row.get(8)?,
|
tool_name: row.get(8)?,
|
||||||
tool_state: None,
|
tool_state: None,
|
||||||
tool_duration_ms: None,
|
tool_duration_ms: row.get::<_, Option<i64>>(10)?.map(|v| v as u64),
|
||||||
tool_calls,
|
tool_calls,
|
||||||
})
|
})
|
||||||
})?;
|
})?;
|
||||||
@ -1641,6 +1643,13 @@ fn ensure_messages_schema(conn: &Connection) -> Result<(), StorageError> {
|
|||||||
// 这里只添加列,外键约束由应用层保证
|
// 这里只添加列,外键约束由应用层保证
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !has_column(conn, "messages", "tool_duration_ms")? {
|
||||||
|
add_column_if_missing(
|
||||||
|
conn,
|
||||||
|
"ALTER TABLE messages ADD COLUMN tool_duration_ms INTEGER",
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
|
||||||
// 创建 topic_id 索引(如果不存在)
|
// 创建 topic_id 索引(如果不存在)
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"CREATE INDEX IF NOT EXISTS idx_messages_topic_seq ON messages(topic_id, seq) WHERE topic_id IS NOT NULL",
|
"CREATE INDEX IF NOT EXISTS idx_messages_topic_seq ON messages(topic_id, seq) WHERE topic_id IS NOT NULL",
|
||||||
@ -1748,8 +1757,8 @@ fn insert_message_with_seq(
|
|||||||
"
|
"
|
||||||
INSERT INTO messages (
|
INSERT INTO messages (
|
||||||
id, session_id, seq, role, content,
|
id, session_id, seq, role, content,
|
||||||
system_context, reasoning_content, media_refs_json, tool_call_id, tool_name, tool_calls_json, created_at
|
system_context, reasoning_content, media_refs_json, tool_call_id, tool_name, tool_calls_json, tool_duration_ms, created_at
|
||||||
) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)
|
) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)
|
||||||
",
|
",
|
||||||
params![
|
params![
|
||||||
message.id,
|
message.id,
|
||||||
@ -1763,6 +1772,7 @@ fn insert_message_with_seq(
|
|||||||
message.tool_call_id,
|
message.tool_call_id,
|
||||||
message.tool_name,
|
message.tool_name,
|
||||||
tool_calls_json,
|
tool_calls_json,
|
||||||
|
message.tool_duration_ms.map(|v| v as i64),
|
||||||
message.timestamp,
|
message.timestamp,
|
||||||
],
|
],
|
||||||
)?;
|
)?;
|
||||||
@ -1794,7 +1804,7 @@ fn load_messages_between(
|
|||||||
) -> Result<Vec<ChatMessage>, StorageError> {
|
) -> Result<Vec<ChatMessage>, StorageError> {
|
||||||
let mut stmt = conn.prepare(
|
let mut stmt = conn.prepare(
|
||||||
"
|
"
|
||||||
SELECT id, role, content, system_context, reasoning_content, media_refs_json, created_at, tool_call_id, tool_name, tool_calls_json
|
SELECT id, role, content, system_context, reasoning_content, media_refs_json, created_at, tool_call_id, tool_name, tool_calls_json, tool_duration_ms
|
||||||
FROM messages
|
FROM messages
|
||||||
WHERE session_id = ?1 AND seq > ?2 AND seq <= ?3
|
WHERE session_id = ?1 AND seq > ?2 AND seq <= ?3
|
||||||
ORDER BY seq ASC
|
ORDER BY seq ASC
|
||||||
@ -1838,7 +1848,7 @@ fn load_messages_between(
|
|||||||
tool_call_id: row.get(7)?,
|
tool_call_id: row.get(7)?,
|
||||||
tool_name: row.get(8)?,
|
tool_name: row.get(8)?,
|
||||||
tool_state: None,
|
tool_state: None,
|
||||||
tool_duration_ms: None,
|
tool_duration_ms: row.get::<_, Option<i64>>(10)?.map(|v| v as u64),
|
||||||
tool_calls,
|
tool_calls,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -1858,7 +1868,7 @@ fn load_messages_after(
|
|||||||
) -> Result<Vec<ChatMessage>, StorageError> {
|
) -> Result<Vec<ChatMessage>, StorageError> {
|
||||||
let mut stmt = conn.prepare(
|
let mut stmt = conn.prepare(
|
||||||
"
|
"
|
||||||
SELECT id, role, content, system_context, reasoning_content, media_refs_json, created_at, tool_call_id, tool_name, tool_calls_json
|
SELECT id, role, content, system_context, reasoning_content, media_refs_json, created_at, tool_call_id, tool_name, tool_calls_json, tool_duration_ms
|
||||||
FROM messages
|
FROM messages
|
||||||
WHERE session_id = ?1 AND seq > ?2
|
WHERE session_id = ?1 AND seq > ?2
|
||||||
ORDER BY seq ASC
|
ORDER BY seq ASC
|
||||||
@ -1899,7 +1909,7 @@ fn load_messages_after(
|
|||||||
tool_call_id: row.get(7)?,
|
tool_call_id: row.get(7)?,
|
||||||
tool_name: row.get(8)?,
|
tool_name: row.get(8)?,
|
||||||
tool_state: None,
|
tool_state: None,
|
||||||
tool_duration_ms: None,
|
tool_duration_ms: row.get::<_, Option<i64>>(10)?.map(|v| v as u64),
|
||||||
tool_calls,
|
tool_calls,
|
||||||
})
|
})
|
||||||
})?;
|
})?;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user