1. 为什么要给知识工作单独做一套插件
我做过一个内部项目,名字就叫 knowledge-work-plugins。它不 fancy,说穿了就是一组插件,把平时散落在浏览器、文档、聊天记录和脑子里的信息,统一收进一个可以检索、可以复用、可以输出的工作台。做之前我以为最大的困难是技术选型,真正做完后才发现,最难的是想清楚一个问题:知识工作到底需要什么,而不是工具能做什么。
知识工作者和程序员的差别在于,程序员的产出是代码,知识的产出是判断、方案和内容。代码能通过测试驱动去验证,而知识工作的验证周期往往很长,可能一次项目复盘后才知道当初记录够不够。偏偏很多人的知识管理方式,是收藏了一堆文章、截图、会议纪要,到了真正要用的时候,却翻不出来。原因很简单:收藏是零成本的,检索是高成本的,而大多数工具只解决了前半段。
knowledge-work-plugins 的出发点也很朴素:把“采集、处理、检索、输出”整条链路打通,让知识从一个静态的“囤积物”变成一个动态的“工作流”。它不是某一个笔记软件的替代品,也不绑定特定平台,而是以插件的形式嵌入现有环境,在必要的地方补上缺失的环节。这篇文章不会讲太多概念,更多是把我做这套插件时的设计思路、踩过的坑、以及实际使用中的配置流程分享出来。代码量不会很大,但背后的取舍值得聊。
1.1 知识工作的真实痛点
我在不同团队里观察过,知识工作者的日常工作流大多长这样:早上收邮件,聊天工具里蹦出来几条链接,浏览器开着一堆标签页,有的是一篇技术博客,有的是一份竞品资料,还有的是某个用户反馈截图。然后开始写方案,写到一半想引用某篇文章里的一个观点,结果忘了收藏在哪,只能重新去搜索。好不容易找到,又发现当时收藏时只存了链接,现在已经失效了。
这个场景不是个例。知识工作的痛点从来不是“缺工具”,而是“工具各自为政”。笔记软件管文字,浏览器管网页,文档系统管正式文件,聊天记录管碎片信息。每样东西都有归处,但归处之间没有通道。结果就是,信息被切成了碎片,记忆被切成了标签,知识被切成了收藏夹。
还有一层隐性痛点,就是记录时的“格式负担”。我见过不少人,因为觉得笔记软件里的模板太复杂、双链要理解概念、标签要设计层级,索性放弃记录。知识管理要是变成一件需要额外学习成本的事,绝大多数人是坚持不下去的。所以插件的第一原则应该是:进入成本足够低,使用时不打断当前思路。
1.2 插件应该解决的,和不该解决的
动手写插件之前,我给自己定了几条边界,这里直接说清楚,能帮后来人省不少弯路。
第一,插件只解决“输入到输出之间的连接问题”,不解决“存储载体的替换问题”。比如我把采集的网页正文统一转成 Markdown 文件,放进某个本地目录,而不是发明一个新的数据库格式。存储载体越通用,数据越安全,迁移越简单。
第二,插件不做大而全的编辑器。知识工作的核心动作是“记录、组织、检索、输出”,不是排版,不是做PPT,也不是做项目管理。所以编辑器能力交给成熟工具,我只需要提供快捷键和模板,尽量做到“随手一按,内容就进去了”。
第三,不强制改变用户原有的工作习惯。比如有人习惯用标签,有人习惯用目录,有人习惯用全文搜索。插件要做的是兼容这些模式,而不是规定一种理想模式。兼容的意义在于,知识工作本身是高度个人化的,不适合用统一流程去约束。
当然,不该解决的也包括哪些?比如实时协作、权限管理、审计日志,这些是公司级系统的范畴,不应该是个人插件的负担。边界划清楚之后,开发量立刻小了很多,真正需要花心思的,反而是那些看起来不起眼但每天都要用的小功能。
1.3 核心目标:从记录到复用的闭环
如果只用一个词描述这套插件的作用,我会选“闭环”。知识管理最怕的是断层:采集了不处理,处理了不检索,检索了不输出。每断一层,前面做的动作就接近白费。
闭环的第一步是采集,把外部信息集中到一个收件箱目录,不分类、不打标签,纯粹先收下来。第二步是处理,给每条内容补充上下文,比如来源链接、捕获时间、相关项目、当时的想法。第三步是检索,通过全文搜索、标签过滤、语义相似度把知识捞出来。第四步是输出,从检索结果直接生成文档草稿、周报素材或会议纪要。
这四步在 knowledge-work-plugins 里分别对应四个插件模块:收件箱插件、元数据清理插件、检索增强插件、模板导出插件。模块之间通过文件系统和配置文件通信,没有复杂的服务依赖。这样做的好处是,任何一个模块坏了都不影响其他模块,而且自己可以单独替换。
我特别想强调“输出”这一步。很多知识管理方案只做到检索就停了,好像找到了就万事大吉。但实际上,检索到只是中间态,最终的价值要体现在某个产出里。所以插件里专门做了一个“引用板”的功能:检索到一条资料,按一下快捷键,它能以标准引用的形式插入当前文档,并自动附带来源和日期。这个小功能看起来不起眼,却是整个闭环里最提升幸福感的部分。
2. 整体设计与模块划分
这套插件在设计时参考了知识工作里常见的信息流模型:输入、处理、检索、输出。整个架构也是按照这个模型拆的,没有为了微服务而微服务,也没有把功能堆到同一个脚本里。下面把每个模块的设计思路和核心接口讲清楚。
2.1 采集层:收件箱与自动清理
采集层解决的第一件事,是怎么用最小成本把内容搬进来。我做的第一个采集插件是浏览器扩展,把当前页面的正文提取出来,转成 Markdown,存到本地收件箱目录。之所以选择浏览器扩展而不是直接把内容复制到剪贴板,是因为网页正文提取过程中可以去掉导航、广告、侧边栏这些噪音,保留标题、作者、发布时间这些关键元数据。
采集层还有一个容易忽略的问题:重复内容。同一个网页,第一次读完收藏了,过了两周再打开,又会触发一次采集。所以收件箱插件在写入前会计算内容的哈希值,如果已经存在同一条记录,就只更新访问时间,不新增文件。这样处理过后,收件箱里的内容虽然多,但不会出现明显的重复堆积。
采集层的第三个设计是“暂存区”。有些内容不适合立刻处理,比如一篇长文、一段视频稿、一份PDF报告。采集进来之后先放在inbox/pending目录,等有空的时候统一处理。暂存区不是垃圾场,它有一条定期提醒的规则,超过 7 天未处理的内容会在状态栏给出提示,避免收件箱越积越多。
2.2 处理层:元数据补充与标准化
处理层的核心任务,是把原始采集内容变成“可以被检索、被引用、被理解”的知识单元。标准化的第一步是文件名。我在插件里定义了一套规则:YYYYMMDD_HHmm_来源_标题.md。文件名里带上时间和来源,排序的时候天然就有一条时间线,不需要额外维护索引。
第二步是元数据头。每个 Markdown 文件的开头都会生成一段 YAML 格式的元数据,包含标题、作者、来源链接、采集时间、标签、关联项目。这样写是为了后续检索时,不用全文扫描,只读取头部信息就能做列表展示。如果采集来源本身提供了 Meta 信息,插件会尽量填完整;如果没有,就留空,让用户在处理时补充。
第三步是给内容做“净化”。网页转出来的 Markdown 往往有残留的代码块、重复段落、无意义的分隔符,处理层会在写入时做一轮清理。清理规则我用的是白名单机制:只保留段落、标题、列表、引用、图片、代码块这几类结构,其他元素一律丢弃。白名单机制的好处是可控,不会因为某次网页结构特殊而把正文误删。
2.3 检索层:全文、标签与语义线索
检索层是我花时间最多的地方。因为采集和处理做得再好,如果不好找,整个系统还是等于零。检索层用了三层机制:
第一层是全文搜索。基于文件名和正文内容,做关键词匹配,速度快,适合确定性的搜索场景,比如我知道里面包含某个专有名词。这个机制不依赖任何外部服务,离线环境下也能用。
第二层是标签与属性过滤。通过元数据里的标签、来源、时间范围、项目标记,做结构化筛选。比如我想找“2024年关于某客户的需求文档”,只要过滤项目标签和时间范围,结果很快就能出来。
第三层是语义线索。为了避免“知道大概是什么但记不清关键词”的情况,我给插件接了一个本地语义索引模块。它不需要云端接口,只在本机把文本切块后生成向量,再计算相似度。实测下来,用“用户不喜欢复杂的配置流程”这种描述句也能检索到相关文档,比纯粹依赖关键词的体验好很多。
检索结果统一在搜索结果面板里展示,点击某条结果会打开对应文件,并且高亮匹配位置。这里的交互原则很简单:减少跳转次数。从输入关键词到看到内容,最多两次点击,不能再多。
2.4 输出层:模板、引用与一键成稿
输出层是很多知识管理方案忽视的部分,但在我看来,它是“从积累到价值”的临门一脚。我做得最顺手的是一个“快速成稿”插件,用户选择一个文件夹,输入主题,插件自动扫描该目录下最近三个月内的笔记,按照时间顺序和标签权重生成一份大纲,再根据模板填充成文档草稿。
这里的模板不是简单的字符串替换,而是支持变量插值和条件区块。比如周报模板里可以写:
# 本周进展 {{#entries}} - {{date}} | {{project}} | {{summary}} {{/entries}} # 下周计划 {{#if plans}} {{plans}} {{else}} (待补充) {{/if}}模板处理器在渲染时会执行简单的逻辑判断,把传入的数据对应填充进去。这样做的价值在于,知识库里投入了时间和思考的笔记,不会只躺在文件夹里睡觉,而是能按需变成周报、月报、项目复盘、会议纪要甚至是文章初稿。
输出层还做了一个“引用板”功能,类似于临时收藏夹。用户在阅读笔记时,按Alt+1把当前文件加入引用板,写完当前文档后,按Alt+2把所有引用板内容按统一格式一次性插入到文末。这个操作避开了“复制、粘贴、改格式”的机械劳动,是我日常使用频率最高的功能。
3. 核心能力的实现细节
前面讲的是模块划分,这一部分说说具体实现。我把每个模块里比较关键的技术点拆出来,讲清楚为什么这么做,以及做的时候要注意什么。
3.1 文本提取与标准化
网页正文提取是采集层的第一个技术难点。最初的版本我用正则表达式去抓article、main、content这些标签,结果发现很多页面不按标准结构来,导致提取结果经常缺头少尾。后来换了一种思路:先用某个通用解析库把 HTML 转成 DOM,再用文本密度算法来识别正文区域。
简单说一下文本密度算法的直觉:正文区域通常有较长的连续文本,且段落分布均匀;而导航、广告、版权信息这些区域,要么文本很短,要么夹杂超链接。计算每个候选区域的文字长度和链接密度,取综合得分最高的区域作为正文,再经过清理,效果比固定规则好很多。
还有一个容易出问题的地方是编码。现在大部分页面是 UTF-8,但偶尔会遇到 GBK 编码的旧站点。插件在提取后会做编码探测,如果发现中文乱码,会自动用备选编码重新解码。这个细节很不起眼,但能省掉很多“看起来像乱码,实际是编码没识别”的烦恼。
提取完成后的标准化,统一输出为 Markdown。标题层级做降级处理,原页面的 H1 变成#,H2 变成##,避免一篇文档里出现多个一级标题。图片地址如果是相对路径,会拼上当前页面的域名,防止图片丢失。
3.2 语义索引与本地优先
语义索引模块是这套插件里最“重”的一部分,也是本地优先原则执行得最彻底的一部分。很多同类工具会把文本发送到云端做向量化,虽然方便,但我不太愿意让私人笔记过一道外部服务。所以我在实现时,采用了本地嵌入模型,输入是文本块,输出是固定维度的向量,整个过程不离开本机。
具体流程是:当处理层完成一篇笔记的标准化后,插件会把正文切成若干文本块,每块大约 512 个字符,相邻块之间有适度重叠,以保证边界处的语义不丢失。切完之后,每个块生成一个向量,连同原文标识一起存入本地向量数据库。检索时,用户输入的查询文本也走同样的模型,生成查询向量,然后用余弦相似度排序,返回最相近的若干个文本块。
本地模型也有代价,就是首次启动时加载较慢,大约需要几秒。我的处理方式是在软件启动时做一次预加载,等用户真正用到检索功能时,模型已经在内存里了。另外,笔记文件是持续增长的,索引不可能每次全量重建,所以插件监听文件目录,新增或修改时只对增量部分做向量化,这样能保持索引始终同步。
3.3 模板引擎与快速插入
模板引擎不算新鲜东西,但我在设计时特意加了一个约束:模板必须保持“所见即所得”。什么意思呢?用户打开一个模板文件,看到的应该是一份带占位符的 Markdown 文档,而不是一段需要理解的程序代码。
为了做到这一点,模板语法尽量贴近自然语言。条件部分使用{{#if}}和{{/if}},循环部分使用{{#entries}},阅读起来和文档结构一致。渲染时,模板引擎按行解析,遇到控制标记就执行对应的逻辑,遇到普通行就原样输出。
快速插入功能也依赖模板。比如开会时随手记了几个要点,按下快捷键后,插件会自动把这些要点整理成“会议信息 + 决议 + 待办事项”三段式模板。整理的动作不涉及人工智能,就是简单的正则匹配:含“待办”“TODO”“下一步”的行直接归类到待办区;含“决定”“确认”“结论”的行归类到决议区;其余内容保留在信息区。这个方案简单,但效果出乎意料地好,因为会议纪要的核心本来就是这三类信息。
3.4 快捷键与自动化联动
知识工作插件如果只靠鼠标点来点去,效率会大打折扣。快捷键设计上,我给核心动作分配了全局快捷键,保证在任意软件里都能触发。采集动作默认是Alt+Shift+A,临时引用是Alt+Shift+Q,打开收件箱是Alt+Shift+I,快速搜索是Alt+Shift+F。
快捷键的数量控制在五个以内,超过五个人就记不住了。更复杂的功能不配快捷键,而是通过命令面板输入名称搜索执行。命令面板的体验可以类比为“一个能记住所有操作入口的搜索框”,输入关键词就能找到对应命令,降低记忆成本。
自动化联动的部分更实际。我做了两个触发规则:第一个是每周五下午自动生成当周的笔记清单和未处理收件箱数;第二个是当系统检测到某个项目目录里的文件数量超过一百个时,自动提醒是否需要归档整理。这些都是轻量级脚本,在后台跑不占资源,但能让知识库长期保持在一个整洁的状态。
4. 安装配置与常见坑
再好的设计,安装和配置体验翻车也会劝退人。这一部分把安装步骤、关键配置项和常见问题整理成一份偏实战的参考,方便照着做。
4.1 环境要求与安装顺序
先说明环境要求。这套插件跑在主流桌面操作系统上,需要本机装有某个可扩展的编辑器(我开发时用的是通用编辑器体系),以及运行时环境。安装顺序有讲究,不要跳跃。
第一步,安装运行时环境,确认版本符合插件要求。第二步,安装编辑器本体,并开启扩展模式。第三步,通过扩展市场搜索 knowledge-work-plugins,一键安装插件包。第四步,安装外部依赖,包括文本提取解析器、Markdown 处理工具和一个本地向量数据库。第五步,重启编辑器,让插件加载依赖。
我在安装阶段踩过最大的坑就是依赖版本不一致。比如某个语义索引库需要特定版本的解释器,但系统里装的是另一个版本,插件加载时直接报错。后来我在插件启动脚本里加了前置校验,检测到环境不对先给出提示,而不是等运行到一半才崩溃。这个体验改进很直接,能让使用者省掉大量排查时间。
另外,尽量使用统一版本。插件包会锁定主依赖,但传递依赖偶尔会冲突。所以我在文档里强烈建议:先建一个独立的虚拟目录,所有依赖都装在这个目录里,不和系统全局环境混在一起。目录隔离后,升级插件或者做测试,都不会影响日常使用的环境。
4.2 关键配置项解析
安装完成后,第一次启动会生成一个配置文件,里面有几项需要根据个人习惯调整,我挑重要的说明。
第一项是inbox_dir,收件箱目录。默认指向用户目录下的Documents/Knowledge/inbox,可以改成任意路径。要注意的是路径里尽量不要有空格,因为某些命令行工具在解析带空格的路径时会产生歧义。我用的是全小写加下划线命名,兼容性最好。
第二项是tag_scheme,标签体系。这里有两种风格:扁平标签和层级标签。扁平标签就是前端、后端、项目X,层级标签类似于工作/某项目/需求。插件支持配置分隔符,默认是/。就个人经验来说,标签层级不要超过三层,否则维护成本会迅速上升。
第三项是semantic_threshold,语义检索的匹配阈值。默认值是 0.75,表示只有相似度大于 0.75 的文本块才会出现在结果里。如果检索结果太少,降低到 0.6;如果相关性太差,提高阈值。这个参数不好一次调对,建议用一周的真实检索记录来逐步校准。
第四项是auto_clean,自动清理开关。打开后,收件箱中超过设定天数的待处理文件会收到提醒。我建议不要设置太久,7 到 14 天是合理范围,超过 30 天大概率说明采集的内容已经过期了。
4.3 数据存储、备份与迁移
这套插件的数据存储设计从一开始就考虑了可迁移性。笔记文件是纯文本 Markdown,存放目录可以整体拷贝到另一台电脑;索引数据是本地向量数据库,导出后也能重建。不要低估这一个决策的重要性,大多数笔记工具把数据存在私有格式里,真要换工具的时候才发现这些年积累的内容带不走。
备份策略我采用三层。第一层是日常同步,将知识库目录实时同步到一个私有网盘或本地移动硬盘。第二层是每日定时备份,由插件生成带日期的压缩包,保留最近七天。第三层是季度快照,在项目节点或阶段复盘时手动打一次快照,保留长期版本。
迁移时有一件事容易遗漏,就是外链。笔记里如果引用的是绝对路径,换电脑后路径会失效。我的处理方式是:尽量使用相对路径,并且在采集时把网页链接保留在元数据里,需要时一键打开原始网页。这样即使本地文件结构变了,原始出处还找得到。
4.4 常见问题速查表
这一节把我在使用过程中碰到的高频问题整理成表格,方便排查。
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 浏览器扩展采集失败 | 网页使用了严格的动态渲染,静态提取拿不到正文 | 先用浏览器阅读模式打开,再触发采集 |
| 检索结果为空 | 语义模型尚未加载完成,或阈值设置过高 | 等待预加载结束,检查阈值并适当降低到 0.6 |
| 导入内容出现乱码 | 页面编码识别失败,源站点为旧编码 | 手动指定编码,再执行“重新提取”命令 |
| 快捷键无响应 | 全局快捷键被其他软件占用 | 在快捷键设置界面查看冲突,换一组组合键 |
| 模板渲染后内容为空 | 模板里的条件变量名与传入数据不一致 | 检查{{#if}}对应的字段是否存在于数据源 |
| 索引文件过大 | 文本切分粒度过密,向量数据膨胀 | 增大切分块长度,清理三个月以上的临时索引片段 |
这六类问题覆盖了大多数日常故障。如果还有疑问,先把日志级别调到debug,复现一次操作,然后查看插件日志。日志文件会记录每一步调用的接口和耗时,基本能定位到是哪个环节出了问题。
5. 实际场景中的操作流程
配置和原理讲完,来看在实际工作中怎么用。我按两个最常见的场景来说:一个是个人知识库的从零搭建,另一个是团队协作时的注意点。
5.1 个人知识库从零搭建流程
假设你是一个知识工作者,想用这套插件整理自己的资料,完整流程如下。
第一步,规划目录结构。目录不是越深越好,我建议控制在三级以内。顶层分为inbox(收件箱)、daily(日记与日志)、projects(项目资料)、reference(长期参考资料)。顶层目录稳定后不要轻易改动,否则很多元数据里的路径会失联。
第二步,配置采集入口。先安装浏览器扩展,登录常用站点后测试采集效果。测试时选择三种不同类型的网页:一篇长文、一个带较多代码的页面、一个内容很短的产品页。确认三种类型都能正确提取,收件箱文件正常生成。
第三步,制定最小处理流程。每天傍晚花 15 分钟处理收件箱:有价值的移动到projects或reference目录,补全标签和关联项目;没有价值的直接删除。处理流程要固定下来,才能形成习惯。
第四步,建立搜索入口。把常用检索命令设置成全局快捷键,日常写作时遇到不确定的内容,随手搜索,不再单独去浏览器找。语义检索会用一段时间收集相似内容,前期的效果可能不如关键词精确,但一周后你就会感受到它的价值。
第五步,生成输出模板。针对自己的工作内容,准备三个模板:周报、会议纪要、项目复盘。模板里写好引用板的插入位置,这样每周五写周报时,笔记素材能直接流入文档,不用重新回忆。
5.2 团队协作场景下的注意事项
个人使用和团队使用是两回事,尤其是知识库的共享与术语统一。如果你的团队也想用这套插件,有几个前置工作要做。
第一,统一标签基线。团队里每个人都有自己的标签习惯,A 喜欢用“需求”,B 喜欢用“用户需求”,检索时就容易出现漏查。建议先由一个人维护基础标签表,包含项目名、岗位、常用文档类型这几个核心维度,然后大家共用一份标签配置文件。这个文件放在项目仓库里,插件每次同步时拉取最新的版本。
第二,明确团队知识库的边界。不是所有内容都适合进共享库,比如个人思考、局部草稿、临时截图,应该留在个人收件箱里。团队库只放有复用价值的正式内容,比如调研报告、方案定稿、复盘记录。边界不清会导致共享库信息噪音过大,检索时反而找不到重点。
第三,注意敏感信息。知识库插件本身是本地优先的,如果配置了共享目录或云同步,就要仔细审查内容中是否包含不可外传的字段。我的建议是在采集后增加一个“敏感内容检查”步骤,插件会自动匹配常见的敏感词模式,发现后高亮提醒,由用户决定是否继续共享。
5.3 插件化前后的效率变化
我做了一个简单的对比测试,用两周时间记录同一类任务在“纯手动整理”和“插件辅助整理”下的耗时差异。
纯手动场景下,采集一篇网页需要打开笔记、新建文档、复制标题和链接、粘贴正文、手动整理格式,平均耗时 6 分钟左右。插件辅助场景下,从浏览器点击采集到收件箱文件生成,耗时约 10 秒,后续处理再花 2 分钟补标签和位置。整体节省了约一半时间。
检索方面差异更明显。手动模式下,从几十个收藏夹里找一份旧方案,平均耗时 8 分钟;插件模式下,用关键词或语义检索,平均耗时 30 秒。最惊喜的不是耗时缩短,而是那些“我以为自己没记过”的内容,其实都在知识库里,只是以前检索不出来。
输出方面的对比也很直观。过去写周报要翻看聊天记录、邮件、笔记,拼凑出本周做了什么事,耗时 40 到 60 分钟。用上插件后,每周五的周报生成流程变成:打开周报模板,插入引用板内容,花 10 分钟调整措辞,完成。这带来的不只是效率提升,更是周末前少了一项抵触心理负担。
6. 扩展与收敛
插件做久了,往往会陷入“什么功能都想加”的冲动。这一节聊两句,哪些方向值得扩展,哪些功能应该收敛。
6.1 与常见工具的集成思路
集成不应该以“替换”为目标,而应该以“补齐”为目标。比如你已经有一套成熟的文档系统,就不需要插件再造一套,更多是打通文件导入导出、链接跳转、标签同步这几件事。我在插件里做了一层适配器,通过配置文件声明外部工具的命令行入口,实现“从插件发起操作,在实际工具中落地”的效果。
举几个实际集成的例子。邮件客户端里的重要内容可以一键转发到收件箱,由插件的邮件解析模块转换成笔记。聊天工具的群组讨论记录可以定期导出为摘要,再通过模板生成成会议纪要。项目管理工具里的任务状态变更,可以触发插件记录,形成项目时间线文档。
集成时要特别注意回调循环。比如笔记更新触发了文档同步,文档同步又触发笔记更新,最后变成死循环。我的解决办法是在每个同步动作里加一个源标记,遇到相同标记的事件直接跳过,避免相互触发。
6.2 哪些功能不应该加进插件
有些功能看起来很美好,但加进来以后会制造麻烦。我把它们列出来,权当预警。
第一是复杂数据库。插件一旦依赖数据库,备份、迁移、权限管理的成本都会成倍上升。纯文本文件虽然在查询能力上弱一些,但胜在简单可靠,对个人知识工作来说够用。
第二是图形化知识图谱。很多知识管理工具把双链和知识图谱当卖点,实际用起来往往是视觉冲击大于实用价值。图谱在节点少的时候很直观,节点多了就变成一团乱线。缺失的链接没有得到解决,只是被可视化掩盖了。
第三是过度的推荐系统。有些插件试图根据你正在写的内容推荐相关资料,听起来智能,实际很容易打断思路。我推荐的策略是把推荐结果放在侧边栏,由用户点开查看,关掉后不再反复出现,这样既保留了机会,又不打扰创作状态。
收敛功能并不意味着不做扩展,而是每一项功能都要回到最开始的问题:它是否有助于“输入到输出之间的连接”?如果答案模糊,就先放着,让时间去检验。
6.3 后续迭代方向
如果继续往下做,我会优先补两个方向。一个是离线移动端采集,现在出门在外想存一条线索,只能先复制到某个待办应用里,等回来再处理,链路断了一截。另一个是团队分享模板版本控制,目前的模板是各人维护各人的,不够统一,后续想做一个模板仓库,让团队共享同一套模板,同时保留个人覆盖能力。
在技术层面,我很想优化语义索引的增量更新速度。目前每新增一篇笔记,向量化时间在数百毫秒到一秒之间,感知不强,但批量导入老笔记时,还是会有明显的等待。底层方案可以考虑更轻量的向量量化,用精度换速度。
最后想把插件做成一个更开放的生态边界。让不同模块可以独立替换,让用户能写自己的采集适配器、模板处理器、输出插件。知识工作这件事本身高度多样,插件应该是一套可以生长的框架,而不是一个锁定的方案。
我个人在实际操作中最大的体会是:插件不在于多,而在于每一条都能把你推向下一个动作。收一条资料就暗示你去处理,处理完就等着你去检索,检索到了就顺手变成输出。这套 knowledge-work-plugins 也许不是最强大的,但它在“从记录到复用”这条路上,把每个环节都缩短到让人愿意去做的程度。如果你也在搭自己的知识工作流,可以试着先从采集和检索这两个点入手,别一上来就追求大而全。等你的知识库开始自己“长出”有用的东西,你就会明白,所谓的效率工具,其实就是帮我们减少那些与思考本身无关的动作而已。