96SEO 2026-08-10 00:19 0
掘友们好,我是小牛不牛。
作为一个每天都在 macOS 上搬砖的程序员。我对「复制粘贴」这件事有一种近乎偏执的不满——每次复制完链接、颜色值、甚至一段数学公式后都不得不手动切换到目标应用再粘贴,整个过程至少要走 两步以上浪费时间也让人心烦。

说到想象一下。我刚从 GitHub 复制了一个仓库链接,接下来真正想做的不是「再按 Cmd+V」,而是「立刻打开浏览器」。只是剪贴板只能把文字塞进程序缓冲区。剩下的所有「打开」「搜索」「预览」动作,都得我自己去完成。
有没有办法让剪贴板“懂”我复制了什么接下来直接帮我完成接下来?
于是诞生了 ActionSense——一款 MIT 开源的 macOS 菜单栏剪贴板工具。它不仅保存历史,更能识别意图,自动触发相应操作。
先看效果的观点是,
传统剪贴板工具只会「存储 + 浏览」。而 ActionSense 的主要是识别内容类型并提供即时行动建议。按理说,至于比如,
技术实现上,每种内容类型都有独立的检测函数。按照优先级链依次执行:
// 检测优先级
detectColor → #RGB / rgb
detectIP → IPv4
detectEmail → x@x.x
detectURL → http / www
detectPhone → 1xx xxxx xxxx
detectTracking → SF/YT/EMS...
detectMath → 算术表达式
detectGeo → 经纬度坐标
detectDatetime → 日期时间格式
detectAddress → 省/市/街道关键词
每个检测函数返回一个枚举值,携带结构化数据。再看例如,
enum DetectedContent {
case url
case email
case color //
case mathExpression //
case geoCoordinate //
case richHTML //
}
随后通过 PasteFlowAction 枚举分派具体操作。由 ActionExecutor 执行。完整实现位于 ContentDetector.swift。
User Pain Point:
使用程序自带的 NSExpression 时遇到百分号(%) 会被误认为格式占位符,引发异常——导致所有数学表达式都被错误识别为富文本。
为了解决这个坑,我自行实现了一个标准的递归下降解析器。
Expr → Term Term)*
Term → Power Power)*
Power → Unary?Unary →,Atom
Atom → Number | ""
The parser lives in evaluateMath) function and consists of a tokenizer plus four recursive functions;total lines ≈ 120.
The tokenizer adds an artificial .end sentinel token at tail. A common mistake is checking pos == tokens.count。
which never becomes true because sentinel occupies last slot.
// 正确写法
if pos == tokens.count - 1 {
// 已经到 .end,停止解析
}
// 错误写法
if pos == tokens.count {…}
This bug made every mamatical expression fall back to “rich text”. After fixing it。expressions like * → computed ✅.
User Pain Point: 普通弹窗会抢走键盘焦点,让使用者必须手动切回原窗口继续工作。说起来,ActionSense 使用“非激活面板”来避免这一尴尬。
let window = NSWindow(
contentRect: NSRect,styleMask:,// 关键点
backing: .buffered,defer: false)
window.level = .floating // 永远在最上层
window.collectionBehavior =
window.hasShadow = true
// SwiftUI 嵌入
window.contentView = NSHostingView)
// 定位到鼠标位置
let mousePos = NSEvent.mouseLocation
window.setFrame(CGRect(x: mousePos.x + 10。y: mousePos.y - window.frame.height - 10,width: window.frame.width,height: window.frame.height),display: true)
// ESC 键关闭
NSEvent.addLocalMonitorForEvents { event in
if event.keyCode == 53 { // ESC
window.close
return nil
}
return event
}
User Pain Point: 很多剪贴板提高工具在写回内容后会 触发监听,从而陷入无限循环。ActionSense 用“双层防护”彻底根除这个问题。
// 写入前置标志位,阻止本轮监听
读取
internalWriteFlag = true
pasteboard.clearContents
pasteboard.setString
// 写入后立即更新计数器。以便下次检查时发现无变化直接跳过
lastChangeCount = pasteboard.changeCount
internalWriteFlag = false
在纯文本模式下使用上述双标志;在 PasteFlow 模式下仅更新 lastChangeCount.
This is arguably ActionSense’s most innovative part – each clipboard entry carries **rich intent metadata**。enabling powerful multi‑dimensional filtering.
struct HistoryEntry: Codable,Identifiable {
let id: UUID // 唯一标识
let text: String // 原始文字或富文本摘要
let mode: String // plainText | pasteFlow
let detectedType: String?// URL | Email | Color | …let action: String?// 浏览器打开 | 拷贝 HEX | …let isIntentFulfilled: Bool // 是否已自动完成对应操作
}
The traditional clipboard history only stores “text + timestamp”. With ActionSense you can query by type、mode、是否已完成、关键字等多个维度。话说回来,All entries are persisted as a single JSON file:
/Users//Library/Application Support/ActionSense/history.json
No separate *.strings* files are used. All UI strings live inside a single `L10n` enum that returns appropriate language based on `preferredLanguage`.
enum L10n {
static var isChinese: Bool {
switch Language?,.auto {
case .chinese:
return true // 强制中文界面
case .english:
return false // 强制英文界面
case .auto:
return systemIsChinese // 跟随程序语言设置
}
}
}
颜色值识别:
数学计算:
意图历史窗口:
git clone https://github.com/xiaoyunchengzhu/ActionSense.git \
&& cd ActionSense \
&& open ActionSense.xcworkspace # 或 open ActionSense.xcodeproj
# 在 Xcode 中点击 Cmd+R 即可运行调试版。# macOS + Xcode + Swift 环境必备。不过,
P.S. 产品首页:
ACTION SENSE 是一个兼具练手与实用价值的开源项目。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback