隐私政策Privacy Policy
生效日期:2026-09-27
TypeSwitch 是由个人开发者 Max(下称「我」)发布的 macOS App。本政策说明这个 App 如何处理你的数据,适用于从项目 GitHub Releases 页面下载的 TypeSwitch。
概要
- 我没有为 TypeSwitch 运行任何服务器,收不到你的文字、Key 或设置。
- 你触发改写时,要改写的文字只会发送到你自己配置的 AI 服务地址,不会发往别处。
- 除此之外唯一的网络请求是向 GitHub 检查更新,可以关闭。
- 没有任何统计分析、遥测、广告或追踪。
App 在你的 Mac 上读取什么
- 按键(用来识别触发)。 获得「输入监控」权限后,TypeSwitch 旁听触发键(默认是快速连按三次空格)。它只数这个键的连按次数,不记录、不保存、不发送你输入的内容,也从不拦截或修改任何按键。
- 要改写的文字。 你触发时,TypeSwitch 通过「辅助功能」权限读取当前 App 里你选中的文字;没有选中时读取光标所在的那一行。遇到不提供这种读取方式的 App,改用剪贴板复制(见下条)。
- 剪贴板(仅在备用方式下)。 在复制粘贴的备用方式中,TypeSwitch 临时借用系统剪贴板复制那一行、粘贴结果,用完后恢复你原来的剪贴板内容。
- 最前台 App 的标识,用来跳过你加入排除列表的 App,并确保不会把结果写进你触发时之外的另一个 App 或输入框。
什么会离开你的 Mac,发给谁
1. 你的 AI 服务(你配置的地址)。 TypeSwitch 只向 设置 → AI 服务 里填写的 OpenAI 兼容地址发送请求。这个地址可以是第三方服务商(例如 DeepSeek、OpenRouter、OpenAI、Moonshot),也可以是运行在你本机的模型(例如 localhost 上的 Ollama)。发送时机:
- 你触发改写时: 选中的文字或当前这一行,加上改写指令(设置里显示的系统提示词,已填入你的输出语言)、模型名,以及你填写过的 API Key。
- 你在设置里点「测试一句」时: 一句固定的示例文字,以及同样的指令、模型和 Key。
- 你在设置里打开模型列表时: 向该地址请求模型列表,带上你填写过的 API Key。
除以上情况外,你的文字不会被发送。服务商如何处理收到的内容(包括你的 IP 地址),由该服务商自己的条款和隐私政策约束,你向其申请 Key 时已与之约定。服务商由你选择,我接触不到这些数据。
2. GitHub(检查更新)。 启动后几秒,以及你在 设置 → 通用 里点「现在检查」时,TypeSwitch 向 GitHub 公开 API 查询 TypeSwitch 的最新版本。请求中不含任何关于你或你的 Mac 的信息,只有任何网络请求都会带的内容(例如 IP 地址);不含你的版本号、设置或文字。你选择安装更新时,会从 GitHub 下载新的磁盘镜像及其校验和。GitHub 对请求数据的处理受 GitHub 隐私声明约束。自动检查可以在 设置 → 通用 里关闭。
TypeSwitch 不发出其他任何网络请求。
在你的 Mac 上保存什么
-
API Key: 存在你的 macOS 登录钥匙串里(服务名
dev.typeswitch.app,账户provider-api-key),只在向你配置的地址发请求时读取用于认证。 -
设置: 触发键、连按次数和间隔、AI 服务地址、模型、输出语言、改写指令、排除的 App、菜单栏图标是否显示、是否自动检查更新,保存在 App 的偏好设置文件
~/Library/Preferences/dev.typeswitch.app.plist。 - 你修改的系统设置: 如果你在设置里使用「连按两次空格加句号」开关,TypeSwitch 会修改你这个用户账户下 macOS 全局的这项文字设置。只在你拨动开关时修改。
- 系统日志: TypeSwitch 会向你 Mac 上的 macOS 系统日志写入诊断信息。当前版本中,这些信息包含被取来改写的文字和改写结果。日志留在你的 Mac 上,由 macOS 管理,TypeSwitch 不会把它发送到任何地方。
- 更新文件: 下载的更新在临时文件夹中解包,安装完成或校验失败后删除。
TypeSwitch 不保存你的改写历史。
权限
- 辅助功能: 读取选中文字或当前行,把改写结果写回同一个输入框,以及发送备用方式所需的复制、粘贴按键。
- 输入监控: 识别触发键的连按。
你可以随时在 系统设置 → 隐私与安全性 里撤销任一项权限,撤销后 TypeSwitch 停止工作,直到重新授予。
统计与追踪
TypeSwitch 不包含任何统计分析、崩溃上报、广告或追踪代码,不收集使用数据。
如何删除你的数据
- 在 设置 → AI 服务 里清空 API Key,这会把 Key 从钥匙串中删除。(也可以在「钥匙串访问」里删除
dev.typeswitch.app这一项。) - 退出 TypeSwitch,把它从「应用程序」移到废纸篓。
- 删除
~/Library/Preferences/dev.typeswitch.app.plist。 - 在 系统设置 → 隐私与安全性 的「辅助功能」和「输入监控」中移除 TypeSwitch。
- 如果你通过 TypeSwitch 关掉过「连按两次空格加句号」,卸载前用同一个开关打开它,或到 macOS 的键盘设置里恢复。
你发送给 AI 服务商的数据由该服务商保存,删除请联系对方。
本政策的变更
如果 TypeSwitch 处理数据的方式发生变化,我会在新版本发布前或发布时更新本政策及其生效日期。
联系方式
Max(个人开发者) 邮箱:qinuobiao3@gmail.com 问题反馈:https://github.com/max1874/type-switch/issues
Effective date: 2026-09-27
TypeSwitch is a macOS app published by individual developer Max ("I", "me"). This policy describes what the app does with your data. It applies to TypeSwitch downloaded from the project's GitHub Releases page.
Summary
- I run no server for TypeSwitch and receive none of your text, keys or settings.
- When you trigger a rewrite, the text being rewritten is sent to the AI service address you configured, and nowhere else.
- The only other network request is an update check to GitHub, which you can turn off.
- There is no analytics, telemetry, advertising or tracking.
What the app reads on your Mac
- Keystrokes (to detect the trigger). With Input Monitoring permission, TypeSwitch listens for the trigger key (by default, Space tapped three times quickly). It only counts taps of that key; it does not record, store or send what you type, and it never blocks or changes a keystroke.
- The text you are rewriting. When you trigger it, TypeSwitch uses Accessibility permission to read the text you selected, or the line your cursor is on if nothing is selected, in the app you are typing in. Where an app does not expose its text that way, TypeSwitch copies the text via the clipboard instead (see below).
- The clipboard (fallback only). In the copy-and-paste fallback, TypeSwitch temporarily uses the system clipboard to copy the line and paste the result, and restores your previous clipboard contents afterwards.
- The frontmost app's identifier, to skip apps you put on the exclusion list and to avoid writing into a different app or field than the one you triggered in.
What leaves your Mac, and to whom
1. Your AI service (the address you configure). TypeSwitch sends requests only to the OpenAI-compatible address entered in Settings → AI service. This may be a third-party provider (for example DeepSeek, OpenRouter, OpenAI or Moonshot) or a model running on your own Mac (for example Ollama at localhost). Requests are sent:
- When you trigger a rewrite: the selected text or current line, plus the rewrite instructions (the system prompt shown in Settings, with your output language filled in), the model name, and your API key if you entered one.
- When you press "Test a line" in Settings: a fixed sample sentence, with the same instructions, model and key.
- When you open the model list in Settings: a request to that address's model list, with your API key if you entered one.
Your text is not sent at any other time. How the provider handles what it receives, including your IP address, is governed by that provider's own terms and privacy policy, which you agree to when you obtain a key from them. You choose the provider; I have no access to that data.
2. GitHub (update check). A few seconds after launch, and when you press "Check now" in Settings → General, TypeSwitch asks GitHub's public API for the latest TypeSwitch release. The request carries no information about you or your Mac beyond what any web request carries (such as your IP address); it does not include your version, settings or text. If you choose to install an update, the new disk image and its checksum are downloaded from GitHub. GitHub's handling of request data is governed by the GitHub Privacy Statement. You can turn the automatic check off in Settings → General.
TypeSwitch makes no other network requests.
What is stored on your Mac
-
API key: stored in your macOS login keychain (service
dev.typeswitch.app, accountprovider-api-key). It is read only to authenticate requests to the address you configured. -
Settings: trigger key, tap count and interval, AI service address, model, output language, rewrite instructions, excluded apps, menu bar icon visibility and the update-check switch are stored in the app's preferences file,
~/Library/Preferences/dev.typeswitch.app.plist. - System setting you change: if you use the "Two spaces insert a period" switch in Settings, TypeSwitch changes that macOS-wide text setting for your user account. It changes only when you flip the switch.
- System log: TypeSwitch writes diagnostic messages to the macOS system log on your Mac. In the current release these messages include the text captured for a rewrite and the rewritten result. The log stays on your Mac, is managed by macOS, and TypeSwitch never sends it anywhere.
- Updates: a downloaded update is unpacked in a temporary folder and removed after installation or if a check fails.
TypeSwitch keeps no history of your rewrites.
Permissions
- Accessibility: to read the selected text or current line and write the rewritten text back into the same field, and to send the copy/paste keystrokes used by the fallback.
- Input Monitoring: to detect the trigger key taps.
You can revoke either at any time in System Settings → Privacy & Security; TypeSwitch then stops working until they are granted again.
Analytics and tracking
TypeSwitch contains no analytics, crash reporting, advertising or tracking code, and collects no usage statistics.
How to remove your data
- In Settings → AI service, clear the API key field. This deletes the key from your keychain. (You can also delete the
dev.typeswitch.appitem in Keychain Access.) - Quit TypeSwitch and move it from Applications to the Trash.
- Delete
~/Library/Preferences/dev.typeswitch.app.plist. - Remove TypeSwitch from Accessibility and Input Monitoring in System Settings → Privacy & Security.
- If you changed "Two spaces insert a period" through TypeSwitch, turn it back on with the same switch before uninstalling, or in macOS keyboard settings.
Data you sent to your AI provider is held by that provider; contact them to delete it.
Changes to this policy
If what TypeSwitch does with data changes, I will update this policy and its effective date before or when the new version is released.
Contact
Max (individual developer) Email: qinuobiao3@gmail.com Issues: https://github.com/max1874/type-switch/issues