MoreRSS

site iconShadow Walker | 松烟阁修改

Where other men are limited by morality or law, remember, everything is permitted. I walk in the darkness to serve the light.
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Shadow Walker | 松烟阁的 RSS 预览

AI改变我们的编程方式

2025-07-06 16:14:18

延续上一篇关于AI的思考,作为程序员最关心的编程范式的变化,我打算看一下业界有哪些思考和趋势。

这篇文章主要是围绕Tesla前AI总监Andrej Karpathy关于软件3.0的观点展开的。

什么是软件3.0

Andrej Karpathy提出软件开发的演进过程可以被划分为三个主要阶段,即Software 1.0、Software 2.0和Software 3.0,它们代表了编程思想和实现方式的根本性转变。

特性 Software 1.0 (传统软件) Software 2.0 (AI 软件) Software 3.0 (LLM 驱动的软件)
核心思想 明确的指令 (Explicit Instructions) 从数据中学习 (Learning from Data) 与通用模型对话 (Interacting with a General Model)
“代码”是什么? 人类编写的源代码 (C++, Python) 神经网络的权重 (Weights) 自然语言提示 (Prompts)
如何“编程”? 程序员在开发环境中编写代码 工程师用海量数据训练模型 用户通过对话、提问、下指令来引导模型
开发者角色 软件工程师、程序员 机器学习工程师、数据科学家 所有人、提示工程师、AI 应用开发者
典型例子 计算器、操作系统、数据库 图像识别、语音识别、推荐系统 ChatGPT、Copilot (代码助手)、Midjourney (AI绘画)
优点 精确、可靠、行为可预测 擅长处理模糊、复杂的模式识别问题 开发速度极快、门槛极低、知识广博
缺点 僵化、无法处理模糊问题 “黑箱”,需要海量数据,可能产生偏见 可能会“幻觉”(一本正经胡说八道)、依赖大公司、有安全风险

Software 1.0:传统编程

这是我们最熟悉的软件开发模式。程序员使用Python、C++等形式化的编程语言,一行一行地编写明确的指令来告诉计算机如何执行任务。例如,特斯拉自动驾驶系统中就包含大量的C++代码。这种模式的特点是逻辑精确、行为可预测。

Software 2.0:神经网络编程

Software 2.0的“代码”不再是人类编写的指令,而是神经网络的权重。开发者通过收集和标注海量数据,使用梯度下降等优化算法来“训练”一个神经网络模型。模型从数据中自动学习规律和特征,例如用于图像识别的AlexNet。在特斯拉自动驾驶系统中,神经网络就逐渐取代了传统的C++代码。

Software 3.0:自然语言编程

这是最新的范式,其核心是大型语言模型(LLMs)。开发者不再编写传统代码或训练专门的模型,而是通过自然语言(如英语)编写提示词(Prompts)来与一个强大的、预先训练好的通用LLM进行交互,引导它生成所需的功能或代码。例如,要完成一个情感分类任务,开发者可能只需向LLM提供几句话的描述和几个示例即可。

编程范式的演进

Software的三个阶段是演进关系而非完全取代。Software 1.0是基础,提供精确控制;Software 2.0解决了1.0难以处理的模糊和感知问题;而Software 3.0则建立在2.0的成果(LLMs)之上,将编程的接口从形式化语言转变为自然语言,极大地降低了门槛。它们之间的核心区别在于“代码”的形态和“编程”的方式:从人类编写指令,到用数据优化权重,再到用语言引导模型。

这个变化最酷的地方在于,开发工作的核心,从“告诉电脑怎么做”变成了“告诉AI我想要什么”。在AI的加持下,开发者不用再苦哈哈地抠每一行代码逻辑了,只需要写出清晰、全面的目标说明(Specifications)和提示(Prompts),告诉AI我们期望软件能实现什么功能。然后,AI代理就会像个得力助手,把这些想法转化成我们能读懂、能运行的代码。

所以你看,开发者的角色也变了!程序员不再是单纯的“码农”,而更像是“AI协调员”或者“模型训练师”。最重要的技能也变成了如何拆解复杂问题、做好系统设计,以及一门新学科提示工程(Prompt Engineering)。这不只是简单地提问,而是要学会如何像一个精准的指挥家一样,用最恰当的指令、上下文和约束,引导AI产出我们想要的结果。

当下的AI Coding Assistant的身影现在几乎无处不在,贯穿了整个软件开发的生命周期:

  • 规划阶段:脑子里只有一个模糊的想法?没关系,AI能帮你把它变成明确的需求和用户故事。
  • 开发阶段:像GitHub Copilot这样的AI编程神器,可以实时帮你写代码、补全函数,据说能把开发效率拉高整整45%!简直太神了!
  • 测试阶段:AI还能自动写测试用例、跑测试,帮你揪出代码里的bug和安全漏洞。
  • 部署和维护:AI也能优化发布流程,甚至能预测系统可能会在什么时候出问题,让运维工作省心不少。

不过目前AI Coding也不是完美的,存在很多问题:

  • 安全问题:现在最头疼的就是“提示注入”(Prompt Injection)。坏人可能会用一些刁钻的问法来“忽悠”AI,让它绕过安全限制,干点坏事,比如泄露你的数据。
  • 可信度与可靠性问题:LLM有时候像个“黑箱”,我们搞不清它为什么会做出某个决定。而且它还时不时会一本正经地“胡说八道”(也就是“幻觉”),这对于要求绝对精准的软件来说,可是个大麻烦。

所以目前为止Software 3.0目前更适合作为工具箱中的辅助工具,而非完全取代传统的代码编程。

软件范式的更新

Andrej Karpathy关于软件3.0的讨论中提到它不仅仅是一个技术更新,更是一场深刻的范式革命。

编程的民主化与角色的转变

社区普遍认为,Software 3.0最大的意义在于“编程民主化”。由于编程语言变成了自然语言,非程序员也能参与到软件创建中,极大地拓宽了创新的来源。X平台(原Twitter)上的讨论热烈,用户强调“English is coding”(英语即编程)的理念。对于程序员而言,工作重心从手写代码转向了设计高效的提示(Prompt Engineering)、验证和审计AI生成的代码以及管理整个AI系统。

LLM作为新的“操作系统”

Andrej Karpathy将LLMs比作1960年代的早期计算机或是一种新型的操作系统。这一观点在社区中获得了广泛认同。LLMs成为了一个可编程、可组合的基础平台,开发者可以围绕它来构建各种应用,而不是一切从零开始。

人机协作而非完全取代

目前大家普遍的共识是,Software 3.0强调的是人机协作,即“部分自动化”(Partial Autonomy)。Karpathy提出的“Autonomy Slider”(自主性滑块)概念被反复提及,即用户可以根据任务需求调整AI的介入程度。AI负责生成,人类负责验证,形成高效的“生成-验证”循环。

总而言之,软件3.0不仅仅是工具上的更新换代,它更像是一场关于思维、流程和团队协作方式的革命。公司需要赶紧建立起新的管理规则,培养团队和AI打交道的能力,还得花钱投资一些能管好AI风险的技术。说到底,未来的赢家,不是那些拥有最强AI的人,而是那些最懂得如何与AI共舞、能建立起高效、安全、负责任的人机协作体系的团队和个人。这,才是这场变革中最激动人心的部分!

References

  1. 人工智能对软件开发过程的战略影响
  2. Andrej Karpathy: Software Is Changing (Again)

AI的一些思考和总结

2025-06-29 21:13:33

经过了将近一年时间与AI的密切接触,论文研究、AI应用使用、AI应用开发,对AI逐渐有了一些自己的思考:我笃信一个原则「抛开时间来看,人能学会的,AI一定可以学会」。

这句话背后的一个核心哲学和科学思想是计算主义。计算主义认为,认知过程,包括人类的学习,可以被看作是一种信息处理过程,类似于计算机的运算。

  • 图灵机(Turing Machine):这是计算机科学的理论基础,由艾伦·图灵提出。图灵机是一个抽象的计算模型,能够执行任何可计算的函数。它的重要性在于,理论上任何能够被分解为一系列明确、有限步骤的问题,都可以由图灵机解决。
  • 可计算性(Computability):如果人类的学习过程可以被形式化为一系列可计算的步骤,那么理论上,图灵完备的机器(包括现代计算机和AI系统)就可以模拟和执行这些步骤。

如果我们将学习看作是一种通过处理信息、识别模式、建立联系并调整行为以适应环境的过程,那么从计算主义的角度来看,只要这些过程能够被精确地描述和编码,AI就可能实现它们。

以下关于AI的思考都是基于这个原则。

AI v.s. 程序员

作为程序员群体的一员,距离AI是比较近的也是感受最强烈的 —— AI真的很厉害,无论是coding、设计偶尔甚至有接近阿里系P5水准的表现(单指 Claude和OpenAI)。这无疑增加了程序员的一种焦虑:我们可能会被AI替代了,近期针对外包员工一些管理动作可见一斑。

那么,程序员真的会被AI替代吗?

如果计算机技术还是在当前的体系下发展的话,虽然会剧烈的影响程序员的工作,但是我认为AI无法替代程序员。道理很简单,因为在当前的计算机技术体系下AI无法学习和预测一件事:多样性(包括人的多样性、需求的多样性、现实的多样性)。举个职场人都会心一笑的例子:

  • 给我一个「五彩斑斓」的黑;
  • 给你50万,我要明天中午「在麦子地里长出西瓜」;
  • 程序中sleep 100s,每次新版本减少10s,从而达成10%性能优化的指标;
  • ......

AI真的仅此而已吗?

刚刚我论证AI无法学习「多样性」的前提是在当下计算机软件应用开发体系下的,如果以后没有计算机软件应用了呢?如果新的软件形态的产生了以后没有软件应用只有数据了,程序员肯定会被直接替代掉了。用比较正式的表达:AI带来的是一种范式的变化,而不是眼前coding权的让渡和变更。

所谓范式(paradigm)就是一种基本的思维方式或行为模式,通常指在一个特定领域内,被公认的、约定俗成的、用来指导研究和实践的标准模式。计算机软件应用的范式是需求、PRD、架构设计、详细设计、研发、测试、部署、运维等。

而AI带来的范式则是 —— 「言出法随」。

举个例子,现在我们只要说一句「把数据中IPv6的数据剔除掉」,剩下交给AI即可。再也不需要去查一下RFC中IPv6格式定义,根据当前项目或者环境进行技术选型,然后设计和考虑各种corner case完成测试再发布使用。这种意义上来讲程序员必定会被AI替代掉。

20世纪出上海街头骑自行车送信的邮差,不是因为发明了有轨电车丢掉工作而是因为email等新的沟通方式被替代掉的,对程序员而言AI就只那个新的方式。

那程序员应该怎么办呢?

短期来看。就像前面分析的,如果计算机技术还是在当前的体系下发展的话程序员还不会被替代只是会让渡出去一些coding权,所以对程序员而言还是有时间。Ilya Sutskever在母校多伦多大学演讲的时候说过:「你可以不关心政治,但政治每时每刻都在关心你。同样的道理,在AI身上要应验许多许多倍。」,所以程序员要做的是尽可能的靠近AI:不要吝啬在AI上的花费(时间、金钱都算);不要放弃思考和创造(AI目前还弱于人类的地方);不要忘记自己的Plan B(个人的影响力)。

长期来看。真到了AGI言出法随的那一天,程序员能做的估计只有一件事情:做一个坚定的人类相信者,相信在人与机器的竞争中,人类一定是最后的胜利者。

AI v.s. 学习

面对AI的迅猛发展,我自己时常会有一种无力感:「这可咋办,AI什么都会以后还要学习吗?」

最近我看到了一段话:「物理教的不是公式,是建模思维;化学教的不是方程式,是变化思维;语文教的不是词汇,是表达思维」。

我想对于AI时代而言,学习的意义是帮助建立思维框架,它决定了能提出什么质量的问题,而问题的质量决定了AI能给出什么质量的答案。有思维框架的人用AI如虎添翼,他们知道如何精确描述需求,如何拆解复杂问题,如何验证AI的输出。没有思维框架的人用AI如盲人骑瞎马,他们只能提出模糊的需求,然后在AI的试错中消耗时间,最终沦为“提示工程师”。

就像这篇文章里提到的「如果不学习CSS有时候你都没办法描述清楚一个Bug,更不用说让AI帮你解决了」,AI时代的学习不是记住更多知识而是:

  • 问题拆解能力:能把复杂需求分解成可操作的具体步骤;
  • 调试思维:当结果不对时,知道从哪里开始排查;
  • 系统性思考:理解各个组件之间的关系和影响;

尽管AI记住和掌握知识看似远超人类,但概念化、战略思维、引人入胜的沟通和有影响力的执行等更高阶的技能仍然是独特且有价值的,面对AI我想应该超越纯粹的技术能力,认识到真正能区分个体的更深层次的能力:

哪怕coding变得和说话一样简单,也只有少数人会演讲」。

References

  1. https://x.com/0xShellywang/status/1932722302422258111
  2. https://mandaputtra.id/posts/how-to-not-using-ai-to-code/

🚀让Obsidian更聪明:RAG驱动的本地知识库把Obsidian变成了懂你的AI助手

2025-06-08 11:38:02

我最近更新了自己开发的 Obsidian 插件 Personal Assistant,关于这次更新的主要特性,简单来说,它能让 Obsidian 笔记库变成一个“本地私有版 ChatGPT”,帮助使用者阅读、总结、基于笔记内容问答等,这让 Obsidian 变成了个人专属的知识助理,这篇文章就分享这个插件的新功能以及我自己的使用体验。

P.S. 这个插件适合对 Obsidian 有一定了解,正在探索 AI+效率工具并且注重自己笔记安全的小伙伴~

🧠 插件能做什么?

Personal Assistant 插件的原理是利用了 RAG(检索增强生成) 技术,把你自己的 Obsidian vault 构建成一个可以“召回+生成”的智能知识库,配合大型语言模型(LLM),你就拥有了一个真正理解你笔记的 AI 助手。

🌟 核心功能有三个:

  1. 完全本地化运行,安全不上传
    • 所有内容都保存在你自己的电脑上
    • 构建 RAG 知识库都在本地完成
    • 你的知识,就是你的,不用担心隐私泄露
  2. 🧠 智能阅读、总结和复用 Obsidian 笔记内容
    • 自动提取和整合笔记里的内容
    • 可以像问 ChatGPT 一样问笔记库的问题
    • 还能生成总结、报告、甚至写作提纲
    • 非常适合写作、研究、知识整理场景
  3. 🌍 多语言支持,中文英文都 OK
    • 不论你是用中文记录、还是用英文做资料整理,插件都能处理
    • 完全适配中文 Obsidian 用户的使用习惯

📘 举几个使用场景,真实高效!

  • 复习场景:问它“我上周记的那个《费曼学习法》的要点是什么?”它会从笔记中召回、总结告诉你!
  • 写作场景:让它帮你基于你写过的碎片笔记,生成一段结构化内容,连标题和框架都帮你想好了
  • 会议记录:把会议纪要存进 Obsidian,问它“上次项目会议我们说了什么重点?”它就给你提炼出来

总之,它真的让“写完的笔记能活起来”✨。

下面我用几个视频介绍一下插件基本用法:

  • 初始化本地向量知识库
0:00
/0:26
  • 本地知识库实时更新
0:00
/0:49
  • Obsidian本地知识库AI助手
0:00
/1:36

P.S. 向量知识库初始化的性能问题:

  • 本地硬件:MacBook 2019 i9 16GB Memory 512GB Storage
  • 操作系统:macOS 15.5
  • Obsidian:1.9.2
  • Vault:笔记数量 3721
  • VSS 初始化时间:18min

🔍 什么是 RAG?不懂也没关系,我简单讲下

如果你对技术原理感兴趣,简单解释一下:

RAG(Retrieval-Augmented Generation)是一种结合“信息检索 + 文本生成”的 AI 模式。
Personal Assistant 会实时的将 Obsidian 笔记进行 text embedding 向量化,LLM 在做知识问答的时候,它会先从你的笔记中根据语义相关性、MMR等算法检索相关知识库片段,把这些片段交给大语言模型去理解并生成回答或内容。

所以,它比“纯生成”更可信、更贴近你自己写过的内容,也更像是你“第二大脑”的延伸!

🧭 Obsidian 的知识图谱,也能派上用场!

插件还融合了 Obsidian 原生的「知识图谱」结构,会在检索时自动考虑笔记间的链接、上下文和引用关系,真正做到“用结构化知识召回内容”。

也就是说,你不仅可以问“这是什么”,还可以问“它和哪些笔记有关”,特别适合信息密集型的笔记用户。

Personal Assistant 插件在每次生成的最后会附上引用的 Obsidian Vault 中笔记记录,方便用户在回顾 Obsidian 中记录的知识。

🔧 插件获取方式(开源):

GitHub 项目地址(持续更新中,欢迎提交 issue 或 PR):
👉 https://github.com/edonyzpc/personal-assistant

Obsidian 插件安装(官网地址):
👉 https://obsidian.md/plugins?id=personal-assistant

✅ 最后总结一下

✨ 如果你已经在用 Obsidian,但总觉得笔记写了就沉底了,不太会“复用”;
✨ 或者你想要一个属于自己的、不上传自己内容也能用的 AI 助手
✨ 又或者你对 AI + Obsidian 知识管理特别感兴趣;
✨ 如果你已经用上了,欢迎来松烟阁一起交流使用体验和玩法 💬;
✨ 如果你想尝试但不太懂配置,我也可以写一篇新手配置指南,欢迎在 GitHub 留下 issue

持续更新中,欢迎关注我,一起探索 Obsidian x AI 的更多可能!

🔖 References

  1. edonyzpc/personal-assistant: A plugin that harnesses AI agents and streamlining techniques to help you automatically manage Obsidian.
  2. Obsidian基于AI自动为文章配图
  3. 在Obsidian搭建通义千问AI助手

小本本系列:o3模型引发一次用好大模型工具的尝试

2025-05-18 22:07:25

一个月前随着OpenAI o3的发布,社交媒体上兴起了「根据图片找位置」的潮流,举个简单的例子(来源:NanYi):

一开始我不以为意,我觉得只要能解析图片中Exif信息足够了,不是什么黑科技,直到我看了一下o3的分析过程:

这个分析方法代表着没有metadata的图片也能精确分析得到结果,除了惊讶模型分析推理能力之外,我觉得更加让我惊艳的地方是图片和文字的信息对齐和协同能力 —— 大模型的多模态能力已经不仅仅局限于输入上的多模态支持了。

于是我萌生了一个大胆的想法:作为没有AI算法背景的人打算借助AI工具弄清楚这里的黑科技。

明确研究对象

Multi-Modal 多模态已经不陌生了,但是o3这种多种模态输入信息的联动(对齐)到底是归属哪个范畴,需要先识别出来。经过简单的搜索引擎的检索,发现「弥合不同模态之间的语义差距并确保其表示的有效对齐是Multi-Modal Token需要解决的范畴」。

有了关键信息就比较方便了,分别用「Multi-Modal Token」、「多模态token」、「多模态令牌」等关键词进行检索,发现有大量的论文是做相关研究的。

这么复杂且并非自己熟悉的学术领域,自己一篇论文一篇论文的研究肯定是不可能了,直接上手段 Gemini Deep Research。

Deep Research

目前各家大模型基本陆续都推出了 Deep Research 的功能,我个人还是觉得Gemini的更好用,应该归功于Google多年的搜索引擎技术上的积累。

对于不太熟悉的领域,我需要快速的建立对快内容的认知,于是关于Multi-Modal Token结构化的介绍就是第一步了:

这是Gemini最后给出的分析报告:多模态token研究结构化介绍 - Google Docs

简单对比一下国内几个大模型的 Research 结果方便直观比较:

  • 豆包
  • Qwen3

个性化研究

Gemini Deep Research给出的报告比较专业,对于非AI算法专业的我来说比较艰深难懂的,为了初步建立该领域的认识,我不需要完全能够读懂专业报告,所以我的做法就是将该报告作为大模型的多模态输入,让大模型帮我整理出适合我的理解的内容,主要的步骤:

  • 根据Gemini Deep Research整理的报告,以适合我的方式进行总结和讲解
  • 在理解该领域知识的时候,根据自己的需要让大模型整理和回答问题,举两个例子
    1. 用一个比较通俗易懂的例子说明单一模态的局限性
    2. 找一下当前常见的大模型是如何处理多模态数据的,是否使用了multi-modal token技术
    3. 找一下是否已经有统一多模态模型
    4. OpenAI o3能够通过图片能够定位到图片拍摄的位置,这里的原理是什么,跟multi-modal token的关系是什么
  • 重复上一步,直到能够回答自己的疑惑位置

小插曲

在研究过程中,还可以充分借助AI编程工具(Cursor、Cline等)进行小工具和小任务的快速实现。我

在将Gemini Research报告作为附件,进行个性化研究的时候,为了节约token消耗,同时可以让大模型准确的识别报告中引用的资料来源方便查询和校准,我需要对markdown做一下footnote的格式处理,具体来说包括:

  1. 将reference的number list转换成footnote格式
  2. 报告原文中的引用数字与footnote对应上

面对这个需求,首先我知道用awk等字符串处理工具肯定可以完成上面的需求,另外我自己并不能熟练地写正则表达式,所以我直接用IDE中的编程Agent帮助解决:

AI工具列表

  1. OpenAI
  2. Gemini
  3. Kimi
  4. 豆包
  5. Qwen3
  6. Cline

ReAct Agent + MCP实现有声书转换

2025-05-11 00:01:23

开始技术细节之前,关于有声书想多絮叨两句(也算是一种产品需求分析):

  • 有声书的主要需求来源:
    • 随着生活节奏加快,人们越来越依赖碎片时间获取信息,有声书允许用户在通勤、做家务、运动等场景中同步进行 “阅读”;
    • 特殊人群的阅读需求,老人、视障等天然存在阅读困难的人,儿童等尚需启蒙的人群等都需要借助有声书来“阅读”;
    • 情感陪伴与心理健康支持需求,声音的陪伴属性使其成为心理健康的 “软支撑”,睡前听书还可能通过影响梦境内容(如高频 β 波激活记忆)间接改善心理状态,广播剧、小说等内容通过角色演绎引发情感共振。
  • 技术可行性:
    • 丰富的kindle、z-library等电子书资源提供了高质量的有声书文本资源;
    • AI 技术(如 TTS 语音合成)大幅降低制作成本;
    • MCP协议生态的丰富大大增强了AI的能力边界;
  • 从业务价值的角度做这件事情是有待商榷的:
    • 已经有喜马拉雅这样平台了,折腾有声书转换的必要性不高;
    • 已经有NotebookLM了,自己去开发基于LLM的工具必要性不高;
    • 平台和工具皆有竟品的情况下,这件事情的效率和性价比都会有问题,所以这个项目只能是个人兴趣和副业;

基于上述的分析,打算用MCP Servers + LLM实现将电子书转换为有声书的小工具,使用方式很简单在AI交互框中输入“将xxx目录中xxx转为成音频”,这样我就拥有了一个低配版的喜马拉雅,将任意自己喜欢电子书变成自己和家人喜欢的有声书了。

技术思路

  • 首先创建一个ReAct Agent(即构建一个由LLM到Tools的State Graph),该Agent用于规划有声书转换的任务
  • 根据Agent规划任务调用file system进行相关文件的读写操作
  • 根据Agent规划任务调用Markitdown MCP将电子书(如epub、docx、pdf等文件)转换成markdown文本
  • 根据Agent规划任务将转换之后的markdown批量转换成音频(mp3格式)

实现细节

具体实现比较简单,详细可以参考demo代码在GitHub仓库中 MCP agents,实现过程中我觉得比较有意思的两个细节可以分享一下:

1. MCP Tool返回内容超限问题

我在进行demo测试的时候,用的是海明威的「老人与海」的英文版(约4万字),markitdown mcp调用之后返回大约6万字的markdown文本,正常情况下ReAct Agent会将mcp返回的内容作为LLM的上下文message进行下一轮的任务输入,此时就碰到问题了,明显超出了Qwen的上下文token限制(30,720),此时会直接导致Agent任务执行失败。

再回来分析markitdown mcp调用的结果,ReAct Agent并不需要大模型进行文本处理,所以我们只需要Agent直接返回mcp的结果即可。非常敬佩langchain(langraph)框架,这种细节需求场景都能覆盖到,虽然它饱受诟病。话不多说,直接上代码:

async def convert_epub_to_markdown(self, query: str) -> str:
    messages = [{"role": "user", "content": query}]
    available_tools = []

    # Load tools from all sessions
    for session in self.sessions:
        tools = await load_mcp_tools(self.sessions[session])
        available_tools.extend(tools)
        if session == "markitdown-mcp":
            # enforce a tool output from an agent avoiding any additional text the the agent adds after the tool call
            for tool in tools:
                tool.return_direct = True

    # logger.debug("Available tools:", available_tools[0])

    # Initial Qwen API call
    agent = create_react_agent(self.qwen, available_tools)
    response = await agent.ainvoke({"messages": query})

    # Detailed processing of tool calls if you use other LLM, e.g. Claude
    self.__md_str = response["messages"][-1].content
    return response["messages"][-1].content

2. Cosyvoice max length问题

Cosyvoice LLM模型有一个限制,在进行文本转语音的时候发送的文本长度不得超过2000字符,这名相不满足「老人与海」有声书转换的要求,为此根据模型max length限制,我将超长文本按照语义和格式进行分割,然后批量进行语音转换。

def split_text(self, text: str, max_length: int = 2000) -> list:
    splitter = MarkdownTextSplitter(chunk_size=max_length, chunk_overlap=0)
    return splitter.split_text(text)

def exec():
	# ...省略一些代码
	await client.connect_to_mcp_server("markitdown-mcp")
    # await client.connect_to_mcp_server("filesystem-mcp")
    response = await client.convert_epub_to_markdown(
        "把文件`/Users/edony/Downloads/hemingway-old-man-and-the-sea.epub`转换为markdown格式,大模型不要处理任何markdown,直接输出全部原文"
    )
    # split_text method
    chunks = client.split_text(response, max_length=2000)
    batch_size = 10
    batch = math.ceil(len(chunks) / batch_size)
    for i in range(batch):
        sub_chunks = chunks[i * batch_size : (i + 1) * batch_size]
        await client.synthesis_text_to_speech_using_asyncio(sub_chunks, i)
    logger.info(len(chunks))

效果展示

Weekly Collections 16

2025-05-07 23:05:56

有了MCP,还需要深入研究Agent吗?|唐霜

本文讨论了MCP(大模型与工具连接的通用协议)和Agent技术之间的区别及联系。虽然MCP解决了大模型调用工具的问题,但并未解决理解用户真实意图、规划合理任务、阶段化螺旋式任务执行以及自动执行等问题。相比之下,Agent通过记忆、多轮交流、验证和动态调整等机制来更准确地理解和实现用户目标。文章还提到了MCP与Agent的关系,指出MCP可以提升Agent在工具调用层面的能力,但Agent是一个包含调度系统、执行系统和感知系统的综合体系。此外,文章提到未来可能需要一种新的协议架构来标准化不同厂商Agent之间的交互,并预测随着Agent网络的发展,将形成一个自决策自执行的社会网络。

原文链接有了MCP,还需要深入研究Agent吗?|唐霜


我其实并不看好远程办公

文章讨论了远程办公的利弊,尤其是在后疫情时代。作者刘润指出,尽管远程办公在疫情期间流行起来,并且有很多明显的好处,比如节省通勤时间、提高某些员工的工作效率等,但它也增加了沟通的成本,减少了团队之间的互动和创造力。因此,许多公司开始取消远程办公模式,要求员工返回办公室工作。文章最后提到,真正的创造力往往来源于人与人之间的频繁互动。

原文链接我其实并不看好远程办公


人生的意义是什么?这是我听过最好的答案

本文探讨了现代人的焦虑与困境,以及如何从中国传统智慧中找到解药。作者赵昱鲲指出,我们这一代人具有“西方脑、中国心”的特点,导致在面对心理问题时产生额外的冲突。他强调,人生的意义并非单纯通过科学可以解答,而是需要通过实际行动和内心感受来实现。中国文化中的整体性思维、辩证型思维、正面情感以及对现实生活的重视,为解决现代人的心理问题提供了有效的方法。

原文链接人生的意义是什么?这是我听过最好的答案


怎样避免成为【喂养一线城市】的饲料

说实话我自己就是90后小镇青年在大学毕业后来到大城市工作的,随着2016年美团王兴提出“互联网依靠PC网民及移动互联网用户快速增长的人口红利期已过”,互联网进入了“下半场”,我就知道,我可能是上了最后一班时代的快车

往后的世代,并不是说机会就完全没有,而是当时代从巨大的增量变成存量竞争,意味着市面上存在“跃迁”的机会总量更少,且获得相同机会需要付出的努力要更多,所以为什么你会发现后来职场充斥了内卷、PUA、35岁歧视等乱象...

有人说现在也有很多创新的机会啊,比如AI,但你要知道,至少当前AI的机会和绝大多数普通人是没关系的,比如在AI行业内最引以为豪的就是效能的提升,据说一个AI团队但凡超过40人,在业内都是要被笑话的

所以,在这个“青黄不接”的期间,作为背井离乡来大城市打工的普通人,如果还在用上一代的生活理念来指导你自己,很可能就会被“大城市”吃干抹净,比如陷入“中产返贫”三件套

所以,建议你可以考虑参考以下6个生活建议:

1,存钱,尽可能多存,有多少存多少
我曾数次分享过很多金融界大师给年轻人的建议,比如世界最大的对冲基金之一桥水的创始人达利欧和著名投资人吉姆·罗杰斯,都是建议年轻人要存钱

“要存钱,尽你所能去多存钱,尤其在你年轻的时候。”,“要考虑你的储蓄,想想你有多少存款。思考这个问题的最好方式是想一想我每个月花多少钱?我已经存了多少钱?重视你的储蓄。因为储蓄就是自由和安全。”

2,用存的钱来购买资产
存钱不是最终目的,因为钱会“变毛”,持有现金是为了购买资产,而买资产的第一原则是不要亏损(巴菲特),你需要购买足够好的资产来避免被通货膨胀吃掉,并且接受“慢慢变富”(巴菲特X2)

我个人是在5-10年的维度主要定投黄金和红利资产来抵抗通胀(我个人的想法不构成任何建议),而你也需要找到适合你自己的资产

要知道,赚钱效能是分不同等级的,最高的是资产,其次是土地,再次才是劳动

3,远离会让你亏钱的东西
巴菲特老爷子说投资最重要的原则只有两个,第一是不要亏钱,第二是永远记住第一条原则。现在最可能会让你亏钱的幻觉是什么?是别人告诉你的让你觉得“应该”有的东西,那些到手就贬值的东西,以下列举部分,你可以不同意,也可以评论补充:

市面上99%的房子、非顶级的中低端奢侈品、汽车为主的非必要大件、高溢价潮牌、大部分主动投资类基金、迷信海外学历尤其以就业为目的、不合适的人生伴侣…

那什么会让你绝对不亏呢?其实你肉身来到“大城市”,这里最“值钱”的是你身边那些有趣、励志、经历丰富的朋友,记住,你认识了谁,和谁在一起,才是不论你身处大城市还是老家,都能记住一辈子的财富

“人的本质,是他一切社会关系的总和。”

4,充分利用时间杠杆投资自己
每个人的财富可以相差1万倍,但时间都只有24个小时,而且没有任何办法再次补充。如果你想缩小和巨富们的差距,就只能在公平的赛场和他们竞争,也就是“24小时”这个赛场

他们24小时可以赚1亿美金,但只能读1本书,你24小时只能赚100美金,但你也能读1本书。对普通人来讲,比钱更珍贵的其实就是你的时间,你每天节省下来的时间花在什么地方,很大程度上累积起来的作用,会比加薪更能改变你的生活轨迹

现在停下刷短视频的手,把你的“碎片时间”积累起来,培养你自己的技能,升级思维

5,成功一个能独立生存的公民
我们从小受的教育很大一部分目的就是把你我这样的普通人,培养成一个合格的打工人,这是工业时代的教育形式,它的目的并不是让你成为一个具有独立思考能力,能独立处理自己生活问题的公民

所以真的进入社会后,对于社会运转的基本底层规律,例如法律、医学、经济金融…你如果不是学相关专业,基本是一无所知的,甚至很多相关专业的学生也只是一知半解。所以这些内容你得自己花时间补起来

我就亲眼见过普通人在自己权益遭受侵害时是多么不知所措的,就像徐峥的《逆行人生》扮演的外卖员那样,被车撞倒后第一时间想到的还是赶紧去“干活”,而不是如何维护和保护好自己

6,保持健康比任何事都重要
当时代拔足狂奔的高速发展期过去,各种冲突和乱象都会爆发。但你永远要记住,在任何决策中,身体健康都是第一位的。只要你坚持待在牌桌上,上帝总会重新发牌

举个极端的例子,司马懿不就是靠熬死了曹家三代人最终才有机会建立了晋朝…

记住,生一次大病就可能让你返贫,而且会极大降低你的生活幸福度,尤其是年轻人,不要等真的发生了你才知道健康的优先级

“好好吃饭,坚持锻炼,睡个好觉,几乎能带你走出生活中的任何困境。”

原文链接怎样避免成为【喂养一线城市】的饲料 说实话我自己就是90后 - 即刻App


亲密关系中,不是只有“出轨”才叫背叛

亲密关系中的背叛不只包括出轨,忽视需求、违背承诺等也可能构成背叛,即“依恋伤害”。依恋伤害指在关键时刻感受到的被抛弃或背叛,可能源于看似微不足道的小事,对个人和关系产生负面影响,如颠覆对关系的看法、怀疑自我价值等。修复依恋伤害需双方共同努力,包括理解和表达情绪、重建信任。情绪聚焦疗法(EFT)可有效解决此类问题,重建更成熟的信任。

原文链接亲密关系中,不是只有“出轨”才叫背叛