如何在 Slack 中找到旧决策(搜索不够用时)
关键词搜索失效时如何在 Slack 找到旧决策。为何决策会消失、决策日志为何无效,以及知识图谱如何构建决策感知系统。
By Ellis Keane · 2026-03-14
快想一下:你的团队在哪里决定使用 webhooks 而不是 polling?不是决定了什么 – 而是那个决策现在写在哪里,写在下个月加入的人能找到的地方?
如果你们和我们一样,诚实的答案大概介于"可能是某个 Slack thread"和"我觉得在 #eng-backend,大概三周前,我很确定有两三个人参与,但我真的记不清是谁了"之间。这很耐人寻味,因为那个决策本身重要到足以改变整个系统的运作方式,却似乎没重要到让任何人记在一个不是按时间戳排列的意识流以外的地方。这,简而言之,就是试图在 Slack 中找到旧决策的问题所在 – 信息全在那里,只是没有以让你能作为"决策"来检索的方式组织。
我研究如何在 Slack 中找到旧决策已经有一段时间了,越深入越相信核心问题不在于纪律或习惯或人们通常归咎的任何东西。这是架构问题。Slack 的搜索是为了查找消息而构建的,而决策不是消息 – 它们是恰好通过消息表达的含义,这个区别听起来很学究,直到你花了二十分钟翻阅搜索结果,试图弄清楚十七次提到"webhook"中,哪一次是你的团队真正决定使用它的那次。
Slack 搜索的实际工作方式(以及它在哪里失效)
让我们说清楚,因为"Slack 搜索很糟糕"并不是正确的诊断 – Slack 搜索在它所做的事情上实际上相当出色。问题在于它所做的事情与你在寻找决策时需要它做的事情是两件根本不同的事情。
Slack 将消息作为带有元数据的文本建立索引:时间戳、发送者、频道,以及(如果你用的是付费计划)完整的 thread 上下文。当你搜索"webhook"时,Slack 忠实地返回包含该词的每条消息,按某种新近度和相关性的组合排序。你可以用搜索运算符缩小范围 – in:#eng-backend from:@sarah before:2026-02-15 – 但你所做的只是按元数据过滤同一个扁平消息列表。这是关键词检索,对于找到你依稀记得的某条特定消息,它工作得很好。
但决策不是关键词。决策是问题、一组选项、一组人以及团队汇聚到某个选项的那个时刻之间的关系。决策的实际文本可能是"好,就用 webhooks 吧,polling 的方式在把我们的 rate limit 吃光" – 口语化、有语境,只有当你已经知道它出现的 thread 时才有意义。或者可能是"可以,我来 prototype 一下",完全不包含它所代表的技术决策相关的任何关键词。
这就是架构上的不匹配:Slack 按时间顺序存储消息并通过关键词检索它们。决策是语义性的(关于含义)和关系性的(与任务、人员和结果相关联)。你在要求一个按时间顺序存储的系统执行语义检索,而它做不到,因为它从未被设计来做这件事。"可搜索"与"可找到"之间的差距结果是巨大的 – 你 Slack 历史中的每条消息在技术上都是可搜索的,但这并不意味着你需要的决策在实际意义上是可找到的。
"Slack 创建了历史上最大的组织决策库之一,其中几乎没有任何内容可以作为决策被检索 – 每个词都被完美保存,却几乎完全无法被找到。" – Ellis Keane
当你试图在 Slack 中找到旧决策时会发生什么
以下是不匹配在实践中的样子。假设你的团队三周前决定为一个 GitHub 集成从 polling 切换到 webhooks。你记得讨论发生在 #eng-backend,涉及几位工程师。所以你在该频道搜索"webhook"。
返回的内容:#eng-backend 中有史以来所有提到 webhooks 的消息。六个月前的错误报告。某人在完全不同的上下文中询问 webhook 重试逻辑的问题。某人分享的一篇关于 webhook 最佳实践的博客文章链接(绝妙的讽刺是,这篇文章在搜索结果中的排名可能比它旁边的实际决策还高)。决策本身 – 某个回复,在那个 thread 里有人说 polling 方式正在触达 rate limit – 被埋在第三页某处,看起来和周围每条消息毫无区别。
而那还是你大致记得用了哪些词的情况。很多时候,决策使用的语言如此依赖上下文,几乎像被加密了一样。"就用方案 B 吧"完全不包含"webhook"这个词,尽管方案 B 就是 webhooks。"可以,我来 prototype 一下"甚至不包含"方案"这个词。决策的真正时刻往往是整个 thread 中最短、关键词最少的消息,因为到那时对话中的每个人都已经有了上下文,只是在确认对齐。
我发现这作为信息架构问题确实很有趣(有趣,也在你是那个做搜索的人时有点令人恼火)。Slack 创建了历史上最大的组织决策库之一,其中几乎没有任何内容可以作为决策被检索 – 每个词都被完美保存,却几乎完全无法被找到。
为什么决策日志是一座有更好指示牌的墓地
标准建议,如果你去寻找解决方案,是维护一个决策日志。一个 Notion 数据库,一个专用的 Slack 频道(提议这个的人似乎没意识到其中的讽刺),一个 wiki 页面 – 某个在决策发生时记录它们的统一地方。
我们试过这个。坚持了大约六周。前两周很好 – 每个人都投入,条目很详细,日志真的很有用。到第三周,条目开始变得零散。到第五周,只有一个人还在更新,写着"决定了关于 auth 的某件事"这样的内容,没有链接,没有上下文,没有说明谁参与或替代方案是什么。到第六周我们悄悄放弃了。
问题不在于我们的团队缺乏纪律(也许是,但那不是这里的关键问题)。问题在于决策日志恰好在最错误的时刻征收"税"。你刚刚进行了一次富有成效的讨论,你们达成了一致,有人准备开始构建 – 现在你需要暂停,打开另一个工具,写一份摘要,标记相关人员,并链接回原始对话。每个决策花三到五分钟,对于一个每天在频道和 thread 之间做出五到十个有意义决策的团队来说,这种开销累积成没有人愿意承担的事情。
而且系统只在 100% 合规时才有效。一个只有 70% 决策的决策日志在某些方面比根本没有日志更糟,因为现在你要检查两个地方,两个都不信任。你看日志,决策不在那里,所以你还是去搜索 Slack – 你回到了起点,只不过还多花了两分钟检查日志。
决策不是事件 – 它们是梯度
手动记录失败的部分原因是它假设决策是离散的、可识别的时刻。实际上,大多数决策通过对话逐渐出现,"决策时刻"往往真的很模糊。
想想一个典型的工程决策实际上是如何展开的。有人在 Figma 评论中提出一个担忧:"这个交互模式在手机上可能不起作用。"工程师在 Slack thread 中回复,标记原始评论:"是的,我看了一下 – 组件库不支持它。"设计师在同一个 thread 中提出了替代方案。工程师说"可以,我来 prototype 一下"。两天后,一个实现替代方案的 PR 被提出,Linear issue 被更新。
决策在哪里做出的?是在发现问题的 Figma 评论中?是在提出替代方案的 Slack thread 中?是工程师说"可以"的那一刻?是实现它的 PR?实际上,决策分布在所有这四个时刻,跨越两个工具和三天。它不是你可以记录的一个事件 – 它是一个梯度,解析成了一个结果,而我们知道做出了决策的唯一原因是代码改变了。
我认为这是大多数"决策追踪"建议搞错的部分。它把决策当作你可以捕获的东西,就像记下电话号码。但大多数真实决策是你重建的东西 – 你看看发生了什么变化,沿着导致它的对话向后追踪,并在事后拼凑出推理。这意味着你需要的系统不是日志。而是图谱。
图谱给你日志无法给予的东西
图谱跨工具和时间连接信号。不需要有人手动写"我们因为 rate limit 决定使用 webhooks",图谱将讨论了 rate limit 的 Slack thread、追踪集成工作的 Linear issue、实现了 webhooks 的 PR,以及参与对话的人员联系起来。决策不是被记录的 – 它可以从已经发生的事情之间的连接中重建。
实际差异在特定场景中体现。webhook 决策三周后,一位新工程师加入并问道:"我们为什么用 webhooks 而不是 polling 来连接 GitHub?Polling 看起来更简单。"没有连接的系统,有人会说"哦,我们之前决定的",没人记得是哪个频道,有人花十五分钟搜索 Slack,他们要么找到,要么(更可能的是)凭记忆重建推理,这很危险,因为记忆不可靠,而原始推理几乎肯定比任何人三周后记得的更有细微差别。
有了图谱,工程师查看 GitHub 集成任务。触及该任务的每个信号都被关联:关于 rate limit 的原始讨论,评估 polling 与 webhooks 的 thread,实现更改的 PR。完整的决策追踪,从头到尾,无需任何人搜索任何内容,也无需任何人记录任何内容。
差距不在于"好的搜索"与"差的搜索"之间 – 而在于关键词检索和关系检索之间。决策由它们与任务、人员和结果的连接所定义,而不是由用来表达它们的词语定义。
不出现在任何仪表板上的成本
说实话,我对任何声称这些软成本的精确数字的人都持怀疑态度("团队每周浪费 X 小时"类型的统计数据总是感觉像是从期望的结论反向推导出来的),但以下是我们在自己团队中观察到的。
最明显的成本是重新讨论 – 当没有人能找到原始决策时,团队只是重新打开它,有时因为人们真的不记得了,有时因为新团队成员有合理的问题而没有人能给出具体答案。在我们有办法将决策追踪到来源之前,我们定期在已解决的问题上重新讨论,每次重新讨论都有自己的开销:会议时间、争论你相当确定已经解决的事情的情绪疲劳、原始推理比任何人记得的更有细微差别的那种挥之不去的怀疑。
更微妙的成本是入职过程中发生的事情。新团队成员的每一个"为什么这样做?"问题都会打断曾参与原始决策的人,而每次有人问,答案都从记忆中重建,每次讲述都稍稍偏离原始推理 – 就像一个传话游戏,只不过电话是企业软件,消息是"为什么架构这样工作"。随着时间积累还会出现可信度差距:"我们用了 webhooks"比"我们用了 webhooks,因为 polling 占用了我们 GitHub API 限流的 40%,在高峰时段我们正在遭遇限速"分量更轻。推理是让未来的工程师评估决策在情况变化下是否仍然有效的东西,而那个推理就在某个 Slack thread 里,被完美保存,实际上几乎不可见。
停止让决策消失在 Slack 滚动中。Sugarbug 自动追踪完整的决策追踪 – 从 Slack thread 到 Linear issue 再到 PR。
Q: 为什么在 Slack 中找到旧决策如此困难? A: Slack 按时间顺序存储消息,而非按含义。埋在 thread 里的决策看起来与其他任何回复一模一样 – Slack 搜索可以匹配关键词,但不读完整的对话上下文就无法区分"我们决定使用 Redis"与"我们该用 Redis 吗?"。时间越久越难,因为你失去了使搜索首先可行的上下文线索(谁参与、哪个频道、哪一周)。
Q: Sugarbug 会自动追踪在 Slack 中做出的决策吗? A: 会。Sugarbug 对来自 Slack 和其他已连接工具的传入信号进行分类,识别类似决策的模式 – 引用任务、涉及受指派人员并导致状态变化或 PR 的 thread。这些被链接到知识图谱中的相关任务,因此你可以从任务追踪决策追踪,而不是搜索 Slack 历史。
Q: 决策日志与用于决策的知识图谱有什么区别? A: 决策日志需要有人在决策发生时手动记录每个决策 – 注意到它,暂停,总结,标记,链接。知识图谱从流经你工具的信号中推断决策,并自动将其与任务、人员和对话关联起来。前者依赖每位团队成员的持续纪律;后者在后台从已发生的活动中运行。
Q: Sugarbug 能从 Slack 以外的工具中提取决策吗? A: Sugarbug 连接 Slack、GitHub、Figma、Linear、Notion、电子邮件和日历。决策往往跨越多个工具(Figma 评论导致 Slack thread,然后到 PR),知识图谱在所有已连接的界面上关联信号。无论对话从哪个工具开始,你都能看到完整的追踪。
Q: 这与直接使用 Slack 的内置搜索有何不同? A: Slack 搜索查找包含特定关键词的消息。知识图谱查找消息、任务和人员之间的关系。当你在寻找一个决策时,你很少在搜索一个词 – 你在搜索团队选择一种方法而非另一种的时刻,而那个时刻由它与其他信号的连接定义,而不是由用来表达它的词语定义。
---
如果决策不断消失在你的 Slack 历史中,问题不在于 Slack – 而在于没有任何系统在监视那些重要的时刻并将它们与它们所塑造的工作联系起来。这正是我们构建 Sugarbug 要填补的空白。