From 8b6f898d3b265a1a462a0c2b5966d786cfc8f066 Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Fri, 1 May 2026 01:22:00 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=A7=BB=E9=99=A4=20Reminder=20?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=E8=B0=83=E7=94=A8=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E7=95=99=E6=97=A5=E5=BF=97=E5=9F=BA=E7=A1=80=E8=AE=BE?= =?UTF-8?q?=E6=96=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 applicationDidFinishLaunching 中的诊断日志 - 移除 startReminderTimer/checkReminders/triggerReminder 中的 reminderLog 调用 - 保留 logDir/reminderLog 方法定义和 agentLog 路径修复,供后续排查使用 --- Sources/App/AppDelegate.swift | 41 ++++------------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/Sources/App/AppDelegate.swift b/Sources/App/AppDelegate.swift index 03e8398..99d71ec 100644 --- a/Sources/App/AppDelegate.swift +++ b/Sources/App/AppDelegate.swift @@ -44,18 +44,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel func applicationDidFinishLaunching(_ notification: Notification) { NSApp.setActivationPolicy(.accessory) - - // 启动诊断日志 - reminderLog("======== VoiceInput 启动 ========") - reminderLog("bundlePath: \(Bundle.main.bundlePath)") - reminderLog("resourcePath: \(Bundle.main.resourcePath ?? "nil")") - reminderLog("agentDir: \(Config.shared.agentDir)") - reminderLog("memoryPath: \(Config.shared.memoryPath)") - reminderLog("memoryExists: \(FileManager.default.fileExists(atPath: Config.shared.memoryPath))") - reminderLog("logDir: \(logDir)") - reminderLog("agentModelsPath: \(Config.shared.userAgentModelsPath)") - reminderLog("agentModelsExists: \(FileManager.default.fileExists(atPath: Config.shared.userAgentModelsPath))") - startReminderTimer() beginPermissionFlow() print("[App] Ready") @@ -579,13 +567,11 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel // MARK: - Reminders private func startReminderTimer() { - reminderLog("startReminderTimer() 启动定时器,间隔30秒") reminderTimer = Timer.scheduledTimer(withTimeInterval: 30, repeats: true) { [weak self] _ in self?.checkReminders() } // 启动后延迟 3 秒首次检查(等 bridge 就绪) DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in - self?.reminderLog("首次延迟检查 (3秒后)") self?.checkReminders() } } @@ -618,7 +604,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel private func checkReminders() { let memories = loadMemories() let now = Date() - reminderLog("checkReminders() 开始: 共\(memories.count)条记忆, now=\(now)") let isoFormatter = ISO8601DateFormatter() isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] @@ -641,9 +626,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel let reminded = (mem["reminded"] as? Bool) ?? false if remindAt == nil { - let msg = "⚠️ 无法解析 remind_at: \(remindAtStr)" - print("[Reminder] \(msg)") - reminderLog("checkReminders \(msg)") + print("[Reminder] ⚠️ 无法解析 remind_at: \(remindAtStr)") continue } if remindAt! > now { @@ -668,9 +651,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel let timeStr = df.string(from: now) let reminderMsg = "[系统提醒] 现在是 \(timeStr),请提醒用户:\(content)" - let msg = "✅ 触发提醒 id=\(memoryId)" - print("[Reminder] \(msg)") - reminderLog("checkReminders \(msg)") + print("[Reminder] ✅ 触发提醒 id=\(memoryId)") triggerReminder(message: reminderMsg, memoryId: memoryId) } if !foundDue && !memories.isEmpty { @@ -680,19 +661,14 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel private func triggerReminder(message: String, memoryId: String) { print("[Reminder] triggerReminder 开始 id=\(memoryId)") - reminderLog("triggerReminder() 开始 id=\(memoryId) message=\(message.prefix(100))") DispatchQueue.main.async { [weak self] in - guard let self = self else { - return - } + guard let self = self else { return } let isNotchVisible = self.agentNotch?.windowController?.window?.isVisible ?? false print("[Reminder] 主线程 isNotchVisible=\(isNotchVisible) agentActive=\(self.agentActive)") - self.reminderLog("triggerReminder 主线程 isNotchVisible=\(isNotchVisible) agentActive=\(self.agentActive)") // 销毁旧弹窗(如果存在) if self.agentNotch != nil { - self.reminderLog("triggerReminder 销毁旧弹窗") self.agentNotch?.hide() self.agentNotch = nil } @@ -707,15 +683,12 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel if !isNotchVisible { // 弹窗不可见 → 弹出弹窗 print("[Reminder] 弹窗不可见,弹出") - self.reminderLog("triggerReminder 弹出弹窗") self.showAgentNotchInternal(isTextInput: false) print("[Reminder] showAgentNotchInternal 完成") - self.reminderLog("triggerReminder showAgentNotchInternal 完成") } if !self.agentActive { // 需要启动 bridge - self.reminderLog("triggerReminder agentActive=false,即将启动 bridge") self.agentBridge.onEvent = { [weak self] event in DispatchQueue.main.async { self?.handleAgentEvent(event) } } @@ -726,27 +699,21 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel } } guard self.agentBridge.start() else { - let errMsg = "❌ agentBridge.start 失败" - print("[Reminder] \(errMsg)") - self.reminderLog("triggerReminder \(errMsg)") + print("[Reminder] ❌ agentBridge.start 失败") self.agentTracker.fail("无法启动智能体进程") return } print("[Reminder] bridge 已启动") - self.reminderLog("triggerReminder bridge 启动成功") self.agentActive = true self.agentBridge.send(message: message, workspace: Config.shared.agentWorkspace, allowMode: Config.shared.agentAllowMode, modelKey: nil) - self.reminderLog("triggerReminder 消息已发送到 bridge") } else { print("[Reminder] bridge 已在运行,追加消息") - self.reminderLog("triggerReminder bridge 已在运行,追加消息") self.agentBridge.sendContinue(message: message) } print("[Reminder] 消息已发送") DispatchQueue.main.asyncAfter(deadline: .now() + 1) { self.markMemoryReminded(memoryId) - self.reminderLog("triggerReminder 标记 memoryId=\(memoryId) 已提醒") } } }