Repository navigation
Omni-Stacks
Omni-Stacks 是面向 Stacks 2 的 Alfred 任务中心。Alfred 负责交互和轻量参数预处理,
单二进制 C++ 核心负责项目、清单、任务、计时、提醒同步和持久化。
无后台进程 无内存占用, 即时响应, 日志记录 , 覆盖日常高频次 操作 无需启动Stacks软件 , Alfred 统一操作窗口
核心源码:CXX-CMake-template
核心CLI 接口架构 业务逻辑文档:https://suchaharcan.github.io/
包大小:约 563 KB
SHA-256:216441591d8ca79edccdc9a94006c74984d2260c10b2ab871de0c8dd14f9ffe8
2026-11-07 第5版 验证优化 封版, 转维护状态, 除非 Stacks2 损在破坏性结构变化 ;
拉取核心源码后执行
just docs,查看架构设计、业务接口、持久化字段和测试说明。
just package本地生成 插件包
Apple 的“无法验证”是通用文案,表示该独立二进制没有 Developer ID 签名和公证,不能说明已经检测到恶意行为。
解决方式就是你在“隐私与安全性”中选择“仍要打开”;
已经提供 源码 可审查,自行 使用 just package 生成自己的插件
简单直观的描述 插件的使用流程
s ap ,导入 你所使用的 工作区路径(最少一个,数量不限, 我个人 就区分 6个常用工作区) 后续 工作展开的前提
s rl 重载操作, 避免 StacksGUI 上是 少数低频 插件未覆盖或影响插件的部分,走该命令 进行双端同步( Stacks GUI 和 Alfred 插件) 类似对账机制
s i 自动 列出 全工作区下的全收件箱 中的任务 , 选择 指定收件箱 回车进入查看期内的任务列表, 选择 任务 回车 进入任务详情页 支持模糊搜索 , 若搜索到 回车进入 任务详情页, 否则 进入 六行创建面板
s v 自动 列出 全工作区下的全项目 及其项目下的全看板 中的任务, 其余操作 和功能同 s i
s t 自动全局检索 全工作区下的所有任务 , 只能 模糊匹配 和 进入任务详情页,相比较 s i, s v ,仅缺乏 创建任务
s w
s tm
s pin
s di
s cf 等 均是 直观的理解命令的作用和含义均不在赘述
而 s 若匹配不到上述 合法触发关键词时 ,则 直接进入 新建任务的六行创建面板 再次回车 进入 默认收件箱或固定常用项目看板中
s i ,s v 均是 先指定 上级归属再进行创建任务, 而 s 是先创建任务再进行 后续归类 ; 两种习惯涵盖不同的操作喜好 ;
同时 因为 存在 后续工作区膨胀 只有常用的 归属的话, 都可以试试
值得说明的是, 下方的截图 多少 是失效的,那是初次2.0.0 版本时的上传;
插件虽然是个小项目 脚本级复杂度, 但 值得打磨 ;
小细节亮点 简单提及
- 新建任务 六行创建面板
- 模糊搜索
- 新建任务 快速 ,3种 Title | desc | start time | end time | high , title, title | desc , title| desc| high, title | high
- 模糊匹配 title, desc;
- 打磨 s v, 复用到s i ;
- 同步到苹果日历, 苹果待办提醒, OmniFocus 中
- 性能优先, 毫秒级响应, 体积占用小, 无后台守护进程, 异常处理机制, 日志记录排查定位;
- Alfred 仅负责交互 参数预处理 核心逻辑流程 均有C++ 负责, 有什么好处呢? 你可以 异常轻松的 移植 到Raycast, uTools, Quicksilver 等 或者 你 有新的 交互设计, 只需要 调用我的接口 即可 生成属于你的 插件
- C++项目 均有 单元测试 变异测试, 及其文档注释 , 针对我日常开发体验中遇到的 问题 均逐个 解决.
后续 应该没有什么更新内容了, 除非是 Stacks 破话性数据结构 或者 让我兴奋的 软件之间的 数据联动 工作流搭建 , 当然 如果你有 更好的 交互方式 或者 让你自嗨 兴奋的 想法的话,欢迎提交 issue 我看到会酌情 开发的,
或者 你自行 根据源码 自由开发
如何开发 调试呢?
拉取代码到本地, 直接执行just package 就能打包 , 直接安装到Alfred中 ;
其中核心 接口 是C++ , Alfred 仅负责交互 和 参数处理
接口文档 也提供了
开发版本信息
- Alfred 5.8.1 [2349]
- Stacks 2.7.5 Build 26248
若 Alfred 插件过高,可自行建立空白workflow, 将插件中的内容进行移植 进来即可;
因为 Alfred 仅负责 接收参数 和 处理 核心二进制文件的处理结果, 与Alfred 版本特性无关.
安装
- 下载本 Release 中的
Omni-Stacks.alfredworkflow。 - 双击文件,在 Alfred 中确认导入。
- 打开 Alfred Workflow Configuration,按需要设置命令别名、日志、通知、声音和大字号。
- 在 Alfred 输入
s,首次执行s ap选择 Stacks 2 工作区目录。 - 如果使用提醒同步,允许 macOS/Alfred 访问提醒事项与自动化 OmniFocus。
发布包不包含 data/ 和 log/。首次启动会在二进制同级自动创建空索引与日志目录;
已安装升级时会保留并迁移用户已有数据。
初始配置
默认触发词为 s。Workflow Configuration 提供:
STACKS_LOGGING:启用 bqlog 接口日志和 Debug trace,保留最近 3 个月。STACKS_DEBUG:输出完整调用链到 Alfred Debugger。STACKS_NOTIFICATION:显示操作通知。STACKS_SOUND:成功播放 Glass,失败播放 Basso。STACKS_LARGE_TYPE:用 Alfred Large Type 显示结果。STACKS_DELIMITER:任务字段分隔符,默认|。STACKS_ALIAS_*:ap/rl/cf/v/t/w/tm/i八个命令别名均可修改。
命令与操作
新建任务
输入:
s 标题|描述|开始时间|截止时间|优先级
后四项可以留空。支持 today、tomorrow、+3d、星期名称和 YYYY-MM-DD。
优先级支持 low/低、medium/中、high/高、critical/紧急。
在结果中选择项目或清单,回车创建。项目级任务进入 Backlog,清单级任务进入对应
Stack,任务文件写入当前 Stacks 工作区。
s ap:添加路径
必须先配置保存 工作区 路径 ,后续针对 工作区下的 项目 看板清单 和 任务 才能持久化到工作区文件中,这个是前置步骤


- 输入
s ap。 - 回车打开目录选择器。
- 选择 Stacks 2 工作区。
- 核心递归扫描
.project并原子重建Project.json、Stack.json。
s reload 和 s cl 是兼容别名。
s rl:重载全部路径
- 输入
s rl。 - 回车重新扫描所有已保存工作区。
- 该操作不会打开目录选择器。
s cf:路径配置
显示“添加新路径”“重载全部路径”和所有已保存路径。第一路径是 Inbox 默认路径。

s v:项目、清单与任务
在 项目 看板清单 这 一级 和 二级 下 针对该层级的任务 支持 查看 编辑 模糊搜索 和 新建任务

- 输入
s v,模糊筛选项目或清单。 - 回车进入项目/清单任务页。
- 继续输入关键词模糊筛选该层级任务。
- 回车任务进入编辑详情。
- 有匹配时显示任务;无匹配时显示“新建任务”并进入插入流程。
- 任务页和任务详情均提供最后一行 Back。
任务详情支持:
- 修改标题、描述;
- 设置开始日期、截止日期或完整计划区间;
- 设置/清除优先级;
- 完成、重开、归档;
- 开始/停止计时并写入 Stacks
timelogs; - 同步 Apple 提醒、OmniFocus 或两者;
- 移到可恢复垃圾箱
tasks/.trash。
s t:全局任务搜索
s t 关键词
s w:本周截止
聚合全部已保存工作区的本周未完成、未归档截止任务。可一键同步本周任务到
Reminders + OmniFocus。
s tm:计时
列出运行中的计时器,回车停止并写入 Stacks 兼容 timelog。
s i:Inbox
- 输入
s i,列出全部工作区,第一个为默认 Inbox。 - 回车工作区,直接显示该工作区的 Inbox 任务。
- 输入关键词模糊匹配任务;回车进入编辑。
- 无匹配时自动显示新建收件箱任务。
- 当前工作区没有 Inbox 任务时直接显示“录入收件箱任务”。
- Back 固定在最后一行。
s i 后直接输入任意文本会被阻止,必须先选择工作区。
注意事项
- Stacks 应用与 Omni-Stacks 不建议同时编辑同一条任务详情。
- 创建任务会同时更新
.task与.project;后一步失败时会回滚新任务。 - 删除任务会移动到
tasks/.trash,不会立即永久删除。 - 提醒同步通过任务中的
[Stacks-ID:<id>]去重更新。 - 关闭
STACKS_LOGGING后不会写入 bqlog 或 trace 文件。 - 日志开启时自动清理超过 3 个月的接口日志和每日 trace。
- 发布包不包含用户工作区路径、索引或日志。
调试
- 在 Workflow Configuration 中启用
Logging和Debug。 - 打开 Alfred Debugger。
- 输入命令,查看
[stacks-trace]:- Alfred 入参;
- 命令判定;
- 参数预处理;
- 二进制 argv;
- 退出码和返回摘要;
- Alfred 后处理结果。
接口日志位于 log/interface.log_YYYYMMDD_N.log,每日 trace 位于
log/trace-YYYYMMDD.log。
源码与文档
git clone https://github.com/SuchaharCan/CXX-CMake-template.git
cd CXX-CMake-template/single-exe-static-modules
just
just docs生成的文档包含架构设计、模块接口、CLI 输入输出、Stacks 字段与测试边界
开发架构文档: https://suchaharcan.github.io/
单输入框六行创建
- 一次输入
标题|描述|开始|截止|优先级。 - 下方六行实时回显各字段完整内容。
- 标题、描述、开始、截止、优先级使用同一创建 action;标题存在后按回车直接创建。
- 开始默认
today,优先级默认low,截止默认未设置。 - 描述中的
|使用\|转义。
可配置短键哨兵
task:、board:、inbox:、路径移除等短键统一追加输入分隔哨兵。- 默认哨兵为
✅。 - Workflow Configuration 新增
STACKS_HANDLE_SENTINEL,可改成任意非空文本。 - 用户删除哨兵后继续输入仍然兼容。
已完成 / 已归档任务过滤
- 默认不检索已完成或已归档任务。
- Workflow Configuration 新增
STACKS_INCLUDE_DONE_ARCHIVED。 - 开启后,项目、Stack、Inbox 和全局任务搜索同时包含完成与归档任务。
工作区与路径
- 有效工作区必须包含正确类型的 companies、documents.tree、people、tasks/
和 timeboxes/;.project 文件可选。 s cf只列出路径、移除说明和返回项。- 回车路径进入确认页;确认后只移除
Project.json、Stack.json、
Timers.json中的索引,不删除工作区文件。 - 已有失效路径或已被外部删除的工作区也可以移除其索引。
搜索与任务交互
- 模糊搜索标题和描述,标题命中优先于描述命中。
s i先选工作区,回车查看 Inbox 任务。- 任务短键使用
✅xxxxxxxx ✅,不再把完整任务 ID 放进输入框。 - 空 action、失效 action 不再显示巨大的
unknown action:。
更新检查与插件图标
- 根目录
update.json使用 Alfred 内置 Workflow Update 协议。 remote_json返回version、download_url和description。- 用户通过 Alfred 菜单中的 “Check for Workflow Updates” 检查并安装新版。
- 插件不启动自己的后台更新检查进程。
- Alfred 根
icon.png是指向icons/icon.png的符号链接,不再复制第二份图标。
日志与测试
- 核心写接口记录接口名、入参、字段变化和结果摘要。
- 32 个 GTest、安装布局和打包首启测试通过






