一个用户的观察,和一点考据。
One listener's observation, plus a little digging.
···
01有一天,推荐忽然准得有点吓人。One day the recommendations got uncomfortably good.
我用 Spotify 十多年了。这十年里我对"推荐"的期待一直很低 —— 偶尔懂我,大部分时候在猜。但最近打开 Daily Mix,我愣了一下:整串放下来,没有一首想跳过。那不是"发现新东西"的惊喜,而是更怪的一种感觉 —— 这就是我自己会排的歌单,只是我没排。
惊喜是可以做出来的,准是做不出来的。所以我去查了查,他们到底改了什么。
I've been on Spotify for over ten years, and for most of them my expectations of the algorithm were low — occasionally it got me, mostly it was guessing. Then Daily Mix started running end to end with nothing I wanted to skip. Not the thrill of discovery, but something stranger: a playlist I would have made myself, except I didn't. Surprise is easy to engineer. Being right isn't. So I went looking for what changed.
02Daily Mix 不是 Discover Weekly 的兄弟,是它的反面。Daily Mix isn't Discover Weekly's sibling — it's its inverse.
我查到的第一件事,也是最容易被忽略的一件:这两个产品的方向是相反的。Discover Weekly(2015 年 7 月)给你的是你没听过的东西;Daily Mix(2016 年 9 月)给你的是你听过的东西。Spotify 自己的解释是,它先把你的收听历史聚成几个"口味簇"(最多六个),再沿着每一簇往外长一点 —— 主体是熟悉、甚至最爱的歌,只掺很少一点发现。当年有媒体直接把它叫作"反过来的 Discover Weekly"。
说白了:Discover Weekly 回答的是"我想听点没听过的";Daily Mix 回答的是"我不想做决定"。后者是频率高得多的需求 —— 一天可能出现三次,而前者一周一次。
The first thing I found is the easiest one to miss: the two products aim in opposite directions. Discover Weekly (July 2015) hands you things you've never heard. Daily Mix (September 2016) hands you things you have. Spotify's own explanation is that it clusters your listening history into taste clusters — up to six — then extends each one outward, mostly familiar and even favorite music with only a small amount of discovery. The trade press at the time called it an inverse Discover Weekly.
Put plainly: Discover Weekly answers "I want something new." Daily Mix answers "I don't want to decide." The second need shows up three times a day; the first, once a week.
03那个没被修掉的 bug。The bug they didn't fix.
我一直记得听过这么个故事:做推荐的时候出了个 bug,本该全是新歌的歌单里混进了用户已经听过的歌;结果数据反而更好,于是团队没修它,把它留成了功能。我去找源头 —— 它是真的,但第一手出处比我以为的更早、也更朴素。
2015 年 11 月,Discover Weekly 上线四个月后,Spotify 自己的工程博客复盘了这个项目(署名 Sofie Lindblom,与产品负责人 Matt Ogle 合写)。文章里说早期的内容筛选很乱,有些歌错得近乎滑稽;然后有一句轻描淡写的话 —— 有个 bug 偶尔会漏进一些"半熟悉"的内容,他们把它留了下来,因为
「有一两首你认得的歌,似乎能让你开始信任这个歌单。」"having one or two things you recognize seems to build trust in the playlist."
需要说清楚的是:流传更广的那个版本 —— "已经听过的歌"、"修掉之后数据掉了" —— 来自 Derek Thompson 2017 年的书《Hit Makers》,比 Spotify 原文锋利得多。原文只说了"半熟悉",也没给任何数字。我自己转述了好几年,也是记成了更戏剧化的版本。
但真正有意思的不是谁的版本更准,而是接下来发生的事:一年之后,那个"漏进来的熟悉感"变成了一个独立产品 —— Daily Mix。没有人说过这两件事有因果关系,但这个顺序,很难不让人多想。
I'd carried this story around for years: while building the recommender, a bug let songs the user had already heard leak into a playlist meant to be all-new — engagement went up, so the team kept it. I went looking for the source. The story is real, but the first-hand version is older and much quieter than the one in circulation.
In November 2015, four months after launch, Spotify's own engineering blog wrote up the Discover Weekly project — bylined Sofie Lindblom, written with product lead Matt Ogle. It describes early filtering as messy, with tracks that seemed comically misplaced, and then notes almost in passing that a bug which occasionally let semi-familiar content through ended up staying in, because one or two recognizable songs seemed to build trust in the playlist.
Worth being precise: the sharper version everyone repeats — already-listened-to songs, engagement measurably dropping after the fix — comes from Derek Thompson's 2017 book Hit Makers, not from Spotify. The original says "semi-familiar" and gives no numbers. I'd been retelling the dramatic version myself for years.
But the more interesting part isn't whose version is more accurate. It's what happened next: a year later, that leaked familiarity became a product of its own. Nobody has claimed the two are causally linked. The sequence is hard to un-see.
04引擎盖底下,这十年确实换过东西。Under the hood, ten years of real changes.
好奇心到这里就收不住了,所以我把公开的技术资料翻了一遍。大致是四层:最底下是协同过滤(2014 年 Chris Johnson 的隐式反馈矩阵分解 —— 从"你听了什么"而不是"你打了几分"里学);再往上是内容侧的补位,2014 年收购 The Echo Nest,同年有人用 CNN 直接从音频频谱去预测一首歌在协同过滤空间里的位置,专门解决新歌没有播放数据的冷启动;2018 年的 BaRT(Bandits for Recommendations as Treatments)是首页那套 explore / exploit 的赌博机框架 —— 探索多少、利用多少,是被显式建模出来的,不是拍脑袋定的。
而最能解释"为什么最近忽然变准"的,大概是 2025 年 9 月他们发的那篇通用用户表征(generalized user representations):把音频编码和协同编码合到一个用户向量里,并且同时看三个时间窗 —— 半年、一个月、一周。长期口味、中期漂移、这周在听什么,三层叠在一起,而且近实时刷新。
这一条我觉得是关键。以前的推荐系统更像"你是谁";现在它同时在回答"你最近是谁"。我这个十年老用户身上积了太多历史包袱 —— 能把这周的我从十年的我里面拆出来,准度的体感差别就是这么来的。
老实说一句:关于 Daily Mix 本身,Spotify 在 2025–2026 年并没有公开宣布过任何改动。2025 年那些新闻讲的是 Discover Weekly 十周年改版、Taste Profile、还有能用一句话生成的 Prompted Playlists。所以"Daily Mix 变准了"这件事,是我作为用户的体感,顶多是底层表征升级顺带的结果 —— 不是官方说法。
Curiosity took over, so I read through what's public. Roughly four layers. At the bottom, collaborative filtering — Chris Johnson's 2014 work on logistic matrix factorization for implicit feedback, learning from what you played rather than what you rated. Above it, content-based backfill: Spotify bought The Echo Nest in 2014, and that same year a researcher showed you could run a CNN over raw audio spectrograms to predict where a track would sit in the collaborative-filtering space — solving cold start for songs with no play history. Then 2018's BaRT (Bandits for Recommendations as Treatments), the contextual-bandit framework behind the Home page, where how much to explore versus exploit is modeled explicitly rather than guessed.
The best explanation for why it suddenly feels sharper is probably their September 2025 paper on generalized user representations: one user embedding that fuses an audio encoder and a co-occurrence encoder, computed over three time windows at once — roughly six months, one month, one week — and refreshed close to real time.
That's the part I keep thinking about. The old systems modeled who you are. This one also models who you've been lately. Ten years of history is a lot of baggage to carry; being able to separate this-week-me from decade-me is exactly what "it got more accurate" feels like from the outside.
One honest caveat: Spotify has announced nothing about Daily Mix specifically in 2025 or 2026. The news in that window was Discover Weekly's ten-year refresh, Taste Profile, and prompt-generated playlists. So "Daily Mix got better" is my experience as a user, at best a downstream effect of the embedding work — not a company claim.
05熟悉度不是懒惰,是信任的入口。Familiarity isn't laziness — it's the on-ramp to trust.
把那个 bug 和那些论文放在一起看,有条线就清楚了:推荐的难点从来不只是"猜得准",而是"让人愿意继续听下去"。Spotify 负责个性化研究的 Mounia Lalmas 讲过同一件事的两端 —— 全是陌生歌,用户会挫败地关掉;全是熟悉歌,用户会无聊地关掉。要拿捏的是那个微妙的平衡。
换个说法:那一两首你认得的歌,不是给你听的,是给这个系统开信用证的。它在说"我懂你",然后你才愿意把第三首的决定权交出去。纯新歌歌单其实是在向一个还没建立信任的对象连续索取十次授权。
Put the bug and the papers side by side and a line appears: the hard part of recommendation was never only accuracy — it's getting someone to keep listening. Mounia Lalmas, who leads personalization research at Spotify, has framed both failure modes publicly: an all-unfamiliar playlist gets abandoned in frustration, an all-familiar one gets abandoned in boredom. The job is the delicate balance between them.
Another way to say it: the one or two songs you recognize aren't there for your ears. They're collateral for the system's credibility. They say "I know you," and only then will you hand over the decision on track three. A pure-discovery playlist is asking a stranger for ten consecutive permissions.
06我从这里拿走的东西。What I'm taking from this.
第一,异常出现的时候,先问"为什么数据变好了",再决定修不修。那个 bug 值钱的地方不在于它是个 bug,而在于有人注意到了指标在动,并且忍住了没有立刻按工程直觉去修。团队的默认动作是恢复"正确";而这里正确的定义本身就是错的。
第二,taste 不在于产出了多少想法,而在于认得出哪一个意外值得留下。这一年我在很多地方反复撞到同一个结论 —— 大家能做的东西越来越像,差距落在判断力上。
第三,作为用户的一点私心:十年之后还能被一个用了十年的产品惊到,这件事本身挺难得的。大部分软件在我这里的曲线是先变好、再变吵、然后变成我绕着走的东西。Spotify 有那么几年也在那条路上。但推荐这条线是真的一年比一年好 —— 而且好在它更安静了,不是更花哨了。
First: when an anomaly shows up, ask why the metric moved before deciding whether to fix it. The valuable thing about that bug isn't that it was a bug — it's that somebody noticed the number move and resisted the engineering reflex. The default action is to restore correctness. Here, the definition of correct was itself wrong.
Second: taste isn't how many ideas you generate, it's recognizing which accident is worth keeping. I keep landing on some version of this — as the tooling flattens, the gap moves to judgment.
Third, selfishly, as a user: being surprised by a product you've used for ten years is rare. Most software in my life goes good, then noisy, then avoided. Spotify spent a few years on that path too. But this particular line has gotten better every year — and better by getting quieter, not flashier.
···
我们大概会在"AI 应该给我新东西"这件事上花掉未来十年。而 Spotify 十年前不小心发现的是反过来的:在给你新东西之前,先证明你懂我。那个 bug 之所以该留下,是因为它偶然说对了一句人话。
We'll probably spend the next decade insisting that AI should show us new things. Ten years ago Spotify tripped over the opposite: before you show me something new, prove you know me. That bug deserved to stay because it accidentally said something true.
出处 / sourcesSpotify Engineering, 2015 — Discover Weekly retro · Spotify Newsroom, 2018 — How Your Daily Mix "Just Gets You" · RecSys 2018 — Explore, Exploit, Explain (BaRT) · Spotify Research, 2025 — Generalized user representations · Dieleman, 2014 — audio CNNs for cold start · Derek Thompson, Hit Makers (2017)