返回博客

整理

用持久化标签、颜色和回收站整理剪贴板历史

给有价值的条目加标签,安全改名,恢复误删内容,并用保留规则管理大型剪贴板历史。

Syzygy 团队发布于 阅读约 14 分钟
  • #剪贴板历史
  • #标签
  • #回收站
  • #剪贴板整理
  • #效率
本文目录
Syzygy 标签和回收站
Syzygy 标签和回收站

剪贴板历史增长得比很多人预想更快。一天研究工作可以增加几十个链接。一次设计工作可以增加截图和 SVG 片段。 一次支持工作可以增加姓名、错误信息和命令。

只有能把材料和噪声分开,历史才会保持有用。Syzygy 用标签补充语义,用回收站提供可恢复删除,再用保留策略完成永久清理。

三项工作保持独立。

标签是共享记录

标签有名称,可以有颜色,并显示已关联条目的数量。剪贴板元数据头会关联到标签。

颜色属于标签记录,不属于某一个标签片组件,也不应该在每次刷新后由随机颜色函数重新计算。为 引用 选择蓝色。

每个 引用 标签片都应该显示蓝色。把 引用 改名为 research。 已关联的剪贴板条目应该保持关系。把颜色改成绿色。

下一次读取应该返回绿色。这套行为把颜色变成真正的用户配置。

四类操作覆盖标签管理

创建操作建立标签记录;查询操作读取标签和数量;更新操作修改名称、颜色或两者;删除操作移除选中的标签和条目关联。

把标签关联到条目,属于条目元数据头更新。公开产品模型可以保持简洁,请求入参仍然可以很精确。 改名请求需要当前名称和新名称。

颜色更新需要标签和新颜色。组合更新可以同时发送两个字段。接口不需要为每个字段建立一套公开权限,服务端仍然会校验每个字段。

服务端仍然会返回受影响条目,界面仍然会刷新变化的行。

改名时发生什么

更新从源标签开始。新名称会先规范化,空名称会被拒绝,两侧多出空白的名称会收敛成一个值。

颜色也会规范化,非法颜色字符串会被拒绝。更新会找到所有关联的剪贴板元数据头。 它会把关系迁移到目标名称。

目标已经关联该条目时,重复关系会被删除。目标标签会保留已经配置的颜色;目标没有颜色时,源标签颜色可以随改名迁移。显式的新颜色优先于两个旧颜色。

关系迁移完成后,源标签会被删除。操作返回更新后的标签和受影响条目标识,界面使用这些标识刷新可见列表。

用户只会看到一次完整改名。他们不会看到一半新名称、一半旧名称的历史。

为什么更新需要一个事务

一次改名会触及多个数据对象:标签记录、条目关联和数量都会变化。

读取视图需要刷新。拆开这些写入会产生中间状态:一个条目可能显示旧名称,另一个条目显示新名称。

源标签颜色可能消失。事务把这些写入放在一起,提交后再发布事件,界面随后读取最终记录。

所以用户选择的颜色可以在应用重启后保持。

给等待中的同步条目加标签

P2P 同步可以先送达元数据头,再送达内容块(blob)。元数据头已经拥有条目标识,可以携带标签和内容家族。

所以内容仍在等待时,条目也能接收标签。加标签、改颜色和改名都不会启动内容块(blob)下载。

元数据更新保持很小。内容传输继续遵守同步策略,移动流量和大文件集合都需要这条边界。

标签编辑器工作流

打开一个条目,选择编辑标签,搜索已有标签并选择一个或多个标签。

列表没有合适名称时创建标签,颜色能补充语义时再选择颜色。保存选择,条目元数据头更新。

可见标签片更新,标签数量更新,关闭编辑器后条目保持选中。

内容本身没有变化时,预览不需要重新加载。

建议和 AI 自动加标签

标签编辑器可以显示建议。建议可以来自最近使用、条目文本或 AI 配置。

建议不是已保存标签。用户选择最终值,普通校验路径负责保存,同一套颜色规则继续生效。

同一套改名和数量规则继续生效。AI 不会拥有绕过持久化的私有写入路径。

在紧凑条目中显示标签

剪贴板卡片的宽度有限。显示所有标签会把内容挤出视图。Syzygy 会显示有限数量的标签片,多出的标签收进 +N 入口。

入口可以打开完整列表。用户选择的标签颜色保持可见,文字仍然需要足够对比度。颜色不能代替标签名称。

键盘用户可以访问展开列表,屏幕阅读器用户可以读取标签文本,紧凑视图在窄宽度下仍然可用。

回收站是状态,不是隐藏列表

移到回收站会把条目标记为已移入回收站。条目离开活跃剪贴板范围,进入回收站范围。 内容仍然可以恢复。

标签仍然保持关联,条目标识仍然已知。恢复会清除回收站状态,条目返回活跃历史记录。

搜索和列表会刷新,用户可以继续使用条目。回收站因此提供可恢复的清理步骤。

永久删除是另一项操作

永久删除会移除条目、属于条目的本地内容和搜索文档,并为同步记录删除证据。

这份记录防止旧对端设备把条目重新带回。这项操作需要比移到回收站更强的确认,确认信息需要写明条目数量,并说明恢复不再可用。

默认焦点应该停留在更安全的选项。操作失败时要报告原因,完成后刷新回收站列表。

保留策略执行计划内清理

有些用户只保留很短的历史,有些用户保留数周参考内容,有些设备存储空间有限。保留策略可以按时间执行。

也可以按条目数量执行,或组合两个限制。清理先选择符合条件的已移入回收站条目,再领取有限批次。

它删除内容、更新搜索索引并保留同步所需的删除证据,不会因为内容块(blob)很大就删除活跃条目。

活跃历史记录和回收站保持不同范围。

保持离线、置顶、收藏和回收站

保持离线控制内容块(blob)保留策略,置顶控制列表位置或突出程度,收藏表示用户偏好,回收站表示从活跃历史记录移除。

这些状态回答不同问题:设备可以清理本地内容块(blob)吗?条目应该留在列表顶部吗?用户是否把它标成有价值?

条目应该出现在活跃历史记录吗?一个状态不能冒充另一个状态。置顶条目仍然可以进入回收站,已移入回收站的条目在删除前仍然保留标签。

收藏可以按需保留,保持离线的条目可以没有标签。

一套实用标签系统

从十个以内的标签开始。进行中的工作使用项目名称,预计会复用的材料使用 引用,对应后续动作的内容使用 follow-up

允许离开设备的内容使用 share。只有团队对含义有共识时才使用 private。颜色只分配给需要快速扫描的类别,不要为每个标签选择独有颜色。

名称承担语义,颜色缩短识别时间。每月检查一次未使用的标签,合并含义重叠的术语。

删除不再描述任何条目的标签。

真实流程:研究笔记

从论文复制一段引用。给它加 research,再加项目名称并选择一致的项目颜色。

复制第二段引用,复用同一组标签,稍后搜索项目标签并打开引用预览。

复制准确源文本,把无关引用放进回收站。项目方向变化时恢复它,保留策略窗口到期后永久删除。

真实流程:支持片段

复制一条诊断命令,给它加 support 和平台名称,为平台标签选择不同颜色。

复制一个客户专属值。不要用暗示“可以分享”的公共标签,使用明确的私密数据策略。 会话结束后把临时值放进回收站。

保留期结束后永久删除,可复用命令留在活跃历史记录。

标签颜色排查

重启后颜色变化

读取保存后的标签记录,确认颜色到达更新请求,确认更新已完成,并确认界面使用返回记录。

不要让随机显示颜色成为主真源,只有用户未配置颜色时才使用后备路径。

标签页和预览显示不同颜色

两个界面应读取同一标签记录。检查过期的本地状态、保存后的事件送达,以及预览是否缓存旧记录。

刷新受影响的条目。

改名后颜色丢失

检查目标标签是否已有颜色。显式更新颜色应该优先,已存在的目标颜色应该保留,只有目标没有颜色时才迁移源标签颜色。

结果应该返回最终颜色。

最后一个条目移除后标签还存在

检查关联数量和其他条目是否仍使用标签,再检查替换条目标签设置后的清理。没有引用的标签可以删除。

回收站排查

恢复后条目没有出现

检查活跃范围筛选、恢复结果、历史记录变化事件和活跃列表刷新。

检查当前搜索查询。条目可能已经恢复,只是被筛选条件隐藏。

永久删除后仍有搜索结果

检查索引删除任务、搜索视图是否过期,以及删除事件的条目标识。通过历史记录打开结果,让缺失条目显示明确状态。

旧对端设备把删除条目带回来

检查同步删除证据和对端设备追赶顺序,确认永久删除是否在对端设备重连前完成。系统应该让删除记录胜过旧元数据头。

常见问题

不改名可以只改颜色吗?

可以。更新发送标签和颜色,保存后的标签记录返回最终值。

可以同时改名和改颜色吗?

可以。更新可以同时携带两个字段,事务会一起应用。

两个标签可以使用同一种颜色吗?

可以。颜色只是视觉辅助,名称仍然是身份。

没下载的文件可以加标签吗?

可以。标签属于元数据头中的元数据。

删除标签会删除剪贴板条目吗?

不会。删除标签只会移除关联和标签记录,历史记录条目仍然存在。

移到回收站会删除内容吗?

不会。它改变条目范围,并保留恢复能力。

永久删除会保留备份吗?

应用不会承诺永久删除后的不可恢复删除。策略要求备份时,请使用外部备份。

保留策略可以删除活跃条目吗?

回收站保留策略只处理符合条件的已移入回收站条目。活跃历史记录策略应保持显式并独立。

为什么显示 +N 标签片?

紧凑卡片需要给内容留空间。完整标签设置仍然只需一次操作即可打开。

AI 可以不经确认直接分配标签吗?

AI 可以建议标签。普通保存路径仍然负责校验和持久化最终选择。

用户应该能够验证的行为

选择的颜色在重启后保持。标签页和条目标签片显示同一种颜色。改名会更新每个已关联条目,改名到已有标签不会创建重复关联。

等待中条目可以在不下载内容的情况下加标签。移到回收站会从活跃历史记录移除条目,恢复会把条目带回来,永久删除会从回收站和搜索移除条目。

保留策略遵守配置规则,保持离线与回收站保持独立。

颜色为什么必须持久化

标签颜色是用户选择,不是装饰函数的输出。用户在标签页选择颜色后,条目卡片、预览列和同步到另一台设备的标签片都应该读取同一份已保存记录。 如果界面每次刷新都根据标签名称计算随机颜色,重启后颜色会变化,用户无法再依靠颜色快速识别项目。后备颜色只能用于尚未配置颜色的标签, 一旦用户做出选择,后备路径必须停止生效。

用一条记录贯穿三个界面

标签页负责浏览和批量管理,条目卡片负责快速识别,预览列负责在查看内容时提供上下文。三个界面都读取保存后的标签记录,而不是各自生成颜色。 标签名称变化后,已关联的条目会收到同一条更新事件;颜色变化后,三个界面会刷新同一个最终值。用户因此可以在任意位置完成修改,再在另一个位置确认结果。

批量操作也遵守这个边界。选择多个条目后添加标签,系统先检查每个条目的状态,再一次提交关联变化;如果其中一个条目已经在回收站,界面会明确显示是否包含它。 失败的批次不会悄悄留下部分关联,用户可以根据错误信息缩小范围后重试。

处理重复与冲突

两个用户可能同时给同一标签改名,或在离线设备上修改颜色。名称冲突需要依据保存时间和当前版本提示用户选择,不能让最后到达的请求静默覆盖另一方。 颜色冲突则保留显式选择,并在界面显示最终记录。同步完成前,设备可以继续使用本地旧颜色;同步完成后,标签页和条目卡片一起刷新。

如果目标名称已经存在,改名流程会把关联迁移到已有标签,再依据颜色优先级保留显式选择。重复关联会被去重,历史条目不会因此复制。用户看到的是一次完整的整理结果, 而不是几个中间标签。

回收站清理前的确认

执行保留策略前,先查看将要处理的条目数量、最早时间和是否存在保持离线的内容。回收站清理只处理符合条件的已移入回收站条目,活跃历史记录不应被一并删除。 永久删除完成后,搜索索引和同步删除证据需要跟上;如果设备暂时离线,界面应显示等待传播状态。

对重要资料,先导出或建立组织规定的备份,再执行永久删除。应用提供恢复和范围提示,但不能替代你的备份政策。删除前后都保留一次诊断摘要,方便在多设备环境中核对结果。

改名和改色可以在一次更新中完成。服务端先校验名称和颜色,再在同一个事务中更新标签记录及关联条目;事务提交后发布事件,界面重新读取最终记录。 这样,标签页和预览列不会出现一个显示旧颜色、另一个显示新颜色的短暂分裂状态。更新失败时保留旧记录,并把原因显示给用户。

回收站与同步删除

移入回收站只改变条目范围,恢复仍然可用;永久删除才会移除本地内容、搜索投影和同步所需的删除证据。对端设备离线时,删除证据可以等待它下次连接, 旧元数据不能因为晚到而复活已经删除的条目。同步状态应显示“删除等待传播”,而不是假装所有副本已经同时消失。

这套区分也适用于标签。删除标签只移除标签记录和关联,不删除剪贴板条目;删除条目则保留它在回收站中的标签,直到用户恢复或永久删除。用户每次操作前都能看见范围, 因此不需要依靠猜测来判断数据是否还能恢复。

给团队的整理约定

先用名称表达项目、来源和状态,再用颜色帮助快速扫描。一个标签只承担一个含义,避免把“项目名称”“客户名称”和“是否可以分享”混在一起。 需要分享的数据使用明确的 share 标签,暂时不应离开设备的数据使用 private 标签;颜色保持稳定,名称负责最终判断。

每月检查一次没有关联条目的标签,合并含义重复的名称,确认回收站保留策略符合团队要求。整理规则写在工作区说明里,应用负责保存和执行, 但最终的数据分类仍由使用者确认。

颜色从选择到显示的完整路径

颜色问题通常不是色板本身的问题,而是界面没有使用同一份已保存记录。标签页、条目卡片和第三列预览都应该把标签标识交给同一个查询,再由查询返回名称、颜色和关联数量。用户在任意位置改色后,保存结果通过事件刷新其他位置;应用重启时重新读取这条记录,而不是再次调用随机颜色函数。

sequenceDiagram
  participant U as 用户
  participant V as 标签页或预览列
  participant R as 标签记录
  participant E as 更新事件
  participant C as 条目卡片
  U->>V: 选择新的颜色
  V->>R: 提交标签标识和颜色
  R-->>V: 返回规范化后的最终记录
  R->>E: 发布标签已更新
  E->>C: 刷新关联条目
  E->>V: 刷新其他标签视图

如果用户只选择颜色,名称和关联不应该被重置;如果用户同时改名和改色,服务端在一个事务中校验两个字段,再返回完整记录。颜色格式错误时,系统保留旧值并说明原因。前备颜色只适用于从未配置过颜色的旧标签,一旦用户保存选择,后备值就不再参与显示。这个规则能直接防止重启后颜色变化,也能阻止第三列预览继续显示旧的随机结果。

验证点通过标准失败时先查什么
保存更新响应包含最终颜色请求字段和颜色格式
列表刷新标签页立即显示新颜色是否读取了旧缓存
条目刷新所有关联标签片颜色一致更新事件和关联数量
重启恢复重启后颜色保持不变是否重新生成了后备颜色
跨设备同步对端显示同一已保存颜色元数据头版本和冲突记录

这条路径还给批量操作提供了明确边界。批量添加标签时,系统可以一次提交多个条目标识,但每个条目仍然引用同一个标签记录;批量改色只更新标签本身,不复制出一组“看起来相同”的标签。用户需要合并名称时,迁移关联和颜色冲突会在同一结果中显示,避免列表出现半旧半新的中间状态。

继续阅读

阅读剪贴板内容类型,了解内容块(blob)到达前有哪些元数据可用。阅读索引器和搜索,把标签和全文检索结合起来。阅读P2P 配对和同步,了解标签更新如何到达可信设备。好的整理方式会把标签、内容和删除状态分开。