日期:2026-07-02
状态:Backlog 需求备忘,今天不开发
适用产品:TagLauncher macOS App + Raycast Extension
Raycast 搜索 TagLauncher 标签、备注与应用
用户希望 TagLauncher 里维护的应用标签和应用备注可以被 Raycast 搜索到,从而在 Raycast 中通过标签、备注或 App 名称快速找到并启动应用。
本需求不要求把 TagLauncher 数据直接并入 Raycast 根搜索结果。推荐方案是开发一个 Raycast Extension,提供一个“搜索 TagLauncher”命令。用户进入该命令后,可以搜索 TagLauncher 导出的标签、备注和应用数据。
TagLauncher 的核心数据包括:
这些数据目前主要服务于 TagLauncher 自身的 AppGrid、Quick Search 和设置页。Raycast 用户可能已经形成了从 Raycast 启动一切的习惯,因此把 TagLauncher 的组织信息开放给 Raycast,有助于扩大 TagLauncher 数据的使用场景。
| 目标 | 说明 |
|---|---|
| 提升标签 / 备注复用价值 | 用户在 TagLauncher 中维护的备注和标签,可以在 Raycast 中继续发挥搜索价值。 |
| 降低切换成本 | Raycast 重度用户无需回到 TagLauncher 主界面,也能用标签和备注定位应用。 |
| 控制隐私与稳定性风险 | Raycast 不直接读取 TagLauncher 主数据库,而是读取 TagLauncher 主动导出的只读索引。 |
| 保持架构解耦 | 后续 TagLauncher 数据结构迁移,不应直接破坏 Raycast 扩展。 |
推荐采用“TagLauncher 导出本地只读索引 + Raycast Extension 读取索引”的方案。
TagLauncher 增加一个可选开关:
允许 Raycast 搜索标签和备注
开启后,TagLauncher 在本机生成一个只读 JSON 搜索索引文件。建议路径:
~/Library/Application Support/TagLauncher/Raycast/index.json
索引由 TagLauncher 负责生成和刷新。Raycast Extension 只读取索引,不直接读取 TagLauncher 主数据库。
Raycast Extension 提供一个命令:
Search TagLauncher
命令打开后显示 Raycast List,支持按以下内容搜索:
选中结果后回车打开对应 App。
Raycast 官方 List API 适合这类同构列表数据展示与搜索;Raycast extension 使用 React + TypeScript 开发。参考:
| 编号 | 用户故事 |
|---|---|
| RAY-01 | 作为 Raycast 用户,我希望输入应用备注中的关键词,就能找到对应 App。 |
| RAY-02 | 作为 Raycast 用户,我希望输入 TagLauncher 标签名,就能看到该标签下的 App。 |
| RAY-03 | 作为 Raycast 用户,我希望回车后直接打开 App。 |
| RAY-04 | 作为隐私敏感用户,我希望 TagLauncher 不默认把备注开放给第三方工具。 |
| RAY-05 | 作为长期用户,我希望 TagLauncher 数据结构升级后,Raycast 搜索仍尽量稳定。 |
{
"schemaVersion": 1,
"generatedAt": "2026-07-02T00:00:00Z",
"appVersion": "8.3.x",
"items": [
{
"id": "/Applications/Safari.app",
"name": "Safari",
"path": "/Applications/Safari.app",
"bundleIdentifier": "com.apple.Safari",
"tags": ["浏览器", "Mac 自带"],
"note": "默认浏览器",
"tagColors": [
{
"name": "浏览器",
"baseColor": 3,
"customColorHex": null
}
]
}
]
}
| 字段 | 说明 |
|---|---|
schemaVersion |
索引 schema 版本,后续兼容迁移使用。 |
generatedAt |
索引生成时间。 |
appVersion |
生成该索引的 TagLauncher 版本。 |
items[].id |
稳定 ID,建议先用 App path。 |
items[].name |
App 显示名。 |
items[].path |
App 路径,用于 Raycast 打开。 |
items[].bundleIdentifier |
Bundle ID,用于辅助搜索和未来兼容。 |
items[].tags |
App 所属标签名称列表。 |
items[].note |
App 备注。 |
items[].tagColors |
可选,用于 Raycast 列表中辅助展示。 |
建议在设置页增加一个开关:
| 状态 | 行为 |
|---|---|
| 关闭 | 不生成 Raycast 索引;如已有旧索引,可删除或清空。 |
| 开启 | 生成 Raycast 索引,并在标签 / 备注 / App 扫描结果变化后刷新。 |
建议文案:
允许 Raycast 搜索标签和备注
说明文案:
开启后,TagLauncher 会在本机生成只读搜索索引,供 Raycast 扩展读取。索引包含应用名称、标签和备注。
命令名称:
Search TagLauncher
列表项建议:
Raycast Extension 不随 TagLauncher DMG 发布,也不走 Apple App Store 审核。推荐流程:
package.json 的 author 使用 Raycast 账号用户名。license 使用 MIT。platforms。npm 安装依赖,并提交 package-lock.json。npm run build
npm run lint
npm run publish
Raycast 官方文档说明,npm run publish 会通过 GitHub 认证,并自动向 raycast/extensions 仓库创建 Pull Request。PR 审核通过并合并后,扩展会自动发布到 Raycast Store。
参考:
| 项 | 规则 |
|---|---|
| 默认状态 | 默认关闭,不主动生成 Raycast 可读索引。 |
| 用户授权 | 用户必须主动开启。 |
| 数据范围 | 只导出 App 名称、路径、Bundle ID、标签、备注和必要展示信息。 |
| 存储位置 | 本机 Application Support 目录,不上传云端。 |
| 删除行为 | 关闭开关后应删除或清空索引文件。 |
| 敏感说明 | 备注可能包含用户私人信息,设置页必须明确提示。 |
待产品确认。
初步建议:
| 编号 | 验收项 |
|---|---|
| RAY-QA-01 | TagLauncher 开关关闭时,不生成 Raycast 索引或索引为空。 |
| RAY-QA-02 | TagLauncher 开关开启后,能生成合法 JSON 索引。 |
| RAY-QA-03 | 修改标签后,索引中对应 App 的标签可刷新。 |
| RAY-QA-04 | 修改备注后,索引中对应 App 的备注可刷新。 |
| RAY-QA-05 | Raycast Extension 可按 App 名搜索。 |
| RAY-QA-06 | Raycast Extension 可按标签名搜索。 |
| RAY-QA-07 | Raycast Extension 可按备注内容搜索。 |
| RAY-QA-08 | Raycast Extension 回车可打开目标 App。 |
| RAY-QA-09 | 索引文件损坏或不存在时,Raycast Extension 给出可理解的空态或修复提示。 |
| RAY-QA-10 | 不直接读取 TagLauncher 主数据库。 |
| 不做范围 | 说明 |
|---|---|
| 今天不开发 | 本文档仅做 Backlog 备忘。 |
| 不接入 Raycast 根搜索 | MVP 不承诺每条标签 / 备注直接出现在 Raycast 根搜索。 |
| 不做云同步 | 索引只在本机生成和读取。 |
| 不直接读取主数据库 | Raycast Extension 不依赖 TagLauncher 内部 Store 文件结构。 |
| 不改变 Quick Search | TagLauncher 内置 Quick Search 不因本需求改变。 |
| 不改变 Pro 权益 | Raycast 能力是否收费,另行产品确认。 |
| 风险 / 问题 | 说明 |
|---|---|
| Raycast 审核周期 | Raycast Store 发布依赖官方 PR 审核。 |
| 隐私感知 | 用户备注可能敏感,必须默认关闭并清楚说明。 |
| 索引刷新时机 | 需要确认是每次保存立即刷新,还是延迟批量刷新。 |
| 索引文件兼容 | 后续字段变化需通过 schemaVersion 兼容。 |
| 商标和图标 | 发布 Raycast Extension 时,需要确认使用 TagLauncher 名称和图标的展示规范。 |
| Pro 策略 | 是否把部分 Raycast 能力作为 Pro 权益,后续再定。 |