无尘阁日记

无尘阁日记

我让小龙虾帮我写一个 mac 应用,实时翻译屏幕上我选中的英文
2026-05-24

我问:

我现在要做一个在我本机运行的捕捉屏幕上英文并连接大模型的应用,这个提供配置入口即可,让我能够实时看到:“简单英语”(通常指 基本英语 (Basic English))的发明人是英国语言学家和哲学家 查尔斯·凯·奥格登 (Charles Kay Ogden)

这种英语的翻译,让我秒懂。并且能够自动写入到 obsidian 中间去。如果同样的单词或者句子多次选中,那就在 obsidian 里记录下选中的时间,并显示选中次数,以此来反应我学习的进度。

你现规划下怎么做。

小龙虾答:

规划:ScreenEn → 秒懂英文 + Obsidian 学习追踪

核心流程

选中英文 → 快捷键触发 → 剪贴板捕获 → LLM 翻译 → 浮窗秒懂展示 → 自动写入 Obsidian

五个模块

1. 文本捕获(Capture)

  • 全局快捷键触发(默认 Cmd+Shift+T,可配置)

  • 触发后模拟 Cmd+C,读取剪贴板内容

  • 备选方案:macOS Accessibility API 直接读取选中文字(更优雅但跨应用兼容性差,先用剪贴板方案)

2. LLM 翻译(Translate)

  • 可配置项:API Endpoint、API Key、Model Name、自定义 Prompt

  • 默认 Prompt 方向:不是逐字翻译,而是用最直觉的中文让用户秒懂

  • 短词→给释义+一句话场景理解

  • 长句→给中文意译+关键结构拆解

3. 浮窗展示(Overlay)

  • macOS 原生浮动窗口,置顶显示在屏幕右下角或光标附近

  • 翻译结果停留 5-8 秒自动消失(可配置),鼠标悬停可保持

  • 之前的结果可通过 menubar 图标历史记录回看

4. Obsidian 写入(Vault Writer)

  • 每个 单词/短语/句子 对应 vault 里一个 markdown 文件

  • 文件名:英文原文的 slug 形式(如 ubiquitous.md

  • 首次:创建文件,写入释义、简单理解、选中时间

  • 重复选中:追加时间戳,更新计数,不覆盖已有内容

Obsidian 文件结构示例:

vault/ScreenEn/
  ubiquitous.md
  it-is-what-it-is.md
  _dashboard.md        ← 学习进度总览

单个文件内容:

---
text: "ubiquitous"
type: word
count: 5
first_seen: 2026-05-24T10:30:00+08:00
last_seen: 2026-05-24T17:45:00+08:00
---# ubiquitous## 秒懂到处都有,无处不在## 场景理解形容某个东西太常见了,到处都能碰到## 学习记录- 2026-05-24 10:30 — 第1次- 2026-05-24 11:15 — 第2次- 2026-05-24 17:45 — 第5次

5. 配置界面(Config UI)

  • macOS menubar 常驻图标,点击弹出配置面板

  • 配置项:

    • LLM API Endpoint / Key / Model

    • 翻译 Prompt 模板

    • Obsidian Vault 路径

    • 快捷键

    • 浮窗显示时长

    • 最小捕获长度(避免误触发)

技术选型

选择理由
语言Python 3你 Mac 上直接跑,配置灵活,LLM 调用方便
Menubar + 浮窗rumps + PyObjC原生 macOS menubar 应用,浮窗用 NSWindow
全局快捷键pynputPyObjC CGEvent跨应用全局监听
LLM 调用httpx支持流式,OpenAI 兼容接口
Obsidian 写入标准文件 I/OObsidian 就读 markdown,直接写文件
配置存储YAML 文件人工可读可改

目录结构

screenen/
  app.py              ← 入口,menubar 应用
  capture.py          ← 快捷键监听 + 剪贴板读取
  translator.py       ← LLM 调用 + Prompt 管理
  overlay.py          ← 浮窗展示
  vault.py            ← Obsidian 文件读写 + 计数追踪
  config.py           ← 配置加载/保存
  config.yaml         ← 默认配置
  requirements.txt

启动方式

python screenen/app.py# menubar 出现图标,后台监听快捷键,随时可用

需要你确认的点:

  1. Obsidian vault 路径 — 你 vault 在哪个目录?

  2. LLM — 你想接哪个?OpenAI 兼容接口?还是本地模型?

  3. 浮窗位置 — 右下角固定,还是跟光标走?

  4. 要不要 dashboard — Obsidian 里放一个 _dashboard.md 汇总高频词、学习趋势?