从实现逻辑出发,搭一个能干活的 Agent 背景:这篇是读《深入理解 AI Agent:设计原理与工程实践》(李博杰,Apache 2.0 开源,GitHub: bojieli/ai-agent-book)的整理笔记。全书十章,从原理讲到工程实战,配 88 个可跑的实验。下面不按章节复述,而是按”实现一个 Agent 要解决哪些问题”重排,每个模块只讲两件事:要解决什么问题,核心思路是什么。细节和数据留给原书。 一、Agent 的本质:一个公式和一个循环 问题:Agent 到底由什么构成,最小可运行形态长什么样? 思路:Agent = LLM + 上下文 + 工具。直觉说法是”大脑 + 眼睛 + 手脚”,学术说法是策略 + 观察空间…
阅读全文最近一段时间,每当 OpenAI 有新模型发布,都会有一种论调:skill 没用了,越来越多用户开始弃用 skill。 这话对吗? 对也不对。首先,这个逻辑是有合理性的。随着模型能力的提升,确实有很多 skill 被用户抛弃了,这些 skill 集中于 Superpower 之类所谓的「通用」skill。这些 skill 的定位,就是对一些模型能力缺陷的补齐,尤其是在各个模型没有疯狂地对 coding 进行针对性优化的时期,是有一些作用的。而随着模型本身能力的提升,这些东西其实慢慢都已经被模型吸收了,自然就没有了作用。 那 skill 是真的就没用了吗?恐怕也并非如此。接下来,我们会论述一下随着模型智能水平的提升,skill 还有什…
阅读全文
03之前写过一篇文章:https://lichuanyang.top/posts/26060/ . 教大家构建与Agent无关的工作流,随时能拉起不同的Agent工作,从而能顺畅用上各个Agent提供的免费、试用套餐。这么实践下来,一个明显会变得繁琐的事情就是对于skill的管理。因此,我又写了一个工具,实现在不同Agent、不同项目间管理skills. 鉴于目前Agent的生态还比较凌乱,大家各干各的,skill的存放目录也自己定自己的。 比如 Cursor 放在 ~/.cursor/skills,Claude Code 放在 ~/.claude/skills,Trae 放在 ~/.trae/skills,OpenCode 放在 ~/…
阅读全文前段时间,偶然看到karpathy大神提出的llm-wiki, 有种相见恨晚的感觉。我一直是很喜欢写些东西的,但是写完之后,问题就是大量内容散落在各个地方,一直没有精力对它们进行有效的管理。而看到了llm-wiki后,我就意识到,之前写的那些东西,要开始发挥作用了。 为什么需要知识中枢 首先, llm-wiki是什么。 llm-wiki 是 Andrej Karpathy 在 最近提出的一个概念:把你过往积累的所有文字材料——笔记、博客、读书摘录、工作日志——作为”语料库”,让 LLM 自动从中提取概念、建立页面、编织交叉引用,最终形成一个结构化的、可持续迭代的个人 Wiki。 它的核心前提很简单:每个人在日常工作和学习中已经产生了…
阅读全文“解决的办法不是压制 AI,而是让它变成一种更平权的能力,让每个人都知道如何借 AI 创造更多。这也是我们公司很重要的愿景,让世界级的 AI 属于每一个人。” 这是 Agnes AI 创始人 Bruce Yang 接受采访时说的一段话。 现在很多国内的AI厂商,无论deepseek还是智谱,都在把AI的价格往下压。坦率的讲,像文字、代码的处理价格,确实已经被压到了一个相当低的价格。但视频不一样,现在做AI视频,门槛确实高得离谱——国外的 Runway、Pika 按月订阅几十美元,国内的即梦、可灵免费额度用完就按秒计费,想本地跑开源模型?一张能跑视频的显卡轻松上万。 客观来讲,视频的生成,现阶段确实成本较高,让工业级的视频生成能力属于…
阅读全文前阵子我在薅各种免费AI token,写了一篇关于”哪里免费去哪里薅”的文章。当时提到过,各家平台会不定期放出免费模型。结果没等多久,Agnes AI 就给了我一个惊喜:视频模型也免费了。 不是文字,不是图片,是视频。agnes-video-v2.0、agnes-image-2.1-flash、agnes-2.0-flash,三个模型全免费,注册就送API Key,不要信用卡,不要GPU。其中 Agnes-Video-V2.0 是目前免费 agnes video 生成方案里能力最强的一个,支持多种生成模式,质量相当能打。 这谁忍得住?我直接把开源框架 ViMax 改造成了 Agnes 全家桶方案,顺便把原来一些反人类的用法都优化了一…
阅读全文上篇文章最后说了句:Agent只是工具,文档才是核心。 这话说了之后,有人问我:道理都懂,但文档具体怎么管?总不能每个项目都复制粘贴一遍吧? 确实不能。 我后来写了个工具来解决这事——pks(Personal Skills Manager),408行纯bash,零依赖。它干的事很简单:把你的AI工作流文档打包成skill,按需装到项目里,不绑定任何Agent平台。 什么是skill 如果你用过OpenCode、Cursor或者其他Agent平台,大概率见过”skill”这个概念。不同平台叫法不一样——有的叫skill,有的叫rules,有的叫custom instructions——但说的都是同一件事:你给Agent的结构化指令,告…
阅读全文目前大家使用AI的最大或者唯一痛点,是什么?可能就是账单了。 无论是Claude、CodeX、Cursor,还是qoder或是mimo、minimax,基础套餐基本都要奔着20刀以上去,这还得省着用,很多时候用以来会很不爽。要想量大管饱,那就会更贵。 而同时,很多平台会有试用装,或是常规的免费模型。比如OpenCode里的deepseek flash长期免费。 我们怎么才能好好的薅一下这些免费模型呢? 我长期在各种不同的项目用Agent,有代码,有个人博客,有笔记知识库,有小说,还有我和AI完的小游戏。用着用着发现一个事:Agent的所有操作,本质上是:读你文档 → 拼prompt → 发给模型 → 按结果改文件。 文档在哪里,智能…
阅读全文背景:一个繁琐到让人崩溃的任务 最近想给自己的 Hexo 博客换个主题。用了好几年的 Next 主题,虽然经典,但想换个更现代的风格。 看起来很简单对吧?但实际操作过的朋友都知道,Hexo 主题迁移是一个极其繁琐的过程: 配置文件长达 1000+ 行,需要逐项对比新旧主题的配置格式 功能映射复杂:Next 的 leancloud_visitors 对应 Butterfly 的 busuanzi,Next 的 reading_progress 对应 Butterfly 的 preloader 两个站点要同步:中英文站都要改,而且配置略有不同 Font Awesome 版本兼容:Butterfly 默认配的 FA 7.1.0 根本不存在…
阅读全文前几天写了篇新文章,照常往 Vercel 部署,结果 pipeline 直接报错了。一开始以为是构建问题,折腾了一会儿才发现不对——是 Vercel 账号出了状况。用 163 邮箱注册的账号怎么都登不上去了。后来才搞清楚,Vercel 把整个 163.com 邮箱根域给封禁了。 先说说 Vercel 是什么 如果你是搞独立博客的,大概率听过或者正在用 Vercel。简单说,它是一个前端部署平台,支持自动从 GitHub 仓库拉代码、构建、部署,给你的网站分配一个域名,还自带 CDN 加速。很多人的博客就是 GitHub Pages + Vercel 的组合——代码放在 GitHub,用 Vercel 来部署和托管。 我自己的博客也是…
阅读全文最近在整理团队的安全开发规范时,遇到了一个老问题:安全规范文档越积越多,但真正用的时候却找不到。每次新人入职,都要翻遍各种文档才能拼凑出完整的安全规范;每次出安全故障,事后总结的经验也散落在各处,下次遇到类似问题还得重新排查。 我试过用Confluence、Notion、甚至Git仓库的README来管理,但效果都不理想。直到看到了Karpathy提的llm-wiki思路,才觉得这可能是个突破口。 Karpathy的llm-wiki是什么? Karpathy在Gist里提了个想法:让LLM维护一个Wiki中间层。原话是”the wiki is a persistent, compounding artifact”——这个Wiki层就…
阅读全文后端工程师的前端困境 后端工程师开发前端的痛点,通常来说莫过于太过繁琐,经常要为了一些很小的事查半天。Vaadin很好的解决了这个痛点,为后端工程师提供易上手、方便使用的前端代码编写解决方案,今天我们就来了解一下。 Vaadin 是什么 大家好,今天跟大家介绍一个对后端工程师特别有价值的工具——Vaadin。 说起来,上手前端基本的html, css开发,确实并不难,但是如果只会这些基本的东西,开发起来会很繁琐。如果想要使用前端生态中的各种轮子,虽说便利度提升了,但学习成本也会同步上升。所以,如果不是职业的全栈工程师,只是作为一个后端,想临时写点前端代码,比如自己想做点小项目,通常来说都会有个很痛苦的过程。 Vaadin很好的解决了…
阅读全文多语言博客的常见方案 对于hexo的多语言方案,官方并没有提供很完备的支持,但是网络上有很多人尝试过不同的解决方案。今天,我们对这些方案简单做个总结,看看我们需要的多语言方案是什么样子的。 其实,hexo的多语言方案,说白了就是两个思路,一个是在文章维度切换语言,借助hexo原生的能力和hexo-generator-i18n等插件,用一套框架维护两个语言的内容;另一个则是独立维护不同语言的样式、内容,在站点维度切换语言,只是在域名层面合并到同一个域名。 具体要选择什么方案,取决于大家想要一个什么样的多语言网站。一开始我想象中的多语言网站的是第一种,即统一的首页,在首页和每篇文章上都支持切换语言,对每篇文章,可以通过切换语言,直达对应…
阅读全文知乎作为一个高质量的文字社区,评论区的讨论往往非常有深度。然而,知乎默认的评论区时间格式是个让人头疼的小问题——它只显示”3 小时前””昨天””5 天前”这种相对时间。这在日常浏览中没问题,但如果你想追踪一场讨论的时间线、对比不同评论的先后顺序,这种模糊的时间展示就完全不够用了。 痛点:相对时间的局限 相对时间有几个明显的缺陷: 信息丢失:你永远不知道”3 小时前”到底是几点几分,无法在脑海中形成精确的时间锚点 跨天混乱:到了第二天,”昨天”就变成了”前天”,时间参考系一直在变 讨论追踪困难:一场技术讨论中,A 回复 B 的某个论点,但 B 的评论和 A 的回复可能都显示”2 天前”,你根本看不出谁先谁后 脚本的来历 之前在小众软件…
阅读全文这篇教程不会关注 kubernetes 的部署、架构、实现方式等内部原理,而是完全从一个使用 kubernetes 的开发人员的视角去介绍kubernetes是什么,从而帮助了解如何更好的去利用 kubernetes 的特性。 基本介绍 对于kubernetes是什么,一个比较官方的定义,Kubernetes是一个开源容器编排平台,管理大规模分布式容器化软件应用,简称为k8s. 通俗一些来讲,k8s 的核心理念是以应用为中心,向下屏蔽基础设施的差异,向上通过容器镜像实现应用的标准化,帮助开发人员在仅需关注应用本身,无需考虑部署、容灾、伸缩等运维细节的情况下,开发出大规模、可靠的分布式应用。 优势 如上所述,k8s的核心优势就是降低运…
阅读全文知乎是个什么样的网站,大家都比较了解。今天我们换个角度——分享一个让”上班用知乎”这件事变得更安全、更高效的小工具。 摸鱼经济学:为什么是知乎? 之前我翻了一下自己知乎账号的后台数据,发现一个很有意思的现象:PC 端的流量居然占了 40% 以上。在移动互联网时代,这个比例高得不太正常。 后来从一些其他渠道也了解到,知乎周末和节假日的流量明显不如工作日。这说明什么呢? 上班刷知乎的你,不是一个人。 对相当一部分人来说,知乎主要的使用场景就是——上班摸鱼。而且知乎这个网站确实天然适合摸鱼: 以文字内容为主,不像短视频那样有声音、耗流量 有大量专业性内容,被老板路过看到屏幕时,可以说”我在查技术资料” 文章篇幅适中,一条时间线看几分钟,心…
阅读全文这本书的作用主要是教大家面对现实中的复杂问题,如何更有效的去思考。书本身偏重系统的基本概念,这些概念其实都比较好理解。另外,作者举了非常多的例子。初读这本书时,会感觉理论和实际例子有那么些割裂。 但是后来逐渐感觉到,这个话题确实是没那么容易讲的通俗易懂的,需要读者自己付出更多的思考,才能有实质性的收获。而作者举的这些例子,就是非常好的引导读者去思考的引子。通过跟着作者一起思考这些例子,我们就可以帮助自己更好的理解书中的概念和逻辑。 所以,这篇笔记中,我主要其实就是比较机械化的把书中的一些核心概念提炼出来,同时会尝试举一些身边的例子。 而若想更好的理解书中每一部分,还是推荐去读一遍书,并且跟着作者的思路一起去好好思考那些例子的逻辑。…
阅读全文之前翻译过一篇关于分布式系统的文章 https://lichuanyang.top/posts/3914/ ,在各个平台都取得了不错的反响。因此,最近又重新整理了一下相关的知识,结合一些这一年多里新的理解,重新整理了下这篇文章。 首先我们需要明确本文要讨论的分布式系统是什么,简单的说,就是满足多节点和有状态这两个条件即可。多节点很好理解,有状态则是指这个系统要维护一些数据,不然的话,其实我们无脑的水平扩容就没有任何问题,也就不存在分布式系统的问题了。 常见的分布式系统, 无论是mysql, cassandra, hbase这些数据库,还是rocketmq, kafka, pulsar这样的消息队列,还是zookeeper之类的基础设…
阅读全文
19高请求并发就一定会有高并发问题吗?其实不是的。假设一个应用全部是纯内存计算,无论请求量多大,简单加机器就能线性扩展——那就不存在什么高并发问题。 高并发问题之所以存在,是因为系统中存在无法靠粗暴扩容解决的单点瓶颈。而这个瓶颈,在 90% 以上的场景中,都是数据库。 核心思路:降低单库的连接数 所有高并发技术方案,归根结底都是在做同一件事——降低单个数据库实例需要承载的并发连接数。围绕这个目标,有六个层次的技术手段: 层次一:系统拆分(业务维度) 最粗粒度的优化:把不同业务模块的数据库物理分开。 1 2 3 4 5 单体架构:所有业务 → 一个数据库(1000 QPS) 拆分后: 用户服务 → 用户库(400 QPS) 订单服务 →…
阅读全文本文中,我会介绍一下互联网广告的发展状态,并梳理一下互联网广告的底层逻辑,帮助大家更好的理解这个行业。 什么是广告 讲互联网广告,首先要从广告本身是什么开始讲起。只有理解了广告的底层逻辑,才能更好的帮助我们理解在互联网广告中会有什么问题, 为什么会出现广告的程序化交易,adx, ssp, dsp,dmp等等各种各样不同的系统为什么会出现,以及诸如此类的等等问题。 广告这个行业其实自古就有,从远古时代小商小贩的吆喝,各种建筑物上的告示,到纸质报纸、杂志、电视等传统媒体上的广告,再到互联网广告,这个行业总是再随着社会的发展产生它自己的变化。 对于广告,先上一个非常官方、非常标准的定义:广告是由已确定的出资人通过各种媒介进行的有关产品(商…
阅读全文前些日子读了周志明老师的《凤凰架构》这本书,对于很多方面的技术有了更深的认知,因此打算做一些总结。今天先以讲事务的这一段做个印子,结合书中内容和个人理解,争取将本地事务的相关知识讲个命名白白。如果有讲的不对的地方,欢迎大家多多指正。 所谓事务,就是保证数据库中的数据都是符合期望的,在不断的增删改查中,数据库会不断的从一个正确的状态变化到另一个正确的状态,而不会被外界感知到不“正确”的中间状态。 举个常见的例子,就是在 A有100元,B有100元的状态下,A要给B转账10元,肯定会有A先转出10元,再转给B,这样的中间状态。事务就是,对于用户来说,只能感知到 A100 B100 和 A90 B110 这两个状态,而不会感知到过程中的A…
阅读全文很多创业公司相比于大厂,一个非常重要的劣势就是基础设施不完善,没有各种各样完善的工具。因此,我打算整理一下,基于开源社区提供的能力,如何用尽量小的运维和开发成本,去搭建出一套体验良好的开发流程。 首先,我们理一下整个开发流程中的必备步骤都有哪些,我大概罗列一下,包括项目的创建、开发、code review、部署测试环境、部署灰度和线上环境、查看线上监控、日志、以及排查问题等。 根据这整个流程链条,我们再来理一下为了尽可能的提升开发和运维效率,我们需要把哪些方面保障好,以及这些方面可以有什么低成本的解决方案。 有几个点吧: 快速创建一个项目,并且将必备的web、监控、日志等组件添加好; 提升一些常规的代码开发,比如数据库增删改查的开发…
阅读全文2021年对于我个人来说可以说是剧变的一年,原本准备长期发展的,工作舒适度和前景都非常高的工作,因为某些原因突然崩塌。随之而来的,关于未来往哪走,也到了一个重要的岔路口上。至少到目前为止,感觉还是做出了一些正确的选择。对于年初定下的一些个人成长上的目标,也有了不错的进展。所以,我还是带着不错的心情来做这个年终总结的。 职业回顾 2021年里,最大的变化还是来自工作,由于所在的行业一夜之间直接在风口上消失,原本在一家公司长期发展的愿望落空,所以我也被迫重新开始了新的职业规划。一个关键的考量点就是要去大公司还是小公司。我在前边为什么说自己走到了一个重要的岔路口上,其实最关键的一点原因就是感觉无论做哪个选择,在这个年龄其实都不会有什么回头…
阅读全文金丝雀发布其实是一种非常适合在云原生体系下进行的流程,因此相信很多人有在kubernetes下做金丝雀发布的需求。通过本文,我们就介绍一种非常简单的做金丝雀发布的思路。 什么是金丝雀发布 首先介绍一下金丝雀发布是什么,金丝雀这个名字,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。 在系统层面的具体含义就是,发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。在金丝雀上测试没有问题后,再将线上的流量切换到新版本上。 再具体点讲,可以将一个域名映射到两组服务器上,一组是正式的线上环…
阅读全文作为云原生体系下的“默认”监控系统,prometheus正在获得越来越广泛的关注。今天,我们就写一篇教程,讲一下prometheus的设计理念,看看它是如何用非常简单的设计支撑起如此复杂的功能的。 首先,我们来思考一下,如果要做一个类似prometheus的监控系统,都有哪些难点,比如 每个服务的监控需求都不一样,那么对于监控系统来说,要怎么设计其数据模型,才能取得易用性和通用性之间的平衡 大量的数据量要如何存储 怎样能实现各种复杂的报表 … 带着这些问题,我们就来看看prometheus是怎么设计的。 历史 让我们先从历史说起,prometheus最早由SoundCloud开发,后来捐赠到开源社区。在2016年假如CNCF, 即云…
阅读全文一个高性能的 Java IP 地址归属国家查询工具,核心思路是用二分查找在预加载的 IP 段数组中定位,单次查询延迟在微秒级。 设计思路 IP 地址本质上是一个 32 位整数。所谓”IP 段”就是一段连续的整数范围。给定一个 IP,我们要找到它落在哪个 IP 段中——这是一个典型的区间查找问题。 最直接的做法是遍历所有 IP 段,O(n) 复杂度。但全球 IP 段有几十万个,遍历太慢。更好的做法是把 IP 段的起始地址排序后放入数组,用二分查找定位,O(log n) 复杂度,几十万个段只需要约 19 次比较。 数据源 IP 地址库数据可以从 IP2Location Lite 免费获取。数据格式示例: 1 2 3 16781312,J…
阅读全文痛点:频繁 SSH 登录 如果你像我一样,需要经常性的访问不同的远程服务器,记录服务器的ip和输入密码就是一件非常痛苦的事情。好在,通过在item2中做一些配置,可以很好的解决这个痛点。最终实现的效果,就是类似配置了一些ssh书签,能够在iterm2中记住ssh密码, 实现免密码登录和自动登录的效果。 完整配置步骤 iterm2 (https://iterm2.com/) 是mac下使用非常广泛的一款终端替代产品,提供了很多强大的功能。要实现ssh书签,实现免密码登录、自动登录的效果,关键点是其中的三个特性:profile, trigger 和 password manager. profile顾名思义就是一套配置,像我们正常打开i…
阅读全文技术分享基本在每个公司都会有。分享的效果因人,因团队而异。在有些团队中,分享会因为种种原因,逐渐沦为一个没什么用的时间杀手。 写这篇文章,是希望从选题等方面出发,通过一些比较基础的规则,提升技术分享的下限,争取让80%的人都能做出一次80分的技术分享。 选题 基本原则 首先要了解到的是,线下的技术分享不是分享知识的唯一形式。其他的,比如写博客写文章,拍视频,或者简单的分享一两句话,都是常见的分享形式。针对不同的知识,要考虑用什么样的方式进行分享更加合适。 比如,对于某项技术的入门介绍,推荐以文章的形式进行。读者可以进行快速的浏览或者对关键信息进行检索,要比坐下来听一遍效率高很多。 推荐选题 通常来说,比较好的选题需要有较强的实用性,…
阅读全文云原生的定义 近年来,云原生在整个开源社区中正在成为越来越流行的概念。那么云原生究竟是什么?架构?平台?又能影响什么?系统安全?开发效率?所以我们今天就刨根问底,理一下到底什么是云原生。 要理解什么是云原生,就要从云原生的名字说起,云原生的英文名是cloud native, 很显然,其含义就包含云和原生两部分。云就是说应用是运行在云上,而非本地。原生,就是说应用要以最适合云的方式去运行,而不是仅仅从本地迁移到应用上。 那么,什么样的应用才是适合云的呢?其实就是能最大化利用云的能力,发挥云的优势。 而云计算的核心优势,其实无非就是将更多的资源集中管理,统一调配,也就更方便按需灵活配置资源,提高资源利用率。 类比一下,相信很多人用过st…
阅读全文《干法》是一本讲工作态度、工作方法的经典书籍。在劳资矛盾严重、阶级趋向固化的今天,是很难完全向该书作者稻盛和夫先生一样,去践行这一套理念的。但这不代表这本书就没有价值了。努力工作,提升自己的价值,一直都是藏在人类内心深处的精神诉求,我们要做的,只是要让价值提升后带来的收益,能够给到我们自己。 在读这本书之前,我强烈建议先认真思考一下你和工作的关系究竟是什么样的。如果你就是公司的老板,那没什么好说,公司的收益就是你的。如果你不是,那就要理一理你创造的价值去了哪,是有了经济收益,有了能力的提升,有了将来可以成为自己能力证明的资历,还是帮老板多买了两辆跑车呢? 之前读过一篇文章,说是将你自己当做一家公司来经营,将任职的公司当做自己的客户。…
阅读全文