修复: AI 摘要无限重试循环导致 CPU 35%,限制每次最多生成 20 个摘要
This commit is contained in:
@@ -736,28 +736,40 @@ func recordFork(targetID, sourceID string) {
|
||||
// --- AI 摘要与收藏操作 ---
|
||||
|
||||
func (m *Model) applySummary(sessionID, summary string, completed, pending []string) {
|
||||
if summary == "" {
|
||||
return
|
||||
}
|
||||
for _, pd := range m.history.Projects {
|
||||
for _, s := range pd.Sessions {
|
||||
if s.ID == sessionID {
|
||||
s.AISummary = summary
|
||||
s.Completed = completed
|
||||
s.Pending = pending
|
||||
updateSummaryInCache(m.history.Cache, sessionID, summary, completed, pending)
|
||||
if summary == "" {
|
||||
// 标记为已尝试,防止 nextSummaryCmd 无限重试
|
||||
// 用 FirstMsg 作为兜底显示,避免显示空白
|
||||
s.AISummary = s.FirstMsg
|
||||
if s.AISummary == "" {
|
||||
s.AISummary = s.ID[:8]
|
||||
}
|
||||
} else {
|
||||
s.AISummary = summary
|
||||
s.Completed = completed
|
||||
s.Pending = pending
|
||||
}
|
||||
updateSummaryInCache(m.history.Cache, sessionID, s.AISummary, s.Completed, s.Pending)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const maxSummaryPerSession = 20 // 每次启动最多生成 N 个摘要
|
||||
|
||||
func (m *Model) nextSummaryCmd() tea.Cmd {
|
||||
if m.summaryCount >= maxSummaryPerSession {
|
||||
return nil
|
||||
}
|
||||
for _, pd := range m.history.Projects {
|
||||
for _, s := range pd.Sessions {
|
||||
needSummary := s.AISummary == "" && s.FirstMsg != ""
|
||||
needDetail := s.AISummary != "" && len(s.Completed) == 0 && len(s.Pending) == 0
|
||||
if (needSummary || needDetail) && s.FilePath != "" {
|
||||
m.summaryCount++
|
||||
return generateSummaryCmd(s.FilePath, s.ID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user