package main import ( "fmt" "os" "os/exec" "runtime" "charm.land/bubbletea/v2" "u-tabs/internal" ) func main() { // --fix-titles: 清理缓存中的低质量 AI 摘要(Claude 困惑回复/噪音/过短), // 下次启动会重新扫描并重新生成。一次性数据维护命令,不进入 TUI。 if len(os.Args) > 1 && os.Args[1] == "--fix-titles" { n := internal.CleanupBadTitles() fmt.Printf("已清理 %d 个低质量摘要,重启 u-tabs 后将自动重新生成\n", n) return } // --regen-summaries: 立即并发生成所有缺失的 AI 摘要(AISummary 为空的会话)。 // 通常在 --fix-titles 之后运行,把清理掉的标题重新解析回来。不进入 TUI。 if len(os.Args) > 1 && os.Args[1] == "--regen-summaries" { ok, fail := internal.RegenerateSummaries(4) fmt.Printf("摘要重新生成完成: 成功 %d, 降级 %d\n", ok, fail) return } internal.InitData() m := internal.NewModel() p := tea.NewProgram(m, tea.WithFPS(0)) if _, err := p.Run(); err != nil { fmt.Fprintf(os.Stderr, "启动失败: %v\n", err) os.Exit(1) } // 非 Windows: 退出后执行待运行的命令 if runtime.GOOS == "windows" { return } cmd := m.GetPendingCmd() if cmd == "" { return } sh := exec.Command("bash", "-c", cmd) sh.Stdin = os.Stdin sh.Stdout = os.Stdout sh.Stderr = os.Stderr sh.Run() }