oclaw/openclaw/apps/macos/Sources/OpenClaw/MicRefreshSupport.swift
oliver dbbe3add6a 重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。

Made-with: Cursor
2026-04-26 08:34:33 +08:00

46 lines
1.3 KiB
Swift

import Foundation
import SwiftUI
enum MicRefreshSupport {
private static let refreshDelayNs: UInt64 = 300_000_000
static func startObserver(_ observer: AudioInputDeviceObserver, triggerRefresh: @escaping @MainActor () -> Void) {
observer.start {
Task { @MainActor in
triggerRefresh()
}
}
}
@MainActor
static func schedule(
refreshTask: inout Task<Void, Never>?,
action: @escaping @MainActor () async -> Void)
{
refreshTask?.cancel()
refreshTask = Task { @MainActor in
try? await Task.sleep(nanoseconds: self.refreshDelayNs)
guard !Task.isCancelled else { return }
await action()
}
}
static func selectedMicName<T>(
selectedID: String,
in devices: [T],
uid: KeyPath<T, String>,
name: KeyPath<T, String>) -> String
{
guard !selectedID.isEmpty else { return "" }
return devices.first(where: { $0[keyPath: uid] == selectedID })?[keyPath: name] ?? ""
}
@MainActor
static func voiceWakeBinding(for state: AppState) -> Binding<Bool> {
Binding(
get: { state.swabbleEnabled },
set: { newValue in
Task { await state.setVoiceWakeEnabled(newValue) }
})
}
}