基于 SwiftUI、OpenClaw Gateway wrapper 和可配置 Agent 运行时的 macOS 原生助手。
当前仓库已经不再是最早期的“菜单栏壳 + Python 后端”原型,而是一套以本地 Mac App 为主、可动态接入 Kimi CLI / 远端 LLM / 内置原生 Skill / OpenClaw Skills 的多 Agent 框架。README 以当前实现为准。
- 原生 macOS 聊天窗口和菜单栏入口,支持截图询问、剪贴板询问、日志查看。
- 多 Agent 管理和能力路由,支持按能力选择文本、代码、视觉、长文档等模型。
- Agent 角色分工:支持
主会话、Planner、子任务 Worker、回退池、仅手动。 - 统一
Planner / Dispatcher / Result Collector / Self-heal链路,支持主会话、独立 side task 和部分并行子任务。 - 运行时同步可用 Agent 到本地 OpenClaw Gateway wrapper,统一走会话、流式事件和历史恢复。
- provider 接入:
Kimi CLI、DeepSeek、Doubao、Zhipu、OpenAI、Anthropic、Google、Moonshot。 Planner Console:支持规则优先、Planner Agent 接管、影子对比、最近 diff 观察。- 自愈链路:鉴权失败检测、坏 Agent 临时下线、降级到其他可用 Agent、无 Agent 时自动拉起配置向导。
Kimi CLI登录失效检测,可引导执行kimi login恢复认证。OpenClaw Doctor:在主界面展示 Claw 运行状态,支持诊断、自动修复、重装和打开运行目录/日志。- 内置
Mac 操作 Agent,用 macOS 原生接口直接处理应用枚举、启动、退出、状态检查,避免 LLM 幻觉式“成功回执”。 - 内置 Skill 系统、Agent 创建流和
Skill 迭代顾问,能基于使用情况提出优化提案并等待用户确认。 ClawHub Marketplace:支持登录、搜索、安装、卸载、更新外部 OpenClaw Skills。- 富文本聊天渲染,支持标题、列表、引用、代码块和 Markdown 表格的结构化显示。
主链路现在是:
SwiftUI Mac App
├─ ChatView / MessageBubble / RichTextView
├─ CommandRunner
├─ RequestPlanner
├─ AgentStore / AgentOrchestrator
├─ ResultCollector
├─ MacSystemAgent / WebContextAgent / WebSearchService
└─ OpenClawGatewayClient
│
▼
OpenClawGatewayRuntimeManager
├─ 根据当前可用 Agent 生成 wrapper 配置
├─ 启动本地 gateway(默认 ws://127.0.0.1:18889)
├─ 管理本地 OpenClaw runtime / skills / logs
└─ 将 CLI / 远端 provider 统一成可路由模型
│
▼
Kimi CLI / DeepSeek / Doubao / Zhipu / OpenAI / Anthropic / Google / Moonshot
当前调度逻辑不是“所有请求都直接进一个 LLM”,而是固定阶段的模块链:
RequestEnvelope
-> Planner
-> Dispatcher
-> Main Session / Side Session / Parallel Subtasks
-> Result Collector
-> Memory / Trace / Self-heal
其中:
Planner负责判定这次请求是主对话、配置向导、系统操作、URL 研究、Skill 建议还是 side task。Dispatcher负责决定是走主会话、独立子任务,还是并行子任务。Result Collector负责把并行抓取或 side task 的结果补回主会话。Self-heal负责 Agent 回退、Kimi 登录恢复、OpenClaw 诊断与重装。
辅助链路仍然保留:
backend/:FastAPI 本地服务,端口默认8765,适合独立调试、打包或保留旧接口兼容。daemon/:launchd管理脚本,用来安装/管理 Python backend。openclaw-core/:本地 OpenClaw 源码与OpenClawKitpackage,Xcode 工程直接引用其本地 package。
mac-app/MacAssistant/MacAssistant/MacAssistantApp.swift:应用入口、菜单栏、主窗口、日志窗口。mac-app/MacAssistant/MacAssistant/Services/CommandRunner.swift:主对话编排器,负责 planner 决策执行、主会话、side task、自愈和 trace。mac-app/MacAssistant/MacAssistant/Services/RequestPlanner.swift:统一请求规划器,负责判定请求类型和执行模式。mac-app/MacAssistant/MacAssistant/Services/IntentAgentShadowPlannerProvider.swift:独立 Planner Agent 的影子判定接口。mac-app/MacAssistant/MacAssistant/Services/AgentStore.swift:Agent 持久化、可用性检测、认证验证、角色分配、OpenClaw 配置同步。mac-app/MacAssistant/MacAssistant/Services/AgentOrchestrator.swift:能力路由和当前 Agent 协同。mac-app/MacAssistant/MacAssistant/Services/OpenClawGatewayRuntimeManager.swift:本地 gateway wrapper 生命周期和运行时配置生成。mac-app/MacAssistant/MacAssistant/Services/OpenClawGatewayClient.swift:发送消息、消费流式事件、history 恢复和异常收敛。mac-app/MacAssistant/MacAssistant/Services/MacSystemAgent.swift:原生 macOS 应用操作代理。mac-app/MacAssistant/MacAssistant/Services/ResultCollector.swift:side task / 并行子任务结果回收和补写。mac-app/MacAssistant/MacAssistant/Services/DependencyManager.swift+OpenClawDoctor.swift:OpenClaw runtime 检测、安装、修复、重装。mac-app/MacAssistant/MacAssistant/Services/SkillEvolutionAdvisor.swift:根据 Skill 使用数据提出演进建议。
mac-assistant/
├── mac-app/
│ ├── MacAssistant/
│ │ ├── MacAssistant.xcodeproj
│ │ ├── Package.swift
│ │ └── MacAssistant/
│ │ ├── AutoAgent/
│ │ ├── Distillation/
│ │ ├── Models/
│ │ ├── Services/
│ │ ├── Skills/
│ │ ├── Storage/
│ │ ├── Utils/
│ │ └── Views/
│ ├── restart.sh
│ └── test_logs.sh
├── backend/
│ ├── main.py
│ ├── kimi_provider.py
│ ├── requirements.txt
│ └── start.sh
├── daemon/
│ ├── com.mac-assistant.backend.plist
│ └── service-manager.sh
├── scripts/
│ ├── setup.sh
│ ├── restart.sh
│ └── diagnose.sh
├── docs/
├── build/
└── openclaw-core/
- macOS 15+
- Xcode 16+(建议 16.4 或更高)
- Python 3.11+(仅在使用
backend/时必需) - 可选:
kimiCLI - 可选:DeepSeek / Doubao / Zhipu / OpenAI / Anthropic / Google / Moonshot 等 provider API Key
当前最低版本仍然是
macOS 15+。
输入组件已经做了兼容双路径准备,但整个工程仍受OpenClawKit / OpenClawChatUI / ElevenLabsKit / Textual这条依赖链限制,暂时不能真正下探到更低系统版本。
git clone https://github.com/superkonka/mac-assistant.git
cd mac-assistant最直接的方式是用 Xcode 打开:
open mac-app/MacAssistant/MacAssistant.xcodeproj也可以直接命令行构建:
xcodebuild \
-project mac-app/MacAssistant/MacAssistant.xcodeproj \
-scheme MacAssistant \
-configuration Debug \
build首次启动如果没有任何可用 Agent,应用会自动进入配置向导。
- 使用
Kimi CLI:- 确保本机有
kimi命令 - 执行
kimi login - 回到应用里测试连接
- 确保本机有
- 使用远端 provider:
- 在向导中选择 provider
- 输入 API Key
- 选择角色:主会话 / Planner / 子任务 / 回退 / 仅手动
- 通过连接测试后创建 Agent
当前推荐的角色分工:
主会话 Agent:负责与你直接对话,例如Kimi CLI或稳定文本模型。Planner Agent:负责意图分析和链路规划,适合便宜、快、结构化输出稳定的模型。子任务 Worker:负责 URL 研究、视觉、文档抓取、side task。回退 Agent:负责主 Agent 失败后的兜底。仅手动:不参与自动路由,只在你显式选中或显式调用时使用。
如果你需要保留本地 FastAPI 服务:
./scripts/setup.sh
cd daemon
./service-manager.sh install单独调试时也可以:
cd backend
./start.sh健康检查:
curl http://127.0.0.1:8765/health当前已经实现的自愈能力:
- 鉴权失败会被识别为
401/403,而不是当成普通文本错误继续传播。 - 失效的远端 Agent 会被临时移出可用列表,避免反复命中同一条坏配置。
- 如果还有其他可用 Agent,会自动改用其他 Agent 继续完成请求。
- 如果一个可用 Agent 都没有,会直接引导进入 Agent 配置向导。
Kimi CLI登录失效时,会提示并可引导执行kimi login。- OpenClaw runtime 会优先使用应用自管版本,并支持诊断、自动修复、重装和日志查看。
- 对应用启动类操作,系统会验证进程和端口状态,不会在实际失败时谎报成功。
- 中断任务支持本地 journal + history 回捞,部分链路支持“继续处理”。
当前还没有做的事:
- 无法自动修复第三方 API Key 本身。
- 某些依赖系统权限或第三方 App 内部状态的动作,仍然需要用户手动授权或确认。
- Planner Agent 目前仍建议先在 shadow mode 下观察 diff,再决定是否正式接管主意图分析。
在 Skills > 设置 里可以看到当前链路模块:
PlannerDispatcherLink ResearchResult CollectorLocal System GuardFallback / Self-heal
当前支持的 Planner 方式:
规则优先Planner Agent 接管影子对比
影子模式下,系统会额外跑一条 Planner Agent 判定,但不接管主流程,只记录 MATCH / DIFF 供后续调整。
- 内置 Skills:系统、文件、网页、Futu、Git 等。
ClawHub Marketplace:可登录、搜索、安装、卸载、更新外部 OpenClaw Skills。- 安装目标默认是 OpenClaw wrapper 的
workspace/skills,安装后会自动刷新 runtime。
xcodebuild \
-project mac-app/MacAssistant/MacAssistant.xcodeproj \
-scheme MacAssistant \
-configuration Debug \
-quiet buildpkill -f "/MacAssistant.app/Contents/MacOS/MacAssistant"
open ~/Library/Developer/Xcode/DerivedData/MacAssistant-*/Build/Products/Debug/MacAssistant.appcd daemon
./service-manager.sh status
./service-manager.sh logs
./service-manager.sh restart- App 运行日志:
~/Documents/MacAssistant/Logs/mac-assistant-current.log - 对话事件日志:
~/Documents/MacAssistant/ConversationLogs - Backend 日志:
~/code/mac-assistant/daemon/backend.log
应用内也提供:
- 菜单栏
查看日志 - 菜单栏
打开日志目录
/system:系统信息/file:文件与目录/app:macOS 应用操作/web:网页搜索与打开/git:Git 状态和日志/futu:FutuOpenD 启停和状态检查Mac 操作 Agent:在高置信度场景下优先于 LLM 执行Skill 迭代顾问:对运行时 Skill 提出改进建议并等待确认Planner Console:查看意图分析、调度和影子判定状态Claw Doctor:查看和修复 OpenClaw 运行时状态
- Xcode 工程依赖仓库内的本地
openclaw-core/apps/shared/OpenClawKitpackage,不要随意改动目录结构。 Kimi CLI不是永久登录态,过期后需要重新执行kimi login。- 当前主链路已经开始使用统一
Planner -> Dispatcher -> Collector骨架,但仍在持续收敛,部分历史分支逻辑尚未完全移除。 - 当前 README 已同步到最新实现,但
docs/里仍有部分历史设计文档,阅读时请以代码和本 README 为准。
MIT