背景
最近在研究 Hermes Agent。想用它搭配 deepseek-v4-flash/deepseek-v4-pro 模型,纯对话驱动实现一个 macOS 工具集。老实说,几天前开始动手,只靠模型写代码,没有手写任何一行 Swift。
模型总花费 RMB,耗费 天。不过,
使用者痛点
-
Swift 不熟悉:很多人对 Swift 语法不熟悉。难以快速定位错误,
-
上下文污染:多轮对话后模型的上下文会被大量无关信息填充,导致生成结果失真。
-
内存泄漏与性能卡顿:某些功能出现内存增长或实时卡顿,需要手动调试。
-
工具调用受限:部分本地模型不支持工具调用,导致无法直接读取文件或执行程序命令。
-
配置管理困难:需要统一管理 AI 接口、快捷键、语言等配置,但 YAML 或 JSON 文件的维护成本高。
说到准备。先写大纲再让模型生成计划
最简单的一步,你需要编写一个大纲。对于简单应用可以略显简略,但基本功能和必要要求必须列明;不过,对于大型商用应用,则需细述底层协议、API 请求等细节。
以便模型封装 API 请求工具。
大纲计划,你可微调确认后得到一个可运行的框架。
示例大纲
-
A. 性能与可
性:- 小巧、CPU/内存使用低;- 高可用、可
- 除必要 view 外不做页面程序;- 所有配置以 YAML 提供;- 类似鼠须管输入法以快捷键触发为主;- 菜单栏/ Dock 可配置关闭和重载;- 配置文件放在
~/.config//
-
B. AI 配置:- 全局 AI 配置保留 OpenAI 兼容格式,可
接口;- 用于翻译、提示词等功能。
-
C. 剪切板管理:- 可排除敏感应用;- 存储无限制,可设保留天数;- 快捷键弹出粘贴面板,- 支持文本/文件/文件夹复制;- ESC 关闭面板,怎么说呢,
-
D. 翻译功能:- 支持两种语言及快捷键弹出翻译窗口;
说起来,- 自动检测源语言并根据规则翻译到目标语言;- 支持 OCR 翻译:调用 macOS Vision + AI 接口。按理说,
-
E. 拖拽暂存:- 类似 Yoink 的自动暂存机制。
-
F. RSS 订阅:- Headless。无界面仅提供外部接口支持订阅/更新/已读标记,用于 Hermes Agent / AI 筛选过滤信息。
-
G. 自定义
:- 快捷键调用脚本或 AI 接口;轻量后台服务支持定时/事件运行等。
模型生成的计划书摘录
-
*Goal*: 建立菜单栏常驻 macOS 桌面工具集:剪切板管理、翻译、拖拽暂存、RSS订阅,并预留 AI 自定义
架构。
-
*Architecture*: 单一菜单栏进程 + 模块化插件架构。主进程负责菜单栏、快捷键、配置加载,各功能以独立模块实现。通过
#AppModule# 协议挂接。不做主窗口,功能面板以 NSPanel 呈现。
-
*Tech Stack*: Swift + AppKit。GRDB.swift,Yams,SPM 包管理,macOS 原生框架。
目录与基础架构搭建
再看阶段1,项目骨架与基础结构搭建
Task :创建 SPM 项目骨架
-
Create这方面,`Package.swift` – 包含 GRDB 等依赖
-
Create的观点是,`Sources/App/main.swift` – 程序入口
Create这方面,`Sources/App/AppDelegate.swift` – 主窗口代理
Create的观点是,`Sources/Core/ConfigManager.swift` – YAML 配置加载
Create的观点是。`Sources/Core/ConfigTypes.swift` – 配置类型定义
Create这方面,`Sources/Core/HotkeyManager.swift` – 全局快捷键注册
再看Create,`Sources/Core/MenuBarManager.swift` – 菜单栏控制
Create这方面,`Sources/Core/Database.swift` – SQLite 层封装
Directory structure:
mkdir -p Sources/{App,Core,Clipboard,Translation,Stage,RSS}
mkdir -p Resources
Step : Package.swift…**验证建立 + Commit**
---
Task :实现 ConfigManager 与 PromptManager
-
至于Create,`ConfigTypes.swift` – 完整配置类型。包括 AI prompt 与语言列表
至于Create,`ConfigManager.swift` – 从 `<~/.config/utility/config.yaml>` 读取并热重载
从Create来看,`PromptManager.swift` – 管理提示词程序
Create default-config.yaml…**验证建立**
---
功能实现细节 & 调优流程
剪切板管理模块
-
> ClipboardWatcher :. 每隔 .03s 轮询 粘贴板内容,并使用 SQLite 存储 → 消除 “重复读取同一内容” 问题。> 快速粘贴面板 :. 使用 NSPanel 展示最近 N 条粘贴记录,并支持 ESC 、回车 粘贴等交互。> 内存泄漏排查技巧 :. 使用 Instruments → Time Profiler → 查看“Allocations”标签找到“leaked objects”。
翻译 & OCR 模块
-
> Translator :. 支持自定义提示词,对源文本进行前处理后调用 OpenAI API 翻译 → 输出仅翻译结果。> 翻译面板 UI :. 两部分布局。上方输入,下方只读显示翻译结果。右侧选择框可动态切换语种。> OCR 区域截图 :. 利用 macOS Vision 捕获屏幕区域图像 → 提取文字 → 调用 Translator。怎么说呢,