v0.1.0-alpha 公开 alpha

任意 App、任意输入框, 一个快捷键润色当前文本。

macOS 原生菜单栏 AI 文本润色工具。在任意输入框按一下全局快捷键,Kerf 会读取当前文本,发给你选的 LLM 润色,再一次性替换回原位置。不切 App,不复制粘贴。

.dmg 2.9 MB Universal · macOS 13+
  • macOS 13+
  • arch universal (arm64 + x86_64)
  • size 9.8 MB · 2.9 MB DMG
  • license MIT
  • tests 55 / 55
微信 — 输入框
改之前

哦今天会议改到三点

其他人都OK了

微信 — 输入框
改之后

今天会议改到三点,其他人都已确认。

2 秒。在原位置完成。同一个输入框,不切 App。

按真实工具的标准做的,不是玩具。

F.01

三个快捷键,三种模式

K 静默润色 J 选场景 L 自定义指令
F.02

七个打磨过的场景

每个场景约 30 行 OpenLess 风格指令 —— 角色、强度、风格、worked example、反例都有。

  • 日常润色
  • 翻译为英文
  • 语气软化
  • 简洁化
  • 正式表达
  • 学术化
  • 代码注释
F.03

任意 OpenAI 兼容 provider

  • OpenAI
  • DeepSeek
  • Anthropic 经代理
  • Ark / 火山方舟
  • OpenRouter
  • Ollama
  • LM Studio
  • vLLM

改 Base URL + Model 即可。

F.04

结构上的隐私

  • API key 进 Keychain,不会以明文形式落盘
  • 零遥测、零数据采集、不联网 home-call
  • 默认下发 disable-thinking 三件套 —— 你的 token 不为你不想要的推理付费
F.05

HID 层防伪造快捷键

某些 IME(搜狗、百度)会用 CGEventPost 注入修饰键被伪造的合成事件,产生幻象触发。Kerf 读 HID 系统真实状态 —— 合成事件触及不到那一层。

CGEventSource.flagsState(.hidSystemState)
F.06

Sparkle + EdDSA 自动更新

ad-hoc 签名的 app,但更新本身是 EdDSA 端到端签名。独立开发者也能发受信任的更新,不用 $99/年的 Apple Developer 证书。

七个阶段,每一个都在源码里有详细注释。

  1. 01

    HID 层修饰键校验

    通过 CGEventSource.flagsState(.hidSystemState) 验证 ⌃⌥⇧ 是否真的物理按下。session 级注入的合成事件触及不到 HID 系统 —— 在这一关就被丢掉。

    KerfCore/Hotkey/HardwareModifierTracker.swift
  2. 02

    读取 tier

    Tier 1:AX kAXSelectedTextAttribute,非侵入式。Tier 2:Cmd+A + Cmd+C 带 UUID sentinel 兜底 + 剪贴板恢复状态机。终端类 App 只走 Tier 1,避免把整屏 scrollback 都抓走。

    KerfCore/Selection/TextReader.swift
  3. 03

    构造 prompt

    System:70 行 OpenLess 风格骨架。User:场景指令 + 真实文本包在 标签里,防止模型把场景示例输出 echo 回来当答案。

    KerfServices/Prompt/PromptBuilder.swift
  4. 04

    POST /chat/completions

    带三家厂商的 disable-thinking 字段下发,让推理模型不要在短文本上烧 token。

    reasoning_effort  : "low"
    enable_thinking   : false
    thinking          : { type: "disabled" }
  5. 05

    CorrectionEngine

    模型返回后应用用户自定义的字面 + {num} 通配替换。从 OpenLess correction.rs 移植。

    KerfServices/Correction/CorrectionEngine.swift
  6. 06

    写回

    Cmd+V(保留选区)或 Cmd+A → Cmd+V(替换整个字段),取决于哪个读取 tier 成功。剪贴板还原走 latest-id + 内容匹配双 guard,快速连按不会污染剪贴板。

    KerfCore/Insertion/TextWriter.swift
  7. 07

    持久化到历史

    追加到 ~/Library/Application Support/com.kerf.app/history.json(500 条上限,原子写入)。从 Settings → 历史 浏览。

    KerfData/Storage/HistoryStore.swift

它真实会被用来做这些事。

场景 快捷键
微信里随手发的消息修一下错别字和语法 K
把中文草稿翻译成自然英文再发邮件 J → 翻译为英文
在 GitHub 上把生气的 PR 评论改委婉 J → 语气软化
长 Slack 帖压缩成一段话 J → 简洁化
VS Code 里润色代码注释,识别 JSDoc 风格 J → 代码注释
一次性的临时指令("翻译成日语"、"再正式一些") L

三步。不到一分钟。

  1. 01

    下载 DMG

    从 GitHub Releases 拉最新 .dmg。Universal 二进制,约 2.9 MB。

    github.com/aweadadw10/Kerf/releases/latest →
  2. 02

    拖进 Applications + 去掉 quarantine

    Kerf 是 ad-hoc 签名(不花 $99 买 Apple cert)。去掉 quarantine 属性,Gatekeeper 才放它启动:

    $ xattr -cr /Applications/Kerf.app
  3. 03

    启动 + 配置

    三步设置向导带你完成辅助功能授权和 AI provider 配置。授权辅助功能后完全退出 Kerf 再重新打开 —— macOS 不会把 AX 权限应用到正在运行的进程上。

下载 v0.1.0-alpha

.dmg 2.9 MB Universal · macOS 13+