1. 缘起
博客攒了 300+ 篇,标签一直没管过。
前几天想找「我写过哪些关于稳定性的东西」,在标签页翻了半天没找着,才下决心重做。
原来的样子不好看。
- 124 个标签,其中 82 个只用过一次,占三分之二;
- Java 一个标签挂了 105 篇,占全站三分之一;
- 另一头是「穿布鞋的马云」「StringBuffer的区别」这种,一辈子只用一次。
标签列表点进去一半是单篇,这就不叫导航了。
2. 前后对比
- 标签种数:124 → 27
- 只用过一次:82 → 1
- 标签槽位:412 → 334
- 无标签文章:11 → 49
主要标签的去向:
- Java 105 篇 → java 63、性能 10、中间件 7
- mysql 23 篇 → 存储 13、性能 5、运维 3
- linux 21 篇 → 运维 18
- idea 15 篇 → 13 篇不再有标签
比数字更重要的,是标准变了:标签回答「这篇在解决什么问题」,不再是「用了什么产品」。
mysql 那 23 篇最能说明问题。13 篇讲数据怎么组织,归了存储;5 篇讲怎么让查询更快,归了性能。
同一个产品标签拆进两个关注点,这个区分旧体系根本看不出来。
无标签文章从 11 篇涨到 49 篇,大多是注册码、激活密钥、IDE 快捷键这类,靠 category 和 keywords 兜住就够。
3. 怎么做的
第一轮是纯机械的:统一大小写、合并同义词、长尾降级。
- Ubuntu / centos / shell / ssh 合并成 linux;
- mongo 并入 mongodb,github / gitLab 并入 git;
- HashMap / jdk / 多线程 / jvm 并入 java。
124 收成 30 个,但方向不对:剩下的还是产品名,java 反而涨到了 111 篇。
第二轮换成按关注点划的词表,27 个:
架构、稳定性、性能、高并发、存储、缓存、分布式、中间件、可观测、安全、工程效能、
容器、网络、运维、自建服务、AI 工程、LLM、Agent、java、go、算法、成长、阅读、效率、面试、业余无线电、水族。
这个没法查表。一篇 MySQL 文章该归性能还是存储,只能读正文。
于是开了 20 个 agent 并行,每个认领 16 篇,读完正文再打 1 到 3 个标签。
跑之前先拿 15 篇试了一轮,把边界歧义定成规则,再跑全量。
被砍掉的长尾没丢,全部降级进 keywords,站内搜索照样能命中。
4. token 消耗
- 试点:3 个 agent,15 篇,10.8 万;
- 全量:20 个 agent,292 篇,93 万;
- 合计:23 个 agent,约 104 万,平均每篇 3400。
这只是子 agent 的消耗,不含主对话本身的上下文。