Asia/Shanghai
ProjectsJuly 22, 2026

Slash Saver

image
中文输入者经常在日常聊天、英文检索、代码输入和 vibe coding 之间切换。斜杠恰好是这些场景的边界动作:输入路径、命令、Markdown、代码或 Agent 指令时,/ 可能变成中文顿号 ;也可能斜杠已经出现,后面的英文仍被当成拼音。调用 command 或 skill 后按回车,还可能先提交多余的输入法组合文本,直接影响命中。 这个问题的关键不是如何预测用户下一秒要用哪种语言,而是识别一个足够明确的意图信号。按下物理斜杠,通常意味着接下来进入 ASCII 语境。它比当前应用、网站或输入框类型更直接,也不需要用户额外做一次切换判断。 用快捷键先切输入法会打断节奏,重新模拟 / 又可能吞键、重复或改变组合键语义。更常见的输入法切换器按整个应用绑定输入源,但聊天、搜索、编辑器和 Agent 输入框之间频繁换焦点时,这个粒度太粗,不符合日常交替使用的场景。 Slash Saver 把契约收窄到一个物理按键。被动事件监听看到 ANSI 斜杠键后,在回调中同步选择用户配置的 ASCII 输入源,再把原始事件原样放行。已经是目标输入源时不做任何事,也永不自动切回中文。它不试图理解所有输入场景,只用最小改动解决斜杠之后应当进入英文输入的问题。 BetterTouchTool 可以承担临时规则,但为了一个动作常驻整套自动化工具不够克制。Karabiner-Elements 能覆盖更多底层键盘场景,但需要驱动与多个后台组件。Input Source Pro 的核心是按应用和网站自动切换,保留它意味着继续背负与这个规则无关的产品逻辑。 最终实现是一个小型 Swift 与 AppKit 工程。它没有 Dock 图标和菜单栏图标,使用 SMAppService.mainApp 管理登录启动,并在首次运行时从系统当前启用的 ASCII 输入源中选择目标,不硬编码 ABCU.S.
  • 事件 tap 使用 listenOnly,原始按键始终放行。
  • 只匹配物理键码 kVK_ANSI_Slash,并排除 Command、Control、Option 与按键重复。
  • 不记录字符、应用名、文档或输入历史,不联网,也不模拟键盘事件。
  • 斜杠处理路径不激活其他应用,不创建临时窗口,也不改变焦点。
  • App Sandbox 关闭,因为实际测试中,沙盒内的输入源切换可能只更新菜单栏状态,无法更新当前文本客户端。
v1.0.1 提供 arm64 + x86_64 通用构建、SHA-256 校验文件、GitHub Actions 测试和独立产品页。本次版本重新设计了深绿与黄绿色图标,收紧原生设置界面的层级,并把产品叙事从泛化的输入法切换,聚焦到斜杠触发的三种具体摩擦。应用使用 Apple Development 证书签名并启用 hardened runtime,但尚未经过 Apple 公证,因此首次打开可能需要右键应用并选择「打开」。 下载、安装与权限恢复说明见独立产品页

Related projects

deep-grill

deep-grill

让 Agent 先拷问自己的 Agent Skill。自主调查方案每条分支、反驳自己的答案,只把真正主观的分歧一次性汇总给用户确认,确认前不动手实现。
Mingjian AI Services

Mingjian AI Services

A focused collaboration entry for teams moving from AI ideas to working products, Agent systems, and operable business workflows.
opencode-sub2api-haiku-fix

opencode-sub2api-haiku-fix

A focused OpenCode plugin that fixes Claude Haiku extra-usage failures through Sub2API while preserving thinking and leaving Sub2API, OpenCode, and OMO untouched.
opencode-metrics

opencode-metrics

OpenCode TUI 的分会话侧边栏指标插件。按 sessionID 记录速度、TTFT、token、缓存、计时,只显示你当前 attach 的会话,而不是 serve 模式下的全局汇总。
opencode-plugin-fixes

opencode-plugin-fixes

Archived OpenCode guardrail experiment. The final source tree covers four narrow tool-call repairs; no npm package was ever published.
opencode-vibe-island-plugin

opencode-vibe-island-plugin

让 Vibe Island 在装了 oh-my-openagent 时仍然把 OpenCode 会话当成 OpenCode。修好 source 误标和 Ghostty 点击跳转。
OpenCode Themes

OpenCode Themes

Terminal-inspired dark themes for Obsidian, Typora, and Ghostty, all synced to the official OpenCode TUI palette.
wechat-mp-publisher

wechat-mp-publisher

从个人公众号 Skill 到可公开安装的 npm 包:本地校验与沙箱预览在前,用户确认后只创建草稿。
SIGINT

SIGINT

已归档的内容情报实验:曾把小红书/抖音采集、AI 分析、n8n 编排与实时仪表盘接成一条完整链路。
MdictLive

MdictLive

Modern web reader for MDict dictionaries with React 19 SPA, dark mode, and faithful rendering.
SiliconLM

SiliconLM

Local LLM dashboard for Apple Silicon Macs, currently preserved without an active local deployment.
mdx2apple

mdx2apple

Convert MDict (.mdx/.mdd) dictionaries to macOS Apple Dictionary format with one command.