痛定思痛,经过很长一段时间的考虑,决定将 PasteMemo macOS 智能剪贴板管理器,今天正式开源了! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
gefangshuai

痛定思痛,经过很长一段时间的考虑,决定将 PasteMemo macOS 智能剪贴板管理器,今天正式开源了!

  •  
  •   gefangshuai 23 天前 1582 次点击

    经过一段时间的内测和很长时间的思考,今天决定将 PasteMemo 完全开源。

    相比走收费路线,开源能让更多人用上、也能让更多人参与进来,对这个项目的长远发展更好。从 v1.0.0 开始,所有功能完全免费,源代码基于 GPL-3.0 协议开放。

    这是什么

    PasteMemo 是一款 macOS 原生剪贴板管理器,SwiftUI + SwiftData 构建,驻留菜单栏,不占 Dock 。

    一句话概括:复制一次,随时访问,即刻粘贴。

    主窗口

    核心功能

    智能识别

    自动检测剪贴板内容类型 链接自动抓取图标和标题、代码语法高亮、颜色显示色块、电话号码提供拨打/短信按钮。不只是存文本,每条记录都有智能预览。

    全局快捷粘贴

    V(可自定义)在任何应用中唤起快捷面板,搜索、选择、粘贴,全程键盘操作。1 ~ 9 直接粘贴对应条目。

    快捷粘贴

    快捷操作(K )

    命令面板式操作:粘贴、纯文本粘贴、复制、置顶、编辑、删除,还有格式转换(转大写、URL 编码、清理追踪参数等),不用离开键盘。

    快捷操作

    接力模式

    复制多条内容,按顺序逐条粘贴。填表、录数据、批量操作的利器。支持文本拆分,一段文本按逗号/换行拆成队列。

    接力模式

    剪贴板自动化

    基于「条件 + 动作」的规则引擎。比如:复制链接时自动清理 utm 追踪参数,复制邮箱时自动转小写。内置常用规则,也可以自定义。

    其他亮点

    • 复制即文件 文本粘贴为 .txt,截图粘贴为图片文件,直接拖入 Finder
    • AI 终端就绪 无缝粘贴图片和文件到 AI 终端
    • 敏感内容检测 自动识别密码等敏感数据,界面遮罩显示
    • 忽略应用 密码管理器等应用可排除在监控之外
    • 备份恢复 支持本机备份和 WebDAV (坚果云、NextCloud 等)
    • 11 种语言 中英日韩德法西意俄印尼 + 繁体中文

    安装

    Homebrew (推荐)

    brew tap lifedever/tap brew install --cask pastememo 

    直接下载

    GitHub Releases 下载 .dmg

    • PasteMemo-1.0.0-arm64.dmg Apple Silicon (M1/M2/M3/M4)
    • PasteMemo-1.0.0-x86_64.dmg Intel Mac

    系统要求:macOS 14 (Sonoma) 或更高版本。

    为什么开源

    做这个项目的过程中一直在纠结要不要上架 App Store 走付费。后来想了很久,觉得对于一个日活不到 100 的小工具,与其花精力在商业化上,不如开源出来,让更多人用上,也欢迎感兴趣的开发者一起参与。

    链接

    如果觉得有用,欢迎 Star 或者请我喝杯咖啡

    27 条回复    2026-04-06 10:55:47 +08:00
    Yangpengxu
        1
    Yangpengxu  
       23 天前
    优秀的作品,学习了,感谢老哥的开源项目
    stinkytofux
        2
    stinkytofux  
       23 天前
    你要把别人卷死了
    hugodotlau
        3
    hugodotlau  
       23 天前
    用了 raycast 后类似小工具很难有生存空间了
    ares001
        4
    ares001  
    PRO
       23 天前
    多设备同步是刚需
    gefangshuai
        5
    gefangshuai  
    OP
       23 天前
    @ares001 #4 用爱发电付不起 688 ,这功能基本无望了
    gefangshuai
        6
    gefangshuai  
    OP
       23 天前
    @hugodotlau #3 是的
    needpp
        7
    needpp  
       23 天前
    @hugodotlau 为何呢,能展开说说呢
    slowman
        8
    slowman  
       23 天前
    哥们功德无量
    fromzero
        9
    fromzero  
       23 天前
    感谢分享,我也写了一个,我的痛点是跨平台同步。
    Zenyet
        10
    Zenyet  
       23 天前
    还是对 paste 这种交互比较喜欢,搞得我也想 vibe 一个了
    beiguo
        11
    beiguo  
       23 天前
    优秀
    yukminnie
        12
    yukminnie  
       23 天前
    开源原生项目越来越多了,比心
    greatbody
        13
    greatbody  
       23 天前
    @hugodotlau 也不一定啊,这个接力模式看起来还挺有用的。
    rechardwong0522
        14
    rechardwong0522  
       22 天前
    感谢老哥开源。对于 Swift 初学者来说,PasteMemo 的架构和难度适合用来学习吗?
    hugodotlau
        15
    hugodotlau  
       22 天前
    @greatbody raycast 你实际用试试,基本也差不多类似,至于接力拆分调节这种太小众需求了
    slowman
        16
    slowman  
       22 天前
    搜索是不是没用,不管输入什么都 0 结果
    aoizz
        17
    aoizz  
       22 天前 via iPhone
    正在用,很好用,大佬能支持一下预览图片链接吗?复制的图片链接,无法预览
    gefangshuai
        18
    gefangshuai  
    OP
       22 天前
    @aoizz #17 设置-偏好,打开网页预览
    gefangshuai
        19
    gefangshuai  
    OP
       22 天前
    @slowman #16 不应该啊,github 提个 issue ,详细说一下复现过程,我查查
    slowman
        20
    slowman  
       22 天前
    @gefangshuai 更新到 1.1.0 搜索没有问题了
    gefangshuai
        21
    gefangshuai  
    OP
       22 天前
    @slowman #20 好的
    slowman
        22
    slowman  
       22 天前
    @gefangshuai 给你发了支付宝口令红包,用工具 https://github.com/FiloSottile/age 和你的 github 私钥解密, 口令明文是 KB 开头

    -----BEGIN AGE ENCRYPTED FILE-----
    YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1yc2EgUUF4cXF3CkNVSnhXdnZj
    NWdpZjQ4QkExMCtzNGUxeTFlWERUS2t5bFR0NlluMUhuY20xQVE3Q2V6c1ZsUnBG
    US94ODAwRmwKeTE3RUc1MklLQ0dobGFPalVUc3pBUEtLT09QaE1Lb0YvU1p3d3R5
    bVVmK1FjOHZEQkE4OTBBZlFQdnBLOGNPZwpTOGx2THZMa255K3ZXemlnWkN5MW5V
    em1PRkJDSXdSRDZqYkNSd0xIdUU5dGt0QjY3Z0wvaEMzYjBZOEt6UGV3CjJDZnBk
    eHd0c0NtNmt5OG8xSkl4bDU3cWNpSGFhWU9hWFI3dXc3Z09ocnJwbE1RZGczdEkx
    SUc4bFJZZGM1S2EKS2w1eEtJMHF3bHJyQzhLTzIva3EwMnpwZlBHZUhVY2FWbjUv
    ZmZNVTdOZGpwa2xudlVEZTlrLzZTVkdwanZJNQowSnBFTVM3Q01uN0RaZkpuNmtt
    RDgzdHhCYTIyUUo5cGZySElxd3VzUTA2TW9NTFYrcjRHUlp5SmlsMXd5WUVTCm90
    MTRBL05NOURDM0wzLzJZRGh6YXpzaUxYMU9OeFN2aEc4b3h3TjVQbkluOXlIcUdN
    RFUyMmY0YWsrSTVOcEYKZWpPS0VGY0hJbjF2MFEzd29BL0wzdHo3cW5BRmNGN2hy
    RzJmWUVQb0s5eWFrZDhDRzdWWFdLREt6NGxhbmk0YQowR3lhdkRubXR1WDdFaXZT
    ZDd1STZ3NFhERHZSYllLVkt2Qi9aZzhvWVF3NU1QRThkTzRmWTh1YldmMGpWWk1H
    CjlmNnpqRUZGYnBNLzM3S0VzTndiZmxySisxWE9IRVZndXVJSzZRcWZuUG5nY3dw
    Mmx3OGk0Y3pNQmlpZW56Z2wKallUaXdMK2NUSG90ekdycUdEbW1QOUxHRlJGYytZ
    WkFrQzk5enZXOGJPdwotLS0gUEZldDl6ZG14UnlzQ2tzSzhrZ0VON3M5ZjlQZUtt
    eFJpaWxFUW5nMTlXZwqfTunAoKDFUiicg/Ak1ECmEHL8hD/thkFWrq1cQqNkIGu5
    qaCEECQ5SCM39Ns=
    -----END AGE ENCRYPTED FILE-----
    gefangshuai
        23
    gefangshuai  
    OP
       22 天前
    @slowman #22 解密失败。。。。
    $ age -d -i ~/.ssh/id_rsa /tmp/msg.age
    age: error: failed to decrypt file key: crypto/rsa: decryption error
    age: report unexpected or unhelpful errors at https://filippo.io/age/report
    slowman
        24
    slowman  
       22 天前
    @gefangshuai 看到你二维码了,直接支付宝扫了
    age 这个我来回用自己的 key 试了没问题,搞不清楚为什么会报错,看来这一套没人用还是有原因的
    gefangshuai
        25
    gefangshuai  
    OP
       21 天前 via iPhone
    @slowman 收到了,感谢支持
    App 底部有加群二维码,可以进群一起交流
    zhanggang807
        26
    zhanggang807  
       21 天前
    点赞
    lmfx89
        27
    lmfx89  
       18 天前
    做的太好了!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     866 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 66ms UTC 21:12 PVG 05:12 LAX 14:12 JFK 17:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86