mcpField
S
shyn

shyn

本地服务
shyn.day记忆与知识11 周前更新

关于 shyn

shyn 是面向 Apple Silicon Mac 的本地记忆 MCP 服务,可捕获屏幕、会议、浏览记录和笔记,供 AI 助手检索个人历史。数据以加密形式保存在设备上,并支持关键词与语义混合搜索。

主要功能

  1. 01捕获屏幕文字并建立可搜索历史
  2. 02本地录制会议并转写、标记说话者
  3. 03导入 Chrome、Safari 历史和 Apple Notes
  4. 04关键词与设备端语义混合搜索
  5. 05暂停采集、排除应用并删除记忆

适用场景

  1. 01查找会议中讨论过的决定
  2. 02定位曾读过的网页或资料
  3. 03让助手检索并阅读完整笔记或转录稿

MCP 相关

shyn 通过标准 stdio MCP 服务向客户端提供记忆搜索、文档读取、写入、删除和状态查询等工具;可选的文件搜索需配合独立的 thatone 应用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbshyn.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

shyn

shyn — 随时调用的 Mac 记忆 ☀️

shyn.day · macOS(Apple Silicon)· 预 Alpha 阶段 · Elastic License 2.0

Shyn 是 Mac 的常驻记忆助手。 它会悄悄记住你看到、听到和读到的内容——你的屏幕、会议、浏览记录、笔记——并让你的 AI 助手完整回忆起你的生活。问 Claude“我们昨天的站会决定了什么?”或“我在哪里读到那个留存率 Bug 的?”它就会根据你自己的历史记录,而非互联网内容,给出答案。

你的记忆始终保存在本地,隐私设计融入其中。 shyn 捕获的一切都存储在 Mac 上的加密数据库中。它捕获的内容不会上传、同步或发送回开发方——离开你设备的只有与你主动提出的问题相关的少量片段,并且只会发送给你选择询问的 AI。

在 Beta 期间,shyn 还会发送匿名使用数据。 shyn 需要适配不同的 macOS 版本、硬件和权限状态,而这些组合会产生我们无法复现或测试的 Bug。遇到这类问题的大多数人不会提交报告,只会退出应用。因此,shyn 会报告哪些功能被使用、发生了什么崩溃、应用版本和耗时数据,并将这些信息关联到一个与你无关的随机 ID。

这些数据绝不包含 shyn 捕获的任何内容。没有屏幕文本、转录内容、搜索记录或身份信息。首次运行时由你选择,之后随时可以在设置中单击一次更改。关闭此功能后,shyn 就会完全遵守上述承诺:离开你设备的只有你自己的问题。

状态:预 Alpha 阶段。 Shyn 还很新,迭代迅速,且仅支持 macOS (Apple Silicon)。请做好遇到不够完善之处和破坏性变更的准备。安装只需两条 Homebrew cask 命令(brew install + shyn setup)——这些应用采用自签名,并由 shyn setup 在本地重新签名,不经过 Apple 公证;一键公证安装已列入路线图。

为什么选择 shyn

  • 🧠 瞬间完整回忆。 混合搜索——关键词(FTS5/BM25)+ 语义搜索(设备端嵌入)——可在几毫秒内通过本地套接字搜索你捕获的所有内容。
  • 👁️ 随时记录屏幕记忆。 一个轻量级 Agent 会在你工作时捕获屏幕上的文本——你读过、写过和点击过的内容都会成为可搜索的历史记录。
  • 🎙️ 记住每场会议。 Shyn 会检测你的通话,在本地录制双方音频,用 Whisper 在设备端转录,并将带有说话人标签的转录文本归档到你的记忆中。音频不会通过套接字传输,转录完成后立即清除——文本留存,音频数据即刻消失。授予日历访问权限后,转录文本会根据对应日历事件添加标题(包括参会者,例如“冲刺站会”)——数据直接从 Mac 自带的日历存储中读取,不使用 Google API,也不会有任何内容离开设备。
  • 🌐 串联你的数字足迹。 Chrome 和 Safari 浏览历史记录以及 Apple Notes 会自动导入;文件和 PDF 可按需导入。
  • ☀️ 一目了然,安心无忧。 磨砂玻璃风格的菜单栏助手会显示运行状态——菜单栏中一个太阳图标,四种实时状态;录制会议时,红点会闪烁。状态从不静默,也绝不偷偷运行。
  • 🔒 以征得同意为先。 开始录制时会发出提示,并且可以在宽限期内取消。单击一次或运行 shyn pause 30m 即可暂停所有功能。排除应用。删除任意内容——forget 会彻底清除数据:经过清理,彻底消失,而非软删除。
  • ⚡ 专为即时启动而设计。 关键词搜索从启动后的第一秒起即可使用;嵌入模型会在后台下载,随后搜索结果会静默升级为混合搜索。模型从不影响关键路径。

工作原理

后台守护进程管理一个加密的 SQLite 索引(密钥保存在 macOS Keychain 中),并通过 Unix 套接字提供 JSON-RPC 服务。采集 Agent——屏幕、 会议——以及来源读取器——Chrome、Safari、Apple Notes——会向它提供数据。 你的 AI 通过六个 MCP 工具(以及下文介绍的可选第七个工具 search_files)与它交互。诀窍就是:一个私有索引、多种记忆,以及任何支持 MCP 的助手。

工具你的 AI 可以获取什么
search_memory(query, …)带来源信息的混合搜索——核心工具
recent_activity(hours?, …)活动时间线,面对模糊问题时很适合作为首次调用
get_document(uri | doc_id, …)阅读整篇文档(完整的转录稿或笔记),而不是摘录
remember(content, tags?)明确“记下这个”的记忆
forget(doc_id | source | time-range, confirm)可靠删除;没有 confirm: true 就会拒绝
memory_status()健康状态、索引计数、模型下载进度、已连接来源
search_files(query, kinds?, folder?, limit?)可选:通过独立的 thatone 应用,按含义查找你自己的文件
文件搜索(可选)

search_files 可以根据文件内容查找 Mac 上的文件(图像、PDF、文档、音频、视频、 文本)。它需要在同一台 Mac 上运行独立的 thatone 应用(源代码可用, Elastic License 2.0,适用于 Apple Silicon 版 macOS,预 Alpha 阶段)。shyn 本身不会为任何文件编制索引;文件索引由 thatone 管理。

  • **发送的内容:**只有查询文本以及可选的 kinds、folder 和 limit 会发送到 thatone 的本地套接字。两个程序都不会通过网络发送任何内容。结果(文件路径和你自己文件中的简短片段)会像 search_memory 的结果一样发送给你的 AI 客户端。
  • **返回的内容:**文件路径(照片项目显示为“位置:Apple Photos, 名称”)、文件类型、录音和视频中的时间、PDF 页码,以及最多 300 个字符的片段。这些内容会像 search_memory 的结果一样进入 AI 的上下文,因此是否安装并运行 thatone 由你决定。
  • **关闭方式:**没有相关设置。退出或卸载 thatone 后,该工具会在约 20 秒内消失;shyn 会频繁重新检查。
  • **套接字:**默认为 ~/Library/Application Support/thatone/thatone.sock; 使用环境变量 SHYN_FILE_SEARCH_SOCKET 覆盖。
  • 状态:memory_status 的最后一行会显示 file search: ready (thatone)、file search: not running (thatone) 或 file search: not installed (thatone)。

快速开始

使用 Homebrew 安装(推荐)
brew install --cask shyn-labs/tap/shyn
shyn setup

只需两条命令:cask 会根据固定的校验和验证下载内容,shyn setup 会启动所有组件,并通过 ☀️ 菜单栏窗口引导你完成权限设置。无需 Node、无需 Xcode,也无需克隆仓库。请阅读 cask 的注意事项——其中列出了实情细则(本地签名、隔离属性、EDR)。之后使用 brew upgrade shyn && shyn setup 更新。

或从源代码构建(面向贡献者)
pnpm install

# start the daemon (first run downloads the embedding model in the
# background; search works before that finishes)
pnpm --filter @shyn/daemon start

向 Claude Code 注册 MCP 服务:

claude mcp add shyn -- pnpm --dir <path-to-shyn-repo> --filter @shyn/mcp-client exec tsx src/main.ts

将 <path-to-shyn-repo> 替换为你克隆此仓库的绝对路径 (例如,在仓库目录中运行 pwd 得到的输出)。

向它提供一些内容,然后询问 Claude:

pnpm shyn ingest /absolute/path/to/some/folder

请使用绝对路径:该路径会保存为文档的 uri。Ingest 接受单个文件(.md、.txt、.pdf)或要遍历的目录。你可以随时使用 pnpm shyn sync 导入浏览器历史记录和 Apple Notes。

完整搭档方案(守护进程 + Agent + 菜单栏)——一条命令
pnpm setup

就这样:安装依赖项,创建稳定的本地签名身份,构建守护进程包、采集 Agent 和状态应用,并通过 launchd 启动所有组件。操作具有幂等性——每次 git pull 后都可以重新运行。

在底层,它会暂存并启动所有组件——守护进程、屏幕 Agent、会议 Agent 和菜单栏状态应用——并确保它们在重启后仍能运行,日志写入 ~/Library/Logs/shyn/。授予 macOS 请求的权限(会议需要麦克风 + 系统音频;屏幕采集需要屏幕录制 + 辅助功能;只有在需要使用 Safari/Notes 时才需要完全磁盘访问——其他功能无需此权限,不会暗中收集数据,也不会反复打扰)。

pnpm shyn uninstall           # stop + remove, keep data
pnpm shyn uninstall --purge   # scorched earth: data, logs, keys
Claude Desktop

pnpm build:mcpb 会生成 dist/shyn.mcpb——将其拖到 Claude Desktop 的“设置”→“扩展”页面即可。(这会注册 MCP 客户端;守护进程必须通过上面的 install 运行。)

其他客户端,包括完全本地运行的模型

Shyn 是标准的 stdio MCP 服务——任何 MCP 客户端都能使用,而且你的记忆完全不必接触付费 API。目前已测试:

  • Claude Code / Claude Desktop——日常主力,在不经提示时判断何时主动检索记忆方面表现出色。

  • 通过 Open WebUI 在本地运行的 Qwen3 14B(Apple Silicon 上使用 MLX),并通过 mcpo 将 MCP 桥接到 OpenAPI:

    uvx mcpo --port 8600 -- "$HOME/Library/Application Support/shyn/bin/shyn-mcp"
    # then add http://localhost:8600 as a tool server in Open WebUI
    

测试中的实话:检索质量在所有环境中都相同——排序在守护进程内运行,而非由模型负责。差异在于驱动模型。较小的本地模型在指令明确时(“搜索我的记忆,查找……”)能很好地回答,但自行判断是否检索的可靠性较低;思考模式模型可能还需要限制其推理(Qwen3 可使用 /no_think)。在守护进程之外运行 14B 模型,建议预留约 10GB 统一内存。

日常控制

pnpm shyn status                    # daemon + agents + index health
pnpm shyn search "that one thing"   # search from the terminal
pnpm shyn pause 30m                 # pause all capture (2h, until-tomorrow too); resume to undo
pnpm shyn exclude com.1password.1password   # never capture an app
pnpm shyn meeting status                    # live meeting controls (stop | cancel too)
shyn voice forget-self   # delete shyn's sample of your voice

……或者完全跳过终端,点击菜单栏中的 ☀️。

细节说明(我们替你操心)

  • 静态数据加密可防止磁盘失窃和备份泄露,但无法防范以你当前用户身份运行的恶意软件。我们会明确说明这一点。
  • 会议:按通道标注说话者(Me: / Others:,说话者分离功能关闭时的默认设置);录制前有 10 秒可取消的等待时间;硬性时长上限为 180 分钟;采集时会逐字节清除临时音频。对于 Shyn 无法听到自身声音的场景,例如房间会议、演讲或免提通话,请点击菜单栏中的开始录制:系统会显示一个简短表单,询问会议内容和参与者,两项均为可选;填写的答案会成为标题和参与者列表(也可在终端中执行相同操作:shyn meeting start "Day 5 review" --with "Maya R, Dev P")。每场会议还会记录 Mac 所在时区,方便日后按出行记录搜索。转录默认使用 Whisper small;使用此模型时,印地语/印地语英语混用语及其他非英语语音经常会被转成英文大意(这一点有文档说明,并未隐瞒)。如需显著提升多语言转录效果,请在菜单栏弹出面板的“会议语言”下点击多语言(需要一次性下载约 3GB 的模型,下载会立即开始;弹出面板会清楚显示下一场会议将使用的模型)。也可以手动切换:在 ~/Library/Application Support/shyn/capture.json 中设置 "meeting": { "whisperModel": "large-v3_turbo" }(此处可使用任意 WhisperKit 模型名称;如果名称无法识别,弹出面板会显示为“自定义”)。配置会热重载,无需重启。转录只会解码每个通道中有语音的片段,并一次解码多个片段(将 "chunkedTranscription": false 设置为可恢复整通道解码);每场会议的日志都会报告各通道中包含语音的时长比例。转录运行期间会阻止系统空闲睡眠,但合上笔记本电脑盖仍会使其进入睡眠并暂停转录——转录进行中,弹出面板会对此作出提示。若要在自己的文件上计时或比较解码器:shyn-meeting transcribe mic.wav system.wav [--whole](二进制文件位于暂存的 shyn-meeting.app 中)。 说话人分离(菜单栏,“说话人分离”)。通话中,对方会被拆分为 Speaker 1、Speaker 2……;你的麦克风始终显示为 Me:,而一对一通话中如果只有一个人说话,则会保留参会者姓名。线下见面时,你麦克风收录的每个人都会被分离,shyn 会识别出你是哪一个。请注意默认设置:说话人分离处于关闭状态,直到你开启它。 shyn 只保存你自己的声音特征,用于在线下会议中将你与他人区分开来。 shyn 会从你的通话中学习;运行 shyn voice forget-self 即可删除该特征。 其他人的声音只用于为他们编号,随后就会丢弃。
  • 会议标题为可选项,并按层级获取:首先是日历事件(需要日历访问权限),其次是通话窗口标题(需要辅助功能权限),否则显示普通的“应用 · 日期”。即使拒绝所有权限,会议仍会正常转录。
  • 菜单栏应用每天检查一次 GitHub 是否有新版——只会发送未经身份验证的请求,以获取最新版本号;不会附带任何关于你或你的设备的信息。可在 capture.json 中设置 "updateCheck": false 关闭此功能。
  • 测试阶段会收集匿名使用数据。 只有守护进程会发送数据,而且只有在你回答首次运行提示后才会发送。 发送的数据包括:使用了哪些功能、崩溃信息、版本和操作系统、时间数据,以及一个与你无关的随机 ID。绝不会发送:shyn 捕获的任何内容,包括搜索文本、文档标题和文件路径(发送前会从错误消息中清除凭据和主目录路径)。 事件名称来自 analytics.ts 中的固定列表——你可以查看;该列表就是全部数据范围。在“设置”中关闭后,会立即停止发送并丢弃所有排队的数据。捕获 Agent 本身绝不会发出网络请求。
  • 需要权限的来源会用通俗易懂的原因说明其不可用,而不会悄悄地什么也不捕获。
  • 评估工具(pnpm eval:keyword、eval:hybrid)会使用合成语料库,按照预先提交的 CI 通过/失败标准运行。它不是基准测试,其数据也不代表准确性声明。
  • 已知的局限和边缘情况记录在 docs/known-issues.md 中——坦诚也是一种功能。

shyn 绝不会做的事

  • 将你捕获的记忆发送到任何地方。 屏幕文本、转录内容、文档和搜索查询在任何设置下都不会离开你的 Mac。 对外网络流量仅限于三类:与你提出的问题相关的片段、菜单栏应用向 GitHub 发出的版本检查,以及下文所述的匿名测试阶段使用数据。
  • 保存你的搜索内容。 使用统计数据只是本地数据库中的计数(每天的搜索次数——绝不记录查询内容)。测试阶段上报的数据也一样:只记录发生过搜索,绝不记录搜索了什么。
  • 在你看到选项前发送任何内容。 测试阶段,shyn 会上报匿名使用数据和崩溃数据;首次运行时,它会先征求你的同意,不会提前排入任何事件。拒绝后,甚至不会生成标识符;你也可以随时在“设置”中更改选择。关于包含和不包含哪些数据,请参阅上文“测试阶段会收集匿名使用数据”。
  • 将你的内容发送到任何地方。 出现问题时,运行 shyn diagnose:它会输出一个可直接复制粘贴的信息块,其中包含版本、服务状态和错误日志行——不含任何文档内容——由你选择粘贴到哪里。

许可证

Elastic License 2.0(可查阅源代码)。

简单来说:你可以免费使用、阅读、修改和分享,无论是个人使用还是工作中使用。你不得出售 shyn,也不得将其作为商业服务或托管服务提供给他人;这项权利仍归项目所有。完整许可文本只有一页,值得一读。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。