fix: summarize memory failed (#1731)

This commit is contained in:
yetone
2025-03-26 21:21:27 +08:00
committed by GitHub
parent b41556ee21
commit 31f9519912

View File

@@ -43,7 +43,7 @@ function M.summarize_chat_thread_title(content, cb)
end,
on_stop = function(stop_opts)
if stop_opts.error ~= nil then
Utils.error(string.format("summarize failed: %s", vim.inspect(stop_opts.error)))
Utils.error(string.format("summarize chat thread title failed: %s", vim.inspect(stop_opts.error)))
return
end
if stop_opts.reason == "complete" then
@@ -58,6 +58,30 @@ function M.summarize_chat_thread_title(content, cb)
})
end
---@param messages AvanteLLMMessage[]
---@return AvanteLLMMessage[]
local function filter_out_tool_use_messages(messages)
local filtered_messages = {}
for _, message in ipairs(messages) do
local content = message.content
if type(content) == "table" then
local new_content = {}
for _, item in ipairs(content) do
if item.type == "tool_use" or item.type == "tool_result" then goto continue end
table.insert(new_content, item)
::continue::
end
content = new_content
end
if type(content) == "table" then
if #content > 0 then table.insert(filtered_messages, { role = message.role, content = content }) end
else
table.insert(filtered_messages, { role = message.role, content = content })
end
end
return filtered_messages
end
---@param bufnr integer
---@param history avante.ChatHistory
---@param entries? avante.ChatHistoryEntry[]
@@ -80,6 +104,7 @@ function M.summarize_memory(bufnr, history, entries, cb)
return
end
local history_messages = Utils.history.entries_to_llm_messages(entries)
history_messages = filter_out_tool_use_messages(history_messages)
history_messages = vim.list_slice(history_messages, 1, 4)
if #history_messages == 0 then
cb(history.memory)
@@ -109,7 +134,7 @@ function M.summarize_memory(bufnr, history, entries, cb)
end,
on_stop = function(stop_opts)
if stop_opts.error ~= nil then
Utils.error(string.format("summarize failed: %s", vim.inspect(stop_opts.error)))
Utils.error(string.format("summarize memory failed: %s", vim.inspect(stop_opts.error)))
return
end
if stop_opts.reason == "complete" then