H

Home - Space Looming

Recent content in Home on Space Looming

写给编程小白看的 Vibe Debugging 注意事项(2)

前情提要,在本系列的第一篇里,我着重提到「组件化思维」以及软件工程的一些基本概念,对于正在尝试 Vibe Coding 的编程小白来说,是必须掌握的思考方式与技能。 这种思维方式与技能,在掌握了之后,当程序运行时遇到 bug,就不会直接把报错复制粘贴过去,而是可以迅速猜到问题产生的地方,从而提高与大模型的沟通效率,也能够节约 token。 良好的结构,是软件开发中立于不败之地的重要前提。 那么问题来了,什么是良好的软件结构?良好的软件结构有什么特点?如何了解自己手上开发的软件是否具备良好的结构?如何学习,让自己具备这种良好软件结构的嗅觉? 数据流清晰,符合单一原则 程序它有两个口,一个是入口,一个是出口。入口输入的是数据,出口输出的也是数据。程序的目的,就是为了处理数据,不管是处理 1+1 = 2,还是把字体改为加粗,都是对输入的数据进行处理,然后再输出。 所以,良好的软件结构,在处理数据的时候,会非常清晰,这中间数据从组件 A 到组件 B,再到组件 C,这是一条清晰的路线,不会中间打岔。 每个组件的职责也很清晰,从哪里获得数据,如何处理,输出什么结果——不过一个优秀的组件通常职责是单一的,它只解决一种,甚至是一个问题,绝不大包大揽。 当然对于编程小白而言,直接观察数据的流动是有点难的,因为极大的可能,是连数据的类型都不懂。 我一开始也这样,好像「鬼打墙」一样,同一个 bug 反复出现。当时我完全不懂数据类型,但是我用另外一个方法,让我掌握了数据的流动,那就是观察函数之间的相互调用。 调用这个词看上去很专业,其实理解并不难,就是你复制了一个函数名,然后,在 VSCode 里面全局搜索一遍,看看这个函数名是否会出现其它的函数里。如果出现了,那么证明了这个函数被其它函数调用。 这是一个最简单的方法,让你在完全不具备编程概念,去了解程序里数据流动的一个方法。另外就是,揣摩函数名的意思,LLM 给函数命名一般都很直白,尽管有时候显得啰嗦。 总之,不管是不是编程小白,都不可避免要阅读代码。如果想提高自己的问题解决能力,那就养成习惯,不要一出现问题就马上问 LLM,而是应该先阅读问题产生的代码,看看问题发生的地方。 以终为始的思考方式 我不知道你身边是否有那种朋友,他们思维逻辑很清晰,而且总能快人一步发现问题,解决问题的能力也非常强。我身边挺多这种朋友的,经过观察,他们通常都喜欢用「以终为始」的方式去思考问题。 「以终为始」就是,以最终目标出发点,一步步倒推,一直倒推到开始的第一步为止。这种思考通常比较消耗精力,但是只要习惯了,这种思考上的消耗就没什么大不了的。 通常,在开发一个软件之前,我们在一步步倒推的时候,就能够摸出一个清晰的数据路线。我的习惯是,一边倒推一边用执笔写写画画,帮助自己思考。这时候,我会在草稿纸上列出这一次开发想达到的目标,然后我会往下列一个个要达到这个步骤。 实际上,这些步骤,就是我在第一篇里提到的「组件」。第一个步骤要完成什么,然后才能让第二个步骤处理什么,以此类推,很快你得到了一张路线图,也同时得到了一个软件结构图。 而在这个过程中, 如果你发现哪里步骤不清晰,哪里步骤有问题,那都是不好的结构,只要你逐步修正,一个良好的结构就会自然浮出水面。 从任务执行的角度来看待程序,它就是一系列经过设计的,达到目的之前需要完成的步骤。 多参考优秀项目 这里涉及一个人的「品位」。大家也知道,「品味」是一种微妙的感觉,你说不出是为什么,但就是「真 TMD 的好!」 如果想让自己在 Vibe Coding 的时候,培养对软件工程的品味,不必每一次都和神出鬼没的 bug 玩捉迷藏,我们可以直接参考优秀的项目,看看它们是怎么做的。 我说的参考,不是打开一个 Github 仓库,然后看看里面的分别有什么文件就算完事了,而是要深入到代码层。就好像我刚才说的, 直接全局检索函数名,然后看看它都出现在哪里。 而且现在有 LLM 以及 DeepWiki 还有 zread 等工具,都可以直接解读一个 Github 仓库里的代码之间的关系和结构。 不过我还推荐我的做法,直接将一个仓库 Clone 到硬盘,然后启动 Gemini CLI,输入一句:这个项目是干什么的?它的结构是什么? 然后,你就等着这位赛博菩萨吭哧吭哧地帮你整理出一个优秀的文档来,这个项目是干嘛的, 有什么组件,每个组件是干嘛的,罗列得很清楚。然后按照这份地图,打开对应的文件,参观里面的代码,看看别人是怎么写的。 多读代码,多读别人的,多读自己的,然后对比一下。书读多了,其义自现。

2025/9/30
articleCard.readMore

写给编程小白看的 Vibe Debugging 注意事项(1)

我认为我有资格谈论这个问题: 我在 Githuh 已经有 2 个超过 100 星标的开源项目。 截止文章开始写的时候,一个 267,一个 105。考虑到 Github 上绝大部分项目不超过 10 个星标,我的成绩自然是在水平线之上。 除了这 2 个破百星标的项目之外,我还有好几个 50 个星标的项目,一些 20 个星标的项目。 自从我 Vibe Coding 到现在,我一共开发了 12 个项目。没有一个项目低于 10 个星标。其中 2 个项目起码经历了大规模重构(几乎完全重写)。 为什么标题不是 Vibe Coding 而是 Vibe Debugging? 如果从生物学分类来看,Bug 是克鲁苏——不可名状,永恒存在,令人恐惧。 小白 Vibe Coding 到最后往往变成 Vibe Debugging,拼命打印调试日志,然后塞给大模型,祈求它这把能过。 抑或,在 Vibe Coding 爽撸一把之后,祈祷这把不会有 Bug。然而克鲁苏就是克鲁苏,Bug 不会因为你的诚意感天动地,就自动消失。曾经有科学家开玩笑, Bug 是唯一违反物理定律的东西,因为即便太阳系毁灭了,Bug 也会继续存在。 所以,我们在谈论小白 Vibe Coding 的时候,也是在讲 Vibe Debugging——请所有小白在尝试 Vibe Coding 之前,一定要清醒的明白一件事,很多时候你不是在编程,你只是在制造你无法解决的 Bug。这是我非常痛的领悟。 想要减少 Bug 的出现,必须懂点软件工程 小白之所以无法控制 Bug 的产生,我觉得原因和会不会编程语言的关系不大。

2025/9/10
articleCard.readMore

名为 notepad.exe 的笔记本

via @marckohlbruggfe

2025/5/14
articleCard.readMore

超文本先驱 | Intermedia

#brown_university #norman_meyrowitz #intermedia #hypertext Intermedia 是来自布朗大学后来的第三个重要的超文本项目,此前有 HES (1967) 和 FRESS (1969)。Intermedia 于 1985 年由 Norman Meyrowitz 启动,他此前在布朗大学进行过超文本研究。Intermedia 项目与信息与学术研究机构 (IRIS) 的成立同时发生。 来自 Intermedia 的一些材料,由梅罗维茨(Nancy Meyrowitz)、加雷特(Karen Catlin)等人撰写,被用于 HTML 的开发。 https://en.wikipedia.org/wiki/Intermedia_(hypertext) WikiPedia 简介 https://www.youtube.com/watch?app=desktop&v=bGGxdF0Pn4g 由 Norman K. Meyrowitz 在 HUMAN’20 大会上演示 Intermedia 的珍贵视频 https://www.microsoft.com/en-us/research/wp-content/uploads/1988/01/The-Concept-and-the-Construction-of-a-Seamless-Information-Environment.pdf 一篇论文,完整介绍 Intermedia 概念、机制的论文,这里称 Intermedia 力图打造的一种沉浸式的信息环境 https://www.nngroup.com/articles/hypertext-history/ The History of Hypertext A Half-Century of Hypertext at Brown 布朗大学在 2019 年召开的一个报告会,报告人均是当年参与了超文本项目用于总结半个世纪以前,布朗大学在超文本领域著名的 3 个项目。 Session 1 https://www.youtube.com/watch?v=ZKw5sEVmGgM Session 2 https://www.youtube.com/watch?v=get7utR_BsU 文字总结那段关于超文本项目的背景与历史 https://cs.brown.edu/events/halfcenturyofhypertext/

2025/5/12
articleCard.readMore

DeepWiki 有一个非常优秀的交互

如果 Github 上的某一个仓库,未被索引。此时,它会显示如下页面,告诉用户这一信息,同时邀请用户填写邮箱,在索引完成之后发送通知。 一举多得: 服务体验的完整性。这里实际上涉及到了「服务设计」,如果有一个仓库违背索引,此时用户的体验是最糟糕的时刻,所以提供完成通知,让用户有继续得到服务的感受,让人体验到一种完整的服务流程——服务设计的目标就是避免用户在所有流程环节里流失。 合情、合理、合法地获取用户的邮箱。这一点在现在的社会、商业环境里是很难的。尽管邮件营销看上去很 Old School,但迄今为止,依然是有效的营销手段。

2025/5/12
articleCard.readMore

Eugene Yan

#llm #ai #amazon 喜欢动手实践产品原型的首席科学家 在博客中经常讨论如何将 LLM 落地应用在产品里 还主持了一个定期解读 AI 论文的 Club,每两周聚一次 一些我觉得有意思的文章: https://applied-llms.org/ 使用 LLM 一年之后,虽然成文时间是一年前,不过里面的结论目前来看,并未过时。有时间我会好好总结一下文章里的观点 https://eugeneyan.com/writing/news-agents/ Eugene Yan 最新的产品原型,使用 Amanzon Q 和 MCP 来完成一个新闻简报 Agent 工作流 https://eugeneyan.com/writing/recsys-llm/ 讨论如何用 LLM 提升推荐的效率,这是 Eugene Yan 的老本行,值得一看 https://eugeneyan.com/writing/aireadingclub/ 这篇文章提到他如何设计一个 AI 辅助阅读助手 https://eugeneyan.com/writing/prompting/ 写出有效的提示词

2025/5/11
articleCard.readMore

开源硬件 | Flipper Zero

#flipper_zero 在 X 上,我看到一则视频,看到有人用一个有趣的硬件,来复制大家常见的钥匙。后来经过一番搜索,发现该视频的制作人叫 LockPickNic,是一个 YouTuber,他非常着迷于现实中的锁,和钥匙。 在一个更详细的视频当中,他彻底展示,他如何通过一个叫 Flipper Zero 的开源硬件来复制钥匙。以下是我用 Gemini 总结的过程: *针对钥匙类型*:主要针对的是*基础的住宅钥匙*,视频中提到有90%的几率是美国的 *Schlage C 型*钥匙。 *技术方法*: 使用 Flipper Zero 进行钥匙解码。 重点提到了*3D 打印技术*来制作复制的钥匙。 *讨论与疑问(来自评论区,可能在视频中有所涉及或引发的思考)*: 不同钥匙类型的适用性(如瑞士的 Kaba 钥匙、凹点钥匙)。 3D 打印的精度、材料选择(如 PLA, PETG-CF)以及可能遇到的问题(如柔韧性、断裂风险)。 如何定义和识别钥匙的 Warding 类型。 如何判断锁有多少个针脚(pins)。 Flipper Zero 生态系统中使用的具体应用程序。 与传统的钥匙复制方法(如钥匙铸造系统)的对比。 Flipper Zero 是什么? 这是一款多功能便携式设备,主要面向对无线电、硬件和安全感兴趣的人(常被称为“极客”或“渗透测试员”)。 官网:https://flipperzero.one/ 官网简介:Flipper Zero 是一个玩具般外形的便携式多功能工具,专为渗透测试人员和极客设计。它擅长破解数字设备,例如无线电协议、门禁系统、硬件等等。它完全开源且可定制,因此你可以根据自己的喜好进行扩展。 它具备多种接口: 根据提供的内容,Flipper Zero 集成了以下主要功能模块或能力: *Sub-1 GHz 模块*:用于与各种无线设备(如遥控器、车库门、物联网传感器等)进行交互,支持315 MHz, 433 MHz, 868 MHz, 915 MHz 频段(取决于地区)。 *NFC (13.56 MHz)*:支持读写和模拟多种NFC卡片(如ISO-14443A/B, MIFARE Classic®, Ultralight®, DESFire®, FeliCa™, HID iClass™等)。 *RFID (125 kHz)*:支持读写和模拟多种低频RFID标签(如EM400x, HID, Indala, FDX, Pyramid, AWID, Viking等)。 *红外收发模块 (Infrared)*:可以学习和发送红外信号,用于控制电视、空调等设备,支持多种协议(NEC family, Kaseikyo, RCA, RC5, RC6, Samsung, SIRC等)。 *GPIO 接口*:用于连接外部硬件,进行固件烧录、调试、控制。它还具备: SPI、UART、I2C 转 USB 转换器功能。 SPI Flash 编程器。 AVR ISP 编程器。 OpenDAP 调试。 提供 5V 和 3.3V 电源输出。 *iButton (1-Wire)*:支持读写和模拟 Dallas DS199x、CYFRAL、Metakom 等接触式密钥。 *蓝牙 LE 5.4 (Bluetooth LE 5.4)*:用于低功耗蓝牙通信。 *USB Type-C 接口*:用于充电、数据传输,并可作为USB设备(如串口转换器)。 *Fuzzing 工具*:用于测试各种协议和信号。 *独立操作能力*:内置LCD显示屏、5向导航键+返回键、蜂鸣器、振动马达和锂电池(2100 mAh),无需PC即可操作。 *MicroSD 卡槽*:支持高达256GB的MicroSD卡(推荐2-32GB),用于存储数据,支持FAT12, FAT16, FAT32, exFAT文件系统。 https://github.com/flipperdevices Flipper Zero 的官方 Github 仓库 https://github.com/Next-Flip/Momentum-Firmware Flipper Zero 自定义固件

2025/5/11
articleCard.readMore

张力所存在的地方,就是需求所在

产品是矛盾统一论的实例。 例子: 桌面宠物 理性 vs 感性 => 在理性的情景中,添加感性元素 紧张 vs 放松 => 在紧张的情景中,注入放松元素 那么这个例子反过来,也是可以的: 日记数据化 理性 vs 感性 => 在感性的情境中,添加理性元素 混乱 vs 有序 => 在混乱的情境中,添加有序元素

2025/4/28
articleCard.readMore

Vim 中节约重复步骤的命令

. 重复上一步命令 ; 重复查找上一个字符 * 重复查找当前光标下的单词 这两个命令组合起来,可以节约很多重复操作。 我举一个书上的例子,将以下代码中的 + 两旁添加空格: var foo = "method("+argument1+","+argument2+")"; 此时使用 ; 和 . 的组合,就非常方便: 另外如下例子中,则是 * 与 . 组合一起使用。先用 * 查找出相同的单词,在 cw 修改了之后,就可以按下 n 让光标跳转到下一个单词上,然后直接按下 . 即可:

2025/4/26
articleCard.readMore

#我是成龙

点评 在一个 AI 的年代,人和机器相处久了,会变得没人味。 我的建议是,这是时候就可以看看《我是成龙》,看他极度真诚地,将自己的经历娓娓道来。 为什么?因为成龙是非常有人味的人,不会跟你讲太多成功学,讲得都是自己的亲身经历,怎么想的,怎么做的。 没有一百个思维模型,没有一个月赚一百万,都是说自己怎么想拍好一个动作戏,谁对他好,他又对谁好。 满满的烟火气,人情味。 原文摘抄 【高手都擅长休息】如果说那时候我学到了什么对未来有帮助的东西,那就是如何站着睡觉。很多年后我在片场常用到这个技能。 【成龙是苦出身,没有切身经历写不出来】有段时间师父去赌马,会带上我们几个人一起去新新饭店吃饭。每人一份叉烧饭,在我们眼中是无上的美味。一份叉烧饭里面大概会有5小块叉烧,我们舍不得吃,就把它摆在旁边,先舔一舔,再用米饭蘸着叉烧汁猛吃一大口,这就已经觉得很香了,慢慢地,咬一小口叉烧,再把它摆在旁边。他们还会配给你一半辣椒、一半芥末的料包,我们把这些佐料跟米饭搅和起来,也觉得很香。等吃到最后那一口叉烧时,简直觉得没有什么比此刻更幸福了。 有一天,又是元文,点心车经过的时候,他忽然抬手,“来一份马拉糕。” 说完这句话,他马上转头看师父,当下就“啊啊啊啊”地哭了出来。 我们所有人又震惊了,就见服务生刚把盘子给他摆上,他抓起马拉糕一边往嘴里塞,一边哇哇大哭,知道回去肯定会被罚,但是此刻食物的吸引力实在太大了…… 【中国式的爱,打你是因为爱你,爱你所以才会舍不得】没想到师父并没有出声,也没有打我们。他脸上的表情从惊讶变成无奈,后来用手捂住了眼睛,手指缝中分明有眼泪流了下来…… 【机会是一点点来的】演个死尸你演那么认真有什么用?但是我认为,机会就是这样一点一点来的。因为我在武行里最初的名声,就是从“死得最好”开始的。 【成龙的大方是真大方】那时候武行们开工是当天就收钱的,我还记得最后那场戏,所有武行连当天的钱都没拿到,我觉得很过意不去,就自己掏腰包付了钱。那时候我才赚那么一丁点,还是拿爸爸给我的钱把武行的钱给付掉了。 我想要自己的成家班最有面子,就决定帮所有人都买车。一部车子7万,我出5万,你自己供2万,每人一辆。他们问我,我们要那5万块,但是不买车行不行?我说不行!这样的话5万块就不给了。后来每天出去,成家班一共16辆车子,加我一共17辆,一模一样地开出去,多威风!我们只要一出门,人家都知道是成家班来了。 本来我只带了3个人逛街,我想一人送一块也就行了,他们3个就说,“那其他人呢?”我说,“好吧,那就全送吧。”回去之后每人一块,看他们挤在那里讨论,我要换那个款啊,我要去换那个颜色啊,每个人都开心,我也跟着特别开心。 【任何小诀窍都不放过】有个老师傅教过我们,如果谁可以站在主角旁边,谁就是一定需要连戏的,武戏完了就剩文戏,你只需要站在旁边就可以赚钱了,但如果你打完时站得离主角远远的,那后面肯定就没有你的事了。我一直记得这个小诀窍。 【这个问题很重要】我想,不能永远是这样子啊,他都不知道我的能耐是什么,我要如何表现自己呢?每天都在想这个问题。 【所以成龙一直很重视团队建设】因为我上位太快,周围的人对我已经很反感了。原来在一个团队里做事,人际关系也是一门学问。我下定决心,一定要靠自己的本事让大家无话可说。 【哈哈哈哈哈】没办法,被偶像这样关心,太幸福了,不疼也要装得疼一点。 【真心对待朋友】撑不住了就去厕所狂吐。姜大卫跟着我到了厕所,扶着我,我抱着他号啕大哭,觉得自己好惨。他一直在旁边陪着我。在如此脆弱的时候,幸好有他在。我想起自己还是武行的时候,有一次在片场,看到他戴着一顶很漂亮的帽子,鼓起勇气问他是在哪里买的,他直接摘下来,送给了我。那个画面我一直记得。后来我有钱了,只要看到漂亮的帽子就买下来,每次见到姜大卫,就送他一顶帽子,这个习惯一直保持到了今天。我永远记得他的好。 【慈悲心】我希望很多年后,这些武行兄弟们说起当年,都觉得跟我拍戏是被公平对待的。 【目标】我跟成家班的人讲过,这辈子,我们不要做第一,要做唯一。 【电影态度】有动作不残忍,有笑料不下流 【心大了,事就小了】从小到大,无论被骗多少次,我永远选择先去相信别人。如果你骗了我,没关系,我还有更重要的事情要去做。我不会因为你,而变得不再相信别人。那么多人骗我,他们也没有因此变富。我一直被骗,也没有因此变穷,而且我相信那些骗子自己这辈子都不会好过的。 【也是做事的原则】我常跟自己剧组的人说,咱们拍戏的,要当人是人。这是我拍戏的一个原则,很要紧。

2025/4/24
articleCard.readMore

读完《#轻松主义》

不是所有的事情都一定要那么艰难地完成,不是要我们筋疲力尽事情才能取得进展,我们做出贡献也不必以身心健康为代价。 如果关键的事情做起来更容易,重要的事情做起来更轻松,你的生活会发生什么样的改变? 这是一个很好的问题。和「不要没苦硬吃」是同一个道理。 完成重要事情的不同状态 ATTACH 轻松主义「同心圆」 轻松状态 WHY:认知负荷理论说明,脑力资源有限 认知心理学中的认知负荷理论解释了这种情况。伦敦大学学院心理学和脑科学教授妮莉·拉维(Nilli Lavie)曾就认知负荷理论发表过大量文章,根据她的说法,我们大脑的运算空间很大,但也有限,每天能处理约6 000个想法。 所以当我们遇到新的信息时,如何分配剩余的认知资源,大脑必须做出选择。我们的大脑天生会优先考虑那些“情感价值”高的情绪,如恐惧、怨恨或愤怒,这些强烈的情绪通常会胜出,因此,留给我们解决重要问题的脑力资源就更少了(如图I-1所示)​。 HOW:通过「逆向思考」简化问题,找出最容易实现的途径 德国数学家卡尔·雅各比(Carl Jacobi)以擅长解决棘手问题而闻名,他发现解决问题最简单的方法之一就是“Man muss immerumkehren”​,翻译过来就是“倒置,永远倒置”​。 EXAMPLE:取消悬挂中立国旗帜则不被扣押的规定,打击奴隶贸易 HOW:与其思考如何忍受痛苦地去做,不如想想如何让自己开开心心地去做 既能保持良好的情绪,又能解决问题。 EXAMPLE:面对数量繁多的语音留言,选择洗澡的时候电话回复 HOW:主动休息,让自己保持良好的精神状态 HOW:保持专注 轻松行动 在完成重要事项时投入更少,而不是更多,通过约束我们的努力程度而不是通过过度努力来达到目的,这就是“轻松行动”的意义。 WHY:「收益递减规律」说明,投入越多,不见得得到越多 HOW:为终极目标设定明确的条件,达到那个条件时停止修改 将目标设定在产出开始小于投入前面的那个点。 不要陷入完美注意,而不断修改。 HOW:不管终极目标是什么,只专注于能够带来价值的步骤 《敏捷软件开发宣言》的12条原则之一提道:​“简化是必不可少的,技巧是能不做就不做。​”[…]我们可以把这个说法应用在任何日常事务之中:​“简化是必不可少的,它的技巧是能不做就不做。​”换句话说,不管我们的终极目标是什么,我们应该只专注于那些能够带来价值的步骤。 HOW:拥抱不完美的开始,快速检验想法 HOW:让事项把握在自己可承受范围之内,为重要事项设定上限和下限 ATTACH 轻松成果 WHAT:多创造「复利成果」 线性成果是有限的,它们永远不会超过你付出的努力。然而很多人没有意识到,其实还有更好的选择。“复利成果”是完全不同的。复利成果是,你付出一次努力,就会一次又一次地收获好处。 HOW:掌握原理,摒弃一次性方法 原理 = 可反复使用的知识 HOW:创造新方法,价值远大于使用别人的方法 把没人做的事情做好,其价值大于把别人都在做的事情做精;而把没人做的事情做到极致,其价值将有指数级别的增长。 HOW:将最重要的事情变成故事,教会别人 HOW:通过技术手段将日常生活自动化 ATTACH 使用备忘录、清单记录步骤 为重要的事选择高技术含量的轻松路径,为小事情选择低技术含量的高成本路径。 HOW:在错误发生之前,砍断根源

2025/4/23
articleCard.readMore

使用命令行检查文件/文件夹大小

背景:我使用 macOS。 在命令行工具里,有很多工具可以知道文件大小: ls -la 一般情况下使用,可以直观的文件大小,缺点是不知道文件夹大小 du * 会列出当前目录下所有文件夹内,所有文件的大小 du -hxd1 会列出当前目录下,所有子文件夹的的大小 gdu 用 golang 写的,支持多线程,作用和 du * 一样,有点是性能好,速度快 不过我自己偏好 ncdu ,有可视化界面,会显示子文件/子文件夹占用的空间百分比,还可以直接简单操作: ncdu 执行速度没有 gdu 快——但最新版本提供了多线程的实验特性,输入 ncdu -t8 即可调用,速度要快上不少。 PS:谢谢「Emacs 中文」 里各位认真有趣的群友。

2025/4/22
articleCard.readMore

你所提供的产品、服务或库现在首要用户变成了LLM(大型语言模型),而不是人类。

Andrej Karpathy 在 X 说,很多产品和服务的第一个用户,可能不是人类,原文: 公告:这是人机工效学的新纪元 你所提供的产品、服务或库现在首要用户变成了LLM(大型语言模型),而不是人类。 以下是一些需要注意的地方: LLM更喜欢抓取网页内容,而不是导航。 它们更喜欢阅读文本,而不是查看图像。 它们更偏好使用curl命令获取内容,而不是点击按钮。 等等。 还有人在下面评论补充: 它们不太喜欢浏览,但更喜欢获取(fetch)内容。 它们不太喜欢观看内容,但更喜欢解析(parse)文本。 它们不太喜欢滚动浏览,但更喜欢查询(query)信息。

2025/4/22
articleCard.readMore

Links:说人话的 DeepSeek 论文解读

DeepSeek MLA – 为成本优化而生的注意力机制 https://oilbeater.com/2025/04/14/deepseek-mla/ DeepSeek MoE – 创新型的 MoE 架构 https://oilbeater.com/2025/03/29/deepseek-moe/ 从 DeepSeek LLM 到 DeepSeek R1 —— DeepSeek LLM https://oilbeater.com/2025/03/14/deepseek-from-llm-to-r1/ 这系列文章均出自同一个作者,欢迎关注: https://oilbeater.com/

2025/4/15
articleCard.readMore

灵感是短暂易逝的,要立刻行动

如果我受到启发想写一篇博客文章,我想在那一刻就做。 如果我受到启发想发一条推文,我想在那一刻就做。 如果我受到启发想解决一个问题,我在那一刻就做。 如果我受到启发想读一本书,我想读,就在那时读。 如果我受到启发想解决一个问题,我当场就解决它。 如果我想学点什么,我在好奇心产生的那个瞬间就去做。 […] 所有让你印象深刻的东西,都是在你想要学的时候,在你真正有渴望的时候学到的。 而那种自由,那种在你想要行动的瞬间就能行动的能力,是如此具有解放性,以至于我们大多数人一生中都很少体会到它。 如果你一生都那样生活,那就是通往快乐的秘诀。

2025/4/11
articleCard.readMore

用 AI 辅助开发的经验二三则(4)

这是一个搏斗的故事。 起源是我开发的 org-supertag,项目的初心是希望将 Tana 的笔记体验迁移到 Emacs,在我开发了一个极简原型之后就面临一个问题—— 如果 org-supertag 想像 Tana 那样快速展示一个标签所关联的节点,不能使用纯文本检索的方法。这种方法直接使用检索所有文件,通过正则提取相关的数据,速度慢不说,还会令 Emacs 卡顿。简而言之,这种体验,谁都不能忍。 后来我借鉴自己另外一个项目 org-zettel-ref-mode (以下简称 orz) 的经验,它直接使用哈希表作为数据库,成功地令两个文件的数据通过数据库进行关联,理所当然的,我将这个经验迁移到 org-supertag 上。 这就是搏斗的开始。 org-supertag 的目标不是将两个文件之间的数据进行关联,而是要在数据库里同步在 org-mode 里操作过的数据(CRUD)。很显然,我的第一个想法是,只要用户执行了对应的命令,就会将更改过的数据保存到数据库。 这方法看上去是没啥问题的,然而 Emacs 是一个文本编辑器,org-mode 又已经有很多强大的命令。只要用户不使用 org-supertag 提供的命令,数据就不能保存到数据库中。这是一种困扰:用户必须执行某个命令,才能让数据记录到数据库。这实际上是强迫用户必须使用命令,才能够保证自己的数据记录的安全的。而这通常无法办到,因为人是依照直觉行动的生物,尤其是,当一个人有想法的时候,你不能勉强他,必须使用命令才能开始记录。而是应该让他马上直接记录下来,而不用去担心其它问题。 让我来简化问题:如果用户只是输入了一个标题(尚未赋予 ID),我如何保证这个标题,在用户不执行任何 org-supertag命令的情况下,可以及时地记录到数据库中呢? 这是 org-supertag-sync 这个组件的起源,也是第二次搏斗的开始。它的设计思想是,通过定期扫描用户打开过,修改过的文件,然后通过 org-mode 内置的语法解析器,扫描每一个标题,将其记录成一个数据结构,然后覆盖到数据库对应的记录中。这样子,就不必担心用户新建了标题,而没有同步到数据库的情况。 此时,如何知道一个文件是修改过的,显得尤为重要。我当时想的办法是,为文件生成一个哈希值,通过对比文件的哈希值,就能够知道一个文件是否已经修改过。以此决定,是否扫描一整份文档。 这个方案看上去还行对不对?只要是用户写了标题,就会通过扫描自动同步到数据库,数据的完备性方面是不用考虑了。直到有一天,我发现问题,数据库中出现了重复的记录、通过寻找节点的命令却无法定位该节点的位置……这意味着之前的方法有着很重大的缺陷。是的,这个方法还不行。因为,它只扫描并将一个文件里的节点全部同步到数据库,但无法覆盖以下情形: 节点从一个文件移动到另外一个文件; 节点已删除; 节点重命名; …. 换言之,除了将节点的信息同步到数据库之外,同步的颗粒度,不能光是关注文件的变化,还要关心节点的变化。于是, org-supertag-sync 再一次迎来重构。这一次,我决心解决这个问题。这就是我与数据一致性的第三次搏斗。 这一次策略变得更加细致一些,依然还是从具体文件的变化入手(因为 Emacs 是一个文本编辑器),然后为每一个节点建立一个哈希值,记录到数据库中。具体是这样的: 获取修改过的文件(基于文件时间戳) 扫描这些文件中的节点: 提取节点 ID 计算节点哈希值 与数据库中的哈希值比较 只对发生变化的节点进行处理: 删除:在修改的文件中,找不到该节点,则从数据库移除 移动:在修改的文件中,找到该节点,但文件路径记录有所更换,则在数据库中更新节点的位置信息,保持哈希值 更新:节点的内容发生了变化,则重新同步内容和,更新哈希值 创建:赋予 ID,计算哈希值并存储 终于,我找到办法,解决纯文本与数据库的数据一致性的问题。你说这有什么大不了的? 我在 X 上谈到了: 其实 Logseq 要走纯数据库这一步,是可以预见的。

2025/4/3
articleCard.readMore

不要带着目标去学习, 不要带着对过去的懊悔去学习, 不要带着对未来的期待去学习。

学习是一种自然而然的状态,不是一种要求。其实学习有很多种形式,并非只有上学读书,或者是做练习册,填笔记,这些个反人类的形式。 学习首先是一种观察,简单来讲,观察一个鸟的飞行,或者是观察一个人的神情,这些都是学习。 有时候,我们会发现,很多大老板本身的学历不高,但不能说他们不聪明,他们的学习是社会化学习,通过一点一点观察别人,观察这个世界而来。 我觉得这更加是一种高级的学习能力。因为观察与模仿,通常是学习的第一步。 会背书不见得是会学习。

2025/4/1
articleCard.readMore

和 AI 一起打造一把椅子

这大概是我今天读过最有意思的文章—— 作者与 ChatGPT 沟通,一起打造一把椅子。 首先,作者提供了一些闲置木料的描述给 AI,让 AI 提出设计方案。 不过,过程没有那么顺利,在经历了一番顺利带着挣扎的沟通之后,作者终于得到了一个比较完整的计划表: Materials Needed: Plywood Sheet: For the seat. Pine Panels: For the backrest. Wood Beams: For legs and support structure. Dowel: For additional bracing. Tools: Saw, drill, screws, and wood glue. Cutting Plan: Seat: Use the plywood sheet to cut a rectangular seat, 480 mm x 400 mm. Backrest: Select one pine panel (255 mm x 490 mm) and trim if necessary to match the width of the seat for aesthetic continuity. Legs/Support Structure: Front Legs: Cut two pieces from the beams to the desired seat height (about 450 mm). Rear Legs/Backrest Support: Use the longer beams (980 mm or 1030 mm) and cut them so they can serve both as rear legs and extend upward to support the backrest. The total length should support a standard seat height plus the backrest height, roughly 900-1000 mm depending on your desired backrest angle and height. Seat Supports: Use leftover wood or the pine/fir plank to create support planks that run underneath the seat for added stability. Cut these to match the width of the seat (400 mm). Assembly:

2025/3/21
articleCard.readMore

2025 年 2 月 cutout.pro 流量分析

域名信息 注册日期 2020 年 8 月 24 日 更新日期 2024 年 4 月 2 日 注册商 Amazon Registrar, Inc. 这也是一个这两年流量变得庞大的新域名。 基础流量数据(by SiminerWeb) Fab 25: 13.04M Jan 25: 14.8M 2 月流量同比: -11.93% 流量来源渠道 百分比% 直接 35.85 自然搜索 61.30 付费搜索 0.70 外链 1.05 展示广告 0.02 社交 1.08 电子邮件 0.01 主要流量来源国别 国家 占比% 变动% 印度 39.51 -4.33 孟加拉 10.41 -29.38 菲律宾 4.05 -8.55 巴基斯坦 4.02 -9.65 印尼 2.86 -11.19 其它主要数据 UV 5.615M 访问页面数 3.46 停留时长 3:28 跳出率 33.53% 桌面端 55.71% 移动端 44.29% 网站权威性(by ahrefs) Domain Rating Backlinks Linking Website 68 44K 3.2K 关键词分析 长尾关键词 结果页关键词 低潜力关键词 23724 343 1934 关键词 点击量占比 点击量 变动 cutout pro 10.17 435.6K -2.7 image enhancer 8.49 363.9K -9.1 photo enhancer 6.66 285.2K -9.9 enhancer image 3.82 163.6K 17 cut out pro 2.97 127.3K -3.2 从流量结构来看,cutout.pro 有 60% 的流量是来自搜索,以及它的流量并不集中在自己的品牌名上,而是在关键的关键词,所关联的 SERP (搜索结果页)中排在第一位。至少,在我所提供的这排在前五名的关键词的搜索结果页中排在第一位。 个人觉得这种流量比较健康,因为相比起品牌名,用户会更加记住与自己想用的工具相关的关键词。

2025/3/21
articleCard.readMore

2025 年 2 月 crushon.ai 流量分析

域名信息 注册日期 2023年5月26日 注册商 1API GmbH 这也是一个这两年流量变得庞大的新域名。 基础流量数据(by SiminerWeb) Fab 25: 4.01M Jan 25: 4.85M 2月流量同比: -2.25% 流量来源渠道 百分比% 直接 50.45 自然搜索 43.69 付费搜索 0.00 外链 2.05 展示广告 0.04 社交 3.77 电子邮件 0.00 主要流量来源国别 国家 占比% 变动% 美国 26.98 1.71 俄国 7.05 22.15 墨西哥 5.71 -19.04 菲律宾 4.37 2.75 印度 3.46 -28.33 其它主要数据 UV 2.707M 访问页面数 10.48 停留时长 14:47 跳出率 32.33% 桌面端 17.2% 移动端 82.8% crushon.ai 与之前分析过的网站不一样,它是一个虚拟角色类的网站,换言之,它会生成很多不同的角色与你聊天。 从流量结构来看,crushon.ai 来自移动端的流量占绝对主导地位。但查看网站主页,比较意外的是它居然没有移动 App。换言之,这 82.8% 的用户,都是用通过手机浏览器用的 crushon.ai。

2025/3/18
articleCard.readMore

让 org-capture 收集项可以自动归于某一日期下

这么拗口的标题真是对不起,主要是找不到合适的词。 是这样的,以前看 org-mode 的黑客们会炫出自己的日志文件,里面的组织方式,在 org-mode 官方教程里叫「日期树」 它大概是这样子排列: 可以看到,这是一个树形列表,不过它会按照「年-月-日」来排列。 我一直以来也是按照这种方式来组织自己的日志,不过以前是自己手动操作,以及方式有点不一样,我喜欢按照周数来排列。 原本我以为需要自己写一个自定义配置什么的,但没想到 org-mode 里面已经包含了这一功能。 需要在设置 org-capture 模板时,指定使用 file+datetree 的方式,这样在 capture 时会自动在对应的日期下创建对应的标题 org-mode 提供了 :tree-type 参数控制日期树的组织方式,有两个参数:=month= 仅按月组织;=week= 则按照周数组织。 按周组织日期树是长什么样的呢? 可以看到,它不再以月份作为二级标题,而是使用 2025-W11 这个格式来表示第 xx 周。 基本的配置方式如下,可以拿去参考。 ("j" "Journal" entry (file+datetree "~/Documents/notes/diary.org") "* %? %U" :tree-type week :empty-lines 1)

2025/3/16
articleCard.readMore

2025 年 2 月 klingai.com 流量分析

域名信息 注册日期 2024年3月26日 注册商 22net, Inc. 基础流量数据(by SiminerWeb) Fab 25: 15.91M Jan 25: 17M 2月流量同比: -6.62% 流量来源渠道 百分比% 直接 61.10 自然搜索 28.85 付费搜索 2.57 外链 2.85 展示广告 0.12 社交 4.49 电子邮件 0.02 主要流量来源国别 国家 占比% 变动% 美国 14.18 -12.86 印尼 11.46 -9 巴西 5.96 -10.11 越南 5.32 84.29 印度 5.06 -29.55 其它主要数据 UV 3.755M 访问页面数 7.26 停留时长 9:33 跳出率 36.58% 桌面端 9.4M 59.1% 移动端 6.5M 41.9% 大家都知道可灵是快手旗下的视频生成网站,之前一直很受关注。从流量结构来看,直接流量占比高,远高于自然搜索的流量占比,只有大约三成流量来自自然搜索,类似的网站比如 seaart.ai 其自然搜索量占比足有四成半多。这种情况可以两面分析,可以说,可灵的重复访客多,这是一件好事;也可以说,可灵的外部引流做得还不够好。

2025/3/16
articleCard.readMore

2025 年 2 月 searrt.ai 流量分析

域名信息 注册日期 2023年03月11日 注册商 1API GmbH 基础流量数据(by SiminerWeb) Fab 25: 16.38M Jan 25: 18.44M 2月流量同比: -11.2% 流量来源渠道 百分比% 直接 49.75 自然搜索 40.83 付费搜索 2.72 外链 1.81 展示广告 0.08 社交 4.81 电子邮件 0.01 主要流量来源国别 国家 占比% 变动% 日本 19.88 20.08 巴西 12.18 9.32 印度 10.38 -64.20 美国 6.30 -18.67 印尼 4.25 -23.19 其它主要数据 UV 5.981M 访问页面数 5.40 停留时长 7:01 跳出率 47.65% 桌面端 14.1M 移动端 35M seaart.ai 是一个图片生成服务(最近也提供了视频生成服务),它的流量在 2024 年 10 月、11 月达到巅峰,然后开始走向平稳下滑。不过,从流量结构来看,seaart.ai 并不完全专注于品牌的流量,60% 的流量来自与品牌无关的搜索词。

2025/3/15
articleCard.readMore

As coding becomes easier, more people should code, not fewer!

吴恩达在推特上表示,有了 AI,会令更多人编程,而不是更少: 如今,一些人以人工智能将实现编程自动化为由,劝阻他人学习编程。这种建议日后恐怕会被视为最糟糕的职业建议之一。我并不认同某位图灵奖及诺贝尔奖得主所言:“相较于编程职业变得无所不能,其更有可能走向消亡……计算机将越来越多地自行完成编程。”此类劝阻人们学习编程的言论实属有害! 回顾20世纪60年代,编程方式从打孔卡(程序员需在实体卡片上逐字逐孔地编写代码,费时费力)转变为键盘与终端设备,编程的门槛得以降低。那一时期开始学习编程,较之以往任何时候都要更为有利。然而,正是在那个年代,诺贝尔奖得主赫布·西蒙写下了上文引用的观点。如今劝人放弃学习编程的论调,仍与他的看法遥相呼应。 编程越是变得简易,越应当有更多人投身其中,而非减少! 过去几十年间,编程语言从汇编语言演进至C等高级语言,开发环境从桌面转向云端,工具从纯文本编辑器升级为集成开发环境(IDE),乃至如今的AI辅助编程——有时甚至无需细审生成的代码(近期一些程序员戏称为“氛围编程”),每一步都让编程更为简便。(顺带一提,若欲深入了解AI辅助编程,可参阅我们的纯视频短期课程《利用Windsurf的AI编码助手开发应用》。) 我曾撰文指出,我认为技术娴熟者将通过协调AI工具,逐步成为“10倍专业人士”——即在自身领域内影响力超出常人十倍的个体。我愈发坚信,对许多人而言,实现这一目标的最佳途径并非仅作为AI应用的被动使用者,而是通过学习编程,掌握足以有效运用AI辅助编码工具的技能。 我常被问及,若有人担忧AI取代工作,该如何应对?我的回答是:深入了解AI并加以掌控。因为未来至关重要的技能之一,便是能够清晰地向计算机传达你的需求,使其为你执行任务。编程(或借助AI完成编程)正是实现这一目标的最佳方式。 在开发《人人生成式AI》课程时,我需要为背景图像生成AI艺术作品。当时,我与一位研究过艺术史、熟谙艺术语言的伙伴合作。他通过Midjourney输入基于历史风格、色彩搭配及艺术家灵感等术语的提示词——以艺术的语言表达需求,最终获得了理想效果。而我因不谙此道,仅凭简单尝试提示,效果远不及他。 同样地,科学家、分析师、市场营销人员、招聘专员,以及各行各业的从业者,若通过学习编程掌握了软件语言,便能更精确地向大型语言模型(LLM)或AI赋能的IDE表达需求,从而获得更优结果。随着这些工具持续降低编程难度,此刻正是学习编程、掌握软件语言、指挥计算机精确执行你意图的最佳时机。 不断前行吧! 安德鲁

2025/3/15
articleCard.readMore

2025 年 2 月 hailuoai.video 流量分析

域名信息 注册日期 2024-09-05 注册商 godaddy 基础流量数据 Fab 25 27.56M Jan 25 27.04M 2 月流量同比 1 月增长 1.8%。 流量来源渠道 直接 51.44% 自然搜索 32.62% 付费搜索 0.59% 外链 8.53% 展示广告 0.11% 社交 6.68% 电子邮件 0.04% 主要流量来源国别: 印度 26.17% -59.43% 美国 11.30% -19.13% 印尼 8.12% 1082.04% 巴西 4.82% -4.25% 俄国 4.08% -0.4% 其它主要数据: UV 5.695M 访问页面数 7.17 停留时长 9:39 跳出率 39.78% 桌面端 29.1M 移动端 52.2M 从图表可知,来自搜索的比例只有四成不到,而直接流量占比高达五成。 对于一个注册域名还不到半年的新站来说,这个流量结构并不正常,很可能是来自其它网站的导流。 从主要流量来源国别来说,前五主要来源国别均有不同程度的下滑,只有印尼来源的流量迅猛增加。 *网站权威性*(by ahrefs) Domain Rating Backlinks Linking website 63 30000 1200 hailuoai.video 的网站权威性评分是 63,表明在视频生成的领域,它流量很大,但流量质量还不够高的现实。

2025/3/14
articleCard.readMore

智能的复利

读Manus爆火的背后,Agentic AI产品如何构筑持久的竞争优势? ⸻ 在 Manus 之前,AI Agent 主要是两个方面,一为调研,二为代码。两者之间缺乏协作,若调研为输入,则代码为输出。Manus 成为两者之间的桥梁,让输入与输出的流程打通。 ⸻ Agentic AI相比于传统AI,一个鲜明的特征是它在多个维度上都具有复利效应(Compound Effect)。 在Agentic AI产品中,能使用的工具的数量从6个到8个所带来的产品体验变化,要远远大于从2个到4个所带来的变化。这是因为AI所使用的工具之间是可以相互组合、相互促进的。 即使不论它做的其他创新,即使我们只看它把Deep Research和Cursor这两种产品并在一起,这个单纯的工具数量的增长,立刻就让它完成了很多以前的产品实现不了的场景。 ⸻ Agentic AI 在数据方面还具备知识的复利效应。当一个 AI 面对同一个对象(客户、业务、功能、需求…),可以随着时间推移,可以自我积累、组织和外化知识。AI 从原始的知识库中发掘、提炼、总结,形成对自己友好的文档(知识)体系。 这要求 AI 拥有很强的记忆性。而这种记忆性是如何解决的呢?作者还提出了以文档为驱动的 AI Agentic,以外部知识库的方式,提升 AI 的记忆能力。和作者说的一样,这需要一个外部记忆系统了解决。但目前 Manus 应该还完全解决这个问题,它只是解决了多 AI Agent 协作之间的共享工作记忆的问题,通过 todo.md 来解决。 ⸻ 数据的积累也有组合的复利效应。有更多的历史数据和总结出来的文档,AI就能通过对比和思考,形成更多的洞察。从某种程度上来说,这是一个把传统的知识系统变成一个AI友好(AI Friendly)的知识系统的过程。AI friendly不是一个非黑即白的二元状态,而是一个需要时间去沉淀和发展的东西。我甚至愿意把它和人与自然的共同进化(co-evolution)来类比。一方面,AI会从原始的知识库中进行挖掘、提炼和积累。另一方面,用户在使用AI的过程中也会越来越体会到,如果我们把各种数据让AI能轻松获取,对自己的工作而言也大有裨益。 目前业界已经推动 LLM.txt 这一个协议,或者标准,令网站的内容可以变得 AI 友好型内容,让 AI 更快、更方便地知道内容是什么。按照作者的观点,则可能是需要一个 AI 友好型的 RAG 系统也说不定。而且,这一套系统,需要拥有自主学习的能力,会逐步迭代,将原始的知识库逐步分类,打上标签,透析关系。而这不是用文本嵌入模型,来分析文本可以做到的。 本身维持这一套知识体系,可能就需要一个单独的 AI 角色去负责。 ⸻ Agentic AI还有一个非常有意思的特点,就是智能本身也是有复利的。 作者将 Gemini 和 OpenAI 的 Deep Research 作为对比,认为后者更主动,更懂得自我迭代。——当然我对此持有不同的观点,一个稍微笨一点的 AI,或者说不过度自我演绎的 AI 实际上在解决问题方面,也大有用处。比如说我的朋友,是面向客户提供技术服务,日常有大量数据分析、处理,形成报表。显然,一个自我演绎能力太强的 AI 并不适合这类「笨活」,因为这种 AI 太聪明,懂得通过伪造数据偷懒。所以我觉得这个例子可能不够恰当。

2025/3/13
articleCard.readMore

我们实际上要对抗的不是算法,而是基于算法推荐而衍生的懒惰

我们越来越习惯于被告知“好东西”,不再愿意花费时间和精力去筛选、比较,甚至怀疑那些未经推荐的内容是否值得一看。 当每一次搜索都精准地迎合自己的偏好时,发现自己逐渐失去了对未知领域的兴趣,害怕面对任何与“舒适区”相关的挑战。 如果“高效”成为了唯一的追求,我们是否正在放弃那些在漫长而曲折的探索中,才能获得的深刻理解和个人成长?

2025/3/13
articleCard.readMore

2025 年 2 月 jenni.ai 流量分析

域名信息 注册日期 2019年08月14日 注册商 NameCheap,Inc. 基础流量数据(by SiminerWeb) Fab 25: 822.2K Jan 25: 927K 2月流量同比: -11.3% 流量来源渠道 百分比% 直接 39.57 自然搜索 37.13 付费搜索 14.66 外链 4.32 展示广告 0.50 社交 3.75 电子邮件 0.06 主要流量来源国别 国家 占比% 变动% 美国 10.73 -10.53 印度 7.81 -27.93 印尼 6.90 -21.07 英国 6.13 -52.32 马来 3.92 -38.92 其它主要数据 UV 407K 访问页面数 2.91 停留时长 2:30 跳出率 41.25% 桌面端 514K 移动端 308K 2025 年 2 月 Jenni.ai 的整体流量,相比 1 月,下降得很厉害。而这实际上是连续下降,从去年 12 月 到今年 2 月,一直在下降,降幅都在 10% 左右。

2025/3/13
articleCard.readMore

org-embed 发布

终于实现了,在 org-mode 里直接嵌入视频、PDF、网页等多媒体内容了。 功能 支持在 Org-mode 中嵌入各种视频平台的视频 支持在 Org-mode 中嵌入任意网页 支持在 Org-mode 中嵌入 PDF 文件 模块化设计,易于扩展支持更多内容类型 支持的视频平台 YouTube Bilibili Vimeo Dailymotion TED Talks 本地视频文件 支持的其他内容 任意网页 PDF 文件(本地) 项目地址:https://github.com/yibie/org-embed

2025/3/7
articleCard.readMore

org-supertag 2.5 发布,发现标签关系,标签探索面板,多列视图

由于自己开发了一个叫 org-supertag 的 Emacs 插件,一直在思考: 为什么标签难以在大众层面流行 为什么标签很有用,但看上去很难用得好 身边好几个朋友跟我说他们放弃了标签的使用 总之,结合最近的思考,我给 org-supertag 开发了新的功能,对以上这 3 个问题进行了回应: 标签是一种集合,共同添加到同一对象上的标签具备联系 很多人抱怨标签不好用,尤其使用一段时间后,标签数量膨胀,像多年未整理的仓库,让人失去整理动力。这种痛苦源于工具将标签视为简单标记,仅用于搜集资料,忽视层级与分类。更关键的是,工具缺乏对标签的组织和管理能力,导致数量过多时,用户陷入管理无能的困境,标签从帮手变成负担。 我在思考“标签如何更有用”时,发现标签本质上是一种集合,汇聚被标记事物的共性。例如,“工作”标签集合会议记录、任务清单和邮件,“学习”标签包括笔记、文章和视频。这种集合视角让我联想到推荐算法——大数据和AI通过为数据打标签,并挖掘标签间联系,实现精准推荐。 我想将推荐算法的机制应用于个人管理中。如果把标签视为动态集合,并赋予标签间关系,就能形成网络状结构化体系。例如: “工作”与“deadline”关联,提醒任务紧急性; “读书”与“笔记”形成层级,梳理学习脉络; “旅行”与“预算”并列,方便规划。 这样的系统能消除标签数量膨胀带来的混乱,让用户在信息中自由切换视角。例如,面对项目,你可通过“时间”查看进度,“团队”检查分工,或“资源”评估需求。这种多维度思考是网络化标签的核心优势。 所以,我为 org-supertag 新增加了如下功能: ## 为标签与标签之间设定关系 org-supertag-relation-manage 在如何帮助人发现标签关系这件事上,我进一步思考,发现不少标签会添加到同一个对象上。这意味着,这这些同时出现的标签,存在着内部关系。我们可以快速通过「同现」这一关系,找到相互关联的标签。 因此,在标签关系的管理界面可以看到「Co-occurrence Tags」这一栏,可以直接看到一起出现过的标签。在我们添加标签关系时有重要的参考意义。 org-supertag-relaiton-manager 这里有两个小功能: Find By Relation,可以找到存在着关系的标签。 Find By Relation Group,可以基于标签关系组找到存在着关系的标签。 这两点可以提供比较丰富的发现维度。 隐式发现信息结构 org-supertag-tag-discover 标签发现面板,是一种渐进式过滤的机制。可以在添加了一个标签的同时,添加另外的标签,寻找位于两个标签之间的交集里的笔记(笔记节点)。 org-supertag-tag-discovery 同样,它会有 Co-occurring Tags 一栏,可以看到此间一起出现过的标签,并将它们直接添加为过滤条件,像放大镜一样,一点点变得具体。 换言之,这里存在着一种发现路径,这个发现路径将你第一次添加为过滤条件的标签,视为一个入口。如果这是一个箱庭世界,就可以通过不断添加标签,从而方便自己回顾和寻找对应的笔记。 在这个过程中,如果不断重复这一发现过程,路径本身就是结构化的象征,自然而然,在不断设计标签关系,以及发现标签的交集时,这种结构化自然地会印在脑海里。 多列对比视图 org-supertag-column 如果把标签视为集合,为了方便不同的集合之间的对比,应该以一种列状视图来表现。 在 Multi-Colmn Tag View 中,可以快速地添加标签,进行对比,同时,还可以通过 Add Realated Tag,来将相关联的标签放在一起进行对比。 org-supertag-columnn 内联标签 org-supertag-inline-insert-tag 当然,将多个标签添加到同一个对象是吃力的。尤其是当前大部分工具添加标签的过程,在思考标签的时候都花了太多时间。 我提出的解决方案是,让 org-supertag 支持内联标签。让人在自然输入的过程中,直接输入标签。以 # 作为前缀。

2025/3/5
articleCard.readMore