https://github.com/VandeeFeng/gitmemoRSS feed of VandeeFeng's gitmemo2025-09-04T15:24:37.293123+00:00python-feedgenhttps://github.com/VandeeFeng/gitmemo/issues/64暂时停用 gitmemo2025-09-04T15:24:37.684351+00:00决定暂时停用 gitmemo 来记录短想法。

使用 GitHub issue 来记录 memo 起初是因为,usememos/memos 的更新时不时对数据和 API 接口有很大影响,不是很稳定。

再一个,很偶然的看到 https://github.com/yihong0618/gitblog/issues/177 ,People Die, but Long Live GitHub 挺有触动,觉得在 GitHub 和互联网上留下点自己的思考,也挺不错。

但用到现在,最大的问题是,我的很多思考都有些尖锐,不太适合 public 。这些短想法,在最开始都是在 Emacs 里记录,而且会周期性的总结到 tiddlywiki ,或在 blog 成文,gitmemo 这个中间过程其实不是很必须。

这些都不太符合我一贯喜欢的 stay simple。

]]>
2025-08-02T09:56:19+00:00
https://github.com/VandeeFeng/gitmemo/issues/63弃用之前的 clip 剪藏方案 → Hoarder2025-09-04T15:24:37.811071+00:00之前的 https://github.com/VandeeFeng/bookmark-summary 方案,一方面是想替代 ReadWise,主要还是想练手。

放在 GitHub 上总感觉有点浪费资源。也没有给我带来太多的实用性。

Omnivore 之前一直在用,配合 Logseq 用了很长时间直到开始使用 Emacs ,现在停运了。

hoarder 这个项目从一出来就试用过,后来被 ReadWise 的 AI 功能吸引,以及全能的导入。

但是实际的使用当中,ReadWise 的 AI 功能基本也没怎么用,前几个月出来的可以根据 highlight 提问对话还是挺好用的,但是也快到期了,不准备续了。

而且现在我所有的知识库都接入了自己的 数据库做向量相似检索和补全,不需要再依赖这些了。

Hoarder,现在叫作 karakeep ,提供了 highlight 的 API,可以直接导入到我的数据库。

ReadWise 从开始用就想过不能太依赖它保存笔记和 highlight,所以很早就做了 highlight 的导出和备份。

Hoarder 有浏览器插件可以剪藏网页,Twitter 的也可以,移动端现在也开发出来了。又持续观察了小半年,感觉挺稳定的。

除了界面有点丑,其他都很符合我的需求。最重要的一点,它没有深度集成 AI , 反而是我很喜欢的。

阅读这些用 AI 总结多少就有点没意思了,还是要渐进式阅读。

Hoarder 也支持 RSS ,但是这部分功能从开始到现在都没有怎么扩展,现在也没有 opml 导入,猜测作者的思路是想更多的主动阅读吧。

]]>
2025-07-03T17:17:01+00:00
https://github.com/VandeeFeng/gitmemo/issues/62Vibe Coding Timeline2025-09-04T15:24:37.957934+00:00随手记录一下 vibe coding 的发展,按照时间先后顺序排序。

pair programming 阶段

以 Cursor 为代表的 AI 代码编辑器的出现

如果我没记错,cursor 在 vibe coding 概念被 AK 大佬提出之前就很多人在用了。

AK 大佬的几个 tweet 推广了一下 cursor。之后 cursor 就彻底火了,那个时候 cursor 的 Tab 和 vibe coding 的体验就是独一档。

vibe coding 概念的提出

Andrej Karpathy on X: "There's a new kind of coding I call "vibe coding"

各种 AI 工作流

Dify,n8n,字节的 Coze 扣子等。

更多基于 VSCode 的 AI 代码编辑器的出现

Cursor,Windsurf(已被 OpenAI 收购),Trae(字节)。还有 cline 这些 VSCode 的 AI 代码编辑插件。

还有 Augment Code - AI coding platform for real software.TabbyML/tabby: Self-hosted AI coding assistant 等 IDE 插件。

Claude code 等 CLI AI 代码编辑助手

卷完了 IDE,又开始下一轮了。Claude code 这是把 cursor 给背刺了。Cursor 最近也出现了一连串的反应: https://x.com/karminski3/status/1935423134892704219 , https://forum.cursor.com/t/cursor-pro-cursor-ultra/104528/11

OpenAI 也在 Claude code 出现之后的几个月开源了 codex:https://github.com/openai/codex

效果上,网上普遍的反馈 Claude code 比 codex 要好。

在 Claude code 等出现之前,Aider 这些 CLI 的代码编辑工具就已经很多了。

在官网短暂无法访问之后,2025-06-25 ,Gemini CLI 也来了:https://github.com/google-gemini/gemini-cli , https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/

cursor 算是开始走下神坛了,负面的消息越来越多,吹的人越来越少,风向越来越导向 Claude code ,对国内的 IP 也开始控制了。

Amazon 推出了 Kiro,又一个类 cursor。

陆续出现了 opencode:https://github.com/sst/opencode , crush: https://github.com/charmbracelet/crush

cursor 推出了 cursor CLI :https://x.com/cursor_ai/status/1953559384531050724 , https://cursor.com/en/cli --2025-08-07

parallel agents 阶段

随着 Claude code 的兴起,parallel agents 的概念出现。各种 GitHub actions,自动代码审核提交 PR 的流程越来越成熟,看到很多项目都开始用 Claude code 做管理了。 --2025-07-19

有代表性的是这个项目:https://github.com/BloopAI/vibe-kanban

Agent Client Protocol (ACP)

Zed团队宣布Claude Code正式进入Beta测试阶段,通过新的 Agent Client Protocol (ACP)与Zed无缝集成: https://zed.dev/blog/claude-code-via-acp

]]>
2025-06-22T04:02:30+00:00
https://github.com/VandeeFeng/gitmemo/issues/61生成式 GUI2025-09-04T15:24:38.137408+00:00之前 AK 大佬就提出了 LLM 动态生成用户界面的构想

最近又发了一个 tweet :

Cool demo of a GUI for LLMs! Obviously it has a bit silly feel of a “horseless carriage” in that it exactly replicates conventional UI in the new paradigm, but the high level idea is to generate a completely ephemeral UI on demand depending on the specific task at hand.

很酷的 LLM 图形用户界面演示!显然,它有一点像“无马马车”的感觉,因为它在新范式中完全复制了传统用户界面,但其高层次的想法是根据手头的具体任务按需生成一个完全短暂的用户界面。

via: https://x.com/karpathy/status/1935779463536755062

找到了源码:https://github.com/ShubhamVsCode/gemini-computer

想象一下,以后的桌面背景、标题栏、边框颜色等,会根据当天的天气,你的心情,或者正在处理的事务,每天生成不一样的,让 LLM 调用安全的接口,动态生成一些界面的框架,还是挺有意思的。

计算机的应用程序,和 LLM 的生成结合起来之后,软件和程序的定义也就完全不一样了。MCP,已经打开了一个新的思路,如果以后操作系统能够提供安全的接口协议给 LLM ,让它实时编译简单的框架,软件和程序就不再是写死的了。

Claude Code,OpenAI 的 codex ,现在在终端里的代码生成工作流越来越成熟了,那么更大胆一点,就是上面提到的了。

最近 AK 也有一个视频: https://www.youtube.com/watch?v=LCEmiRjPEtQ

]]>
2025-06-22T03:24:01+00:00
https://github.com/VandeeFeng/gitmemo/issues/60不要在信息获取上浪费时间 - 信息茧房2025-09-04T15:24:38.310319+00:00不应该再在 RSS 和新闻信息获取方面浪费时间了

同类型的项目很多,比如这几个:

zenfeed , hot_news_daily_push , FeedMe , wiseflow.

问题的根源不在于从海量的信息里通过 AI 总结,而在于从兴趣出发,找到自己想要的内容。

更多的主动检索,更少的被动生成。

保持专注,时间和注意力是现在最宝贵的资源

所谓的信息茧房其实并不能完全消除,只是在于你更愿意相信什么。刺破信息茧房迷思 | 半瓶

无数的信息和新闻每天都在发生,这些信息不会消失,也不用担心会错过什么大事。

关键是要能检索到它们。

https://github.com/VandeeFeng/RSS-CLI ,这个是我理想中的实现。

]]>
2025-06-18T03:30:21+00:00
https://github.com/VandeeFeng/gitmemo/issues/59整合 MCP 优化的 vibe coding rules2025-09-04T15:24:38.459858+00:00https://x.com/kiwiflysky/status/1929561176976834742 ,这个 tweet 里是一个 cursor rules 模板,思路挺不错的,整合了 MCP。里面用到了 mcp-feedback-enhanced: https://github.com/Minidoracat/mcp-feedback-enhanced , 这个项目的详细介绍:https://linux.do/t/topic/694193

虽然还是不喜欢 MCP,但是趋势如此。#50

之前看到的 mcp-proxy ,在 docker 里独立运行 MCP,先用着。

]]>
2025-06-03T04:55:35+00:00
https://github.com/VandeeFeng/gitmemo/issues/58打水困境2025-09-04T15:24:38.607155+00:00小区隔一段时间这个打水的就会过来在饮水机的旁边,支持一个小摊,推销一些充值活动。还会给一个免费的水卡,每个人可以刷一桶。

但是每次这个时候,制水的机子就会变慢,打几桶就要等。我怀疑就是它们调了。

其实在 200 米左右就还有一个打水机,基本没人,制水也和平常一样快。

每次有免费打水活动的时候,总会有大量的人宁愿排队等着这个被调慢的机子,也不愿意走 200 米去另外一个机子自己掏钱打水。

根据我多次的统计观察:

  • 80% 的人会选择排队,从队伍最长的队尾那个人算,最长的排队等待时间是 15 - 20 分钟。这其中我估计有 50% 的人是不知道另一个打水机也可以打水的。
  • 15% 的人是明知道有另一个打水机器还是会选择免费的。因为我经常在另外一边看到免费打水机子的人过来了,一看这边不免费就又回去了。
  • 5% 不到的,会选择到另一个打水机。我就是这 5% !🤣

我让 LLM 分析了一下背后可能的经济学原理:

锚定效应 (Anchoring),损失规避 (Loss Aversion),机会成本 (Opportunity Cost) ,认知偏差 (Cognitive Biases) 这几个概念我觉得是比较沾边的。

生活中很多时候也和这个打水困境一样。有时候是信息不对等,有时候会因为忽略了机会成本没有做出收益最大化的决策。

并不是说那 80% 就一定怎么样,我这个样本里很多是老年人,想少走路是很正常的,想省钱也是很正常的,对于他们来说距离近就是优先考虑的。再说个客观点的观点,从经济学的角度来讲,他们的时间已经不那么值钱了。当然我的也不怎么值钱 🤣

LLM 的回答如下:

从行为经济学的视角来看,这种决策偏好可通过以下原理阐释:

零价格效应 (Zero Price Effect) / “免费”的非线性效用:零价格点具有独特的心理魔力,其带来的主观效用增量并非简单地与价格线性相关。消费者对零价格商品的偏好远超于价格非常低的商品,即使前者隐含更高的非金钱成本(如时间成本)。零价格在心理上消除了支付的痛苦和潜在的交易风险,构建了一种不同于传统市场交换的感知模式。

损失规避 (Loss Aversion):根据前景理论,人们对损失的痛苦程度大于获得同等收益的快乐。放弃“免费”的水在心理上被框架为一种“损失”——即失去本可轻易获得的收益。这种对潜在损失的规避驱使人们选择“免费”选项,即使理性分析表明付费选项的总成本(货币成本+时间成本)可能更低。

双曲贴现 (Hyperbolic Discounting) / 眼前偏好 (Present Bias):人们在进行跨期决策时,倾向于对近期的收益和成本给予更高的权重,而对远期收益和成本给予更低的权重,且这种贴现率随时间推移而非恒定(呈双曲线)。在此案例中,排队等待的时间成本和获得免费水的收益都是“眼前”的(或近期的),而步行去远处付费打水的收益(快速获得水)则在时间上略有延迟,且需要立即付出“眼前”的货币成本。双曲贴现使得人们更倾向于选择能带来即时或近期心理满足(免费)的选项,即便这意味着承担当下的时间成本。

心理账户 (Mental Accounting):个体在头脑中会将资金或资源划分为不同的“账户”,并为不同账户设置不同的决策规则。等待的“时间成本”和支付的“金钱成本”可能被分置于不同的心理账户中。由于人们对金钱账户的管理和感知更为明确和敏感,相比于支付金钱,对花费时间的评估和权重往往较低,导致时间的机会成本被系统性低估。

锚定效应 (Anchoring):商家设定的“免费”或显著折扣价格作为初始信息,构成了一个心理锚点。这个锚点会影响消费者对水本身价值以及其他选项(如远处付费打水)相对吸引力的判断,使其难以进行完全客观的成本效益分析,而倾向于围绕锚点进行调整。

这些认知偏差共同作用,导致消费者在追求表面上的“免费”时,未能充分且理性地权衡所有显性成本(如金钱)和隐性成本(如时间的机会成本),使得感知价值(基于心理偏好)超越了包含所有成本在内的实际经济价值,从而做出了在标准理性经济模型下看似“非最优”的决策。

]]>
2025-05-17T10:48:34+00:00
https://github.com/VandeeFeng/gitmemo/issues/57Nuphy Air75 V2 键盘2025-09-04T15:24:38.786113+00:00Nuphy Air75 键盘到了,选的茶轴。

整个做工用料很舒服,触摸的手感很好,配色选的黑色,外观挺满意的。无线的响应的速度也挺快,基本零延时。

之前 Macbook 一直就用的笔记本的键盘,打字需要按压的力度大一些,这个键盘是矮轴,键程很短,以我现在的力度一按就到底了,所以刚上手对感觉回弹力度不大。

这个茶轴声音不是很大。回弹会有和点击鼠标一样的很清脆的 click 的声音,按下去的声音是有点闷的麻将音。声音挺喜欢的,打字起来很有节奏感。

整个键盘布局和 mac 的按键基本一致,不需要再习惯。数字键的部分排列更紧密,0、-、= 这三个按键距离无名指更近,比 Mac 更容易按到。

链接到电脑上的接头是 USB 的,我为什么要把之前的 usb 转 c 的头子丢了。。。还是上个星期才丢的。。。

Fn 加上数字键就可以快速切换链接的蓝牙设备,这个挺方便的。

再就是可以直接放在 Macbook 上,键盘底部有两个橡胶的突出的卡条,正好可以卡住,挺方便的。

最近刚折腾了一个 Linux ,现在两个电脑都用这一个键盘了。

从到手到现在,持续使用了4、5个小时,打字很轻松,手一点也不酸。

整体来说,挺满意的。

对硬件这些我一直没啥特别的需求,也不怎么折腾。印象中客制化键盘很久之前就开始了。这个品牌之前也没听说,这个键盘也是看的一些大佬推荐入手,国补下来 594,不多不少。

之前的机械键盘也还可以用,但也很多年了。Macbook 的键盘手感也确实一般,综合一下,还是入手了。

]]>
2025-05-14T06:56:41+00:00
https://github.com/VandeeFeng/gitmemo/issues/56Keyword - 大模型的压缩和解压缩2025-09-04T15:24:38.928814+00:00

未来能第一个说出来这些「Magic Words」的人,就率先打开了一个新的参数空间。

via: https://x.com/lijigang_com/status/1921103439813283862

李继刚的这个观点说的挺好的。

大模型的本质是压缩,这也就意味着它一定可以提高信息处理和交换的效率,信息就是编码和解码。

掌握更多的关键词作为信息的索引,是对 LLM 解压缩的关键,就像搜索引擎里的关键词一样。

随着 LLM 能力的提升,prompt 可以写的越来越简单,keyword 关键词起到的效果就会更大。

]]>
2025-05-11T07:51:54+00:00
https://github.com/VandeeFeng/gitmemo/issues/55世界是对数的2025-09-04T15:24:39.074813+00:00#46

之前从来没有系统的从数学的角度来理解世界,之前比较喜欢物理。近几年开始看数学,数学是通往真理的钥匙之一。

也可以说我们现在的世界是建立在数学之上的。数学是人类探究出的物质世界的最底层规律。数学是理解和描述世界的重要工具和语言,没有数学也就没有现代科学。

不合理有效性

数学的高度逻辑性和严谨性似乎与物质世界的有序性相契合,也就是数学概念的普遍有效性。数学的存在和其在描述世界本质方面的“不合理有效性”(Unreasonable Effectiveness),也就是我们感受到的这些巧合。

“不合理有效性”(Unreasonable Effectiveness)最早由物理学家尤金·维格纳(Eugene Wigner)在他1960年的一篇题为《数学在自然科学中不合理的有效性》(The Unreasonable Effectiveness of Mathematics in the Natural Sciences)的论文中提出。

这些“巧合”也一直符合我的直觉,这些独立于人类思维而存在的宇宙结构或真理,我们人类是通过发现、探索,用自己的思维表达出了这些规律、定律、规则,组成了我们对物质世界的表达。

也正是这些,让我们有了存在的“意义”。我认为在另一个高等生物作为参照出现之前,这些定律都无法真正的被证明,它们只是人类思维抽象出的物质信息反馈。

世界是“想象”的

世界是“想象”的,或者反过来说,是无限趋近于想象的现实。

从哲学上来说:

康德的“先验唯心主义 (Transcendental Idealism)”认为,我们所经验到的现象世界并非事物自在之物本身(Ding an sich),而是我们的感官和知性共同构成的结果。时间、空间以及因果性等是我们先验的感性形式和知性范畴用来组织感官材料的结构。因此,我们经验到的世界是心灵活动所构建的现象世界,而不是独立于心灵存在的本体世界。这表明我们所理解和感知的世界的本质是心智加工的结果,虽然这个构建是遵循先验结构的,而非随意的“想象”。(我认为物质世界还是独立存在的)

叔本华的代表作《作为意志和表象的世界》里提出了一个观点,世界就其呈现在我们面前而言,是我们的“表象 (Vorstellung)”。这个表象是我们的认识形式(如因果律、空间、时间,类似于康德的范畴)对自在之物(他称之为“意志”)进行加工的结果。因此,我们所经验到的现象世界是我们的心智构建的表象,而非自在之物本身。虽然世界的更深层本质是他所谓的“意志”,但我们所能认识的世界是我们的“表象”。

【毕导】这个定律,预言了你的人生进度条_哔哩哔哩_bilibili ,通过这个视频感受到一些新的视角。

  • 韦伯-费希纳定律:人的感觉是和实际物理量的对数成正比的。这可以解释为什么感觉时间过的越来越快。
  • 本福特定律: 本福特定律也许暗示着我们的大自然就是天生钟爱对数。物理世界的数值以对数的形式跨越着数量级,而我们的大脑又用对数运算,把它们压缩回可感知的空间中,才让我们体会到世界在每个尺度上专属的精彩。
  • 正如津巴多在《普通心理学》中写道:知觉赋予感觉以意义,因此知觉产生的是对世界的解释,而不是对世界的完美表征。
]]>
2025-05-11T04:44:31+00:00
https://github.com/VandeeFeng/gitmemo/issues/54如果一个实现还不够简洁,那么就说明它还不够完美2025-09-04T15:24:39.223502+00:00如果一个实现还不够简洁,那么就说明它还不够完美。 -- Vandee

Two decades of Git: A conversation with creator Linus Torvalds - YouTube ,这是微软 GitHub 和 Linus Torvalds 的访谈,回顾了 Git 的 20 年历程。看到一半突然冒出了这些想法:

一个越是简单的实现,背后越是复杂。

我想表达的『简单』是一种呈现,复杂是它得以呈现的过程和支撑,如果没有这些,那么它只能是空洞的脆弱的空壳。

在自然界,那些巧夺天工的精妙,雪花晶体的六边形,蜜蜂的蜂巢,黄金比例,这些呈现出的结果上的简单,背后都不那么简单。

我认为,正是因为它能够呈现出简单,所以它才能从其他可能性里脱颖而出,没有在迭代中被淘汰掉。

这是自然界的规律,也是宇宙的规律,就像 E=mc² 。

但这也可能是人类认知局限的一种“妥协”。追求简单这点上,从古至今我们的思维都没有怎么变,人类不断的探索未知,渴望从复杂的物质现象中,找到规律,找到真理,但我始终有种感觉,它其实并不存在。

有序是我们从无序中“创造”的,物质的本质就是无序的,有序是它呈现出的一种人类认知范围内更方便理解的现象。就像时间,或许它就是现有人类认知体系里无法归纳出的范畴,在另一个维度里,时间可能根本就不是以我们现有的认知体系来呈现的。我的理论知识有限,表达的不太准确,意思就是这个意思。

但正是人类的好奇心和求知,驱使我们突破人类的种种局限,不断的突破想象力的边界,才有了现在得以一直延续的人类文明。

]]>
2025-05-05T06:14:30+00:00
https://github.com/VandeeFeng/gitmemo/issues/53我们的思考依靠共鸣,而非演绎2025-09-04T15:24:39.462716+00:00

Geoffrey Hinton says the more we understand how AI and the brain actually work, the less human thinking looks like logic.

We're not reasoning machines, he says. We're analogy machines. We think by resonance, not deduction.

“We're much less rational than we thought.”

杰弗里·辛顿表示,我们越了解人工智能和大脑的实际运作方式,就越发现人类思维与逻辑的相似性越少。

他说,我们并非推理机器,而是类比机器。我们的思考依靠共鸣,而非演绎。

"我们远没有自己想象的那么理性。"

via: https://x.com/vitrupo/status/1914507448855224383

Origin video:https://www.youtube.com/watch?v=vpUXI9wmKLc

这让我想起了很久之前的一个思考:人类的思维习惯是用已知来描述、定义未知。

杰弗里·辛顿 - 维基百科

]]>
2025-04-22T10:08:39+00:00
https://github.com/VandeeFeng/gitmemo/issues/52Crust2025-09-04T15:24:39.597608+00:00和我想做的一样!区别是我还不会!🤣

What if Rust was Worse than C - YouTube

]]>
2025-04-16T03:03:59+00:00
https://github.com/VandeeFeng/gitmemo/issues/51极简笔记方案2025-09-04T15:24:39.717099+00:00很早就接触到了用 HTML 文件来做笔记的方法,但是自己一直没有尝试,直到看到这个项目:https://github.com/keepworking/nash

在原作者的基础上,根据自己的需求加了一些东西,现在很可用了:https://github.com/VandeeFeng/nash ,简直就是一个迷你版的 tiddlywiki。

笔记的形式始终是次要的,重要的是记录的内容。

一个自己最愿意使用的笔记方案,就是最好的笔记方案。这几年也一直在慢慢的把我的笔记系统去形式化,低耦合。

HTML 和 markdown 相比,对我现在来说,优势就在于一步到位,可以根据自己的需求写 CSS,JavaScript,也不必要依赖任何平台或者框架。

再一个,可能现在更方便被 AI crawl 爬,也算是一个优势吧。

]]>
2025-04-14T08:00:35+00:00
https://github.com/VandeeFeng/gitmemo/issues/50不太看好 MCP2025-09-04T15:24:39.873309+00:00从 MCP 出来到现在,我本能的不太看好它,也不知道为什么。

但作为我理想中 agent 形态的过渡期 #45 ,MCP 的实现还是提供了很多可能性的。

Andrej Karpathy 有一条回答是 please make it stop :https://x.com/karpathy/status/1899887925103648933

华中科技大学|模型上下文协议 (MCP)- 现状剖析、安全威胁与未来研究方向

Model Context Protocol has prompt injection security problems

AI Agent破局:MCP与A2A定义安全新边界

Everything Wrong with MCP - by Shrivu Shankar

]]>
2025-04-14T01:52:24+00:00
https://github.com/VandeeFeng/gitmemo/issues/49自我效能2025-09-04T15:24:40.017855+00:00在 AI 这个放大器下,许多指标上的差异会被拉平,提升效率就变得更重要,时间对于每个人都是平等的。

所谓的自我效能,是指相信自己有能力成功完成特定任务或应对特定情况的信心。很多复杂的因素决定了一个人自我效能的高低,这并非天生的。成长过程中长辈的态度、通过对他人的观察、个体与环境互动等等都影响一个人的自我效能水平。

在同样面对一个问题,自我效能低的人,看到的往往全是问题,最终放弃。而自我效能高的人,有强大的信念认为可以解决问题。前者也许在智力上比后者更高,但后者可以通过这种信念一直前进,超越前者。

via: https://lutaonan.com/blog/oi/

没想到 obsidian 出了一个剪藏插件,这是目前用过最好用的了。

https://obsidian.md/clipper

]]>
2025-04-08T05:34:49+00:00
https://github.com/VandeeFeng/gitmemo/issues/48技术入侵 or 技术平权?2025-09-04T15:24:40.174386+00:00FOSS infrastructure is under attack by AI companies | Hacker News 里有个评论说到:

AI firms seem to be leading from a position that goodwill is irrelevant: a $100bn pile of capital, like an 800lb gorilla, does what it wants. AI will be incorporated into all products whether you like it or not; it will absorb all data whether you like it or not.

人工智能企业似乎正以一种善意无关紧要的姿态引领潮流:1000 亿美元的巨额资本,犹如一只重达 800 磅的大猩猩,随心所欲。 无论你是否乐意,人工智能都将被整合到所有产品中;无论你是否乐意,它都将吸收所有数据。

犹如互联网刚开始的时候一样,同样也是隐私问题,万物都接入互联网,数据问题。而LLM 的训练数据很大一部分来源于互联网数据。因此它们应该是同一个问题。

看到一个有意思的项目:anubis - Weighs the soul of incoming HTTP requests using proof-of-work to stop AI crawlers , https://github.com/TecharoHQ/anubis. --2025-03-23

客观来讲,我觉得可以形容这种情况为“技术入侵”。

前两天看到一个推文:https://x.com/oran_ge/status/1902152722994098267 ,提出了一个观点,大致意思是:LLM 是一次技术平权,让没有编程相关技术的人也可以以较低的门槛玩玩 AI,写写代码。

时间会证明 AI 到底会带来多大的改变,讨论这些是非长远看来没啥意义,历史的趋势不是个人可以左右的。

]]>
2025-03-21T05:18:57+00:00
https://github.com/VandeeFeng/gitmemo/issues/47类 Firefox config2025-09-04T15:24:40.363809+00:00由于最近 Firefox 的隐私声明问题,包括这几年的一些操作,把一直用的 Firefox 换成了 LibreWolf。一个舒服、顺手的浏览器对我很重要。

firefox config

Info

user.js

//
/* You may copy+paste this file and use it as it is.
 *
 * If you make changes to your about:config while the program is running, the
 * changes will be overwritten by the user.js when the application restarts.
 *
 * To make lasting changes to preferences, you will have to edit the user.js.
 */

/****************************************************************************
 * Betterfox                                                                *
 * "Ad meliora"                                                             *
 * version: 135                                                             *
 * url: https://github.com/yokoffing/Betterfox                              *
****************************************************************************/

/****************************************************************************
 * SECTION: FASTFOX                                                         *
****************************************************************************/
/** GENERAL ***/
user_pref("content.notify.interval", 100000);

/** GFX ***/
user_pref("gfx.canvas.accelerated.cache-size", 512);
user_pref("gfx.content.skia-font-cache-size", 20);

/** DISK CACHE ***/
user_pref("browser.cache.disk.enable", false);

/** MEDIA CACHE ***/
user_pref("media.memory_cache_max_size", 65536);
user_pref("media.cache_readahead_limit", 7200);
user_pref("media.cache_resume_threshold", 3600);

/** IMAGE CACHE ***/
user_pref("image.mem.decode_bytes_at_a_time", 32768);

/** NETWORK ***/
user_pref("network.http.max-connections", 1800);
user_pref("network.http.max-persistent-connections-per-server", 10);
user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
user_pref("network.http.pacing.requests.enabled", false);
user_pref("network.dnsCacheExpiration", 3600);
user_pref("network.ssl_tokens_cache_capacity", 10240);

/** SPECULATIVE LOADING ***/
user_pref("network.dns.disablePrefetch", true);
user_pref("network.dns.disablePrefetchFromHTTPS", true);
user_pref("network.prefetch-next", false);
user_pref("network.predictor.enabled", false);
user_pref("network.predictor.enable-prefetch", false);

/** EXPERIMENTAL ***/
user_pref("layout.css.grid-template-masonry-value.enabled", true);

/****************************************************************************
 * SECTION: SECUREFOX                                                       *
****************************************************************************/
/** TRACKING PROTECTION ***/
user_pref("browser.contentblocking.category", "strict");
user_pref("browser.download.start_downloads_in_tmp_dir", true);
user_pref("browser.helperApps.deleteTempFileOnExit", true);
user_pref("browser.uitour.enabled", false);
user_pref("privacy.globalprivacycontrol.enabled", true);

/** OCSP & CERTS / HPKP ***/
user_pref("security.OCSP.enabled", 1);
user_pref("security.remote_settings.crlite_filters.enabled", true);
user_pref("security.pki.crlite_mode", 2);

/** SSL / TLS ***/
user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
user_pref("browser.xul.error_pages.expert_bad_cert", true);
user_pref("security.tls.enable_0rtt_data", false);

/** DISK AVOIDANCE ***/
user_pref("browser.privatebrowsing.forceMediaMemoryCache", true);
user_pref("browser.sessionstore.interval", 60000);

/** SHUTDOWN & SANITIZING ***/
user_pref("browser.privatebrowsing.resetPBM.enabled", true);
user_pref("privacy.history.custom", true);

/** SEARCH / URL BAR ***/
user_pref("browser.urlbar.trimHttps", true);
user_pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
user_pref("browser.urlbar.update2.engineAliasRefresh", true);
user_pref("browser.search.suggest.enabled", false);
user_pref("browser.urlbar.quicksuggest.enabled", false);
user_pref("browser.urlbar.groupLabels.enabled", false);
user_pref("browser.formfill.enable", false);
user_pref("security.insecure_connection_text.enabled", true);
user_pref("security.insecure_connection_text.pbmode.enabled", true);
user_pref("network.IDN_show_punycode", true);

/** HTTPS-FIRST POLICY ***/
user_pref("dom.security.https_first", true);

/** PASSWORDS ***/
user_pref("signon.formlessCapture.enabled", false);
user_pref("signon.privateBrowsingCapture.enabled", false);
user_pref("network.auth.subresource-http-auth-allow", 1);
user_pref("editor.truncate_user_pastes", false);

/** MIXED CONTENT + CROSS-SITE ***/
user_pref("security.mixed_content.block_display_content", true);
user_pref("pdfjs.enableScripting", false);

/** EXTENSIONS ***/
user_pref("extensions.enabledScopes", 5);

/** HEADERS / REFERERS ***/
user_pref("network.http.referer.XOriginTrimmingPolicy", 2);

/** CONTAINERS ***/
user_pref("privacy.userContext.ui.enabled", true);

/** SAFE BROWSING ***/
user_pref("browser.safebrowsing.downloads.remote.enabled", false);

/** MOZILLA ***/
user_pref("permissions.default.desktop-notification", 2);
user_pref("permissions.default.geo", 2);
user_pref("browser.search.update", false);
user_pref("permissions.manager.defaultsUrl", "");

/** TELEMETRY ***/
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.server", "data:,");
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.coverage.opt-out", true);
user_pref("toolkit.coverage.opt-out", true);
user_pref("toolkit.coverage.endpoint.base", "");
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);

/** EXPERIMENTS ***/
user_pref("app.shield.optoutstudies.enabled", false);
user_pref("app.normandy.enabled", false);
user_pref("app.normandy.api_url", "");

/** CRASH REPORTS ***/
user_pref("breakpad.reportURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false);

/** DETECTION ***/
user_pref("captivedetect.canonicalURL", "");
user_pref("network.captive-portal-service.enabled", false);
user_pref("network.connectivity-service.enabled", false);

/****************************************************************************
 * SECTION: PESKYFOX                                                        *
****************************************************************************/
/** MOZILLA UI ***/
user_pref("browser.privatebrowsing.vpnpromourl", "");
user_pref("extensions.getAddons.showPane", false);
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
user_pref("browser.discovery.enabled", false);
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
user_pref("browser.preferences.moreFromMozilla", false);
user_pref("browser.aboutConfig.showWarning", false);
user_pref("browser.aboutwelcome.enabled", false);
user_pref("browser.profiles.enabled", true);

/** THEME ADJUSTMENTS ***/
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("browser.compactmode.show", true);
user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS

/** COOKIE BANNER HANDLING ***/
user_pref("cookiebanners.service.mode", 1);
user_pref("cookiebanners.service.mode.privateBrowsing", 1);

/** FULLSCREEN NOTICE ***/
user_pref("full-screen-api.transition-duration.enter", "0 0");
user_pref("full-screen-api.transition-duration.leave", "0 0");
user_pref("full-screen-api.warning.timeout", 0);

/** URL BAR ***/
user_pref("browser.urlbar.suggest.calculator", true);
user_pref("browser.urlbar.unitConversion.enabled", true);
user_pref("browser.urlbar.trending.featureGate", false);

/** NEW TAB PAGE ***/
user_pref("browser.newtabpage.activity-stream.feeds.topsites", true);
user_pref("browser.newtabpage.activity-stream.showWeather", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);

/** POCKET ***/
user_pref("extensions.pocket.enabled", false);

/** DOWNLOADS ***/
user_pref("browser.download.manager.addToRecentDocs", false);

/** PDF ***/
user_pref("browser.download.open_pdf_attachments_inline", true);

/** TAB BEHAVIOR ***/
user_pref("browser.bookmarks.openInTabClosesMenu", false);
user_pref("browser.menu.showViewImageInfo", true);
user_pref("findbar.highlightAll", true);
user_pref("layout.word_select.eat_space_to_next_word", false);

/****************************************************************************
 * START: MY OVERRIDES                                                      *
****************************************************************************/
// visit https://github.com/yokoffing/Betterfox/wiki/Common-Overrides
// visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening
// Enter your personal overrides below this line:

/****************************************************************************
 * SECTION: SMOOTHFOX                                                       *
****************************************************************************/
// visit https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js
// Enter your scrolling overrides below this line:

/****************************************************************************
 * END: BETTERFOX                                                           *
****************************************************************************/

userChrome.css

@media (prefers-color-scheme:dark){
    :root{
        --bg: #181818 !important; /* 2A2A2A */

        --urlbar-bg: #222222;
        --urlbar-border-top: #000;
        --urldrop-bg: #222222; /* #1D1D1D */
        --urlbar-border-bottom: #404040;
        --urlbar-outline: #96a6c8;

        --fullscreen-warn: rgb(25,25,25);

        --arrowpanel-background: var(--urlbar-bg) !important;
        --button-hover-bgcolor: rgba(159, 159, 159, 0.35) !important;
        --button-active-bgcolor: rgba(255, 255, 255, .2) !important;
        --button-bgcolor: rgba(117, 117, 117, 0.9) !important;
        --toolbarbutton-icon-fill-opacity: 0.8 !important;
        --arrowpanel-border-color: rgb(55, 55, 55) !important;
        --identity-btn-hover-color: rgba(117,117,117) !important;

        --dark-menu-background-color: rgba(34, 34, 36, .5) !important;
        --dark-menu-border-color: rgb(55, 55, 55) !important;
        --dark-menuitem-hover-background-color: rgba(159, 159, 159, 0.35) !important;
    }
}

@media (prefers-color-scheme:light){
    :root{   
        --bg: #f1f5f9;

        --urlbar-bg: #cbd5e1;
        --urlbar-border-top: #9ca3af;
        --urlbar-border-bottom: #fff;
        --urldrop-bg: #cbd5e1;
        --urlbar-outline: #94a3b8;

        --fullscreen-warn: rgb(25,25,25);

        --arrowpanel-background: #e2e8f0 !important;
        --button-hover-bgcolor: #cbd5e1 !important;
        --button-active-bgcolor: #cbd5e1 !important;
        --identity-btn-hover-color: white !important;
    }
}

/* Suppress Connecting/Waiting/Reading/Transerring */
/*  #statuspanel[type="status"] {
   display: none !important;
 } */

/* Suppress Link Destination Overlay */
/*  #statuspanel[type="overLink"] {
   display: none !important;
 } */


/* URL BAR */
#urlbar {
    border-radius: 24px !important;
    border: 0 !important;
}

#urlbar:not(.megabar):not([focused="true"]):hover {
    outline: 1px solid var(--urlbar-outline) !important;
}

#urlbar[focused="true"] {
    border: 0 !important;
    border-top: 1px solid var(--urlbar-border-top) !important;
    border-bottom: 1px solid var(--urlbar-border-bottom) !important;
    border-radius: 24px !important;
}

#urlbar[breakout][breakout-extend]{
    border: none !important;
    box-shadow: rgba(0, 0, 0, 0.09) 0px 2px 1px, rgba(0, 0, 0, 0.09) 0px 4px 2px,
                rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 16px 8px,
                rgba(0, 0, 0, 0.09) 0px 32px 16px !important;
    top: calc(
        (var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2 ) !important;
    left: 0 !important;
    width: 100% !important;
}

#urlbar-container{
    margin-top: 4px !important;
    margin-bottom: 1px !important;
    display: initial;

}

#urlbar-background {
    box-shadow: none !important;
    border-radius: 24px !important;
    background: var(--urlbar-bg) !important;  
}

#urlbar[focused="true"] #urlbar-background{
    box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.35) !important;
    outline: none !important;
}

#wrapper-urlbar-container #urlbar {
    height: 24px !important;
}

/* Active Address/Search Field Dropdown */
#urlbar[breakout][breakout-extend] > #urlbar-background {
    outline: none !important;
    box-shadow: none !important;
    background: var(--urldrop-bg) !important;
    border-radius: 10px !important;
}

#urlbar[breakout][breakout-extend] > #urlbar-input-container,
#urlbar-input-container {
    height: var(--urlbar-height) !important;
    padding-block: 0px !important;
    padding-inline: 0px !important;
    transition: none !important;
}
/* 控制搜索框弹出的大小 */
#urlbar[breakout][breakout-extend] {
    /* 控制展开时的整体尺寸 */
    position: relative !important;
    top: 2px !important;
    left: 0 !important;
    width: 60% !important;        /* 减小整体宽度 */
    margin-left: 20% !important;  /* 居中显示 */
    
    /* 限制框体大小 */
    height: auto !important;
    padding: 0 !important;
    border: none !important;
}

#urlbar[breakout][breakout-extend] > #urlbar-background {
    /* 控制背景框的大小 */
    width: 100% !important;
    height: 100% !important;
    border: 1px solid var(--urlbar-border-bottom) !important;  /* Add border */
    border-radius: 24px !important;  /* Match the regular urlbar radius */
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;  /* Add subtle shadow */
    outline: none !important;
}

#urlbar[breakout][breakout-extend] > #urlbar-input-container {
    padding: 4px !important;  /* Add some padding */
}

#urlbar-results {
    /* 控制结果列表的大小 */
    width: 100% !important;
    max-height: 50vh !important;  /* 可以调整这个值来改变下拉列表高度 */
}


/* Idendity icon button */
#identity-icon-box.identity-box-button{
    margin: 2px 0 2px 2px;
    border-radius: 12px !important;
    background-color: var(--bg) !important;
    opacity: 0.8
}

#identity-icon-box.identity-box-button:hover{
    cursor: pointer;  
    background-color: var(--identity-btn-hover-color) !important;
}

/* Track protection icon */
#tracking-protection-icon-container{
    border-radius: 12px !important;
}

#tracking-protection-icon-container:hover{
    cursor: pointer !important;
}

/* Star button */
#star-button-box{
    border-radius: 12px !important;
}

#star-button-box:hover{
    cursor: pointer !important;
}

/* | Borders | */
.tabbrowser-tab::after {
    border: 0 !important;
}
.titlebar-spacer[type="pre-tabs"] {
    border: 0 !important;
}
#navigator-toolbox {
    border: 1 !important;
}

.titlebar-spacer[type="pre-tabs"] {
    border: 0 !important;
}

.tabbrowser-tab::after {
    border: 0 !important;
}

#urlbar-background {
    border: 0 !important;
}

#urlbar[open] > .urlbarView > .urlbarView-body-outer > .urlbarView-body-inner {
    border-top: 0 !important;
}


/* Active Tab */
:root:not([lwt-default-theme-in-dark-mode]) .tab-background[selected],
.tab-background[multiselected="true"] { 
    background: rgba(0,0,0,.05) !important;
}

:root[lwt-default-theme-in-dark-mode] .tab-background[selected],
.tab-background[multiselected="true"] { 
    background: rgba(0,0,0,.2) !important;
}


/* Navigation Bar */

.titlebar-buttonbox{
    appearance: none !important
}

#nav-bar {
    margin-top: -8px !important;
    background-color: var(--bg) !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    min-height: 28px !important;
}

#nav-bar[inFullscreen="true"]{
    margin-top: -10px;
}

/* Bookmarks Bar */
#PersonalToolbar {
    background-color: var(--bg) !important;
}

/* Navigation Bar Separator */
#navigator-toolbox {
    border-color: var(--bg) !important;
    background-color: var(--bg) !important;
    padding-top: 1px !important;
}

/* Navigation bar Buttons */
toolbarbutton{
    margin-top: 0px !important;
}

toolbarbutton:hover{
    cursor: pointer;
}

/* Show Tab close button on hover */
.tabbrowser-tab:not([pinned]) .tab-close-button {
    display: -moz-box !important;
    opacity: 0;
    visibility: collapse !important;
    transition: opacity 0.25s, visibility 0.25s ease-in !important;
}
.tabbrowser-tab:not([pinned]):hover .tab-close-button {
    opacity: 1;
    visibility: visible !important;
    border-radius: 3px 3px 3px 3px !important;
}

/* Show URL buttons on Hover */
#nav-bar:not([customizing="true"])
            > #nav-bar-customization-target
            > #urlbar-container:not(:hover)
                                   > #urlbar:not([focused])
                                                > #urlbar-input-container
                                                > #page-action-buttons {
    opacity: 0;
}
#page-action-buttons {
    transition: opacity 0.15s ease;
}
#nav-bar:not([customizing="true"])
            > #nav-bar-customization-target
            > #urlbar-container:not(:hover)
                                   > #urlbar:not([focused])
                                                > #urlbar-input-container
                                                > #tracking-protection-icon-container {
    opacity: 0;
}
#tracking-protection-icon-container {
    transition: opacity 0.15s ease;
}


/*Full Screen Warning*/

#fullscreen-warning{
    background-color: var(--fullscreen-warn) !important;
    border-color: var(--fullscreen-warn) !important;
    max-width: 500px !important;
    max-height: 50px !important;
    border-radius: 50px !important;
    font-size: 12px !important;
    opacity: 0.8 !important;
}

.pointerlockfswarning-generic-text,
.pointerlockfswarning-domain-text{
    font-size: 15px !important;
    color: rgb(255,255,255) !important;
    text-shadow: none !important;
}


/* Uncomment to Hide tabs bar for Tree style tabs (Credit u/jfgxyz on Reddit) */
toolbar#TabsToolbar {
    height: 0px;
    min-height: 0 !important;
    padding-top: 5px !important;
    background-color: var(--bg) !important;     
}
.toolbar-items {
    visibility: collapse;
}
hbox#nav-bar-customization-target {
    padding-left: 80px !important;
}

/* SIDEBERY */

/* hides the sidebar header */
#sidebar-header {
    display: none !important;
}

.tab[selected="true"] {
    visibility: collapse;
    height: 0px;
}

.tabbrowser-tab {
    visibility: collapse;
    height: 0px;
}

.tabbrowser-tab[visuallyselected="true"] {
    visibility: collapse;
    height: 0px;
}

/* AUTO HIDE SIDE BAR */

#sidebar-box {
    --uc-sidebar-width: 42px; 
    --uc-sidebar-hover-width: 245px;
    --uc-autohide-sidebar-delay: 1ms; /* Waiting time before hiding sidebar */
    position: relative;
    min-width: var(--uc-sidebar-width) !important;
    width: var(--uc-sidebar-width) !important;
    max-width: var(--uc-sidebar-width) !important;
    z-index: 100;
}

#sidebar-box[positionend] {
    direction: rtl;
}
#sidebar-box[positionend] > * {
    direction: ltr;
}

#sidebar-box[positionend]:-moz-locale-dir(rtl) {
    direction: ltr;
}
#sidebar-box[positionend]:-moz-locale-dir(rtl) > * {
    direction: rtl;
}

/* HIDE SIDE BAR IN FULL SCREEN */
/* #main-window[inFullscreen="true"] #sidebar-box {
        --uc-sidebar-width: 0px;
} */

#sidebar-splitter {
    display: none;
}

#sidebar-header {
    overflow: hidden;
    color: var(--chrome-color, inherit) !important;
}

#sidebar {
    transition: min-width 115ms linear var(--uc-autohide-sidebar-delay) !important;
    min-width: var(--uc-sidebar-width) !important;
    will-change: min-width;
}

#sidebar-box:hover > #sidebar {
    min-width: var(--uc-sidebar-hover-width) !important;
    transition-delay: 0ms !important;
}

/* Add padding to sidebery content */
#sidebar-box #sidebar {
    padding-left: 3px !important;
}

#sidebar .panel-content {
    padding-left: 3px !important;
}

#sidebar .sidebar-panel {
    padding-left: 3px !important;
}

/* Commented out hover state padding reset */
/* #sidebar-box:hover #sidebarcontainer-Sidebery .browser-tab {
    padding-left: 0 !important;
} */

.sidebar-panel {
    background-color: transparent !important;
    color: var(--newtab-text-primary-color) !important;
}

.sidebar-panel #search-box {
    -moz-appearance: none !important;
    background-color: rgba(249, 249, 250, 0.1) !important;
    color: inherit !important;
}

/* Add sidebar divider and give it background */

#sidebar,
#sidebar-header {
    background-color: inherit !important;
    /*  border-inline: 1px solid rgb(80, 80, 80); */
    border-inline-width: 0px 1px;
}

#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
#sidebar-box[positionend] > * {
    border-inline-width: 1px 0px;
}

/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */

#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel {
    inset-inline: auto 0px !important;
}
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label {
    margin-inline: 0px !important;
    border-left-style: solid !important;
}

userContent.css

::selection {
  background-color: #476287; 
  color: #fbfbfe; 
}

Vimium

/* Define variables within a Vimium-specific scope */
#vomnibar,
#vimiumHintMarkerContainer,
div.vimiumHUD,
div#vimiumHelpDialogContainer {
  --font-size: 14px;
  --font-size-hints: 14px;
  --font-size-url: 14px;
  --font-weight: normal;
  --font-weight-medium: medium;
  --font-weight-bold: bold;
  --font: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
  --padding: 1px;
  --padding-vomnibar: 8px;
  --shadow: 0px 20px 40px 0px rgba(0, 0, 0, 0.25);
  --blur: 40px;
  --fg: #e0e0e0;          /* Soft light gray */
  --fg-dark: #c9c9c9;
  --fg-url: #84bffa;
  --fg-match: #2165d9;
  --bg: rgba(30, 30, 30, 0.8);
  --bg-selected: rgba(150, 150, 150, 0.3);
  --border: #464646;
  --fg-hints: #ffd752;
}

/* HINTS */
#vimiumHintMarkerContainer div.internalVimiumHintMarker,
#vimiumHintMarkerContainer div.vimiumHintMarker {
  background: var(--bg);
  border: 1px solid var(--border);
  backdrop-filter: blur(10px);
  box-shadow: var(--shadow);
  padding: 2px 3px;
}

#vimiumHintMarkerContainer div span {
  color: var(--fg-hints);
  font-family: var(--font);
  font-size: var(--font-size-hints);
  font-weight: var(--font-weight-bold);
  text-shadow: none;
}

#vimiumHintMarkerContainer div > .matchingCharacter {
  opacity: 0.3;
}

#vimiumHintMarkerContainer div > .matchingCharacter ~ span {
  color: var(--fg-hints);
}

/* VOMNIBAR */
#vomnibar {
  background: var(--bg);
  backdrop-filter: blur(var(--blur));
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  border-radius: 15px;
  overflow: hidden;
  left: 50%;
  margin-left: -400px;
  max-width: 800px;
}

#vomnibar .vomnibarSearchArea,
#vomnibar input {
  background: transparent;
  border: none;
  box-shadow: none;
  color: var(--fg);
  font-family: var(--font);
  font-size: var(--font-size);
  font-weight: var(--font-weight);
}

#vomnibar .vomnibarSearchArea {
  padding: 4px 10px;
  border-radius: 6px;
}

#vomnibar input {
  border: none;
  padding: var(--padding);
}

.vomnibarNoInsertText {
  display: none;
}

#vomnibar ul {
  background: transparent;
  border-top: 1px solid var(--border);
  margin: 0;
  padding: var(--padding-vomnibar);
}

#vomnibar li {
  border-bottom: none;
  padding: 8px;
}

#vomnibar li .vomnibarTopHalf {
  padding: var(--padding);
}

#vomnibar li .vomnibarBottomHalf {
  padding-top: 0px;
  padding-bottom: 0px;
}

#vomnibar li .vomnibarSource {
  color: var(--fg-dark);
  font-family: var(--font);
  font-size: 12px;
  font-weight: var(--font-weight-bold);
  text-transform: uppercase;
}

#vomnibar li em,
#vomnibar li .vomnibarTitle {
  color: var(--fg);
  font-family: var(--font);
  font-size: var(--font-size);
  font-weight: var(--font-weight-medium);
}

#vomnibar li .vomnibarUrl {
  color: var(--fg-url);
  font-family: var(--font);
  font-size: var(--font-size-url);
  font-weight: var(--font-weight-medium);
}

#vomnibar li .vomnibarMatch {
  color: var(--fg-match);
  font-weight: normal;
}

#vomnibar li .vomnibarTitle .vomnibarMatch {
  color: var(--fg);
  font-weight: bold;
}

#vomnibar li.vomnibarSelected {
  background-color: var(--bg-selected);
  backdrop-filter: blur(20px);
  border-radius: 8px;
}

#vomnibar li.vomnibarSelected .vomnibarUrl {
  color: var(--fg-url);
}

#vomnibar li.vomnibarSelected .vomnibarMatch {
  color: var(--fg);
}

/* HUD */
div.vimiumHUD {
  background: var(--bg);
  backdrop-filter: blur(20px);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  border-radius: 6px;
}

div.vimiumHUD span#hud-find-input,
div.vimiumHUD .vimiumHUDSearchAreaInner {
  color: var(--fg);
  font-family: var(--font);
  font-size: 13px;
  font-weight: var(--font-weight-medium);
}

div.vimiumHUD .hud-find {
  background-color: transparent;
  border: none;
}

div.vimiumHUD .vimiumHUDSearchArea {
  background-color: transparent;
  padding: 4px;
}

/* HELP DIALOG */
div#vimiumHelpDialogContainer {
  background-color: transparent !important;
  border: none !important;
}

div#vimiumHelpDialog {
  background: var(--bg);
  backdrop-filter: blur(var(--blur));
  border: 1px solid var(--border);
  border-radius: 15px;
  font-family: var(--font);
  font-size: var(--font-size);
  padding: 10px 8px !important;
}

span#vimiumTitle {
  color: var(--fg);
}

a:link.vimiumHelDialogLink,
a:visited.vimiumHelDialogLink,
a:hover.vimiumHelDialogLink,
a:active.vimiumHelDialogLink,
a#toggleAdvancedCommands {
  color: var(--fg-url);
  font-family: var(--font);
  font-size: var(--font-size);
}

span.vimiumHelpDialogKey {
  background-color: var(--bg-hints, var(--bg)); /* Fallback to --bg if --bg-hints undefined */
  border: 1px solid var(--border-hints, var(--border)); /* Fallback */
  box-shadow: var(--shadow);
  padding: 1px 2px;
  color: var(--fg-hints);
  font-family: var(--font);
  font-size: var(--font-size-hints);
  font-weight: var(--font-weight-bold);
  text-shadow: none;
}

td.vimiumHelpSectionTitle,
td.vimiumHelpDescription {
  color: var(--fg);
  font-family: var(--font);
}

div.vimiumColumn {
  color: var(--fg);
  font-family: var(--font);
}

vimium-zen-theme

:root {
  --font-size: 18px;
  --font-size-title: 16px;
  --font-size-hints: 12px;
  --font-size-url: 12px;

  --font-weight: normal;
  --font-weight-medium: medium;
  --font-weight-bold: bold;

  --font: "Cantarell", "Noto Serif", "Arial", sans-serif;

  --padding: 2px;
  --padding-vomnibar: 10px 0;
  --shadow: 0px 20px 40px 0px rgba(0, 0, 0, 0.25);
  --blur: 40px;

  /* Vomnibar & hud */
  --fg: #e0e0e0;          /* Soft light gray */
  --fg-match: #2165d9;
  --fg-dark: #c9c9c9;
  --fg-match: #2165d9;
  --fg-url: #84bffa;

  --bg: #202020;
  --bg-selected: rgba(150, 150, 150, 0.3);

  --border: #38373e;

  /* Hints */
  --fg-hints: #ffd752;
}

/* CSS */

/* Vomnibar */

#vomnibar {
  background: var(--bg);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  border-radius: 15px;
  overflow: hidden;
  left: 50%;
  margin-left: -400px;
  max-width: 800px;
}

#vomnibar #vomnibar-search-area,
#vomnibar input {
  background: transparent;
  border: none;
  box-shadow: none;
  color: var(--fg);
  font-family: var(--font);
  font-size: var(--font-size);
  font-weight: var(--font-weight-medium);
}

#vomnibar #vomnibar-search-area {
  padding: 14px 50px;
  border-radius: 6px;
}

#vomnibar input {
  border: none;
  padding: var(--padding);
}

#vomnibar #vomnibar-search-area::before {
  content: "";
  position: absolute;
  top: 22px;
  left: 20px;
  background-image: url("data:image/svg+xml;utf8,<svg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M14.9536 14.9458L21 21M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z' stroke='%23dfdfdf' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  width: 18px;
  height: 18px;
}

.no-insert-text {
  display: none;
}

#vomnibar ul {
  background: transparent;
  border-top: 2px solid var(--border);
  margin: 0 15px;
  margin-bottom: 5px;
  padding: var(--padding-vomnibar);
}

#vomnibar li {
  border-bottom: none;
  padding: 15px;
}

#vomnibar li .top-half {
  padding: var(--padding);
}

#vomnibar li .bottom-half {
  padding: 0px 0px 0px 2px;
  margin: 0;
}

#vomnibar li .source {
  color: var(--fg-dark);
  font-family: var(--font);
  font-size: var(--font-size-title);
  font-weight: var(--font-weight-bold);
  text-transform: capitalize;
}

#vomnibar li em,
#vomnibar li .title {
  color: var(--fg);
  font-family: var(--font);
  font-size: var(--font-size-title);
  font-weight: var(--font-weight-medium);
}

#vomnibar li .url {
  color: var(--fg-url);
  font-family: var(--font);
  font-size: var(--font-size-url);
  font-weight: var(--font-weight-medium);
}

#vomnibar li .match {
  color: var(--fg-match);
}

#vomnibar li .title .match {
  color: var(--fg);
  font-weight: bold;
}

#vomnibar li.selected {
  background-color: var(--bg-selected);
  backdrop-filter: blur(20px);
  border-radius: 8px;
}

#vomnibar li.selected .url {
  color: var(--fg-url);
}

#vomnibar li.selected .match {
  color: var(--fg);
}

/* Hints Marks*/

#vimium-hint-marker-container div.internal-vimium-hint-marker,
#vimium-hint-marker-container div.vimiumHintMarker {
  background: var(--bg);
  border: none;
  box-shadow: var(--shadow);
  padding: 3px 4px;
}

#vimium-hint-marker-container div span {
  color: var(--fg-hints);
  font-family: var(--font);
  font-size: var(--font-size-hints);
  font-weight: var(--font-weight-bold);
  text-shadow: none;
}

#vimium-hint-marker-container div > .matchingCharacter {
  opacity: 0.3;
}

#vimium-hint-marker-container div > .matchingCharacter ~ span {
  color: var(--fg-hints);
}

/* Hud */

#hud-container {
  background: var(--bg);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  border-radius: 6px;
}

#hud-container span#hud-find-input,
#hud-container #hud {
  color: var(--fg);
  font-family: var(--font);
  font-size: 13;
  font-weight: var(--font-weight-medium);
}

#hud-container .hud-find {
  background-color: transparent;
  border: none;
}

#hud-container #search-area {
  background-color: transparent;
  padding: 6px;
}
]]>
2025-03-11T08:54:32+00:00
https://github.com/VandeeFeng/gitmemo/issues/46又突然想学数学了2025-09-04T15:24:40.537816+00:00对哲学的兴趣逐渐减淡,对数学和物理的兴趣越来越浓。

奖金100万美元的数学悬案,为什么科学家希望它永远没人能解?

数学到底是真理,还是接近真理的工具?

如果数学就是真理,那么为什么数学是不完备的,如果它不是,那么为什么数学又能用如此质朴的语言,揭示出自然的规律。

或许正如庞加莱在科学与方法中表达的观点: 数学家创造的每一个公式 都是向宇宙的真理圣殿迈进 然而那圣殿本身 可能永远隐没在地平线的晨雾中

这永不消散的晨雾 既是我们认知局限的隐喻 亦是我们驱动文明向前的永恒动力 因为真正的数学精神 永远存在于对地平线的凝视 而非对终点的占有

]]>
2025-03-11T08:39:26+00:00
https://github.com/VandeeFeng/gitmemo/issues/45Agents 的局限来自模型本身2025-09-04T15:24:40.700604+00:00MCP 无疑扩展了 LLM 的交互,后面可能还会出现其他的 protocols。

而 agents 的效果取决于 LLM 本身的能力。就从现在的 function calling 和 tool 的情况来说,距离我想象中的 agents 还有一段距离。

当 LLM 有了能够根据输入生成 tool 的能力的时候,才是 agents 真正爆发的时候。

去年12月,Anthropic提出了一个全新的定义:「LLM智能体能动态地决定自己的执行流程和工具使用方式,并自主控制任务的完成过程。」

直觉上,我觉得现有的 function calling 和 tool 的底层逻辑,是不太 agent 的。就类比人类的思维模式,它应该是更逻辑层面的实现,而不是结构上的实现。这句话说的不专业,意思就是这个意思。

我们现在实现的类 agent 概念和应用,实际上实现的是基于 LLM 进行的 workflows 的编排,而不是 LLM 自主的逻辑行为。当然,可以训练一个专门编排 function calling 的模型来当作 agents 的指挥模型,但还是觉得本末倒置。

我既不想鼓吹 AI,也对 AI 抱有很多幻想,未来起源于想象。

有点像魔术,虽然你知道它是假的,但重要的是它带给你难忘的体验。

虽然现在的 AI 其实还并不是那么的神奇,但是它已经像魔术一样实现了许多以前无法实现的东西。

]]>
2025-03-11T07:28:28+00:00
https://github.com/VandeeFeng/gitmemo/issues/44gptel tool 设置2025-09-04T15:24:40.849508+00:00好久没关注 gptel 的更新,居然支持自定义 tool 了,可以调用支持 function calling 的模型,这可太方便了。

aichat 也支持自定义 tool,之前一直用本地模型,没有怎么关注 tool 调用,又有很多好玩的可以玩了。

Mozilla just changed the Firefox TOS. - X

Mozilla 更新的 Firefox 服务条款,由 Theo 强调,授予公司一个非独占的、免版税的、全球性的许可,以使用用户上传或输入的数据,这引发了隐私倡导者对潜在滥用的担忧,尽管 Mozilla 保证这是为了增强浏览功能。

这可咋办。。。一直用的 Firefox。

已经用上 LibreWolf 了。 #47

加上了用 jina.ai reader 获取网页内容:

  (gptel-make-tool
   :function (lambda (url)
               (let* ((proxy-url (concat "https://r.jina.ai/" url))
                      (buffer (url-retrieve-synchronously proxy-url)))
                 (with-current-buffer buffer
                   (goto-char (point-min)) (forward-paragraph)
                   (let ((dom (libxml-parse-html-region (point) (point-max))))
                     (run-at-time 0 nil #'kill-buffer (current-buffer))
                     (with-temp-buffer
                       (shr-insert-document dom)
                       (buffer-substring-no-properties (point-min) (point-max)))))))
   :name "read_url"
   :description "Fetch and read the contents of a URL using Jina.ai reader"
   :args (list '(:name "url"
                       :type "string"
                       :description "The URL to read"))
   :category "web")

之前一直用的 ollama,没有配置其他模型,用 .authinfo 读取 API KEY:

  :config
  (let* ((auth-info (car (auth-source-search :host "generativelanguage.googleapis.com")))
         (api-key (and auth-info (plist-get auth-info :secret)))) 
    (if api-key
        (setq
         gptel-model "Gemini"
         gptel-backend (gptel-make-gemini "Gemini"
                         :stream t
                         :key api-key
                         :models '("gemini-2.0-flash"))
         )
      (error "未在 auth-source 中找到 Gemini API 密钥!请检查您的 auth-source 配置。")))
]]>
2025-02-28T15:53:44+00:00
https://github.com/VandeeFeng/gitmemo/issues/43所谓反抗到底是在反抗什么?2025-09-04T15:24:40.984065+00:00#6

其实我也不知道哪吒在燃什么 这个视频的观点真好。动不动就是煽动爱国情绪,挑起政治对立,搞各种正确,太没劲了,这个视频的评论区也是看不下去。

看看观点本身不就好了?

我在 记录本身就是一种反抗 - gitmemo 里想到:

没有记录就没有发生,而记录本身已经是一种反抗 ,都说历史是属于胜利者的,但那些被历史掩埋的气味和色彩永远都会存在。

看似平稳的秩序背后是无数抗争的呐喊与血泪,有自由就一定伴随着反抗。这些沉重的底色就好像在暗房里冲印的底片,色彩的背后是那些灰白的褪色了的故事。

看似稳定有序的秩序从来就是无序的,如果说反抗是为了秩序,这从开始就是一个伪命题。反抗这个词带有着默认被压迫的属性,而压迫和不平等是必然的,反抗作为它们的对立面其实是同等级的存在,并不需要添油加醋的加上那么多英雄色彩。太多所谓的反抗其实只是实现的落差带来的利己表演,只是一些出于本能的情绪和反应,这些在我的标准里不能称作是反抗,更准确的说来,应该是生物本能的自我保护。大多数人和事连反抗的对象都没有对上号,又谈何反抗?反抗的是这些不公,还是那些完全不符合人情道义的事物,还是和自己标准不相符带来的愤慨和不理解。所以我们一直在说的反抗,到底是在反抗什么?

我更愿意用正面的感情来描述反抗这个通过和压迫对立来表现的词语:“希望”,我欣赏的历史上的反抗大多是 “希望”。正是因为希望那些永远不可能达到的事物,希望着自由和平等,我们才会一直努力的追求,奋斗,抗争,坚持,传承。

我记录这些并不是为了反抗什么,虽然带着同样的目的,但手段可以就是手段,它不象征任何。扫地僧扫地其实并不是为了什么,它只是在扫地,它的手段和目的已经融为一体互相转化了,但又不通过任何目的来驱使这个手段。

现在我自然还没有达到这种境界,就只是凭着直觉记录着,不反抗什么,只是保持希望,保持热爱,像大地一样承载和接受。大地愤怒么?它从来都很平静,但平静得让人类不敢轻易践踏自然的法则,这是比 “反抗” 更坚实、更伟大的力量,因为它会滋生希望而不是畏惧、愤怒和伤害。

]]>
2025-02-27T06:04:47+00:00
https://github.com/VandeeFeng/gitmemo/issues/42Cloudflare R2 图床防爬2025-09-04T15:24:41.126558+00:00之前用 GitHub 当图床,一个是访问的速度很慢,再一个总觉得滥用了资源。

还是转到 Cloudflare R2 了。

  • Scrape Shield => Hotlink Protection,打开

  • Security => WAF => Custom rules,设置自定义规则。

    WAF-rules
  • R2 Object Storage => Bucket => CORS policy, 添加自己的域名

设置了才知道之前图片被爬了多少次。。。

]]>
2025-02-27T04:39:32+00:00
https://github.com/VandeeFeng/gitmemo/issues/41非必要别更新!!!2025-09-04T15:24:41.259533+00:00由于设置了 Emacs package 的自动更新,不知道是哪里出现了冲突,在生成 org-blog 的时候,代码块出现了奇怪的缩进。

找了一下午也没完全发现原因。。。好在暂时修复了问题。

非必要别更新!!!非必要别更新!!!非必要别更新!!!非必要别更新!!!非必要别更新!!!

手贱已经出了无数次问题了,但是还是忍不住 🤣

]]>
2025-02-25T08:26:25+00:00
https://github.com/VandeeFeng/gitmemo/issues/40现在的信息太无聊了2025-09-04T15:24:41.392528+00:00#36

DeepSeek R1 出来了!DeepSeek R1 好厉害!

Grok3 出来了!Grok 3 好厉害!

Claude 3.7 Sonnet and Claude Code 出来了 !Claude 3.7 好厉害!

技术就是这样潜移默化的影响着生活。

现在铺天盖地的 Deep Research,关键是 search,而 search 的关键是内容。优质内容总不能用爱发电,这些热点把利益卷走,优质内容的创作者的热情也就慢慢被消磨了。

但这些都只是客观,最根本的还是发现、处理信息的能力。信息检索和获取的工作流要再加强。

]]>
2025-02-25T05:57:14+00:00
https://github.com/VandeeFeng/gitmemo/issues/39Gemini 的 personality 也挺好玩的2025-09-04T15:24:41.554349+00:00挺逗的🤣

现在的 LLM 好像都加入了更多的幽默元素,Andrej Karpathy on X: "Actually I quite like the new ChatGPT 4o personality, whatever they did.

原来专门有个词来形容这个:vibe(氛围感)

Andrej Karpathy on X: "There's a new kind of coding I call "vibe coding"

Will the future of software development run on vibes? - Ars Technica

Image]]>
2025-02-19T06:20:32+00:00
https://github.com/VandeeFeng/gitmemo/issues/38记录我第一个被采纳的 issue2025-09-04T15:24:41.717910+00:00没想到会真的考虑我的这些小建议

add default model setting info · Issue #105 · TilmanGriesel/chipper

support local web search · Issue #73 · nbonamy/witsy

虽然这两个 issue 都是完全从他们的项目出发的,但还是有种占了便宜的感觉。。。

这个感觉的源头应该是,我只是提出了建议,但是没有给出解决办法,以我现在的技术还不太能提交有质量的 PR。

越来越体会到开源的快乐了。

也真是巧了,刚说完开源的快乐,就看到 tninja/aider.elMatthewZMD/aidermacs 在 Emacs China 上有些不愉快。。。

珍惜每个领域在最开始的纯粹的快乐。。。

继续去看 Post-Apocalyptic Web - YouTube 了,太快乐了 🤣

xmlcockgang 真的是笑死了 🤣

这。。。BewlyBewly 直接 archive 了。。一直在用。。。

开源项目被人收费上架,作者气得直接弃坑。开源活该?

我这嘴开光了。。。

]]>
2025-02-15T04:45:15+00:00
https://github.com/VandeeFeng/gitmemo/issues/37认知偏差12025-09-04T15:24:41.858993+00:00避免被既定规则、权威观点或个人偏好固化认知习惯。

举个例子,我更喜欢 Emacs,但更习惯 Vim 的输入方式。不必完全拘泥于 Emacs 的快捷键,也不必全盘接受 Vim 的设定,怎么顺手怎么来就好。

快捷键设计的初衷是为了减少键盘操作,提升编程效率。通常情况下,vim 比 Emacs 的快捷键需要的键盘操作要少。但许多特定的编辑需求在 Emacs 里通过自定义函数来设置,比 vim 更方便。

Tinkering with Neovim | MaskRay 看到一个大佬从 Emacs 转向了 Nvim,之前也是 Emacs,这次的理由是,nvim 基于终端的简洁性,还说到:使用熟悉的语言自定义编辑器非常重要。所以还是怎么顺手怎么来。 -- 2025.2.18

这种现象在各个领域都很常见。 人们本能地为自己喜爱的事物辩护,这心理学上可以用下面概念来解释。

  • 认知失调(Cognitive Dissonance):当人们持有两种或多种相互矛盾的想法、信念或价值观时,会产生认知失调。为了减轻这种不适感,人们会倾向于改变自己的态度或行为,使其与自己的认知保持一致。为自己喜爱的事物辩护可以视为一种减少认知失调的方式。例如,一个人明明知道抽烟有害健康,但仍然抽烟,为了减轻内心的冲突,他可能会辩解说抽烟能缓解压力。
  • 辩护机制(Defense Mechanism):这是一种心理策略,人们在无意识中使用它来保护自己免受焦虑、痛苦或无法接受的想法和情感的困扰。为自己喜爱的事物辩护可以是一种辩护机制,比如合理化(Rationalization),通过赋予某个行为或事物合理的解释,来掩盖其真正的原因或动机。
  • 确认偏差(Confirmation Bias):这是一种人们倾向于寻找、解释、偏爱和回忆支持自己观点的信息的倾向。当人们喜爱某个事物时,他们更有可能寻找支持该事物的信息,而忽略或否定与之相悖的信息。这会导致他们为自己喜爱的事物辩护,以维护自己的观点。
  • 自我服务偏差(Self-Serving Bias):这是一种人们倾向于将成功归因于自身因素,而将失败归因于外部因素的倾向。当人们喜爱某个事物时,他们可能会倾向于将其优点归因于自身的选择或能力,从而更加坚定地为之辩护。

承认自己喜欢的事物的缺点,说起来容易往往很难做到。

我最喜欢的是古典乐,但是摇滚、流行也都听,真实的音乐就是好的音乐, 就如同海明威的写作信条:任何作品的终极价值,取决于作者在文本中留下的生命刻痕。

真正的个性,不仅在于特立独行,更在于包容那些即使不认同的个性。

]]>
2025-02-10T09:13:46+00:00
https://github.com/VandeeFeng/gitmemo/issues/36泡泡就是这么吹起来的2025-09-04T15:24:42.028900+00:00

I'll give it a read. I must admit, the more I learn about the inner workings of LLM's the more I see them as simply the sum of their parts and nothing more. The rest is just anthropomorphism and marketing.

我会读一读的。我必须承认,我对 LLM 的内部运作了解得越多,就越觉得它们只是各部分的总和,仅此而已。剩下的只是拟人化和营销而已。

via:https://news.ycombinator.com/item?id=42989320

刚看看到这个就看到 Sam Altman 的新 blog :Three Observations 🤣

]]>
2025-02-10T04:25:55+00:00
https://github.com/VandeeFeng/gitmemo/issues/35本地文档 RAG 思路 Chipper 项目2025-09-04T15:24:42.172514+00:00Chipper: https://github.com/TilmanGriesel/chipper

其实很早就关注了这个项目,但是一直没有尝试。这个项目基于 Elasticsearch 来实现文档搜索和 RAG。LLM 的提供支持 ollama 和 huggingface。提供脚本一键 docker 部署很方便。

我看重的功能是:它可以提供一个 ollama 的代理。也就是使用这个项目的 ollama 代理之后,就可以直接调用项目的文档 RAG 了,而这个项目管理文档 RAG 很方便。这样就可以把它当作是一个文档搜索引擎了。Chipper 项目相当于一个 pipeline?

现在就可以把用 read PDF page by page 整理过的笔记系统的学习,逐步替代NotebookLM。完善 碎片知识学习 - with AI结构化知识工作流 - with AI

整个技术栈很值得参考,还是由于知识不足,所以一直没有构建好本地文档的知识问答体系。 #22 #26

在 obsidian 里很早就可以很方便的用插件来实现了,但是还是自己折腾更有意思。

又重构了 gitmemos 的很多东西。。。

]]>
2025-02-09T05:47:54+00:00
https://github.com/VandeeFeng/gitmemo/issues/34热情的扩散2025-09-04T15:24:42.705845+00:00不知道从什么时候开始,在 Emacs 里记笔记这件事本身就会让我觉得很有意思。

相似的,我其实不喜欢读论文,但用自己构建的工具来学论文,就变得有意思了。我也很懒,平常不太爱出远门,但是带上相机,我就有了去很多地方的兴趣。

这应该就是热情的扩散。

当在一个领域或者某个阶段当中,不可避免的需要面对枯燥乏味或是很难推进的事物,附加上各种鸡汤式的理由来强行说服自己不会是我的做法,依靠奖励来推动行动也不可取,强迫自己对一个东西发展出兴趣更没有必要。

Embark on something with passion and interest,在自己感兴趣的事物的基础上发展、扩散到更多的领域。这应该是一种更正面的,克服枯燥、懒惰的方法。

]]>
2025-01-29T09:49:29+00:00
https://github.com/VandeeFeng/gitmemo/issues/33慢下来的能力,坚持自己的判断2025-09-04T15:24:42.864451+00:00最近一直在看 Tsoding Daily - YouTube,太喜欢 Tsoding 的态度了。

现在铺天盖地都是关于 AI 的消息,在变化或变革发生的时候,人们总会下意识的对比,随即是可能的感慨。比如我前面这句。

特别是在这些变革还没有真正彻底发生的时候。

看到 Tsoding 一如既往的坚持自己的态度,坚持自己喜欢的方式,这是在变化中宝贵的东西。这不是固执和不愿意接受改变,当固执被证明为是一种正确,它就成为了一种独特的判断力,一种风格,一种品味。

太多观点,太多信息的涌入很容易影响判断。特别是现在的互联网环境,认可一个新事物的方式好像唯一了:就是通过流行,通过趋势,通过流量。几个行业大佬发个推文,相互的利益集团转发一下,泡泡就又吹起来了。不是在批判什么,只是陈述。这个顾虑在以前是不存在的。

发现一个事物真正的价值变得困难,而这恰恰正是因为创造“价值”变得越来越简单。我很不希望自己的判断力在这些流行里被钝化,但又好像不可避免。

从 Tsoding 的身上看到了许多底层逻辑的东西,和我都不谋而合。在 I tried React and it Ruined My Life - YouTube 这个视频里,他做了我也一直会做的事情,就只是兴趣,就只是去探求、思考一个事物底层的逻辑,去发现,explore。这正是人类发展的原动力,discover,explore,think,imagine。

现在这个时代,如果用一个字来描述就是:快。来的也快,去得也快,很多东西都变成了一次性的。信息也是,产品也是,娱乐也是,消费也是。

任何时候,都要有能慢下来的能力,控制节奏的能力。这需要在一个陌生环境里清晰的判断力,以及对信息过滤筛选的能力。

]]>
2025-01-23T05:36:25+00:00
https://github.com/VandeeFeng/gitmemo/issues/32映射信息 from people2025-09-04T15:24:43.018738+00:00Looi Robot 终于到了!太好玩了。

looi

从人出发的信息?从人映射信息?好像都不太准确,英文 the information reflected from people 应该是我想表达的意思。

在信息网络里,人始终是一个不可分割的最小端点之一,信息网络的构成离不开人与人的交互。我不喜欢和纯粹的信息打交道,我需要的是鲜活的信息,有人味的信息。因此,我觉得这可以算作是一种映射。

作为一个彻彻底底的门外汉,在最近学习编程相关知识的过程当中,特别是针对 programming 的学习,从人出发是一个 better choose。

通过一个你认可的人、相关专业的大佬,就可以链接、映射到更多相关的端点,这其中免去了许多筛选和检索的过程。因为你认可、赞同的人或环境里,大概率也包含着更多类似的信息。因此,根据关键词绘制好自己的信息地图 map,链接、映射到相关的人,就可以减少获取相关信息的成本。当然更重要的是,也是我一直认为的,这样可以交到许多朋友,广义上的朋友。

例如之前就发现的一个大佬:Tsoding。这几天一直在看,已经看了累计24个小时了,根本停不下来。太喜欢 Tsoding 的态度了。There is no why,just because i can。更惊喜的是,大佬也用的 Emacs。不是在寻求一种认同,而是觉得,这印证了我之前许多的想法和理论。或许正是 Emacs 让我检索到了 Tsoding。

从信息到人,再从人到信息,我觉得这个路径挺靠谱的。听起来的确挺废话的,但确实很实用。

我一直把编程语言就真的看作是一种语言,这就是门外汉的优势,更多的想象力。

因此类比语言的学习,放到语境,和上下文,环境里,直接的体验,就是最简单直接的方法。就像母语一样,用着用着自然就会了。我觉得编程也是一样。它是逻辑思维的另一种表达。

就像最近在看汇编,我完全不知道相关的特定代码和语法,但是这并不妨碍我去理解它逻辑上的运行,看 Tsoding 的视频也吸收的很快,我觉得这一定是和语言相通的。理论上的学习当然是必须的,但这并不冲突,我们谁也不是过了汉语多少多少级才开口说话。

]]>
2025-01-16T05:50:20+00:00
https://github.com/VandeeFeng/gitmemo/issues/31个人摄影网站搞定2025-09-04T15:24:43.152631+00:00https://github.com/sambecker/exif-photo-blog 这个项目部署到了 Vercel。

整体的风格比较简约,符合我的胃口,毕竟摄影就是黑白灰,就是光影。

后面再慢慢自己折腾改改。

我的摄影作品集:https://x.vandee.art/photo

photo-site ]]>
2025-01-08T08:56:29+00:00
https://github.com/VandeeFeng/gitmemo/issues/30好东西越来越难被看到了2025-09-04T15:24:43.298979+00:00今天发现一个宝藏项目:https://github.com/nbonamy/witsy。感谢作者的开源。

和传统的 LLM 集成聊天软件不同的是,它还提供了弹出窗口,可以在几乎任何地方选中文字和 LLM 交互,还可以和本地的 Python 代码集成,完全就是一个小型的 compute use。整个的设计思路太棒了,是我到目前体验到的最舒服,最符合自己使用场景和需求的 LLM 集成客户端软件。

然而这个项目只有 200 多个 Star。

大数据、算法、流量,到现在的 AI 搜索,我们往往看到的只是大多数人看到的,这虽然是一个老问题,但总是让我感到一种失落感。一想到每天都有这么多好的想法被大浪冲刷掉,在大浪风口的更多的是裹挟着各方利益、或是被过度包装的这些看起来满足了大多数人需求的产物。

环境和群体让个体的价值和判断产生误差,这也正是纯粹和独立思想让我热血的地方。并不是说群体意志和判断一定是不好的,羊群效应也是无法避免的,大概率来说,大多数的选择至少是不错的,选购商品的时候当然会尽可能的选择好评较多的。只是这一直是个悖论,当小众的东西变得流行,变得不再小众的时候,当它被大多数人承认,当它被大多数人认可,甚至化为集体意志的时候,也就不再是小众了。

所以如何衡量一个小众、个体?当它被大多数人承认的时候,它就不是当初的小众了。不被大多数人认可和承认正是独立的特性和价值。我也一直不以这个为判断一件事物的决定性因素。

独立价值越来越难在现在的规则里体现,也越来越难被甄别。当个人价值和独立思维被群体意志和趋势、倾向所掩盖,麻木之后,也就更难发现真正有价值的东西了。

这也是我这么多年来一直想坚持的东西,保持相对的独立真的挺重要。说文雅一些,也就是品味。

]]>
2025-01-05T09:45:48+00:00
https://github.com/VandeeFeng/gitmemo/issues/29搜索、整合、分析信息的能力,会变得越来越重要2025-09-04T15:24:43.444602+00:00和 AI 交互,让 AI 帮助自己学习,用 AI 提升学习的效率,看起来是个很自然的过程。错觉是,AI 已经帮我们更好的搜索了,但实际上并不是。没有目的和方法的和 LLM 聊天只会浪费更多时间,因为它本身会产生不可避免的幻觉(hallucination),再就是需要至少 2-3 轮的对话才能获得相对准确的答案,要考虑到 AI 交互的隐性成本 , #21 。

背后的几个关键问题是:学习的资料、信息从哪里来,这些信息和 LLM 交互的链接(Agent ,RAG),LLM 模型本身的针对性优化(fine-tuning),再就是和 LLM 交互的技巧(prompt)。 #26

汇总一下现在常用的小玩意:

学习 GitHub 仓库的代码

Code Search | Grep by Vercel,关键字正则搜索找到相关 GitHub 仓库,然后:

搜索

在各自的搜索基础url后面加上search?q=%s添加到浏览器的搜索快捷键就OK了

]]>
2025-01-04T07:51:48+00:00
https://github.com/VandeeFeng/gitmemo/issues/28获取特定仓库的新增 commit2025-09-04T15:24:43.613846+00:00一直想汇总一下一个星期之内做了哪些,获取了哪些信息,但没有找到很简洁的方法。

n8n 总觉得现在没有那么值得去从头折腾的很有价值的内容。用 Zeabur 通过自己的服务器部署了好久了,一直没有动力折腾起来。

先用 GitHub 的 commit 新增来过渡一下。然后在 NotebookLM 里就可以简单的回顾了。

gitdiff gitdiffnote ]]>
2024-12-30T13:29:55+00:00
https://github.com/VandeeFeng/gitmemo/issues/27Rime 启用语言模型之后更智能了!2025-09-04T15:24:43.777551+00:00今天重构了 GitHub webhook 来同步更新到 gitmemo 的数据库,还是没能解决已有 issue 插入新 row 的问题,增量更新的功能是正常的。

解决了,原来是保存的时候 owner 没有统一大小写。。。 --2024-12-23

现在同步更方便了,GitHub issue 有变化的时候会触发 webhook 自动写入数据库,手动同步支持增量更新,不用每次都重复写入所有的 issue

Rime 启用语言模型

各个国家有各个国家的国歌可以直接打出来了!我是用的雾凇拼音的小鹤双拼, 加上了万象语言模型之后,上下文的联想功能明显增强了,牛逼啊。Rime 就是最好的输入法没有之一。

为rime的输入方案启用语言模型 - 闲聊灌水 - Emacs China

Fcitx 最佳配置实践 (附带语言大模型) 2024-12-17

amzxyz/RIME-LMDG: Rime输入法语言模型全流程构建教程,全局带声调词库,最全带读音单字表词典

Emacs 新玩意

有一段时间没逛 Emacs China 了,又发现很多好玩意。Gemini 现在这么强,没有大佬考虑重写一下 Emacs 里的 AI 补全么。

将你的 org-roam-ui 发布到 GitHub page 上 - Org-mode - Emacs China,这个也很实用。

终端版的 childframe 要来了 - Emacs-general - Emacs China

(发布)Org-supertag v0.01 发布,增强 org-mode 的标签系统 - Org-mode - Emacs China

(新坑)打算在 emacs 上复刻 Tana 的 SuperTag - Emacs-general - Emacs China,正巧最近也看到了 Tana 里的 SuperTag,这个思路可以借鉴。

]]>
2024-12-21T06:05:00+00:00
https://github.com/VandeeFeng/gitmemo/issues/26在知识之间、AI 之间创造 connection2025-09-04T15:24:43.942454+00:00直觉上觉得 RAG 的作用比较局限,之前看到过一个论文是在讨论 long context 和 RAG 之间哪个更好。现在的模型上下文都可以处理的很长,不知道有没有新的定论。

一个高中生(LLM)在考试之前拿着一个博士生的课本(RAG),总觉得局限性还是有的,它可以背诵出博士生课本的内容,但可能不能很好的理解。RAG 在短短一年之内发展出了很多形态,我觉得Graph RAG 的思路是挺通用的。不管用不用 RAG,都可以给 LLM 一个地图,一个索引指导,让 LLM 通过索引来获取自己想针对性提问的内容。

对于普通用户来说,我觉得用 SQL 检索关键字直接从 PKM 数据库里找到相关的内容应该可以简单有效的提升 RAG 的效果。不光是和 LLM 的交互里可以运用到地图的思路,在自己做笔记的时候,也应该有一个思维地图,在查找相关概念的时候,可以沿着地图很方便的找到。 #19 #22

Google 的 NotebookLM 已经做到了我想实现的形态,更多的还是应该自己主动总结,做好索引地图。之前总想着让 LLM 浏览大量文件总结出问题帮助思考,这一步还是得自己来。有了索引地图之后,只需要让 LLM 在数据库里检索相关的字段就挺方便了。

最近在玩 phidata , 用来构建 agent 确实挺方便的。参考官方的 cookbook 整了一个本地 ollama 的 RAG小玩意,视频如下:

https://github.com/user-attachments/assets/b7ba2eb4-8703-4b41-ab74-ca40148d6b60

]]>
2024-12-18T08:14:23+00:00
https://github.com/VandeeFeng/gitmemo/issues/25Gemini 2.0 挺强的2025-09-04T15:24:44.093487+00:00用 streamlit 和 phidata 测试了一下 Gemini 2.0 ,对图像的识别挺强的。

应该是将视频转换为图片来处理的,对中文的识别也挺准确,生成的结果也挺准确,逻辑性也很强。但是视频长度比较长的,可能超过了 API 的限制,无法生成结果。

视频 PKM 准备就用 Gemini 2.0 了 #22

gemini ]]>
2024-12-15T14:06:31+00:00
https://github.com/VandeeFeng/gitmemo/issues/24现象很容易被当作是本质2025-09-04T15:24:44.233749+00:00今天看到李继刚在即刻上的帖子:https://m.okjike.com/originalPosts/6757ac94226a37f99f92b2a7

我一直困惑于意义从何而来,现在我似乎触摸到了一个可能的答案:意义产生于压缩的过程中。当我们将纷繁复杂的现象压缩成一个模式或概念时,我们实际上是在创造意义。这让我想起了科学定律,它们不正是将宇宙的混沌压缩成优雅方程的尝试吗?

写到这里,我忽然意识到一件事:这些思考本身就是一种压缩,是我试图将今天的对话经验压缩成文字的尝试。而当其他人读到这些文字时,他们又会在自己的思维中进行解压缩,重建出新的理解。这个过程本身就印证了我们讨论的主题。

我不是很赞同这些结论的思考方向,特别是对于意义和思考的部分。用压缩来类比思维和意义是不恰当的。LLM 是压缩,但人类的思维和意义并不能简单的用压缩来分析。压缩是一种抽象,但抽象不只是压缩。科学定律更不是压缩,科学定律最后呈现出的简洁性是无数巧合中的一种,而它“巧合”的印证了宇宙物质的简洁性,并不是将这些宇宙物质的信息压缩成了公式最后的表达,而是它们本质就是简单的。或许同样存在着另一个复杂的版本,只是我们没有发现,而沿用了简单的版本。

这看似是找到了一个真理,一个本质,但实际上这是现象,而不最本质的结论。就好比我现在说:吃东西本质就是为了填饱肚子,吃东西本身就是一种让肚子不饿的方法。压缩是另一个抽象出来的概念,因为它和比较的对象之间有相似性,所以将它们近似了。

因此,压缩更准确的说法应该是抽象。思考是一种压缩,这并不是一个结论,而是一种现象。思考作为人类表达产生的过程,必然经过抽象这个过程。关于思考是什么,在 这里 我有相关的观点:

更进一步我的看法:写作、表达、输出的东西既不是思考的过程,也不是思考的结果。思考这个概念本就不应该按照过程和结果来分析,思考就是思考,纯粹的思考空间和它存在带来的能量物质变化是独立于思考转换前后的形态的。如果要定义什么是思考,那么它应该就是这么纯粹的,思考就是无数信息和概念之间的有机链接。就拿这段文字来说,它们被看待为思考的结果的时刻就已经不是思考本身了,这段文字作为一种表达,不代表任何思考。

而关于意义,则更不是产生于压缩的过程当中,换句话说,意义不是产生于抽象的过程当中。真正的意义是独立于这些而存在的,因为这些相对于人类的意义只相对于人类而产生,就像某些事物只对自己有特殊的意义,这个事物当然对每个人的意义是不同的。但这个意义并不是我所说的意义,如果说独立于意识之外的物质就是没有意义的,是人类和这些物质进行交换的所有过程才产生了这些相对于全人类的意义。

硬生生的讨论意义的产生其实就挺没有“意义”的,我相信绝对物质的存在,绝对的物质在脱离人类意识的基础上,当然是没有意义的,我们所讨论的意义,讨论的前提就是在人类的思维下的,因此当然这些意义都是相对于人类的意义,这些绝对的物质对于其他生物的意义天然是和人类不同的,就像其他生物的视觉和人类就不一样,看到的物质的颜色天然就和人类也不一样。

意义并不是创造的,或者反过来说,任何和人类有关的意义都是创造的。这些人类和绝对物质之间反馈的结果,都是“意义”,只是看主体如何抽象和表达。而广义的意义更是定义在群体认知之上,就好像艺术,如果没有了历史和欣赏的群体,那么艺术是没有意义的。

]]>
2024-12-12T09:41:13+00:00
https://github.com/VandeeFeng/gitmemo/issues/23没有什么正好,数据检索和专注2025-09-04T15:24:44.429400+00:00前两天在思考 构建贾维斯 AI 思考助手 #22 ,正在犹豫 Dify 和 n8n 选哪个

今天正好就看到了 不要轻易地走进 AI Native(AI 原生) – 虹线

但对于个人使用者来说,我为什么不等它真的超过了 n8n 在用它呢?

再次回到我对标题中观点的判断:如果你的需求对应的品类里,有一个成熟方案和一个 AI Native 新秀,你应当毫不犹豫的选择前者,等待前者补充 AI 功能,而不是尝试后者,等待后者完善主功能。

也是前两天在思考 AI 的隐性成本 #21 时想到了技术革新带来的问题,今天正好看到了 重看芒格 1994 年的演讲,有一段很有意思的内容,用来思考 - 即刻App

微观经济学的意义在于,能够让人分辨什么时候技术会帮助你,什么时候会摧毁你。

新技术能极大提高生产力,但收益未必能留在企业中。关键在于,你的业务有没有独特的差异性,能形成品牌。航空、纺织就是负面例子;区域性报纸、麦片,就是正面例子。

所以引入新技术的时候,需要考虑的是,多少收益会落在经营者手里,多少会流到消费者手里。并非引入新技术就是好事。

心理学上肯定有一个术语来专门描述我上面的这两个正好。在专注某些领域的问题时,自然会注意到更多相关的内容,而选择性忽略其他的。这些正好可能就是对专注和坚持的奖励。

这也正是数据、搜索的作用和重要性,当新问题出现时,能够尽可能的获取相关的信息。这也是我想在 流动知识检索 #19 里实现的目标。让 AI 帮助我汇总相关领域的知识,减少人工筛选的成本。

]]>
2024-12-11T12:53:21+00:00
https://github.com/VandeeFeng/gitmemo/issues/22构建贾维斯 AI 思考助手2025-09-04T15:24:44.588367+00:00之前看到一个帖子说的是构建一个基于 AI 的人生 coach,挺有意思的。通过不同的 agent 和 prompt 还有资料库通过 RAG 来分析,给予思考和建议。

现在的 PKM 的 AI 分析没有加入思维的循环,还是做成自动化比较方便。 #19

具体实现:

  • 选定模型:Gemini 上下文窗口很长,作为第一次获取数据筛选,OpenAI 进行推理精读输出
  • 从我不同的 PKM 库根据日期获取数据
  • 每周自动总结,要至少解决:我这周看了什么新内容?关于XX问题从XX文章里有什么结论?
  • Workflow:Dify、Coze、n8n

TODO

  • 构建 Agent
  • 设计 prompt
  • 设计数据库
  • 接入流动知识检索
  • 视频 PKM
截屏2024-12-09 12 21 54 ]]>
2024-12-09T04:31:10+00:00
https://github.com/VandeeFeng/gitmemo/issues/21AI 交互的隐性成本2025-09-04T15:24:44.751699+00:00AI 交互的隐性成本

每一次技术的革新,科学的发展,都会提高生产力,提升效率,但这不等于是对个人的,相反技术的革命会增加个人的成本,个人要适应这些变化。

让 AI 帮助自己思考才是本质,最大的投资永远应该是自己。

这也是为什么,进大半年一直在折腾我的各种 PKM。用 AI 来优化信息获取、信息整理,帮助自己思考,我认为是一劳永逸的。学 AI 就是学一个新的语言,一个和代码、二进制沟通的语言,而这个语言迟早会和当初英文一样,编入义务教育的课本。

就单纯想想以后不想被那些和我曾经一样嚣张跋扈的年轻人鄙视,就很有动力了🤣。

]]>
2024-12-08T09:46:44+00:00
https://github.com/VandeeFeng/gitmemo/issues/20失败就像误差一样是不可避免的常态2025-09-04T15:24:44.884786+00:00最近用 cursor 糊了两个小玩意,还是挺好玩的。也再次确认了一个事情:坚持是必不可少的特质。人尽皆知但通常很难做到。

健身,跑步除了能让身体健康,最重要的是,身体在这个磨炼的过程中同样会强化内心。我的毅力大部分是在这个过程中得到的锻炼。

好多次在重构 GitMemo 的时候都嫌麻烦不想搞了,但当多巴胺和内啡肽开始作用之后,正反馈会慢慢战胜这些怠倦。

失败就像误差一样是不可避免的常态,这其中失败程度的不那么多的,往往我们会称作成功了。所以也可以说,成功是必然的,它是暂时的,是一种摇摆的状态。就像下面 Vercel 的部署一样,这一次成功的部署不代表下一次更新,它只是一个包含了更少失败可能性的一个相对状态。

vercel ]]>
2024-12-06T06:59:27+00:00
https://github.com/VandeeFeng/gitmemo/issues/19流动知识检索的构建要抓紧了2025-09-04T15:24:45.053878+00:00

书籍作为一种商品,现在主要在互联网上售卖,受营销、炒作和社交媒体的影响。这意味着什么呢?这意味着你能买到什么书是一个比你能刷到什么短视频更受算法而不是你自己控制的事情。

via: https://m.okjike.com/originalPosts/675186cfe323d56ad33d436e

挺有道理的,现在也是越来越难看到好书了。

但环境的影响始终只是一方面,自身的判断力才是最核心的。

我现在的流动知识检索的构建都是基于文字的,视频和音频的也要赶紧加上。许多优质资源在视频和播客里也是很多现在,特别是播客,感觉是我没有开发的一个净土。

task ]]>
2024-12-05T13:44:05+00:00
https://github.com/VandeeFeng/gitmemo/issues/18Brain Rot - 脑腐2025-09-04T15:24:45.185660+00:002024 年 12 月 2 日,牛津大学出版社宣布“脑腐”(brain rot)为 2024 年牛津年度词汇。这个词汇是由牛津语言专家短 listed 的六个词汇中选出的,经过两周的公众投票和广泛讨论后,最终被选为年度词汇。

via:https://corp.oup.com/news/brain-rot-named-oxford-word-of-the-year-2024/

低劣信息对大脑的腐蚀从互联网内容和生态发生变化的时候就已经开始了。短视频,快餐文化的趋势是一定的,面对这些裹着糖衣的无营养内容,如果还不能获得筛选获取信息的能力的话,慢慢地就会生锈了。

只是我觉得大部分的人都不太重视。信息交换决定了人和外界的反馈,最终会反馈到自身。信息健康,暂且这么描述,它和身体健康一样重要。

]]>
2024-12-03T05:50:45+00:00
https://github.com/VandeeFeng/gitmemo/issues/17强迫输出与渐进式迭代2025-09-04T15:24:45.312062+00:00#7 :AI 能更好的整理无序的信息,帮助自己提出更好的问题。知识的结构化需要不断的迭代,信息不是知识。

在音乐里有一个概念叫作 Loop,往往是一段循环的旋律或者节奏来帮助对象快速进入旋律想表达的形态。在知识循环里也是一样,也有 intro,loop,reverse,bridge。我挺享受这种知识的乐章,就像谱写一段旋律一样,学习本来就不是枯燥乏味重复的填鸭。

现在的流程:

  • 第一次迭代:Readwise 阅读,高亮
  • 第二次迭代:Journal 记录,Memo 记录,Clip 摘录,通过迭代会让信息更原子化,同质化的信息会被自然的过滤
  • 第三次迭代:Wiki 原子化笔记,将信息固定成结构化知识
  • 第四次迭代:Blog 输出

需要优化循环的逻辑,适当插入 AI 帮助思考、提问的环节。每一个环节都需要高度同步自己的思维,用双链、标签、高度原子化的概念替代搜索和复杂的检索。让孤岛信息 orphan information 能够自然的融入原子化的循环流程。孤岛信息就像需要被优化和谐的音符。

loop ]]>
2024-11-30T06:14:52+00:00
https://github.com/VandeeFeng/gitmemo/issues/16刚搞定 GitMemo,VPS 又好了?🤣2025-09-04T15:24:45.458255+00:00#14 #11

上个星期 VPS 突然不能访问了,怀疑是 IP 被 GFW blocked 了。正好又在考虑把一些记录的东西迁移到 GitHub,于是开始着手 GitMemo 作为 Memos 的平替。昨天刚把这个搞定,VPS 突然又好了?就是这么巧,一点也不夸张,刚提交完最后一个 commit,VPS 就好了。不得不让我把国庆到美国大选和电信网络抽风了几次联系起来。

如果不是 VPS 我就不会玩 Memos,如果不是大中华的网络问题,VPS 就不会突然访问不了,如果不是突然访问不了,我可能不会这么快决定着手 GitMemo。

但真的是这样么?兴趣才是那个挂在我前面的胡萝卜,而我愿意相信它。没有什么宿命和上帝的引导,而是直觉 #2 。

面对不可描述或解释的事物时,人类的习惯从原始时代到现在并没有改变多少。甚至是期待增加一些传奇色彩和宿命的感觉的。其实没有什么巧合,运气,刚刚好。这些只是不完全事件统计下,人的主观偏向性。就拿这次来说,这两个我愿意认为是很巧的事件背后还有多的是我没有统计在内的,因此,其实一点也不巧合。

但人是需要信念和希望的,是需要去描绘意义的。还是以爱因斯坦的相对论为例,就是因为爱因斯坦一直相信自己的直觉,相信宇宙的简洁性,才最终得到 E=mc² 这个无比简洁优美的物理表达式。

]]>
2024-11-30T04:01:22+00:00
https://github.com/VandeeFeng/gitmemo/issues/15翻到了以前的《周易》典藏版2025-09-04T15:24:45.614626+00:00回忆起来,从第一次接触到《周易》到现在差不多20年了,其实这类的书是有风险的。类似的还有《道德经》。

淹死的都是会水的人,和冲浪一样,没有驾驭自然的能力就去借助它,是会出问题的。现在应该可以系统的重新开始看看了。

当个算命的闲书来看就已经很有趣了。但真正吸引我的是,在周易里看到了融入自然的端倪。

1 2]]>
2024-11-29T07:01:56+00:00
https://github.com/VandeeFeng/gitmemo/issues/14糊了个页面来配合 gitmemo2025-09-04T15:24:45.736981+00:00gitblog 原项目是用 Zola 来做的页面,更适合博客,不太符合 memo 的特性,在 cursor 的协助下,弄了个 gitmemo页面。

代码在 https://github.com/VandeeFeng/gitmemos

又更新了许多细节,包括详情页,缓存优化,反链。基本和 Memos 使用的体验差不多了。

由于之前的疏忽,supabase 没有放在服务端,又重构了一下午。

gitmemo

#11

]]>
2024-11-28T01:22:34+00:00
https://github.com/VandeeFeng/gitmemo/issues/13糊了个 Dream Journal 来记录梦境2025-09-04T15:24:45.874722+00:00在 Cursor 的帮忙下,总算把这个功能弄出来了,在 BlinkShot 原项目的基础上增加了邮箱登录,保存图片,日历视图,数据都保存在 supabase。

代码质量肯定是很烂,不过真的挺好玩的。AI 拓宽了想象的边界,现在可以每天记录梦境生成图片了。初衷是想做成周公解梦的🤣

BlinkShot – Real-Time AI Image Generator1

BlinkShot – Real-Time AI Image Generator2

GitHub:https://github.com/VandeeFeng/blinkshot/tree/V4

]]>
2024-11-26T16:19:40+00:00
https://github.com/VandeeFeng/gitmemo/issues/12Nothing About Me2025-09-04T15:24:46.019302+00:00我所有带有社交属性的玩意儿,都没有 About Me 这一项,究其原因大抵是因为我感觉没有什么可以介绍的。

直到我偶然看到一句话,大概是说:许多机会和变数都是从了解与被了解开始的。现在我依然觉得没有什么可以介绍的,但有一个面向外界、面向偶然的窗口还是好的。

带有一点悲观主义色彩的说,我一直认为人和人之间不存在真正的相互理解。如果有,中东也不会一直打到现在,如果有,一个对不起就可以解决世界90%的问题,如果有,各个阶层和阶级之间就不会有那么多矛盾。或者换句话来说,大部分情况下,我们选择了不选择,选择了不去理解,理解是需要沉重的时间和精力成本的。

自我介绍这个从小学开始就一直存在的保留节目,会一直伴随着一个人,直到被刻在墓碑上。仅仅作为一个自我介绍,我是可以写的,但下面的这些内容,从根本上就不是我,也仅仅仅供参考。

  • 喜欢音乐和艺术,搞点摄影。最喜欢的摄影集:深濑昌久《鸦》,我的头像就是。
  • 最喜欢的艺术家,Vincent Willem van Gogh。所以,我喜欢自称 Vandee。在中文里,van Gogh 通常翻译为梵高,而低和高相对,我取了英文发音dee,组合成 Vandee。
  • 最喜欢的小动物:柴犬。我未完成的乐队名也是,Chai Band,也就是“才办的”🤣。乐队类型:CodePunk,我命名为代码朋克。
  • 谈不上最喜欢的作家,因为就没有读几个。王小波忒摇滚了。如果你也喜欢王小波,我们就是朋友。
  • 自认为是一个隐性的 Punk(朋克)仔。如果你也喜欢李志,我们就是朋友。
  • 总有一天,我会创作出脱离现有艺术范畴的非艺术艺术作品。
  • 其他所有你认为是我的,就是我。

你可以从这里了解到我:

]]>
2024-11-26T04:46:13+00:00
https://github.com/VandeeFeng/gitmemo/issues/11从 Memos 转移到GitHub2025-09-04T15:24:46.183325+00:00Memos 挺好玩的,但是还是想慢慢转移到 GitHub。

这也是我最近一直在思考的问题,社交属性的权重我现在很低:

其中很重要的一个原因是,我不希望我的许多内容由平台决定应该哪些被看到。因为我觉得我写的大部分内容可能对他人没有价值,只是对我自己有价值。如果它恰巧对某个他人有价值,我也希望这个他人是在自己的主观能动性下,经历了一番搜索与挖掘才找到的。

但在建立博客不久之后,我其实就发现了一个问题,由于我创作的原动力是面向自己。所以我的很多内容都是碎片化的,或者说是“微博”与“动态”这样的短内容。一部分不能对外发的短内容我放在了 flomo 里,另一部分能发的则发在了我的即刻账户

via: https://1q43.blog/post/10650/

汐笺问我为啥要搞自部署微博,我说我虽然在即刻只有 2 万粉,但还是太多了。我需要一个不能被关注,只能被搜索到的微博。

给人发“推送”这个动作比关注还“强”。理想中的状态是把信息扔进海里,除非受众自己打捞,否则不可见。这是个很共性的问题。

via: https://m.okjike.com/originalPosts/67401af2ecc64b4d41f0520e

App+1 | Follow:信息获取的另一种形态 - 少数派,follow 能改善这个困境么?

RSS二十年

我觉得现在 gitmemo 挺适合我,记录本身就是一种反抗 - gitmemo

Gitblog 原项目本身更适合发布 Blog 和长篇文章,针对 Memo 的特性,需要针对性的优化。

不得不说,perplexity 还是可以的,果然 <!--more--> 是通用的。在 config.toml 里加上 summary_length = 100 ,设置默认摘要长度好像没用。

#6

]]>
2024-11-21T10:45:32+00:00
https://github.com/VandeeFeng/gitmemo/issues/10整理了之前的笔记,现在用org-publish 来发布博客2025-09-04T15:24:46.330982+00:00我的 PKM 构建 Log,把之前的零散博客都整理了一遍。

脱离笔记软件并不是脱离某个具体的体系和产品,而是将这些体系变成自己的,进而脱离笔记软件和传统笔记方法的固定思维。现在在 Emacs 里,我依然会使用 bash 脚本来完成部分零散的笔记,例如结合我的 tiddlywiki,快速构建 Markdown 笔记。

无论是 Emacs 还是 Nvim,它们都可以用 bash 脚本作为依赖最低的方法扩展自己记录笔记的方式。Nvim 和 Emacs 我真的都很喜欢,但是 org-mode 给我的编辑体验是其他任何其他纯文本形式替代不了的。

Vim 编辑模式、PKM方法才是那支笔,它们把笔记数据、操作系统链接起来,你可以在任何环境使用这只笔。忘掉所有招式就练成太极了。

]]>
2024-11-21T09:33:14+00:00
https://github.com/VandeeFeng/gitmemo/issues/9开源模型随着时间的推移,优势会越来越明显2025-09-04T15:24:46.468037+00:00有三个兄弟——长兄、中兄和幼弟。小时候,长兄总是第一个获得新东西。新的衣服、鞋子、游戏机等等。这就像OpenAI和Anthropic一样,它们是基于云的闭源人工智能,处在技术最前沿。

中兄虽然没有最先得到新东西的机会,但会先拿到手下的物品。他能得到稍微穿过的衣服、不是全新的鞋子,但仍能使用很久,并且上一代的游戏机。这就像Llama和Mistral一样,它们是开源的人工智能,性能不输于闭源的最好产品,而且成本更低。

幼弟最后才得到二手物品。这些可能是已经磨损的衣服、旧的鞋、玩过的游戏机。这就好比本地推理一样,在这种情况下,用户无需支付计算费用,对开发者来说也同样是免费的。

当兄弟们还年轻时,他们所拥有的东西在数量和质量上存在很大的差距,但随着时间的推移,这种差距变得越来越不明显。8K电视和4K电视之间的差别不大,而iPhone 16与iPhone 14之间也没有多大不同。

最重要的是,在长兄和中兄享受他们短暂的拥有权时,幼弟最终会得到几乎所有的东西。

Source: https://docs.google.com/document/d/14BBVzpSSFZkPS3ja3s2LbfFV_inpjsbxPezIV06O9s8/edit?tab=t.0

开源模型随着时间的推移,优势会越来越明显。

Ollama 现在支持直接运行 HuggingFace 的任意 GGUF 模型:Use Ollama with any GGUF Model on Hugging Face Hub

]]>
2024-11-21T09:24:53+00:00
https://github.com/VandeeFeng/gitmemo/issues/8《智人之上》2025-09-04T15:24:46.603133+00:00“我认为在 AI 时代,我们应该讨论智能的边际收益,并试图找出哪些因素与智能是互补的,以及当智能水平非常高时,哪些因素会成为新的限制因素。” — Dario Amodei

前段时间刚看完《智人之上》,从《人类简史》到这一部,尤瓦尔·赫拉利都在强调信息和想象在人类历史中发挥的作用。在 AI 时代,人类的想象可以无限放大,这在历史上的其他节点是不曾有过的。今年的物理、化学诺贝尔奖项全是和 AI 相关的,这充分说明了 AI 在科学的探索当中,让人类想象的边界得以拓展。

人类的历史从来都和宗教与想象紧密相关,最近正好又在重温 罗马的历史,科学和 AI 现在也分不开了,暂且先把 AI 定义成一种技术。演说家们也正在这个新的历史舞台上开始了他们新的演说,Elon Musk,Sam Altman: The Intelligence Age,Dario Amodei: Machines of Loving Grace - Dario Amodei

如果说人和动物开始产生分化是从人开始会使用火,那么人类这个物种能够延续至今靠的就是想象。Hope,belief,imaging,love,我认为这是人性中最伟大的几种力量。我相信 AI ,但肯定不会宗教式的狂热与迷信,就像我一直相信科学一样。AI 作为一种技术来说,并不能直接决定由信息网络交织而成的人类社会所面临的诸多问题,当然这是在 AI 还不能改变人性的前提下。

Religion and science go together. As I've said before, science without religion is lame and religion without science is blind. They are interdependent and have a common goal—the search for truth. Hence it is absurd for religion to proscribe Galileo or Darwin or other scientists. And it is equally absurd when scientists say that there is no God. The real scientist has faith, which does not mean that he must subscribe to a creed. Without religion there is no charity. The soul given to each of us is moved by the same living spirit that moves the universe.

-- A. Einstein, as mentioned in Einstein and the Poet (1983) recoreded (roughly) from a series of conversations William Hermanns had with Einstein.

宗教和科学是相辅相成的。 我曾经说过,没有宗教的科学是跛脚的,没有科学的宗教是盲目的。 它们相互依存,有着共同的目标--寻求真理。 因此,宗教禁止伽利略、达尔文或其他科学家是荒谬的。 科学家说没有上帝也同样荒谬。 真正的科学家有信仰,但这并不意味着他必须信奉某种信条。 没有宗教就没有慈善。 我们每个人的灵魂都是由推动宇宙的同样的生生不息的精神所赋予的。

--爱因斯坦,在《爱因斯坦与诗人》(1983 年)一书中提到,该书根据威廉-赫尔曼斯与爱因斯坦的一系列谈话重新编辑(大致如此)

Imaging and creating!很幸运能出生在这个时代,经历这个可能是人类想象边界被拓宽的历史性飞跃。当然技术的飞跃可能带来很多问题

]]>
2024-11-21T09:23:56+00:00
https://github.com/VandeeFeng/gitmemo/issues/7如果你思考而不输出,你只是以为自己在思考2025-09-04T15:24:46.763399+00:00#6

已整理到 如果你思考而不输出,你只是以为自己在思考

Paul 10月31号发布了一篇文章Writes and Write-Nots,谈AI时代的写作。他的观点是,在未来人们会分为会写作的人和根本不会写作的人。写作的基础是思考,所以当AI免除了人们写作的痛苦时,也会一并免除了人们的思考。于是,这将是人类认知上的一大变化,个人现在要对此做出选择。

一直在关注这个大佬:Paul Graham,居然今天才发现就是《黑客与画家》的作者 保罗·格雷厄姆 Paul Graham - Wikipedia 🤣。我好像一直对人名、地名、符号的记忆会选择性的过滤。。

这稍微支撑了我之前的一个观点:影响一个人遇到的人和事概率的,很大一部分原因就是兴趣。之前一直没有发现 On Lisp,《黑客与画家》,大佬保罗,就是同一个 Paul。但这些就像磁场一样,牵引着我遇到事情概率的轨迹,今天交汇了。印象中轨迹大概是这样的:obsidian - Blog 写作 - 发现 Paul 的网站 - Logseq - 发现和菜头 - Lisp - Emacs - orgmode_PKM - 发现《黑客与画家》 - 又回到了 Paul 。

我很赞同和菜头的观点,不会写作的人不等于就失去了思考能力。我们有时候会习惯性地把自己擅长的,喜欢的事情当做了某种正常,某种正确,把对这些事不擅长,不喜欢的人,视为具有某种缺憾。

回到保罗的新文章上来,我同意写文章和思考有直接关系,但我不认为它们之间是唯一联系。类似我这样的人可以通过思考而写作,利用写作促进思考,这是思考的一种方式而已。而在这个世界上,应该不止这一种思考方式,应该还存在着别的可能。比如说用眼睛和手去思考的人,他们思考的结果就要朴实许多,但是质感也好很多。

这几年的 RSS 订阅、纯文字阅读、写作的积累已经让我开始从文字收获果实。

文字阅读的特权

Character Amnesia in China - 提笔忘字性格失忆症

最近在陆续修整以前写过的东西,在读或听或看?那个时候开始决定强迫自己纯文字阅读。从 RSS订阅到 ReadWise,Clip ,再到现在的 Memo,信息 - 获取 - 知识迭代结构化 - 备份 - 流动知识RAG - 信息反馈与交互,这条链路实行的很舒服。PKM 体系大头还是在 Wiki,是迭代的原子笔记,Memos 记录闪念,Clip 备份有记录价值的文章。

记录是存在的一种最简单的证明,某种意义上,如果在一个体系或者规则里没有留下痕迹,那么就是不存在的。历史是过往,更是现时的延展,所有的过往,都构成了自己此刻的一部分。

]]>
2024-11-21T09:19:42+00:00
https://github.com/VandeeFeng/gitmemo/issues/6没有记录就没有发生,而记录本身已经是一种反抗2025-09-04T15:24:46.900129+00:00在考虑把收藏 GitHub 项目的整理转移到 GitHub 上,现在保存的链接已经很多了,本身这些东西就在 GitHub 上。所以先随便写了个Python,用GitHub Actions 定时触发来获取我在 GitHub 上 Star 的项目信息。

下面的这些也是我这几年正在思考的问题,

没有记录就没有发生,而记录本身已经是一种反抗

GitHub 再适合不过了。

https://github.com/yihong0618/gitblog/issues/177 ,People Die, but Long Live GitHub

People Die, but Long Live GitHub这篇文章里写到:

不知道有没有人注意到,Joe Armstrong 最近几个月都在忙着迁移博客到 TiddlyWiki。我很早就关注了他的 Twitter,然而之前并没多想。听闻大师在 4 月 20 号去世,我才反应过来,原来他之前的举动是在未雨绸缪。

TiddlyWiki 是个单文件的 Wiki 系统,但这并不重要。重要的是,你把信息存在哪?如果你希望存储一段信息,让 100 年后的人也能访问,要怎么做?

所以,我们还有什么选择?想来想去,也只有 GitHub 了。

GitHub 已经成为互联网最重要的基础设施之一,有太多人,太多事都直接或间接地依赖于 GitHub,除非人类在未来完全不需要开源代码(这显然不可能),否则我想不出 GitHub 有关闭的可能。对 GitHub 来说,存在 100 年简直是小意思,500 年也不是不可能。这是我的预言,不一定准确,但我还挺有信心的。

人总想留下某种痕迹,证明自己活过,然而事实上,99.999% 的普通人就这么被历史遗忘了——曾经是这样。我们处在信息时代的早期,同样也处在人类文明的早期。从今往后,被数字化的东西只会越来越多。既然有人意识到了 GitHub 的独特性,随着时间推移,越来越多的人总会意识到。那时候会发生什么?自然是,越来越多的人会把自己的信息搬到 GitHub 上,依托 GitHub 实现曾经人们可望而不可及的"永生"。人有两次死亡,第一次是肉体,第二次是被人忘记。我忘记这句话是谁说的了,但现在我们已经可以回避第二次。只要 GitHub 支持,就一定会有人这么做,至少我是其中之一。几十几百年后,GitHub 将成为世界上最大的数字公墓,注册用户大部分都已去世,然而个人主页,项目,commit 历史 还述说着他们生前做过的事——就比如 Joe 的博客。这虽然是个比较 creepy 的推论,但从另一个角度想,却证明了人类的巨大进步:对抗死亡是人类文明的永恒主题,而我们已经实现了阶段性胜利。

]]>
2024-11-21T09:16:55+00:00
https://github.com/VandeeFeng/gitmemo/issues/5极致的压缩2025-09-04T15:24:47.049192+00:00概念与类比 (豆瓣) 也是侯世达写的,在 z-library 里居然没有,加入书单。

z-library 的新域名:https://z-library.sk/

专访李继刚 - 我想用20年时间,给世界留一句话 ,极致的压缩。prompt 就像写作,它是自然语言与计算机编程语言的桥梁。压缩也同样是LLM的本质,它就是一个巨大的 ZIP。

如果你思考而不输出,你只是以为自己在思考

不是在追赶什么,或者制定什么目标,只是不想被另一个昨天的自己超越。— Vandee

这么牛的实绩,怪不得她一复出还是巅峰_哔哩哔哩_bilibili - 郭晶晶华为见非凡。保持一颗起跳的心,压好人生的水花。无畏的勇气,坚定的意志,智慧的选择。敢于非凡,方见非凡。从容有度,非凡如一。

华为的格局确实大。

]]>
2024-11-21T09:14:55+00:00
https://github.com/VandeeFeng/gitmemo/issues/4真正入门 Emacs 了2025-09-04T15:24:47.400222+00:00现在才算是真正开始用 Emacs 了,大多数捷径其实是远路。

DoomEmacs 就像精装修,还是从毛坯开始好玩。基本复原了之前 DoomEmacs 的体验。

从使用习惯、艺术审美、实用性、使用场景几个出发点,重新打磨设计了很多很多细节。

emacs-note new-emacs2 ]]>
2024-11-21T09:11:43+00:00
https://github.com/VandeeFeng/gitmemo/issues/3AI 融入思考流程2025-09-04T15:24:47.596282+00:00AI 善于回答问题,而人类提出问题。科学、简洁的把 AI 融入自己的思考流程,帮助自己提出更好的问题,这比那些花里胡哨的东西有用多了。用 mem0,LangChain,phidata 构建了几个带 RAG 的简单 agent,我使用下来,对于思考的帮助其实感觉并不多。

现在打开 HackerNews,ProductHunt,GitHubTrends,一半以上都是 AI 相关的内容,看多了是真怀念以前没有 AI 时候的内容质量。

https://github.com/user-attachments/assets/63906feb-2f13-4d4a-82fd-3275472c9e9d

]]>
2024-11-21T09:05:18+00:00
https://github.com/VandeeFeng/gitmemo/issues/2相信直觉2025-09-04T15:24:47.737310+00:00

每个人在每个时刻都有一些直觉,这些直觉多半是正确的,可是也有一些需要修正,需要加入一些新的观念,变成新的较正确的直觉。我从而了解到:一方面直觉非常重要,可是另一方面又要能及时吸取新的观念修正自己的直觉。

— 杨振宁

【毕导】在这个简单的问题上,你学的教材可能一直是错的 ,其实在上学的时候关于水底折射成像的这个问题一直很疑惑我。真的要相信直觉。

2025-03-08 added

还是要相信直觉,我感觉我的直觉还是可以的🤣。从 Python,Lisp 开始入门,看了 Rust 就直接到 C 了。懂一点哲学入门啥都挺方便。

真正的编程高手都是会十几门编程语言的, 技术学久了啥都融会贯通了, 无所谓哪个门派,https://twitter.com/manateelazycat/status/1857731776577470729/ 。我的太极也已经练了很久了,也一直在说忘掉一切招式就练成太极了。

编程就是一个语言,是技能,更是一种表达,本质上和学英语没啥区别。我也没想过要当一个程序员,发际线还是要的🤣。搞艺术创作的啥都要学,这样才能从不同的角度切入到事物的本质,从而抽象出需要表达的内核。更何况现在的 AIGC 的质量是真可以了,流水线的工作质量比实体照片加后期差不了多少。借助 AI 来更好的思考和表达,最近一直在说这些。以前的画家的工具是笔,摄影师的工具是相机,现在的艺术表达工具完全可以是 AI 和 prompt,prompt 就是笔。艺术作品的灵魂来自人,来自真实和情感,这和是不是 AI 生成的关系真不大,摄影也从来都是有后期的,手段可以就是手段,它也从来不是目的。知己知彼,不了解 AI,怎么创作出超越 AI 的艺术作品?现在的 AI 作图已经吊打 90% 的摄影师了。

今年的艺术创作搞的少了,也拍的少了,在修炼内核🤣。CodePunk,代码朋克我觉得也挺有搞头,音乐的理论学习今年也没落下,应该还没有人命名吧?Hacker 和 Punker 就是有莫名的契合感,直觉。现在的流行音乐真的不能听,是时候文艺复兴了。

乔布斯多次提到了直觉这个问题。乔布斯去印度学习冥想的这一段经历让他从此开始开挂,从直觉出发,释放了自己无限的想象力。苹果公司的命名也好,iPhone 最初的手指替代触摸笔的想法也好,MacBook 就应该可以是直接放进文件袋的厚度也好,这些看似不可能的事情,都来自于直觉,对需求的敏锐洞察,当然还有绝对的自信和暴君乔布斯的执行力,以及现实扭曲力场的说服力和感染力。

E=mc² 爱因斯坦就是一个想象力加上直觉的最好例子。爱因斯坦相信宇宙的简洁性,相对论不是在说宇宙是相对的,恰恰相反,这是爱因斯坦对于牛顿决定论的反思,相对论一直在追求另一种”绝对“的规律,这个规律在每个彼此相对的系统里是宇宙通用的,因此在广义相对论之后爱因斯坦对于量子力学和相对论之间一直达不到统一,才会开始怀疑自己,在晚年有了许多不统一的论断。终于在一系列推翻了自己想法之后,得到了这个无比简洁的物理方程式表达。

在直观体验中,物体的能量就应该是与质量和速度相关联的。尽管这种直觉可能不符合更为深层次的科学或哲学原理,但从根本上讲,这个世界是我们感知和解释的对象。因此,我们总结出的自然规律应基于人的主观体验,这样才能构建符合逻辑和规律的认知体系。

]]>
2024-11-21T09:00:14+00:00
https://github.com/VandeeFeng/gitmemo/issues/1Hello world2025-09-04T15:24:47.930675+00:00Hello world!💡

]]>
2024-11-21T08:38:29+00:00