包含关键字 typecho 的文章

从 Chat 到 Action,AI 正在接管我们的屏幕。但在一周 8 万 Star 的狂欢背后,爆火的应用与脆弱的安全性之间,正横亘着一道待解的基础设施鸿沟。
图片

流量高地与范式转移:从“对话”到“实战”

这几天 Clawdbot 的出圈速度很夸张。社区里最直观的信号是 GitHub star 曲线在短时间内冲到数万量级,很多讨论甚至直接把它当作“2026 开源增长最快的现象级项目之一”。 更戏剧化的是,它还带出了一个“周边行情”:大量开发者开始用 Mac mini 这类小主机来常驻运行,从而实现一个 7×24h 永不下班的“核动力牛马”,甚至出现“下单截图刷屏”“卖断货”的情况。
图片
Clawdbot 现在官方名字是 Moltbot,比较有意思的是,改名的原因是因为 Anthropic 认为 Clawdbot 这个名字太容易被市场误解为Claude Code的延展产品,所以提出了抗议,创始人“被迫”宣布改名。
图片
它的定位非常清晰:一个你自己运行的个人 AI 助手,驻扎在你已经在用的聊天渠道里,比如 WhatsApp、 Telegram、 Slack、 Discord、 Google Chat、 Signal、 iMessage、 Microsoft Teams、 WebChat 等,同时支持在 macOS、iOS、Android 上交互,并提供一个可控的 Canvas 界面。 这套“入口在聊天里,执行在你自己的环境里”的组合,就这样魔幻而又切切实实的爆火了。为什么这类东西会一波接一波地爆火?从最近一段时间的产品形态看,确实有个明显的风向在强化:大众的注意力正在从“对话型”迁移到“实操型”。对话给的是答案,实操给的是结果。对绝大多数人来说,后者更像他们心里对“AI 助理”的默认想象,这一点在 Clawdbot 的传播中被放大得很充分。

沸腾后的冷思考:是技术奇点,还是“时势英雄”?

不过这里也值得降降温。爆火当然意味着能力点戳中了人心,但它同样蕴含着几件事叠加:创作者本身的影响力与信用积累,以及社交平台的流量机制、AI时代的掉队焦虑,共同把某个叙事推到最大音量。你不需要把每一次“现象级”都理解成行业天翻地覆。更像是时势推着一个正确方向的样品突然被看见了,然后所有人的情绪一起涌上来。再说体验层面的“落差”。很多人上手后会发现,它没有想象中那么万能,这其实并不意外。因为这类个人 Agent 往往把“连接器很多”“能动手”放在第一优先级,工程细节与产品打磨会滞后,早期 UI 小问题、流程不顺手、边界场景翻车都很常见。更关键的一点在成本。只要你把它当作“经常在线的执行型助理”,模型调用和工具链路的成本就会从偶发费用变成持续开销,近几天已经陆续看到网上有人晒图仅仅使用十几个小时,就已经消耗了上百美金的token。很多用户会自然滑向一种状态:好玩大于好用,体验大于实用。真正值得认真讨论的,是它爆火后暴露出来的“安全现实”。Clawdbot 的卖点之一就是更本地化,更可控,更接近你的真实环境,它也确实会涉及对本地 shell、文件系统、浏览器等能力的调用与编排。 这让它强大,也让它变得危险。由于它拥有极高的系统权限。大部分用户担心 AI 误操作导致主力机数据受损,或是隐私信息泄露,被迫选择了“物理隔离”——用一台专门的硬件来承载这个不确定的“执行者”。这也解释了另一个看似荒诞的现象:Clawdbot 带动了 Mac mini 等小主机被抢购。很多人把它解读为“性能需求”,但更底层的心理动因往往是“把东西放在自己手里更安心”。 你会发现,这里面其实同时包含了信任与不信任。信任的是我愿意让它替我做事,不信任的是我不想把自己的数据和权限直接丢进不可控的黑盒里。

数据安全是“执行权”的护城河

同样,GUI Agent(具备图形界面操作能力的智能体)作为一个实操型的技术路线,也具备巨大的想象和成长空间。例如前段时间爆火出圈的豆包手机、Open-AutoGLM 等,它可以完成跨 App 的复杂长链路任务,但其权限的边界与数据安全的保障,将决定它是“神助攻”还是“定时炸弹”。这正是灵臂 Lybic 的出发点之一。GUI Agent 之所以想象空间更大,因为它天然能覆盖那些没有标准 API 的存量软件和复杂流程。可它也天然更危险,因为它同样处在高权限的边缘,出错时的破坏半径更接近真实世界。把这一类能力推向大众之前,一个更稳妥的路径是先把“执行空间”变成默认护栏。这也是 Lybic 想做的事之一。我们把“能不能做”之外的三件事放在同等重要的位置:隔离、可见、可止损。让模型或 Agent 在云端沙盒里执行 GUI 任务,你可以实时看到它在做什么,发现不对可以随时人工接管,任务结束可以销毁环境。这样一来,创新速度可以继续加快,试错成本被关在可控范围里,真实设备和真实数据少承担一些不必要的风险。

写在最后

Clawdbot 的爆火更像一个信号:实操型 AI 正在成为默认的大众期待。然而技术的热度终会回归工程的理性,接下来决定它们能不能长期留下来的,往往不是演示有多酷,而是执行边界有没有被认真设计。我们更愿意把这当作一个行业共同要补的基础课。让 AI 去做事之前,先给它一个合适的“房间”,再谈把它放进真实世界。

附macOS部署教程

首先打开终端运行一串神秘小代码(前提是确保node.js版本大于22)
curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git

静待下载安装完毕后,继续运行
moltbot onboard --install-daemon
然后就会看到如下界面,那么恭喜你已经成功部署了Moltbot!教程到此结束(bushi)
图片
言归正传,官方在这里也是做出了风险提示。正如上文中所说,moltbot拥有着极大的系统权限,(同时也意味着极大的风险,强烈建议使用备用机安装),所以这里选 yes,因为不选 yes 没法进行下一步,没错官方就是这么霸道。接下来根据界面提示,选择自己中意的大模型接入,我们这里选择了智谱的GLM 4.7。API key可以到对应的官网去购买/申请。
图片
鉴于我们是本地尝鲜版,为了简化流程,这里选择跳过。后续我们也会尝试去适配飞书或QQ。
图片
选择想装的skill,空格进行选中,回车确认后会自动安装
图片
再之后是各种接口设置,偷懒可以都跳过
图片
接下来是hooks设置,可以按需选择,三个选项对应的分别是:boot-md每次程序启动时,自动读取并执行一个叫 BOOT.md 的文件。用途:如果你有一些每次都要 AI 记住的规则、或者每次都要运行的初始化环境命令,可以写在 BOOT.md 里。command-logger命令日志记录器。用途:它会把你输入的所有指令和 AI 的反馈记录下来。建议勾选,万一 AI 乱改了代码,你可以翻日志找回记录。session-memory会话记忆。用途:让 AI 记住你上一次聊了什么。如果不选,它可能每次运行都是“断片”状态,不记得之前的上下文。
图片
最后选择在哪里运行
图片
Hatch in TUI (recommended)什么是 TUI? 它的全称是 Terminal User Interface。效果:就在你现在的这个黑色窗口里直接跳出一个比较漂亮的对话框。优点:速度最快,不用切换窗口,很有极客感觉。Open the Web UI效果:它会启动一个本地服务器,并在你的浏览器(如 Chrome 或 Safari)里打开一个网页版界面。优点:界面更像 ChatGPT,推荐选这个。Do this later效果:结束配置,回到命令行。用途:如果你现在只想装好,还没打算立刻开始聊天,选这个。选择 Open the Web UI 后,会自动跳转网页如下
图片
现在恭喜你真正完成配置并可以开始使用了!

【近些年,随着AI大模型的爆发式增长,千卡级AI集群成为常态,推动服务器功率密度持续攀升,服务器传统粗放式的功耗管理已无法满足能效要求,为解决数据中心的能耗管理问题,OurBMC社区及其理事单位飞腾信息技术有限公司在第三届开放原子大赛中设置"基于BMC的整机功耗智能管理"赛题,旨在探索BMC管理系统部署轻量级AI模型的技术路径,促进AI在OurBMC开源项目中的应用,为数据中心提供可落地的整机功耗智能管理方案。】

大赛自启动以来,汇聚了来自全国各地的78个队伍的130多位精英选手。选手们携数十份精彩作品,投身这场为期四个月的激烈实战竞技中。在此期间,各参赛队伍不仅积累了宝贵的实践经验,也深化了对比赛的理解与感悟。本期,社区特别邀请获奖企业团队分享 「走进OurBMC第三届开放原子大赛,共同践行开放包容、共创共赢的开源精神」,让更多人领略开源的魅力,感受技术的磅礴力量。

PART.01

1昆仑太科.jpg

参赛背景

团队长期致力于OpenBMC架构与嵌入式开发,在服务器温控场景中发现传统PID控制存在功耗与散热的平衡难题。通过OurBMC社区赛事通知渠道了解到本次比赛,希望以赛事为契机,将AI算法与BMC硬件管控深度融合,验证智能温控方案的可行性,同时借助开源平台与行业伙伴交流技术思路,推动BMC技术栈的创新升级。

核心方案

本项目聚焦于服务器智能温控系统中的单变量功耗智能管理,基于开源项目openbmc-OurBMC-24.12的phosphor-pid-control库基础上,引入AI驱动的动态预测与决策机制。项目基于BMC平台,深度集成了一套完全由C++实现、以梯度提升决策树(GBDT)为预测核心、以近端策略优化(PPO)为决策核心的自适应闭环控制系统。

数据采集采用双阶段策略:快速降温阶段与低功耗稳态调控阶段,实现从异常响应到节能运行的平滑过渡。通过温度预测模型对未来温度趋势进行高精度预测,并结合PPO强化学习生成节能导向的风扇转速建议,在保障设备安全运行的前提下,显著降低系统整体功耗。

控制策略采用安全优先的融合机制:最终风扇转速控制值指令取AI建议值与超温保障输出值中的较大者,实现“安全兜底+智能节能”的双重目标。该方案在保障设备可靠性的前提下显著降低风扇功耗,有助于提升数据中心能效比(PUE),助力绿色计算。

参赛过程及心得

本次参赛面临组队分工与赛题技术融合的双重挑战,团队通过明确“真实环境搭建-相关传感器适配-算法开发-工程部署-测试验证”职责分工高效协作。在赛题解析中,攻克了AI模型轻量化适配BMC嵌入式环境的难题。同时,团队成员平衡工作与备赛时间,利用碎片化时段开展模型训练与代码调试,深刻体会到技术落地需兼顾创新与实用性,开源协作模式更能加速技术迭代与问题解决。

我对社区说

感谢OurBMC社区搭建的开源交流平台,让我们能够基于社区成熟的技术栈进行创新实践。开源生态是BMC技术发展的核心驱动力,它打破了技术壁垒,让开发者得以共享经验、协同攻坚。BMC技术栈正朝着智能化、轻量化方向演进,期待未来能与社区伙伴深化合作,在硬件管控、能效优化等场景探索更多技术方案,共同推动开源BMC生态的繁荣发展,为绿色数据中心建设贡献力量。

PART.02

2移动云硬件团队.jpg

参赛背景

作为OurBMC社区成员单位,我们通过社区获知本次大赛的相关信息,组队参加本次大赛主要基于以下几点考虑:首先想通过参加本次大赛了解目前业界对于服务器智能功耗管理的最新研究成果,拓展自己专业能力;其次是分享移动云在这方面的成果,期待评审老师和同行能对我们的方案提出宝贵的意见,助力我们在服务器智能功耗管理领域不断前进,迈出新的高度。

核心方案

本次获奖作品是“基于BMC的智能功耗管理-SFC调速方案”,其核心思想是通过BMC收集服务器的关键工况信息,离线训练工况识别模型和温度预测模型,然后将这两个模型内置到BMC系统中。在服务器工作时,首先BMC获取服务器的关键工况信息,通过工况识别模型识别当前服务器的运行工况;然后在通过温度预测模型,基于当前的服务器工况预测关键部件的温度变化;再基于预测的温度变化信息,提前响应风扇转速,在满足温度约束的条件下,通过BMC调节风扇转速达到整体功率最低。

参赛过程及心得

本次大赛在接到赛题后,基于移动云在服务器功耗管理上的积累,我们迅速组建了一只技术实力互补、充满活力的团队,团队成员间展现出极高的协同性,通过紧密无间的合作,共同投入到赛题的深入解析之中。针对赛题要求,我们认为智能功耗管理不能影响BMC其他的核心功能,因此模型的轻量化,功耗管理的冗余措施必不可少。基于此,团队通过细致的分析和思维的碰撞,成功攻克了模型轻量化、预测准确度等多个技术难题,成功构建了基于BMC的智能功耗管理方案。同时,我们也看到了其他参赛队伍的优秀作品,这些优秀作品为我们后续在服务器智能功耗管理领域的研究提供了宝贵的参考与启示。

我对社区说

感谢OurBMC社区提供了一个如此卓越的平台,众多主流厂商纷纷投身于OpenBMC的开发浪潮中,让固件开发者得以在平台上深入探索BMC领域的奥秘。在这里,我们热切的期望与国内BMC相关领域的厂商携手合作,携手推进国产BMC技术的持续创新,共通促进国产BMC生态的繁荣发展。最后祝愿OurBMC社区蓬勃发展,越办越好!

PART.03

3百敖BMC.jpg

参赛背景

通过OurBMC社区了解到本次比赛。本次竞赛课题聚焦前沿AI技术领域,极具创新性与前瞻性,激发了团队的浓厚兴趣。随着人工智能在各行业深度渗透,将AI能力融合进BMC软件,正成为推动系统智能化演进的重要方向。参赛不仅是对自身技术能力的一次锤炼,更是与行业同行交流互鉴、共同探索的宝贵机会。

核心方案

本方案基于LSTM时序预测模型构建了一套智能化自适应温控决策机制。该模型通过持续采集分析温度数据与风扇转速的关系趋势,识别其内在模式与长期依赖关系,实现对未来温度变化趋势的前瞻性预测,并输出与之相匹配的风扇转速预测。同时,系统通过专门的融合决策模块,对LSTM的预测结果与PID的控制指令进行同步的比较与评估,动态地进行智能权衡与选择,最终下发风扇转速控制指令。

在确保设备散热需求完全满足、系统安全稳定运行的前提下,该系统实现了从“被动响应式控温”到“主动优化式控温”的转变,通过预测与反馈的闭环优化,有效平滑能耗曲线,减少不必要的功耗波动,达成散热效能与能源效率的最优平衡。

参赛过程及心得

由于BMC软件”小而美”的特殊性,芯片计算能力有限,存储空间受限,如何持续更新智能预测模型并兼容现有控速方案是最大的困难。我们依靠明确的晚间协作时段与高效异步沟通,将项目经验转化为比赛优势。这段经历再次印证,清晰的技术权衡与坚定的工程落地能力,往往比单纯追求技术新颖更为重要。

我对社区说

OurBMC社区通过持续举办开源大赛,为行业搭建了宝贵的交流平台,也让我们能够更深入地洞察技术前沿、把握创新脉搏。对此我们深表感谢,并将一如既往支持社区发展,共同推动行业进步。

PART.04

4信工所.jpg

参赛背景

我们与OurBMC有不解之缘,从第一届比赛开始便持续关注相关赛事,但由于博士学业繁忙遗憾错过。本次第三届比赛以功耗管理为主题,与我们近期在服务器能效优化方面的研究高度契合,且相关成果已发表在计算机体系结构领域的顶级期刊。因此,我们非常希望借助本次比赛,向开源社区展示我们的研究方案与团队实践经验,促进互相交流与学习,为国产自主可控BMC固件的发展贡献力量。

核心方案

我们的作品名称是HyperBMC,“Hyper”寓意超越传统服务器管理范式,强调BMC不再只是远程管理芯片,而是服务器智能管理引擎。通过在BMC芯片上部署深度学习模型,动态刻画计算需求与散热能力之间的平衡关系,进而触发调控决策;同时结合主机CPU与BMC之间的带内通信机制,协同管理风扇转速与CPU频率,从而实现服务器的精细化、智能化的功耗管理,在提升能效的同时保障性能与稳定性。

参赛过程及心得

尽管我们在基于BMC的功耗管理方面有一定的积累,但是面向本次比赛仍然遇到了许多挑战。一方面是软件版本升级与适配问题。我们团队只有OpenBMC 2.8.0的开发经验,将OurBMC 24.12版本编译到现有的平台,并且将我们之前的成果迁移上来,面临着Linux内核升级和Yocto工具链变化等诸多问题。另一方面是在嵌入式上运行深度学习的挑战。我们之前的方案是在远程控制器上运行传统的机器学习模型,在此次比赛中,我们想要充分挖掘嵌入式设备的性能,不仅将智能决策卸载到BMC,并且在BMC上直接推理深度学习模型。

我对社区说

非常感谢OurBMC社区搭建了一个开放、公平且有影响力的技术交流平台,使得我们研究团队有机会将最新的研究成果与各位同行分享。希望OurBMC社区能继续推动BMC相关的开源实践与生态建设,让更多开发者、研究者参与进来,共同打造一个更智能、安全和绿色的算力基础设施技术体系。我们也期待未来能进一步与社区合作,共同探索BMC在更多场景下的应用与扩展。最后,感谢OurBMC社区长期以来在BMC自主可控道路上的贡献,祝愿OurBMC系列比赛越办越好。

PART.05

5创新无限管芯微.jpg

参赛背景

管芯微是最早一批申请加入OurBMC社区的成员单位,长期活跃于社区活动。此次得知“基于BMC的整机功耗智能管理”赛题后,我们第一时间报名,参加比赛的初衷包括:一方面题目与我们联合团队正建设的广东赫曦原子智算中心高度契合;另一方面,我们希望通过比赛把社区的BMC轻量级AI部署经验应用到实际工作中,与同行一起探索降低PUE的新路径。

核心方案

作品方案面向原子级科学计算高性能服务器(赫曦I架构),设计了一套基于BMC的温度控制与功耗管理系统。该系统包含两个核心模块:单变量功耗智能管理和整机功耗智能管理。单变量功耗智能管理通过采集主板、CPU、GPU、APU等区域的温度、负载数据,采用ANN、CNN、LSTM-FNN等AI模型动态调节风扇转速组合,实现快速降温与低功耗温控。整机功耗智能管理通过LSTM模型预测CPU、GPU、内存等设备的负载峰值与低谷,动态调整CPU/GPU频率和电压,实现按需功耗分配。系统还支持增量学习、强化学习优化及阈值控制兜底,在保障计算性能的同时有效降低运行成本、提升能效。

参赛过程及心得

本次挑战赛自启动便锚定真实场景,涉及CPU、GPU及自研APU等多类硬件,需监测与调控的参数庞杂、手段各异;尤其是APU,必须经两级代理才能获取关键指标。如何把这些分散的监控手段熔于一炉,实现整机功耗的智能管理,成为最大难点。团队通过模块化设计与任务精细化分工,紧密协同,最终攻克了这一难题。由于采用联合组队,成员分处两地,大家积极配合、相互支持,克服时间紧、异地沟通难等障碍,确保在既定节点顺利完成赛题任务。

我对社区说

OurBMC社区把“开放”写进名字,更把“落地”刻进基因。比赛过程中,我们深度用到社区开源的框架和工具,真切体会到“代码面前无门槛”的魅力。希望社区继续围绕:一方面把功耗、安全、AI等前沿插件做成“积木”,让中小企业也能搭出高可靠方案;另一方面建立“赛题—社区—商业”正循环,让好的需求立刻变成可量产的主板固件。希望通过本次大赛,与大家一起把BMC从“远程开关”升级为“绿色算力中枢”。开源不是情怀,而是降低PUE的最短路径——让我们把这条路径越走越宽!

PART.06

6国科超算.jpg

参赛背景

我们通过开放原子开源基金会、OurBMC社区公众号了解到本次比赛,参赛初衷是当前AI大模型的爆发式增长,AI服务器集群成为常态,相较于传统服务器,功耗密度陡然攀升,传统粗放式的功耗管理已无法满足能效要求。在BMC管理系统里,引进AI功耗智能管理模块,根据主板关键元器件的温度、服务器OS的负载,对服务器的整机功耗,提供精准化、智能化的调控决策。

核心方案

获奖作品核心思想是通过轻量化AI技术,优化BMC风扇控制策略和功耗节能管理,实现高效散热与节能的平衡,采用如下关键机制:

  • 全场景数据采集:服务器覆盖空载、常规负载、高负载工况,确保数据采集完整性
  • 功耗建模与特征工程:基于硬件标定“风扇ID-对应硬件温度-PWM”映射表,构建实时功耗估算模型,简化特征维度,无需复杂计算,适配轻量化模型需求
  • 模型开发与训练
    超温阶段:开发LSTM多输出预测模型,实现快速响应温度趋势
    稳温阶段: 开发Q-Learning+能耗优化模型,实现稳态能效最优
  • 轻量化部署与测试:简化模型推理链路,控制延迟<10ms,部署异常兜底机制,确保模型推理失效或可置信度低时自动切换备用控温模式

参赛过程及心得

由于本次参赛团队成员涉及到不同专业领域,赛事前期AI方面的工程师和BMC开发工程师就赛题讨论存在一定的分歧,后经带队老师统一协调讨论,敲定最终实施的方案架构,团队成员即按照方案架构进行任务分配,开始采集数据、训练模型、搭建智能管理软件架构、部署测试,期间就模型训练结果不理想、数据采集有偏差等一系列问题,多次集中讨论,攻关,逐一解决。由于要兼顾公司下发的项目任务,为此我们每个人都为比赛付出巨大的精力和努力,但成果出来后的成就感让我们疲态尽扫,收获颇丰。

我对社区说

OurBMC作为国内首个开源的BMC固件栈社区,其开源精神和技术创新是值得我们所有相关从业人员学习的。社区近年陆续举办相关的BMC赛事,其竞赛背景均是服务器行业里高度关注的技术点,吸引了众多选手一同角逐,积极推动开源社区的发展。希望OurBMC社区能够发展的越来越好,拥有更加美好的未来!

关于OurBMC

OurBMC 社区是开发者交流和创新 BMC 开源技术的根社区,社区秉承 “开放、平等、协作、创新” 原则,坚持 “开源、共建” 的合作方式,旨在共同推进 BMC 技术快速发展,辐射上下游形成产业共振,加速构建繁荣的信息系统软硬件生态。

image.png

月之暗面正式发布了 Kimi 的官方编程工具 Kimi Code。这不仅仅是一个代码生成器,而是一个可以直接在终端运行、具备自主规划能力的 AI Agent。它基于 K2.5 模型,支持多模态输入(图片和视频),并能通过 ACP(Agent Client Protocol)协议无缝集成到 VSCode、Cursor、JetBrains 和 Zed 等主流编辑器中。

image.png

对于开发者而言,Kimi Code 实现了“阅读代码”到“执行命令”的闭环,覆盖了从构建、调试、重构到测试的端到端任务。

以下是关于 Kimi Code CLI 的核心功能、安装配置及高阶使用技巧。

Kimi Code CLI 是什么

Kimi Code CLI 是一个运行在终端中的智能代理。与传统的对话机器人不同,它具备操作系统的执行权限。它可以:

  • 阅读和编辑代码:直接修改源文件,而非仅仅给出建议。
  • 执行 Shell 命令:运行构建、测试脚本。
  • 自主规划:在遇到错误时,自动分析日志并尝试修复,形成“执行-反馈-修正”的循环。

它既是一个独立的终端工具,也可以作为后端服务接入 IDE。

安装与环境配置

Kimi Code CLI 依赖 Python 环境(建议版本 3.12-3.14)。

第一步:使用 ServBay 准备 Python 环境

打开 ServBay,在「软件包」中,找到并安装 Python 3.13(这是 Kimi Code 推荐的最佳兼容版本)。

image.png

ServBay 会自动配置好环境,确保终端调用的是这个独立的 Python 版本,拥有完整的 pip 包管理能力。

第二步:安装 uv 包管理器

有了 ServBay 提供的 Python 环境后,需要先安装 uvuv 是一个极速的 Python 包管理器,也是 Kimi Code 官方推荐的底层工具。在终端执行:

pip install uv

第三步:安装 Kimi Code CLI

现在 uv 命令已经可用了,直接使用它来安装 Kimi Code:

uv tool install --python 3.13 kimi-cli

image.png

安装完成后,验证是否成功:

kimi --version

image.png

初始化与配置

在项目目录下输入 kimi 即可启动交互界面。

首次使用推荐通过 /login 命令登录 Kimi 账号,系统会自动同步可用的模型配置。如果需要使用特定的 API Key,也可以通过 /setup 手动配置端点和密钥。

项目索引

进入一个新项目时,建议先运行 /init。这会让 Kimi 分析项目结构并生成 AGENTS.md 文件。这个文件相当于给 AI 看的“项目说明书”,能显著提升后续任务的准确率。

核心工作流

Kimi Code CLI 的交互采用了类似 Shell 的混合模式,按 Ctrl-X 可在 Agent 模式(对话)和 Shell 模式(执行原生命令)之间切换。

1. 功能开发与重构

在 Agent 模式下,直接用自然语言描述需求。Kimi 会遵循“阅读 → 修改 → 验证”的流程。

例如:

“给用户列表页面添加分页功能,每页显示 20 条记录,样式参考现有的 Button 组件。”

它会自动搜索相关文件,理解上下文,进行代码修改,并保持代码风格的一致性。

2. 排查与修复

遇到报错时,可以直接粘贴错误日志,或者让 Kimi 运行测试命令。

“运行 npm test,如果有失败的用例,请帮我分析原因并修复。”

在处理复杂逻辑时,可以通过 /model 切换到支持 Thinking 模式的模型(如 k2-thinking),让 AI 在输出方案前进行更深度的逻辑推演。

3. 自动化任务

对于繁琐的批量操作,CLI 优势其实挺多的,比如:

  • 把 src 目录下所有 .js 文件的 var 声明改成 const 或 let。
  • 分析 logs 目录下的日志,统计接口平均响应时间。
  • 把 images 目录下的 PNG 转换为 JPEG。

高阶技巧

  • @路径补全:在对话中输入 @ 可以快速引用项目中的文件,例如 帮我解释 @src/core/scheduler.py 的逻辑
  • 多模态输入:支持直接粘贴剪贴板中的图片。如果是 UI 调整任务,截图给 AI 往往比文字描述更高效。
  • YOLO 模式:默认情况下,AI 的每一个文件修改和命令执行都需要用户确认。如果你在 Docker 容器或测试环境中运行,可以使用 /yolo 命令开启“大胆模式”,跳过所有确认步骤,实现全自动执行(生产环境慎用)。

集成到编辑器

Kimi Code 支持 ACP 协议,这意味着它不仅活在终端里,也能集成到 JetBrains 系列 IDE(IntelliJ IDEA、PyCharm、WebStorm 等)中。

首先需要在终端获取 Kimi 的安装路径:

which kimi

复制输出的路径(例如 /Users/username/.local/bin/kimi)。

配置 AI 助手

打开 IDE 的 AI 聊天面板(通常需要安装 AI Assistant 插件),在菜单中点击 "Configure ACP agents" ,添加如下配置:

{
  "agent_servers": {
    "Kimi Code CLI": {
      "command": "/Users/你的用户名/.local/bin/kimi", 
      "args": ["acp"],
      "env": {}
    }
  }
}

注意: command 必须填入第一步获取的完整绝对路径。

开始使用

保存后,在 AI 聊天的 Agent 选择器中即可看到 Kimi Code CLI。

总结

Kimi Code 并没有花里胡哨的功能,但是它解决了开发者的问题,开发者不需要离开终端,就能让 AI 动手写代码。配合 ServBay 提供的稳定 Python 环境,不仅安装过程更顺畅,也能让 AI 工具在隔离的沙盒中高效运行,避免对系统造成干扰。

目前该工具处于技术预览阶段,建议在非生产关键路径上先行试用。

Vercel 最近发布了 React 最佳实践库,将十余年来积累的 React 和 Next.js 优化经验整合到了一个指南中。

其中一共包含8 个类别、40 多条规则

这些原则并不是纸上谈兵,而是 Vercel 团队在 10 余年从无数生产代码库中总结出的经验之谈。它们已经被无数成功案例验证,能切实改善用户体验和业务指标。

以下将是对你的 React 和 Next.js 项目影响最大的 10 大实践。

1. 将独立的异步操作并行

请求瀑布流是 React 应用性能的头号杀手。

每次顺序执行 await 都会增加网络延迟,消除它们可以带来最大的性能提升。

❌ 错误:

async function Page() {
  const user = await fetchUser();
  const posts = await fetchPosts();
  return <Dashboard user={user} posts={posts} />;
}

✅ 正确:

async function Page() {
  const [user, posts] = await Promise.all([fetchUser(), fetchPosts()]);
  return <Dashboard user={user} posts={posts} />;
}

当处理多个数据源时,这个简单的改变可以将页面加载时间减少数百毫秒。

策略1:并行异步操作

2. 避免桶文件导入

从桶文件导入会强制打包程序解析整个库,即使你只需要其中一个组件。

这就像把整个衣柜都搬走,只为了穿一件衣服。

❌ 错误:

import { Check, X, Menu } from "lucide-react";

✅ 正确:

import Check from "lucide-react/dist/esm/icons/check";
import X from "lucide-react/dist/esm/icons/x";
import Menu from "lucide-react/dist/esm/icons/menu";

更好的方式(使用 Next.js 配置):

// next.config.js
module.exports = {
  experimental: {
    optimizePackageImports: ["lucide-react", "@mui/material"],
  },
};

// 然后保持简洁的导入方式
import { Check, X, Menu } from "lucide-react";

直接导入可将启动速度提高 15-70%,构建难度降低 28%,冷启动速度提高 40%,HMR 速度显著提高。

策略2:避免桶文件导入

3. 使用延迟状态初始化

当初始化状态需要进行耗时的计算时,将初始化程序包装在一个函数中,确保它只运行一次。

❌ 错误:

function Component() {
  const [config, setConfig] = useState(JSON.parse(localStorage.getItem("config")));
  return <div>{config.theme}</div>;
}

✅ 正确:

function Component() {
  const [config, setConfig] = useState(() => JSON.parse(localStorage.getItem("config")));
  return <div>{config.theme}</div>;
}

组件每次渲染都会从 localStorage 解析 JSON 配置,但其实它只需要在初始化的时候读取一次,将其封装在回调函数中可以消除这种浪费。

策略3:延迟状态初始化

4. 最小化 RSC 边界的数据传递

React 服务端/客户端边界会将所有对象属性序列化为字符串并嵌入到 HTML 响应中,这会直接影响页面大小和加载时间。

❌ 错误:

async function Page() {
  const user = await fetchUser(); // 50 fields
  return <Profile user={user} />;
}

("use client");
function Profile({ user }) {
  return <div>{user.name}</div>; // uses 1 field
}

✅ 正确:

async function Page() {
  const user = await fetchUser();
  return <Profile name={user.name} />;
}

("use client");
function Profile({ name }) {
  return <div>{name}</div>;
}

只传递客户端组件实际需要的数据。

策略4:最小化RSC边界

5. 动态导入大型组件

仅在功能激活时加载大型库,减少初始包体积。

❌ 错误:

import { AnimationPlayer } from "./heavy-animation-lib";

function Component() {
  const [enabled, setEnabled] = useState(false);
  return enabled ? <AnimationPlayer /> : null;
}

✅ 正确:

function AnimationPlayer({ enabled, setEnabled }) {
  const [frames, setFrames] = useState(null);

  useEffect(() => {
    if (enabled && !frames && typeof window !== "undefined") {
      import("./animation-frames.js").then((mod) => setFrames(mod.frames)).catch(() => setEnabled(false));
    }
  }, [enabled, frames, setEnabled]);

  if (!frames) return <Skeleton />;
  return <Canvas frames={frames} />;
}

typeof window 可以防止将此模块打包用于 SSR,优化服务端包体积和构建速度。

策略5:动态导入组件

6. 延迟加载第三方脚本

分析和跟踪脚本不要阻塞用户交互。

❌ 错误:

export default function RootLayout({ children }) {
  useEffect(() => {
    initAnalytics();
  }, []);

  return (
    <html>
      <body>{children}</body>
    </html>
  );
}

✅ 正确:

import { Analytics } from "@vercel/analytics/react";

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        <Analytics />
      </body>
    </html>
  );
}

在水合后加载分析脚本,优先处理交互内容。

策略6:延迟加载脚本

7. 使用 React.cache() 进行请求去重

防止服务端在同一渲染周期内重复请求。

❌ 错误:

async function Sidebar() {
  const user = await fetchUser();
  return <div>{user.name}</div>;
}

async function Header() {
  const user = await fetchUser(); // 重复请求
  return <nav>{user.email}</nav>;
}

✅ 正确:

import { cache } from "react";

const getUser = cache(async () => {
  return await fetchUser();
});

async function Sidebar() {
  const user = await getUser();
  return <div>{user.name}</div>;
}

async function Header() {
  const user = await getUser(); // 已缓存,无重复请求
  return <nav>{user.email}</nav>;
}

策略7-8:缓存去重

8. 实现跨请求数据的 LRU 缓存

React.cache() 仅在单个请求内有效,因此对于跨连续请求共享的数据,使用 LRU 缓存。

❌ 错误:

import { LRUCache } from "lru-cache";

const cache = new LRUCache({
  max: 1000,
  ttl: 5 * 60 * 1000, // 5 分钟
});

export async function getUser(id) {
  const cached = cache.get(id);
  if (cached) return cached;

  const user = await db.user.findUnique({ where: { id } });
  cache.set(id, user);
  return user;
}

这在 Vercel 的 Fluid Compute 中特别有效,多个并发请求共享同一个函数实例。

9. 通过组件组合实现并行化

React 服务端组件在树状结构中按顺序执行,因此需要使用组合对组件树进行重构以实现并行化数据获取:

❌ 错误:

async function Page() {
  const data = await fetchPageData();
  return (
    <>
      <Header />
      <Sidebar data={data} />
    </>
  );
}

✅ 正确:

async function Page() {
  return (
    <>
      <Header />
      <Sidebar />
    </>
  );
}

async function Sidebar() {
  const data = await fetchPageData();
  return <div>{data.content}</div>;
}

这样一来,页眉和侧边栏就可以并行获取数据了。

10. 使用 SWR 进行客户端请求去重

当客户端上的多个组件请求相同的数据时,SWR 会自动对请求进行去重。

❌ 错误:

function UserProfile() {
  const [user, setUser] = useState(null);

  useEffect(() => {
    fetch("/api/user")
      .then((r) => r.json())
      .then(setUser);
  }, []);

  return <div>{user?.name}</div>;
}

function UserAvatar() {
  const [user, setUser] = useState(null);

  useEffect(() => {
    fetch("/api/user")
      .then((r) => r.json())
      .then(setUser);
  }, []);

  return <img src={user?.avatar} />;
}

✅ 正确:

import useSWR from "swr";

const fetcher = (url) => fetch(url).then((r) => r.json());

function UserProfile() {
  const { data: user } = useSWR("/api/user", fetcher);
  return <div>{user?.name}</div>;
}

function UserAvatar() {
  const { data: user } = useSWR("/api/user", fetcher);
  return <img src={user?.avatar} />;
}

SWR 只发出一个请求,并将结果在两个组件之间共享。

11. 总结

这些最佳实践的美妙之处在于:它们不是复杂的架构变更。大多数都是简单的代码修改,却能产生显著的性能改进。

一个 600ms 的瀑布等待时间,会影响每一位用户,直到被修复。

一个桶文件导入造成的包膨胀,会减慢每一次构建和每一次页面加载

所以越早采用这些实践,就能避免积累越来越多的性能债务。

总结:立即行动

现在开始应用这些技巧,让你的 React 应用快如闪电吧!

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的“网页版朋友圈”,关注我的公众号:冴羽(或搜索 yayujs),每天分享前端知识、AI 干货。

本文围绕 Confluence 替代软件选型,测评 ONES Wiki、为知笔记、Notion、Nuclino、Outline、BookStack、Wiki.js、XWiki、Document360、Slite、Guru 等 11 款工具,聚焦权限合规、协作体验、检索效率与迁移成本,帮助管理层、PM/产品/PMO做出可落地的知识管理系统选择。

Atlassian Server 已于 2024-02-15(PT)停止支持。 同时 Atlassian 公布 Data Center 产品将在 2026-03-30(PT)开始分阶段收敛支持,并在 2029-03-28(PST)到期进入订阅到期与只读等状态。因此,今天讨论 Confluence替代软件,本质上是在决定未来 2–3 年企业知识库与协作底座的方向。

我做选型评审时,通常会用 6 个维度去测评工具,你可以把它当作“需求澄清表”,看看自己到底需要那些能力:

  1. 合规与权限:能否页面级权限?能否审计?能否 SSO/LDAP/SAML?
  2. 私有化/自托管:数据主权、网络隔离、可控运维是否匹配?
  3. 迁移成本:空间/附件/权限/用户组怎么迁?宏、历史版本怎么处理?
  4. 协作体验:多人编辑、评论批注、模板、结构化知识是否顺滑?
  5. 检索效率:全局搜索能否覆盖附件?是否有“内容可信度/验证机制”?
  6. 与工作流连接:能否和需求/任务/迭代互链?能否把知识嵌回交付过程?

2026 年 11 款 Confluence替代软件测评清单

评测声明:以下基于公开资料与企业落地经验的“组织视角评估”。不同组织的流程成熟度、权限模型与集成环境差异极大,建议以“关键知识域试点 + 指标验证”完成最后定型。

1)ONES Wiki:把知识库“嵌回”研发与项目协作上下文

核心功能:富文本/Markdown、代码块、评论批注、模板库、版本回滚、回收站恢复、全局搜索(含附件)、角色权限配置;支持文档与项目任务关联、页面树组织项目知识。

对照 Confluence 的替代点:覆盖 Confluence 常见的“空间-页面树-权限-版本-评论”主干能力,并强化“文档与工作项互链”,更适合作为项目资产库与研发知识库一体化底座。

协同与知识管理能力:优势在于“知识与交付绑定”。规范文档可关联迭代节奏;复盘文档可关联缺陷与需求;知识更容易在工作流里被复用,而不是成为旁路文件。

优势亮点(迁移与连续性):ONES 提供 Confluence 自助迁移工具,强调 API 批量迁移、迁移监控与迁移报告;并给出在资源充足情况下的迁移速率示例。

适用场景:大中小型研发组织、PMO 需要把制度/模板/复盘与项目过程绑定;以及 Jira/Confluence 迁移背景下希望降低工具割裂成本的企业。

ONES Wiki 是 Confluence 替代首选

2)为知笔记:群组资料库 + 多端覆盖

核心功能:群组、多级文件夹、@提及与评论、多人编辑、全文检索;群组权限角色清晰;多端覆盖 Windows/Mac/Linux/iOS/Android。
对照 Confluence 的替代点:适合替代 Confluence 中“部门资料库、经验库、项目资料归档”等资料沉淀场景,尤其适合多端办公。
协同与知识管理能力:群组机制天然形成知识边界,适合“先把资料集中起来”。
优势亮点:上手快、落地阻力小,适合从“集中化”启动。
使用体验:当组织进入“强治理 + 深集成 + 与研发上下文绑定”的阶段,可能需要与更平台化的协作体系协同,而不是单点替代。

3)Nuclino:轻量、实时、强调“单一事实来源”

核心功能:主打把公司知识集中到一个地方,提供现代、直观、实时的 wiki 体验,强调 single source of truth。
对照 Confluence 的替代点:适合替代 Confluence 中“团队维基/部门资料库”这类轻治理场景,尤其适合追求低摩擦协作与快速统一入口的团队。
协同与知识管理能力:链接式组织让知识更像“网络”而不是“文件夹”,有利于跨页面发现与复用。
优势亮点:上手成本低,适合“先集中、再治理”的增长型组织。
局限与使用体验:当你需要更复杂的合规模型(细粒度权限、审计、复杂审批流)或深度企业集成时,可能更早触顶。

4)Outline(开源):自托管友好

核心功能:开源协作知识库,提供自建生产环境运行的官方文档入口。
对照 Confluence 的替代点:在“页面树 + 协作编辑 + 基础权限”的主干需求上可覆盖多数使用场景,尤其适合技术团队与对数据主权敏感的组织。
协同与知识管理能力:写作体验往往更轻、更现代;但自托管的真实成本在于持续运维、备份、安全策略与身份集成。
优势亮点:当你明确要“自托管 + 轻量好用”,Outline 是务实路线。
局限与使用体验:企业级治理上限取决于你愿意投入多少工程化能力与管理员资源。

5)BookStack(开源)

核心功能:以书-章-页为核心信息结构;角色与权限可叠加生效,适合做制度、手册、SOP。
对照 Confluence 的替代点:当 Confluence 的核心价值是“制度与手册体系”,BookStack 的结构稳定性往往更强。
协同与知识管理能力:结构天然对治理友好,能逼出一致的编写、归档与检索方式。
优势亮点:对“规模化后的可维护性”更友好。
局限与使用体验:不太适合需要强数据库化、复杂知识应用化或深度自动化的场景。

6)Wiki.js(开源)

核心功能:支持 LDAP、SAML、CAS、Okta、Azure AD 等多种企业认证与安全能力。
对照 Confluence 的替代点:当你希望替代 Confluence 并把知识库嵌入企业身份体系(SSO/目录/权限策略),Wiki.js 是高性价比路线。
协同与知识管理能力:适合构建“统一入口”的企业 Wiki 门户,尤其是 IT/平台团队主导建设。
优势亮点:集成友好、扩展性强,便于贴合既有架构。
局限与使用体验:需要运维与治理能力支撑(模板、Owner、运营机制),否则容易变成“能用但不好用”。

7)XWiki(开源/企业级)

核心功能:提供 wiki 级与页面级的访问控制,可管理 read/edit/comment 等动作权限,并支持用户组权限治理。
对照 Confluence 的替代点:适合替代 Confluence 的“企业级治理平台”角色,尤其在多部门、多角色并存与强合规场景。
协同与知识管理能力:更适合把知识库当成“可运行的平台”来设计与扩展,而不只是写文档。
优势亮点:治理上限高、权限弹性大。
局限与使用体验:实施复杂度更高,建议以关键知识域试点,不要一口气全量迁移。

8)Document360

核心功能:高级搜索覆盖文章与附件;可配置内容工作流(创建-审核-发布);多工作区(Workspace)支持多文档中心管理。
对照 Confluence 的替代点:当 Confluence 承担的是“帮助中心/客户文档/制度发布”,Document360 更像知识产品化平台。
协同与知识管理能力:工作流与角色分工清晰,更利于建立“可运营、可追责、可审计”的知识体系。
优势亮点:对外知识库常见的痛点(搜索、版本、发布、分工)更对症。
局限与使用体验:对研发型组织的“过程性知识沉淀”,它偏发布运营,不一定是最佳主阵地。

9)Slite:强调备份、权限与分析

核心功能:自动备份与快速恢复、细粒度权限、访问与编辑可见性、使用分析等。
对照 Confluence 的替代点:适合替代 Confluence 的“部门文档中心/会议纪要/规范模板库”。
协同与知识管理能力:分析能力对管理者很关键——它能回答“知识有没有被用起来”,而不仅是“有没有写”。
优势亮点:备份与恢复机制对企业落地非常实用(很多事故不是写错,而是删错、改错)。
局限与使用体验:若你需要深度业务系统集成与强定制,需评估其扩展方式与边界。

10)Guru

核心功能:每张知识卡有指定验证者(Verifier)负责内容更新,验证状态贯穿搜索结果与使用场景。
对照 Confluence 的替代点:Guru 替代的不是“页面树”,而是 Confluence 里最痛的那一段:找不到、问来问去、答案不一致。它更像“知识投送系统”。
协同与知识管理能力:验证机制让知识可信度显性化,对客服、交付、售前、运营这类“边做边查”的岗位价值更直接。
优势亮点:把高频知识从群聊与口口相传中拉出来,形成可验证的单一答案源。
局限与使用体验:通常更适合与“主知识库”搭配使用,而非单独承担全域知识工程。

11)Notion:数据库化知识很强

核心功能:Wiki 形态、页面 Owner、验证机制(Verified pages/页面验证),用于保持内容可信度与新鲜度。
对照 Confluence 的替代点:适合替代“轻治理 + 强灵活”的 Confluence 使用方式,尤其在产品资料库、制度库、FAQ、培训资料等结构化场景,数据库能力能显著提升可维护性。
协同与知识管理能力:Notion 的上限高,但也最考验“信息架构”。我见过不少组织半年后陷入“入口很多、没人知道去哪找”的困境——原因通常不是工具,而是没有定义知识域边界、Owner、更新周期与归档规则。
优势亮点:验证机制把“可被信任的知识”显性化,特别适合管理层要求“知识可背书”的场景。
局限与使用体验:复杂权限矩阵、强审计与审批发布等治理深度,往往需要配套的组织机制与流程约束才能稳定运行。

Confluence替代软件的本质,是组织数字化能力建设

讨论 Confluence替代软件,最后要回答的不是“哪款工具更强”,而是:你的组织是否具备把知识当资产来经营的能力。

我建议用“三步法”把选型落到组织能力上(比“先买工具再推行”更稳):

  • 定边界:先明确 3 个高价值知识域(制度流程、项目资产、产品资料、交付手册),避免全员全域同时上。
  • 做试点:用模板与 Owner 机制跑通“写-审-用-复盘”的闭环,同时建立最低治理:权限、版本、删除恢复。
  • 做运营(指标化):建议至少盯三个指标:

    • 搜索成功率:同一问题被重复问的频次是否下降(对应 Gartner 所述“找信息难”的普遍现象)。
    • 内容新鲜度:关键页面是否有 Owner/验证周期(Notion 与 Guru 等都强调“验证/责任人”逻辑)。
    • 知识与交付连接度:关键文档是否与项目工作项互链、是否在复盘与迭代中被复用(ONES Wiki 这类路线更贴近)。

在 Atlassian 生命周期变化(Server 已停止支持、Data Center 有明确时间线)背景下,越早把 Confluence替代软件选型当作“变革项目”,越能减少未来 2–3 年的协作成本与治理风险。

随着 DeepSeek R1、Qwen 2.5 等长文本模型与 Agentic AI 的爆发,推理系统的瓶颈正从“算力”向“显存”转移。GPU 显存告急、扩容成本高昂、长序列推理卡顿,是否成为了阻碍业务创新的“显存墙”?

立春之日,破冰之时,阿里云诚挚邀请您参加《Tair KVCache 商业化暨开源发布会》,一同推开 AI 推理效率的新大门!

💻技术盛宴:六大核心议题,全景揭秘下一代推理底座

  • 从理论突破、开源工具到生产实践、商业服务,覆盖完整落地链路
  • 汇集 NVIDIA Dynamo AIConfigurator、RTP 、Mooncake等生态伙伴,展现全栈优化实力
  • 企业级 Tair KVCache 商业化服务开箱即用,助力业务快速跨越“显存墙”

本次发布会,阿里云数据库 Tair 团队将重磅开源企业级全局管理服务 Tair KVCache Manager 及高保真仿真工具 Tair-KVCache-HiSim。我们将深度解密 Tair 如何通过存算分离架构,联合 NVIDIA Dynamo AIConfigurator、RTP、Mooncake 等生态伙伴,打造“计算-存储-调度”一体化的 AI 基础设施。同时,Tair KVCache 商业版将正式亮相,为企业提供开箱即用、极致性价比的推理加速服务。这不仅是一次产品的发布,更是一场关于 AI 记忆管理的范式革命。

📅 直播时间

2026年2月4日(立春) 14:00

👉 直播链接

点此立即预约直播:https://www.aliyun.com/activity/database/tair-kvcache-release
图片

近几年,随着网信监管持续加强,“平台是否需要展示用户IP归属地”已经不再是产品层面的可选项,而逐渐成为一项明确的合规要求,是一个涉及监管理解、产品边界、技术选型和长期维护的综合问题。本文结合平台侧实践,分享一套基于 IP查询+离线库 的合规实施思路。

为什么平台需要展示用户IP属地?

从监管角度看,IP归属地展示的核心目的在于提升信息透明度与治理能力
通过向用户展示基础属地信息,可以在一定程度上减少误导性传播,也为平台在内容治理、风险处置和舆情应对中提供基础支撑。需要强调的是,监管要求展示的并不是精确定位信息,而是相对粗粒度的归度,通常到国家或省级即可。这本身就是在合规要求与用户隐私保护之间取得的平衡。

合规实施前必须明确的几个边界

在动手实现之前,有几个问题必须先统一认识。
首先,展示粒度要克制,不应展示到城市、区县甚至更精细的位置。其次,IP归作为客观提示信息存在,而不应被用于用户画像、标签或推荐权重计算。再次,展示逻辑必须统一,避免同一用户在短时间内频繁出现属地变化,造成误解或投诉。从监管实践看,真正容易出问题的往往不是“少展示了一点”,而是展示过度或口径不一致
平台需展示用户IP属地.png

为什么不建议完全依赖在线IP询接口?

不少平台最初的实现方式,是在请求链路中直接调用第三方在线ip接口。这种方式在功能验证阶段确实省事,但在合规场景下风险明显。

一方面,在线接口存在稳定性和延迟问题,一旦异常,前端展示就会受到影响;另一方面,第三方接口的数据和算法更新不可控,历史展示结果难以复现;此外,在涉及用户访问行为数据时,还需要额外评估数据出境与合规风险。因此,在正式合规方案中,我们更倾向于把IP归属地身可控范围内**。

IP查询+线库的整体实现思路

最终,我们采用的是一种相对稳妥的方式:获取用户IP → 本地离线库解析 → 统一展示规则输出。

整个过程不依赖外部网络请求,解析逻辑、数据版本和展示口径均由平台统一控制,便于长期维护和合规审计。

后端实现示意

下面以之前的后端实例为例

服务启动时加载IP离线库

public class IpLocationService {

    private static IpOfflineDb ipDb;

    public static void init() {
        // 启动时加载离线库到内存
        ipDb = IpOfflineDb.load("/data/ip/ip_offline.dat");
    }
}

请求链路中解析用户IP归属地

public static String resolveIpLocation(String ip) {
    IpLocation loc = ipDb.lookup(ip);
    if (loc == null) {
        return "未知";
    }

    // 合规展示:只到国家 / 省级
    if ("CN".equals(loc.getCountryCode())) {
        return loc.getProvince();
    }
    return loc.getCountryName();
}

前端展示字段示例

{
  "user_id": "123456",
  "content": "……",
  "ip_location": "北京"
}

在前端层面,仅作为提示信息展示,不参与排序、推荐或用户标记。

合规实现中的几个实践经验

在实际运行过程中,有几点经验非常重要:

  • IP离线库更新不宜过于频繁,避免属地展示抖动
  • 历史内容的属地展示口径应保持一致
  • IP归属地展示逻辑应有统一配置,避免各业务线自行实现
  • 所有变更都应具备可追溯记录,方便监管核查
    IP归属地展示不是一次性功能,而是一项长期存在的合规能力

在这套方案中,我们最终为平台接入了IP数据云的IP离线库。其数据更新节奏相对稳定,解析结果在长期使用中保持一致性,同时在本地可控、性能和维护成本方面都比较符合合规系统的要求。

大家好,我是老刘

最近TIOBE在2026年一月的编程语言排名出来了。

不出意外的,Dart又排在25名之后了。

为啥作为跨平台一哥Flutter的编程语言,Dart的排名如此落后?除了Flutter,Dart还有哪些应用场景?

本文我们来讨论一下这些问题。

1. Dart 语言近半年排名趋势

老刘统计了 Dart 语言在 TIOBE 索引中的近半年排名趋势,发现 Dart 语言的排名一直保持在 25 名之后,而其 Ratings 也始终保持在 0.60% 左右。

日期Dart在TIOBE的排名Ratings
2025-07280.61%
2025-08280.59%
2025-09280.62%
2025-10270.62%
2025-11260.69%
2025-12260.64%
2026-01260.63%

数据来源:https://www.tiobe.com/tiobe-index/

2. TIOBE并非根据语言使用量进行排名

TIOBE 索引是一个衡量编程语言 popularity 的指标,它根据每个月的搜索量来计算每个语言的排名。

每个月,TIOBE 会发布一个排名,该排名是根据搜索量的百分比来计算的。

它聚合了全球主流搜索引擎和网站的数据,包括 Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube, Baidu 等25个以上的平台。

计算Ratings逻辑大致如下:

  • 首先计算每种语言在各个搜索引擎上的“命中数”(hits)。
  • 对这些数据进行归一化处理(消除不同搜索引擎总量差异的影响)。
  • 最后计算出该语言在所有被统计语言总搜索量中的 占比(即 Ratings) 。

所以TIOBE的排名只能代表Dart语言在众多编程语言中的受关注程度,而非其在实际开发中的使用数量。

3. 为啥Dart语言排名始终不高?

与 2025 年大幅攀升的语言(如 C# 成为 2025 年度语言、 Perl 从 32 名冲回 11 名、 Zig 冲到 42 名)相比,Dart 的排名非常稳定,没有出现剧烈的排名跳跃。

根本原因是Dart语言的排名是与Flutter深度绑定的。

和大多数编程语言不通,比如Java用于服务端开发、Android开发的多个不同的领域。

而Dart的主要应用场景只有Flutter。

如果Dart在未来没有脱离Flutter用于其它方向,那么它的排名就会继续保持在20名之后。

4. Dart排名稳定代表了什么?

我们来看一下Dart排名波动最大的时间点。

可以看到Dart语言最受关注的时间是在2017年Flutter刚发布的时候。

之后是Flutter的高速扩张然后成为客户端跨平台开发的首选框架。

最近这几年,Flutter逐步进入了稳定期,Dart语言的关注度也开始稳定下来。

所以Dart语言的排名稳定从某种程度上代表了Flutter生态相对比较稳定。

这对我们这些Flutter开发者来说是一个好消息。

毕竟没有一个程序员喜欢自己吃饭的语言框架三天两头出现大的变动。

而且语言和框架的稳定带来的另一个好处就是AI友好度的提升。

因为AI模型通常是基于某个语言或框架训练的,而如果这些语言或框架经常变化,那么在日常开发中就需要程序员不停的去修正AI生成的代码。

5. 希望Dart语言能有更多领域的应用

之前老刘就专门写过文章,之前我喜欢Kotlin的强大,现在更喜欢Dart的简洁。

[Kotlin vs Dart:当“优雅”变成心智负担,我选择了更简单的 Dart
](https://mp.weixin.qq.com/s/KyqmMXTE4GyAJU2NjJYtUg)

随着编程风格越来越趋向于简洁、稳健。

我也越来越喜欢Dart这种既能同时支持面向对象和函数式编程两种编程范式,同时又能在日常开发中保持语法简洁的编程语言。

所以老刘还是希望能有更多的领域可以应用到Dart语言。

老刘觉得在以下一些领域Dart还是有用武之地的:

服务端开发 (Backend)

如果能用 Dart 写后端,实现**前后端同构**,复用同一套 Model 和 业务逻辑,将极大地降低全栈开发的门槛。像 Serverpod 和 Dart Frog 这样的框架已经开了个好头,但还需要更完善的生态。

命令行工具 (CLI)

Dart 优秀的 AOT 编译能力,使其生成的二进制文件启动极快且无需依赖环境。编写跨平台的脚本工具,Dart 其实比 Python 或 Node.js 更具部署优势。

WebAssembly (Wasm)

随着 Dart 对 WasmGC 的支持日益完善,未来 Dart 代码将能以近乎原生的性能运行在浏览器中,这为高性能 Web 应用提供了新的可能。
当然这部分可能还是和Flutter有很大的绑定关系。

总结

如果Dart能像JavaScript从浏览器走向Node.js那样,成功在服务端或CLI领域突围,那么对于我们这些Flutter开发者来说,将是一个好消息。

因为这意味着我们掌握的这门语言,将拥有更广阔的舞台,而不仅仅局限于画UI。

那么作为开发者,我们不妨在日常的小工具、脚本或者简单的后端服务中,多给 Dart 一些机会。

毕竟,生态的繁荣,离不开每一个开发者的尝试与贡献。

🤝 如果看到这里的同学对客户端开发或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。

🎁 点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。可以作为Flutter学习的知识地图。

🚀 覆盖90%开发场景的《Flutter开发手册》

📂 老刘也把自己历史文章整理在GitHub仓库里,方便大家查阅。
🔗 https://github.com/lzt-code/blog

大家好,我是 Immerse,一名独立开发者、内容创作者、AGI 实践者。

关注公众号:沉浸式AI,获取最新文章(更多内容只在公众号更新)

个人网站:https://yaolifeng.com 也同步更新。

转载请在文章开头注明出处和版权信息。

我会在这里分享关于编程独立开发AI干货开源个人思考等内容。

如果本文对您有所帮助,欢迎动动小手指一键三连(点赞评论转发),给我一些支持和鼓励,谢谢!


Vercel 开源了一个项目,叫 agent-skills。

他们把团队积累的 React、Next.js 开发经验,打包成了 AI 可以直接调用的技能包。

写代码时,AI 会自动检查性能问题、可访问性、最佳实践。相当于自动 Code Review。

3 个技能包

react-best-practices:40 多条规则,分 8 个类别。

包括消除请求瀑布流、优化包体积、服务端性能、客户端数据获取。每条规则标注优先级(Critical、High、Medium)。

web-design-guidelines:100 多条规则。

涵盖可访问性、焦点状态、表单处理、动画、排版、图片、性能、导航、暗黑模式、触控交互、国际化。

vercel-deploy-claimable:在聊天窗口直接部署到 Vercel。

支持 40 多种框架,部署完给预览地址和认领地址。

安装和使用

npx add-skill vercel-labs/agent-skills

装完不需要配置,AI 自动检测使用场景。写 React 组件时自动检查性能,说要部署时自动调用部署功能。

工具支持

这个思路的价值

把经验和最佳实践结构化,让 AI 能理解和执行。

比文档好用,AI 会在写代码时主动提醒你。这些技能遵循 Agent Skills 标准,是开放格式。


项目地址:https://github.com/vercel-labs/agent-skills

项目介绍

基于深度学习的智能害虫识别系统,帮助农业生产者快速、准确地识别农作物病虫害,提高病虫害防治效率,保障农业生产安全。系统采用前后端分离架构,前端使用Vue3+Element Plus构建用户友好的交互界面,后端采用Flask框架提供高效的数据处理和API服务,核心识别算法基于TensorFlow深度学习框架和ResNet50卷积神经网络模型。

系统主要功能包括:用户注册与登录、害虫图片上传、实时识别、识别历史记录查询、数据统计可视化等。用户可以通过上传害虫图片,
图片
图片
图片

选题背景与意义

随着全球人口的增长和农业现代化的推进,农作物病虫害防治面临着越来越大的挑战。传统的病虫害识别方法主要依赖人工经验,存在识别效率低、准确率不高、受主观因素影响大等问题。尤其是在大规模农业生产中,病虫害的及时识别和防治显得尤为重要,直接关系到农作物的产量和质量。

近年来,深度学习技术在计算机视觉领域取得了显著进展,卷积神经网络(CNN)在图像识别任务中表现出了优异的性能。ResNet50作为一种深度残差网络,具有强大的特征提取能力和梯度传播效率,能够有效解决深度网络训练中的梯度消失问题。

关键技术栈:ResNet50

ResNet50是微软研究院提出的一种深度残差网络结构,是ResNet(Residual Network)系列网络中的经典模型之一。它由50层卷积神经网络组成,通过引入残差连接(Residual Connection)解决了深度网络训练中的梯度消失问题,使得构建更深层次的神经网络成为可能。

ResNet50的核心创新点在于残差块(Residual Block)的设计。传统的卷积神经网络在堆叠多层后会出现退化现象,即网络深度增加但性能反而下降。ResNet通过在残差块中引入恒等映射(Identity Mapping),使得网络可以学习到残差信息,避免了退化问题的发生。残差块的结构可以表示为:y = F(x, {Wi}) + x,其中F(x, {Wi})是残差函数,表示学习到的特征与输入之间的差异。

技术架构图

图片

系统功能模块图

图片

演示视频 and 完整代码 and 安装

地址:https://www.yuque.com/ziwu/qkqzd2/qis0k3f4bsvy0xop

随着电子签章应用在市场越来越普及和受追捧,超级大厂也相继推出了自己的电子签章产品,如华为的华为云电子签、阿里的阿里云电子签、腾讯的腾讯电子签服务。那这些大厂推出的电子签章产品和服务与传统第三方电子签公司北京安证通有什么相同和区别呢?接下来我们通过多个维度进行差异化的浅析。1. 核心定位与生态整合
图片

  1. 技术架构与优势
    图片
  2. 合规性与认证
    图片
  3. 定价与成本
    图片
  4. 适用场景与客户群体
    图片
  5. 优势与局限性对比云厂商电子签的优势:1) 生态协同:与现有办公流、业务系统无缝衔接。2) 成本优势:云用户可享受集成套餐优惠。3) 快速部署:针对通用场景开箱即用。北京安证通的优势:1) 专业性:深耕电子签名领域,功能更细致。2) 中立性:数据不绑定单一生态,适合多平台协作。3) 行业方案:更适配高频复杂场景

出于市场对网络安全的不断重视,众多企业也逐渐开启网站的SSL证书部署,既响应政策号召,又可避免被潜在的网络攻击威胁。正因如此,当企业在官网上看到绿色的安全锁标志时,通常认为数字证书的任务已经结束。事实上,真正的风险往往从安全证书部署完成后才开始显现。从证书签发机构的可信度,到服务器配置的细节,再到日常维护和管理,每一个环节的疏忽,都有可能让这一重要的安全措施失去应有的效果,甚至演变成新的攻击途径。JoySSL通过长期的安全审查和行业研究发现,多数企业在部署SSL证书后,常常忽略其生命周期内的安全管理工作,从而无形中埋下了严重的隐患。这些问题并非SSL技术的固有缺陷,而是源于“部署即完成”的错误观念以及粗放的管理方式。

证书安全锁不彻底 身份验证模糊

安全锁标志并不意味对所有内容的保护,主网页采用HTTPS加密,但部分资源如图片或样式表,仍通过HTTP协议加载,从而形成混合内容,导致浏览器降低网站的安全评级,未加密的HTTP资源可能会被篡改。

对金融、政务、电商等平台,仅使用DV证书无法有效向用户证明企业的真实身份,尤其在防范钓鱼攻击方面,信任缺陷尤为突出。EV证书显示的绿色地址栏,能够为企业提供对抗仿冒行为的显著可视化优势。

过期证书服务中断 一证通用弊端

未能及时续期是证书服务中断的主要原因,依靠个人记忆来管理大批量证书的续期工作,极易出现疏漏,从而导致关键业务平台因证书过期而无法正常运行。引入自动化的监控,建立完整的证书生命周期管理机制,方能有效降低中断风险。

私钥作为SSL证书体系的核心,需要极高的保护措施。若在多台服务器间重复使用同一私钥,将私钥以明文存储在共享目录或代码仓库中,一旦私钥泄露,所有相关服务均可能受到安全威胁。

颁发机构不被信任 证书无人管理

并非所有证书颁发机构都具备同等的可信度,较为冷门的颁发机构其根证书可能难以得到广泛认可,应优先选择与全球顶级根证书库合作的供应商。

随着企业业务规模的不断扩大,可能会产生大量无人维护的数字证书。一旦出现过期或配置问题,便可能引发安全漏洞与业务中断的风险。企业需完善并维护统一的证书管理清单,确保安全措施全面覆盖。

主动部署数字证书 打造安全堡垒

部署SSL证书,只是创建可信通信环境的开端,而非安全策略的最终目标。其实际效果取决于配置的规范性、管理的高效性以及应对的及时性。JoySSL市场总监表示,当下互联网环境形势严峻,企业应将SSL证书管理作为核心的安全运营工作,系统化解决常见的风险。让SSL证书成为坚固、可靠且持续有效的安全屏障,为企业的数字化转型提供全面且专业的保障。

Aspire 13.1作为增量更新发布,它基于 Aspire 13 引入的多语言平台基础。此次发布专注于通过增强命令行界面、更深入地支持 AI 辅助开发工作流程、改进仪表板体验以及更清晰的 Azure 环境部署行为来提高开发者的生产力。

 

据团队报告,此次更新旨在使日常开发任务更可预测、更易于自动化,并与现代 AI 编码工具更好地对齐。

 

Aspire 13.1 中的一个核心新增功能是通过与模型上下文协议(Model Context Protocol,MCP)集成,扩展了对 AI 编码智能体的支持。一个新的命令允许项目在初始化时支持 MCP,使兼容的 AI 工具能够发现 Aspire 集成、检查应用程序结构并与运行中的资源交互。

 

aspire mcp init
复制代码

 

连接后,AI 智能体可以查询应用程序状态、查看日志并通过暴露的端点检查跟踪。这种集成旨在简化开发过程中 AI 助手的使用,而无需为每个工具进行自定义设置。

 

Aspire CLI进行了几次更新,旨在减少创建、运行和维护项目时的摩擦。如前所述,项目创建命令现在可以选择通道,并且一旦选择,将全局保持,确保新项目的行为一致。

 

CLI 还能检测到已经运行的实例,并在启动新运行之前自动停止它们,从而避免常见的冲突。安装脚本现在支持一个选项来跳过修改系统 PATH,这在受控环境中非常有用。

 

此次发布的仪表板更新专注于清晰度和可见性。新的参数标签允许直接从资源详情中查看和管理配置值。GenAI 可视化器已增强,以更好地显示工具定义、评估和相关日志,并支持预览音频和视频内容。仪表板的几个稳定性问题也得到了解决。

 

(GenAI 可视化器工具定义,来源:官方Aspire文档

 

Azure改进方面,Aspire 13.1 引入了更清晰的命名和更强大的验证。Azure Redis 集成已重命名,以更好地匹配底层服务,并且在部署过程中更早地执行额外检查,以便尽早发现配置问题。

 

Azure 资源现在暴露出标准化的连接属性,这些属性在支持的语言中通用,使得非.NET 应用程序能够使用一致的设置进行连接。还增加了对 Azure App Service 中部署槽的支持和对默认角色分配的更精细控制。

 

通过引入通用容器注册表资源,容器和部署工作流得到了改进,允许开发者锁定 Azure 容器注册表之外的注册表。容器镜像推送现在更加明确和可预测,特别是在部署到 Azure 容器应用时。Docker Compose 支持已得到改进,以增强可移植性并减少并行构建期间的竞争条件。

 

此次发布还包括针对JavaScript和前端开发的更新,例如一个新的起始模板,该模板结合了 ASP.NET Core 后端和基于 Vite 的前端,改进了开发中的 HTTPS 处理,并修复了与包管理器相关的问题。

 

证书处理得到了简化,新增了配置 HTTPS 和在支持的容器中终止 TLS 的新 API。

 

此外,Aspire 13.1 还稳定了之前预览版中的几个集成,包括 Dev Tunnels、端点代理支持和 Azure Functions。模板已更新以反映一致的模式,并且广泛的错误修复集提高了跨平台的可靠性。

 

Aspire 13.1需要.NET 10 SDK 或更高版本。建议从早期版本升级的开发者查看已记录的重大变更,特别是围绕 Azure Redis API 和重命名的连接属性。

 

对于感兴趣的读者,完整的发布说明和详细文档可在官方Aspire存储库和文档渠道中找到。

 

原文链接:

https://www.infoq.com/news/2026/01/dotnet-aspire-13-1-release/

生成式 AI 的投资回报远超预期?Snowflake 调研全球 1900 位企业与 IT 专业人士后发现平均 ROI 高达 41%!点击下载完整报告

每个人都在努力提高大语言模型的精准度。但真正的挑战并非精度,而是上下文理解能力。在 BUILD 2025 大会上,Hex 合作伙伴工程负责人 Armin 探讨了为什么传统的方法,如评估套件或合成问题集往往不够有效,以及成功的 AI 系统是如何通过随着时间推移逐步积累上下文来构建的。

由 Snowflake Cortex 提供支持的 Hex,启用了一个新的对话式分析模型,每次交互都让模型变得更聪明。通过 Hex 的 Notebook Agent 与 Threads 功能,业务用户可直接定义核心问题,而数据团队则将这些问题精炼、审计并转化为持久且值得信赖的工作流。

在这个模型中,测试用例不再由数据团队闭门设计,而是由业务需求驱动并在数据工作流中自动实施,最终形成一个具有生命力的上下文系统,而非一成不变的提示词或测试集,它能随着组织共同演进。

准确率不是终点

Armin 开场就把矛头对准了一个常见做法:把业务用户会问的问题合成成一批样例,甚至进一步转成 SQL 查询,然后把这些喂给 LLM,用类似单元测试的方式去衡量它的准确率、稳定性与一致性。他不否认“准确性是顶层关注”,但他强调,把 LLM 当作传统软件组件来做单元测试,本身就是一个不合适的范式。

原因在于,当你把业务问题硬转换为一组 SQL,并据此去构建样例与评估集时,你很难覆盖真实业务中不断变化的语义、不断扩张的问题空间,以及不同用户在不同语境下对同一指标的不同问法。更重要的是,即使你做出了一个看似通过率很高的测试集,也依然回答不了企业最在意的那件事:当它在真实环境中生成了一个结论,你如何知道它不是在胡编?你又如何知道它到底做了什么才得到这个结论?

因此,Armin 把正确性从结果层拉回到系统层:你需要的不是一个靠样例证明自己正确的聊天机器人,而是一套可审计的系统,它能够随着时间变得灵活、可塑,能够让业务用户在使用中不断收敛可回答的问题类型,也能够让系统拥有被“硬化”的路径:哪些能力可以放开,哪些问题必须收紧,哪些定义需要固化,哪些数据应该进入上下文、哪些不应该。

在他看来,真正有效的路线是:从一套能运行、能被观察的系统出发,让系统在使用中暴露问题、沉淀模式,再反过来加固上下文。这种思路听起来不如直接做评估来得爽快,但它更接近企业系统的真实生长方式。

对话式分析如何变成“可审计的系统”

为了把“可审计”讲得具体,Armin 用 Hex 的产品演示展示了对话式分析在真实系统中应该是什么形态。演示从一个非常典型的业务问题开始:假设我是营销经理,我想让系统分析销售机会的“首次触达来源”(first touch source),并做营销归因视角的拆解。这里一个很关键的动作,是他先在系统里配置模型提供方:通过密钥对(key pair)连接到 Snowflake 实例,使用 Snowflake Cortex 内托管的 Claude,并强调这是一个“walled garden”的私有网络环境。这样做的直接意义是:模型驻留在数据所在的环境里,数据可以传递给模型,同时也能让 IT 团队对数据出入边界更放心。

进入线程后,Hex 并不是立刻吐出一句“结论”,而是在后台进行一系列用户不可见但决定可信度的步骤:它会先围绕可访问的元数据“思考”,查看平台上已有的 Hex 项目、仪表板或资产,判断是否存在可复用的内容;它会拉取来自数据仓库的表描述、列描述等元数据,并强调这些可以自动导入、不需要复杂配置;如果企业已经有 dbt 元数据,也可以进一步带入;随后它形成一个“漏斗式”的收敛过程:从广义元数据到相关表、再到更具体的模型信息与底层数据,最后才开始把 SQL 单元格、可能的 Python 单元格、图表与可视化逐步组织起来,用以回答最初的问题。

这也解释了他在演示里专门强调的一个点:这种模式一开始会“慢”,但这是刻意设计的。因为此时系统面对的是生产数据仓库,它需要把大量上下文带进来,需要推理与迭代,而这类深度思考天然会以时间为代价。换来的收益是:它可以生成更细致、接近数据科学家或嵌入式数据分析师水平的分析过程。Armin 也提到,未来会有更偏“快速、短促回答”的迭代版本,可能更多依赖语义模型,而不是每次都在全量上下文里深挖。但在这个阶段,他们优先解决的是“在没有分析师介入的情况下,业务用户也能得到一份扎实的分析报告”。

当线程生成结果后,界面里不仅有图表,还能继续做探索:拖拽维度与度量、查看底层表格数据、检查异常、做更深的切片。这时“可信度焦虑”就会自然出现:这么多信息暴露给业务用户,我怎么知道它没有幻觉?我该不该信这些 SQL?我如何让它更确定?Armin 的回答不是“相信模型”,而是把系统的底座亮出来:在 Hex 里,每一个线程、每一个项目,背后都由笔记本支撑。把线程保存为项目后,你可以在笔记本里看到完整对话以 Markdown 的形式呈现;更重要的是,你能看到它实际运行的 SQL、过滤条件、连接逻辑、图表生成过程,以及它如何一步步构建出整份报告。对于负责准确性与治理的数据团队来说,这种“把对话落到可审计的笔记本”非常关键——它让系统从一开始就具备被审核、被追责、被修正的可能。

在此基础上,Armin 进一步展示了一个更现实的协作场景:业务用户提出问题后,不一定要立刻去找数据团队提工单,而是先在对话线程里得到初步洞察;如果需要更深入的分析(比如进一步做季节性拆解),技术用户可以把笔记本智能体(notebook agent)限定在这个项目范围内,和智能体一起继续规划、推理、生成图表,并在生成的“待处理变更”中逐条审核、决定保留哪些结果。分析由此变成一种可协作、可迭代、可沉淀的工作流,而不是一次性、不可解释的问答。

从一次性对话到可复用资产

如果到这里为止,Hex 展示的是“可观察性”,那么 Armin 在后半段想讲的,是上下文如何变成系统能力,如何从一次性对话沉淀为可复用资产。

他先展示了一个从笔记本走向应用(app builder)的路径:当某些分析内容需要“持久化”,例如营销与销售负责人希望随时看到季节性分析或关键指标,而不是每次回来重新提问,那么就可以把笔记本中已经生成的图表、文本等资产拖拽到应用构建器里,做成一个仪表板、报告或更像 BI 的交互界面。这里的核心并不是“又做了一个 BI”,而是强调:即便呈现形态变成 BI 风格,背后依然由笔记本驱动,仍然保留 SQL、Python、Snowpark 等灵活性;同时,笔记本与应用这两种范式始终连接,资产是可回溯的。换句话说,展示层可以更友好,但底层逻辑并不会因此变成不可审计的黑箱。

紧接着他抛出了“连接胶水”的问题:当我们有线程、有笔记本、有应用,如何让它们构成一个一致的策略?答案是语义模型——它是 Armin 所谓“上下文引擎”的关键组成部分。原因也很务实:企业里那些精心构建的报表与仪表板,通常包含大量转化逻辑、业务口径、SQL/Python 查询,这些恰恰是 LLM 最需要、也最容易误解的上下文。如果不能把这些上下文结构化,LLM 的确定性就无从谈起。

在演示里,语义模型有两条路:一是导入已有的 Snowflake semantic view。Hex 可以浏览生产仓库、发现可访问的语义视图,然后快速引入,例如引入一个 B2B sales model,让 enriched metadata 直接在 Hex 中可用。另一条路更贴近多数团队的起点:不是先有语义视图,而是先有一堆被业务反复使用的仪表板项目。Hex 的语义建模工作台里有一个“建模智能体”(modeling agent),它能理解 Hex 的语义建模能力,并且能针对某个具体项目(例如 sales and marketing dashboard)去阅读项目里包含的 SQL 单元格、DataFrame 操作、joins、函数与过滤条件,形成建模计划,做错误预防,推断表关系,把“项目里已经存在的业务逻辑”烘焙进语义模型中。

这一段其实回答了一个关键的企业问题:语义模型从哪来?它不一定需要从零凭空设计,它可以从企业已经在用的分析资产中被抽取、被规范、被版本化。建好之后,语义模型还能用一种“拖拽式”的方式被检查:你可以选择维度、度量,查看聚合、查看系统生成的 SQL,在发布之前把模型硬化到你满意的程度。

更进一步,Armin 也回应了“供应商锁定”的担忧。他明确表示,Hex 不希望用专有 YAML 把用户锁死,并提到两个方向:其一是和 Snowflake 等一起推动“开放语义交换”(Open Semantic Interchange),一个由约 18 家甚至更多公司组成的联盟,目标是让语义模型信息能在不同系统之间互换,以促进 LLM 采用并避免 vendor lock-in;其二是更近期开启“写回”能力,让在 Hex 中构建的语义模型可以写回到 semantic views 中,保证不同系统间“友好共存”。这些内容在分享里出现得很明确:终点不是锁定格式,而是让用户愿意因为体验与工作流而持续使用。

当语义模型准备好后,线程侧的使用方式也随之变化:你可以把对话线程限定为“只使用语义模型”,而不是访问整个生产数据仓库。Armin 强调,这会让系统随着时间更确定:当你不断硬化语义模型、补充上下文,它会越来越稳定、越来越可控。也正因此,他再次回到开场的观点:把精力放在构建上下文系统上,而不是试图用合成样例把原型聊天机器人测到“看起来准确”。

规模化审计与上下文飞轮

分享的最后一部分,Armin 把问题推到最现实的规模化挑战上:当系统从一个人试用扩展到五十、一百个用户时,你如何监控它?你如何知道 LLM 系统到底在做什么,业务用户到底拿它解决什么问题?这时,“可审计”就不能停留在某个线程或某个项目,而必须成为一套能覆盖全局的治理能力。

他提到 Hex 的“上下文工作室”(context studio),目前处于少数 Alpha 合作伙伴的 Alpha 阶段,但他之所以专门强调它,是因为它承载了上下文系统最关键的一环:理解使用行为,反过来指导上下文如何演进。

具体来说,你可以看到平台总体使用情况:用户更常用笔记本还是线程?创建了多少语义模型?也可以按对话量看用户分布,查看某个用户使用线程的频次、提问的类型。更重要的是,当你下钻到“问题类型”时,Armin 给出了一个很强的判断:这些真实问题才是你的单元测试。不是你在上线前试图一次性“破坏一切”并用评估集兜住,而是看清业务用户到底在问什么,再回去硬化你需要硬化的上下文与问题类型。

围绕“如何策划上下文”,他在分享里给出了三个层次的抓手。最直接的是规则文件(rules file):你可以在里面定义 SQL 的数据质量防护、业务定义、偏好的 SQL 风格、杂项信息,以及希望系统使用的可视化方式,并且这些内容可以即时编辑、保存或导出。第二层是“经认可的数据”(endorsed data):由数据团队或所谓“金层”背书的数据资产,可以在 Hex 的语境下被定义清楚,决定哪些数据可以喂给 LLM。第三层则是更成熟、也最关键的做法:语义项目(semantic projects)。随着审计能力增强,你不仅能看到语义模型被使用的次数,还能观察是否有多个语义模型被同时使用、是否需要在某些场景中合并;你也能判断哪些项目最常被引用,从而决定是否需要对下游数据做更多建模,或者是否需要补充列描述、表描述等元数据来改善上下文质量。

这些细节共同指向同一个结论:上下文不是一次性设计出来的,它是被真实使用不断“磨”出来的。你从稍微宽的范围起步,抽取一两个语义模型,让业务用户用起来;再通过审计看到真实问题与真实路径,回去修规则、补语义、加背书数据、完善元数据。如此循环,系统才会越来越确定、越来越可信。

这场分享最有价值的地方,在于它没有把“可信”简化为一个指标,也没有把“准确率”当作唯一的归宿。Armin 反复强调的其实是另一套思维:企业要的不是一个在评估集上表现漂亮的聊天机器人,而是一套能持续吸收上下文、可审计、可治理的系统。

从线程到笔记本的可观察性,从笔记本到应用的资产化,从项目到语义模型的上下文结构化,再到面向规模化使用的审计与上下文工作室——这些环节被串成一个整体,目的只有一个:让 LLM 在真实业务里变得更确定,并且在需求增长时仍然能保持可控与可信。

原视频地址:https://www.snowflake.com/en/build/americas/agenda/?login=ML

🔥【活动推荐】2 月 2 日-6 日,Snowflake Discover重磅上线!这是一场免费、线上、可实时互动的技术活动,旨在帮助您全面提升数据与 AI 能力,深入了解如何更高效地管理、整合与分析数据。4 天时间 18 场技术干货分享,由来自亚太地区的一线技术专家亲自分享与讲解~

点击报名 Discover,更多 Snowflake 精彩活动请关注专区

很多企业上线ITSM系统或者部署ITIL流程的初衷很直接:统一入口、规范工单、提升效率,最好还能形成可审计的闭环。

但现实往往是:系统上线后“看起来很忙”,却难以稳定交付;业务抱怨仍多,IT 团队疲于救火,流程被绕过,口径争论不断。

问题不一定出在工具,而常常出在“交付治理”缺位——没有把 IT 服务交付当成一项可以被设计、被运营、被审计、被持续改进的组织能力。

真正成熟的 IT 服务管理,不只是把工单从邮件与群聊里搬到系统里,而是用一套稳定的机制回答三个问题:

(1)我们交付的服务是什么;

(2)交付质量如何保证;

(3)出现波动时如何快速收敛并持续变好。

当交付治理建立起来,工单系统才会从“记录工具”升级为“组织运行的服务中枢”。

在平台层面,本文会以ManageEngine卓豪 ServiceDesk Plus 这类企业级 IT 服务管理平台为参照,给你一套可落地的交付治理方法论:从服务定义、流程边界、组织职责、指标体系、审计追溯,到上线后的持续运营路线。你可以把它当作一份“把 ITSM 做成组织能力”的操作手册。

交付治理是什么:让“流程执行”变成“结果可控”

很多组织把 ITSM 的成功定义为“工单都进系统、流程跑起来、SLA 看起来达标”。但只要你做过一段时间,就会发现这套定义很脆弱:工单进系统并不等于问题被解决;流程跑起来也不等于体验变好;SLA 达标更不等于业务满意。

交付治理要解决的,恰恰是这种“表面合规、结果不可控”的尴尬。

所谓交付治理,本质是一套“可控机制”:它把服务交付拆成可管理的单元,并明确边界、责任、标准、升级路径与审计证据。换句话说,它让组织在面对波动时不再靠个人英雄主义,而是靠机制稳定输出。

先把服务说清楚:服务目录与交付标准的“最小可用版本”

交付治理的第一步不是做一百条流程,也不是把所有工单字段补齐,而是把服务讲清楚:用户要的到底是什么?IT 能交付什么?交付需要什么输入?

交付产物是什么?如果这些不清晰,所有流程都会变成“填表运动”,最终被绕开。

流程边界与例外机制:让系统“既严谨又不僵硬”

交付治理的第二步是把流程边界设好:什么必须走强流程,什么可以走轻流程,什么必须升级,什么允许例外。很多 ITSM 失败不是因为流程不够严,而是“该严的地方不严、该灵活的地方太死”。最终导致两种极端:要么流程被绕过、要么流程变成拖累。

组织与职责:把“谁来做”写进体系,而不是写进群聊

交付治理真正难的地方,是组织层面:谁负责什么?谁拍板?谁背 SLA?谁负责复盘?如果职责不清,流程再完整也会变形:该升级的不升级、该通知的不通知、该复盘的不了了之。

你需要把“责任结构”显性化,让系统里的每一步都有明确主人。

指标体系与审计证据:把“交付好不好”变成可证明的事实

交付治理要建立“可证明性”。很多组织最痛的不是做不好,而是做得不错却无法被认可:因为没有一致口径、没有可追溯证据、没有业务听得懂的指标。

要解决这个问题,你需要把指标分层:运营层看效率,质量层看复发与稳定,治理层看风险与合规。这样既能支持一线管理,也能支持管理层决策。

1)交付治理会不会让流程更慢?

短期可能会多一些结构化输入,但长期会显著减少返工、扯皮与升级救火的时间。治理的目标是降低隐性摩擦,而不是增加表面步骤。

2)团队小、人手紧,也需要这么做吗?

越小的团队越依赖关键个人,风险越高。交付治理能把经验沉淀为机制与知识,降低个人依赖,反而更重要。

3)最推荐的起点是什么?

从“最小可用服务目录 + 责任结构”起步:先把高频服务做成可控单元,再上例外机制与指标分层,最后固化复盘闭环。

4)如何避免流程被绕过?

核心是降低入口摩擦(用户好选、模板清晰)、提升结果确定性(进度可见、交付可验收)、并把例外机制做成“正规通道”。只靠强制,绕过一定会发生。

5)怎么证明交付治理真的有效?

看三件事:复发率是否下降、长尾工单是否收敛、改进行动是否能按期关闭;同时看满意度与自助率是否上升。治理有效一定能在指标上体现。

把 ITSM 做成组织能力,关键不在“流程有多全”,而在“交付是否可控、风险是否可审计、改进是否可持续”。

你可以从高频服务与最小治理机制开始,逐步形成服务目录、责任结构、例外机制、指标分层与复盘闭环的完整体系,让 IT 从“救火队”转向“稳定的服务交付者”。

在数字经济成为必选题的今天,许多企业都面临一个共同的困境:数据量爆炸式增长,但数据价值却始终“雾里看花”。我们坐拥海量数据,为何在决策时仍感“无据可依”?
图片
数据采集问题的核心往往不在于数据本身,而在于数据从“原材料”到“价值资产”的转化过程缺乏科学、规范的治理。今天,我们就以五度易链的实践为例,深入拆解一下数据治理中最为关键的标准化开发流程。这套覆盖“采集-解析-清洗-标准化”的全链路体系,正是确保每一份数据都能被科学处理,最终转化为驱动业务增长的可靠引擎。数据采集:全面覆盖,筑牢数据基础
图片
数据采集数据采集是数据开发的起点,直接决定后续数据处理的广度与深度。五度易链运用专业的数据采集工具与成熟技术,能够根据不同行业和场景的具体需求,进行精准、全面的数据抓取。采集范围覆盖线上平台数据、线下业务系统数据、第三方合作数据等各类数据源,确保数据的完整性与全面性。同时,建立合规的数据采集机制,对数据来源的合法性、数据采集过程的安全性进行全程管控,在保障数据全面性的同时,坚守数据安全与合规底线,为后续数据处理工作奠定坚实基础。数据解析:深度挖掘,揭示数据价值采集到的原始数据多为非结构化形式,难以直接应用。五度易链采用先进的数据解析技术与算法模型,对海量原始数据进行深度挖掘与智能解析。通过技术手段,从杂乱无章的非结构化数据中提取关键信息,揭示数据背后隐藏的内在关联与发展规律。数据清洗:多维度质控,提升数据质量
图片
数据质量是数据价值实现的核心前提,五度易链建立严格的多维度质量控制流程,对采集到的原始数据进行深度排查与净化处理。清洗过程围绕数据准确性、完整性、一致性、唯一性、时效性等多个核心质量指标,通过自动化检测与人工复核相结合的方式,全面排查数据中的无效信息、错误记录、重复数据以及与业务无关的冗余数据。例如,针对数据录入错误导致的格式不一致、数值异常等问题,通过智能算法进行自动修正;对于重复采集的数据,建立去重规则进行精准剔除。通过多维度的清洗处理,有效提升数据集的质量与精准度,确保后续数据分析结果的可靠性与有效性。数据标准化:统一规范,实现数据兼容不同来源、不同类型的数据在格式、口径、计量单位等方面存在差异,直接影响数据的整合应用。五度易链遵循国内外相关行业标准及规范,结合企业业务需求,对完成清洗后的有效数据进行统一格式转换和标准化处理。通过建立统一的数据编码规则、字段定义标准、计量单位规范等,消除不同数据源之间的“语言壁垒”,让原本分散、异构的数据能够实现整合兼容。标准化处理后的数据,不仅便于后续进行高效的数据分析、挖掘与应用,更能支持跨部门、跨业务的数据共享与协同,为企业构建统一的数据应用平台提供关键支撑,最终实现客户定制化数据开发的核心目标。
图片
数据治理应用高质量的数据治理已成为企业核心竞争力的重要组成部分。五度易链大数据治理解决方案标准化的“采集-解析-清洗-标准化”数据开发流程,为企业提供全方位、高品质的数据治理服务。当我们将视线从单一的技术环节拉升至整个数据价值链时,会发现数据治理远不止是IT项目,而是一项关乎企业核心竞争力的战略工程。无论是金融行业的风控升级、政务领域的数据共享,还是制造行业的智能制造、生物医药行业的研发创新,五度易链都能精准匹配需求,助力企业破解数据治理痛点,激活数据核心价值。你是否也在工作中遇到过数据质量或数据整合的挑战?欢迎在评论区分享你的故事,我们一起探讨。

很多企业在上线 ITSM 系统 后,很快就会遇到一个“看似不是 IT 的问题”:员工办事依然要在邮件、群聊、表单、电话之间来回切换;

-人力、财务、行政、采购各自有各自的入口与规则;

-审批链条长、状态不透明、信息反复提交;

-最终员工只记得一句话——“办个事怎么这么难!”

这也是为什么越来越多组织开始把 ManageEngine卓豪 ServiceDesk Plus 从单一 IT 服务管理 平台,扩展为企业级的 ESM服务中枢:用统一门户、统一工单与统一治理机制,把跨部门协作变成标准化、可追踪、可持续优化的“服务体验”。

ESM 不是“把 IT 的工单系统复制给 HR/财务/行政”,更不是“多建几个表单”。它的关键在于:用服务思维重新定义跨部门交付,把请求入口、信息结构、审批规则、履行任务、SLA 与反馈机制统一在一套可治理的服务体系里。

这样,组织才能从“每个部门各自忙”走向“企业整体协同”,让员工体验与运营效率同时提升。

为什么 ITSM 之后必须是 ESM:组织协作的“隐藏成本”正在爆炸

当企业规模增长、业务线增多、制度变复杂时,“跨部门办事”会变成组织效率的最大阻力之一。很多管理者会把效率问题归因于“人不够”“流程慢”“系统不统一”,但真正的根因往往是:企业缺少一套可以覆盖全组织的服务交付机制。

IT 做了 ITSM,解决了 IT 的入口与治理;但 HR、财务、行政、采购仍以各自方式交付,员工必须自行拼接流程,于是产生大量摩擦与隐性浪费。

ESM 的核心不是“多部门用工单”,而是“统一服务模型”

ESM 成功与否,决定因素不是系统部署数量,而是是否建立了“统一服务模型”。统一服务模型意味着:不同部门的服务虽然内容不同,但交付方式遵循同一套基本逻辑——服务定义、请求入口、信息结构、审批规则、履行任务、SLA 与反馈机制可以被统一治理,并且可以持续优化。

你可以把 ESM 想象成一条“企业内部的服务供应链”。员工是需求方,HR/财务/行政/IT/采购是服务提供方。供应链要稳定运行,必须要有统一的订单格式(请求模板)、清晰的交付承诺(SLA)、可追踪的状态(透明进度)、可协同的任务拆解(跨部门任务)、以及可复盘的数据(指标与审计)。

ESM 方法论:用“服务包”把跨部门交付做成可复制的标准件

要让 ESM 真正跑起来,你需要一种能跨部门复制的设计单元——服务包(Service Package)。服务包不是简单的服务目录条目,而是一套完整的“交付说明书”:包含请求模板、审批规则、履行任务、依赖关系、完成标准、例外机制与度量指标。

服务包的价值在于:它把“经验”变成“标准件”,把“协作”变成“编排”,把“交付”变成“可治理对象”。

1)ESM 会不会变成“全公司都提工单”,反而更乱?

如果只是开放入口不做服务包设计,确实会更乱。正确做法是:从高频旅程试点,用服务包定义字段、任务、SLA 与完成标准;先把需求结构化,再扩展覆盖范围。

2)HR/财务/行政没有 IT 那么强的流程意识,怎么推?

从“减少返工、减少催办、减少扯皮”切入最有效。先用统一入口与模板字段解决信息缺失,再用任务编排减少跨部门沟通成本,最后用指标证明收益。

3)ESM 一定要做全组织覆盖吗?

不需要。ESM 的本质是可复制的服务交付能力。只要把关键旅程跑通并可复制,覆盖范围可以逐步扩展,而不是一次性铺开。

4)如何衡量 ESM 是否成功?

看三类指标:效率(完成时长、SLA)、质量(信息缺失率、一次通过率、满意度)、合规(例外次数、审计追踪完整率)。成功的 ESM 一定能在指标上体现。

5)ESM 会不会让流程僵化、影响业务灵活性?

不会,前提是你要把“例外”设计成机制:触发条件、审批、有效期、回收与复盘。这样既保留弹性,又不牺牲合规与风险控制。

Linus Torvalds 常开玩笑说自己会“活到永远”。但以防万一,Linux 内核社区现在也准备好了一套交接方案——只是这份方案并没有点名具体的接班人。

 

如果 Torvalds 发生意外,或者哪天决定退休,Linux 不再把一切寄托在“到时候再说”。核心内核社区已经正式起草了一份项目连续性计划:一旦顶层维护者出现空缺,应该如何在最坏情况或有序过渡中,选出新的顶层维护者(可能是一人,也可能是多人),确保项目长期稳定。

 

Torvalds 本人则明确表示自己暂无退休打算。被问到未来是否会交棒时,他依旧以一贯的幽默回应,暗示自己更倾向于“继续干下去”。随后他又补充了一个更现实的理由:家里人同样不希望他突然闲下来,尤其是太太,大概更不想每天被一个无所事事、没事找事的丈夫缠着。

 

这份新的“为计划而写的计划”由资深内核贡献者 Dan Williams 起草,并在最近于东京举行的 Linux Kernel Maintainer Summit 上讨论。Williams 介绍它时还自嘲:这是个“与我们终将走向死亡相关、但很振奋的话题”。

 

不指定唯一继承人

 

Torvalds 也解释了这次为何会把“接班”议题正式摆上台面:部分原因是他此前与 Linux 基金会的合同在去年第三季度到期,基金会技术顾问委员会的人都知情。虽然合同随后已续签,但这段时间确实促使大家把风险管理讨论得更具体。

 

计划并没有给出一个“唯一继承人”。相反,它明确了一套选择流程:一旦需要交接,由社区召集一次类似“秘密会议”的讨论机制,集中权衡候选人或候选团队,尽量做出对项目长期健康最有利的决定。有维护者开玩笑说,干脆学选教皇:把人都锁在房间里,等决定出来再放出一缕白烟。

 

文件提到一个开源圈常说的“公交车系数”(bus factor)梗:假设项目的关键人物哪天突然“消失”(比如出了意外),项目还能不能照常运转?因为 Torvalds 仍是顶层合并与发布的最终把关人,所以从风险角度看,Linux 在这一环节几乎等同于“系数为 1”——也就是关键节点过度依赖一个人。

 

不过在现实中,大家也大致心照不宣:真要临时接手,“企鹅之王”的角色多半会落到 Greg Kroah-Hartman 身上——他是 Linux 内核稳定分支的维护者。

 

Torvalds 还在 2024 年和好友 Dirk Hohndel(Verizon Open Source 负责人)聊过这个话题。Hohndel 认为,要成为 Linux 的主维护者,需要极其丰富的经验;而目前最自然的“备份选项”就是 Greg Kroah-Hartman。Torvalds 的看法则更偏向长期视角:关键不在于某个人,而在于谁能获得社区的信任;这种信任通常来自长期参与、稳定协作,以及社区对其工作方式的充分了解,但“资历够久”并不意味着必须三十年如一日。

 

Kroah-Hartman 也确实曾短暂顶上过。2018 年 Torvalds 一度暂离内核工作、反思并改善自己对待其他开发者和维护者的方式时,Kroah-Hartman 曾临时承担顶层职责。不过,他的年龄甚至比 Torvalds 还大。

 

或许会由多人共同接棒

因此也有人提出,与其再找一位新的“终身仁慈独裁者”(BDFL),不如把顶层维护者的职责拆分给多位值得信赖的开发者共同承担。

 

56 岁的 Torvalds 仍然是几乎所有进入 torvalds/linux.git 变更的最终裁决者。他常自嘲 Linux 的核心圈子正在“变老”。而维护者疲劳、以及核心子系统负责人后继乏人等问题,让这种紧迫感越来越强。

 

可以确定的是:Torvalds 并不会在短期内让位。他仍会继续监督主线开发,并一直做到自己“做不动”为止。只是至少现在,那个终极的“Linus 依赖”风险终于有了明确的处理流程——等到真正需要的那一天,可以直接套用,而不必临时抱佛脚。

 

参考链接:

https://www.zdnet.com/article/linux-community-project-continuity-plan-for-replacing-linus-torvalds/

过去几十年,软件工程有一个稳定不变的前提:系统的行为写在代码里。工程师读代码,就能推断系统在大多数场景下会怎么运行;测试、调试、上线,也都围绕“确定性”展开。但 Agent 的出现正在动摇这个前提:在 Agent 应用里,决定行为的不再只是代码,还有模型本身——一个在代码之外运行、带着非确定性的黑箱。你无法只靠读代码理解它,只能让它跑起来、看它在真实输入下做了什么,才知道系统“到底在干什么”。

 

在播客中,LangChain 创始人 Harrison Chase 还把最近一波“能连续跑起来”的编程 Agent、Deep Research 等现象视为拐点,并判断这类“长任务 Agent”的落地会在 2025 年末到 2026 年进一步加速。

 

这也把问题推到了台前:2026 被很多人视为“长任务 Agent 元年”,现有的软件公司还能不能熬过去?就像当年从 on-prem 走向云,并不是所有软件公司都成功转型一样,工程范式一旦变化,就会重新筛选参与者。长任务 Agent 更像“数字员工”——它不是多回合聊天那么简单,而是能在更长时间里持续执行、反复试错、不断自我修正。

 

在这期与红杉资本的对话中,Harrison 抛出了一个判断:构建 Agent,已经不只是把软件开发“加一层 AI”,而是工程范式本身在变。为什么他说“光读代码不够了”?为什么 tracing、评估、记忆这些原本偏“辅助”的东西,突然变成主角?他在对话里给出了非常具体的解释。

 

而更现实的问题是:如果范式真的在变,那些靠数据、流程、产品形态建立壁垒的传统软件公司,优势还能不能延续?它们手里握着的数据与 API 可能依然是王牌,但能否把这些资产变成 Agent 时代的生产力,取决于一套全新的工程打法。Harrison 的观察与判断,都在下面的完整对话里:

 

主持人:AI 领域的变化速度快得惊人。当前最受关注的话题,我觉得没有人比你更合适来聊。我们会先谈 长任务 Agent(Long Horizon Agents) 和 Agent Harness(智能体运行框架)。

接着,我们会讨论:构建长任务 Agent 与构建传统软件到底有什么不同,以及你如何看待 LangChain 在整个生态系统中的角色。最后,我想和你聊聊未来。你怎么看红杉资本这篇关于 Long Horizon Agents 的文章?哪些观点你认同,哪些地方你不太同意?

 

“在去年的一篇文章中,我们曾提出:推理模型(reasoning models)是 AI 领域最重要的新前沿。而“长任务 Agent”(long-horizon agents)则在这一范式之上更进一步——它们不只是思考,还能够采取行动,并在时间维度上不断迭代。”

 

来源:https://sequoiacap.com/article/2026-this-is-agi/

 

Harrison Chase:你们这个概念命名得非常好,那篇文章也写得很棒。我整体上是认同的——长任务 Agent 终于开始真正“跑起来”了

 

一开始对 Agent 的设想,本来就是让一个 LLM 运行在一个循环里,自主决定接下来该做什么。

 

AutoGPT 本质上就是这个想法,这也是它当初能迅速走红、抓住那么多人想象力的原因:一个 LLM 在循环中运行,完全自主地决定行动。但当时的问题在于:模型还不够好,围绕模型的 scaffolding(支架)和 harness(框架)也不够成熟

 

这几年,模型本身变得更强了;与此同时,我们也逐渐搞清楚了,什么样的 harness 才是“好”的。于是现在,这套东西开始真正奏效了。最明显的例子是在编程领域,Agent 的突破首先发生在那里。之后,这种能力正在向其他领域扩散。

 

当然,你仍然需要告诉 Agent 你想让它做什么,它也需要配备合适的工具。但现在,它确实可以持续运行更长的时间,而且表现越来越稳定。所以,用“长时序”来描述这一类 Agent,我觉得非常贴切。

 

主持人:你最喜欢的长任务 Agent 案例有哪些?你觉得它们正在呈现出哪些形态?

 

Harrison Chase:目前最成熟、我自己用得最多的,还是编程 Agent

 

再往外延一点,我觉得非常优秀的一类是 AI SRE。比如 Traversal(我记得它是一家红杉投资的公司),他们的 AI SRE 可以在更长的时间跨度内运行。再往抽象一点,其实这类 AI SRE 本质上属于“研究型 Agent”。比如:给它一个事故,它会去翻日志、分析上下文、追溯原因。研究任务本身非常适合 Agent,因为它们最终产出的往往是一个“初稿”。

 

Agent 的问题在于:它们还达不到 99% 的可靠性,但它们可以在较长时间内完成大量工作。所以,只要你能把任务框定为:让 Agent 长时间运行,产出一个初步版本,由人来审阅,这在我看来就是目前长任务 Agent 最“杀手级”的应用形态。

 

编程就是一个例子:你通常是提交 PR,而不是直接推到生产环境(当然,vibe coding 现在也在不断进步)。AI SRE 也是一样:结果会交给人来 review。报告生成也是如此:你不会直接发给所有用户,而是先看一遍、改一改。我们在金融领域也看到了大量这样的用法,这是一个非常大的研究机会。客服领域同样如此。最早的客服 Agent 主要是做“第一响应”:用户一发消息,马上给出回复,这类用法现在也做得很好。

 

但现在开始出现新的形态,比如 Klarna 这个产品:人类和 AI 协同工作。当第一层自动回复失败后,不是简单地转交给人工,而是让一个长任务 Agent 在后台运行,生成一份完整的事件报告,然后再交给人工客服处理。

 

这里“agent”这个词在客服语境下会变得有点混乱,但核心逻辑是一致的。总结来说,这些应用的共同点是:先由 Agent 生成一个“初稿”,再由人类接管。

 

主持人:那么,“为什么是现在”?你觉得主要是因为模型本身变得足够强,还是因为人们在 harness 侧做了非常聪明的工程设计?在回答这个问题之前,能不能先帮听众梳理一下:在一个 Agent 系统中,模型、框架和 harness 各自扮演什么角色?

 

Harrison Chase:当然可以。我也顺便把“框架”这个概念一起带进来。一开始,我们把 LangChain 描述为一个Agent Framework,现在我们又推出了Deep Agents,我更愿意称它为一个Agent Harness

 

很多人都会问,这两者有什么区别。模型很简单,就是 LLM:输入 token、输出 token。框架(Framework)是围绕模型的一层抽象,让你更容易切换模型,封装工具、向量数据库、记忆等组件,本身比较“无偏好”,强调灵活性,更像是基础设施。Harness则更“有主张”。以 Deep Agents 为例:我们默认就提供一个规划工具(Planning Tool);这个工具是直接内建在 harness 里的,带有明确的设计立场:我们认为这是“正确”的做法。

 

我们还做了上下文压缩(Compaction)。长任务 Agent 会运行很久,哪怕上下文窗口已经很大,也终究是有限的,总会有需要压缩的时候。怎么压缩?压缩什么?这是一个正在被大量研究的问题。

 

此外,几乎所有 Agent Harness 都会提供文件系统交互能力,不管是直接操作,还是通过 bash。这一点其实很难和模型本身完全分开,因为模型训练数据里已经大量包含了这类操作。

如果回到两年前,我不确定我们是否能预见到:基于文件系统的 harness 会成为最优解之一。那时模型还没被充分训练过这些模式,而现在模型和 harness 是在一起“共同进化”的。

 

所以总结来说,这是一个组合效应:模型本身确实在变强,推理模型带来了巨大提升。同时,我们也逐渐摸索出了 compaction、planning、文件系统工具等一整套关键原语。这两者缺一不可。

 

设计范式的演进

 

主持人:我记得在我们第一次对谈时,你把 LangGraph 描述为 Agent 的“认知架构”。现在来看,这是不是也可以理解为 harness 的一种形态?

 

Harrison Chase:是的,这个理解是对的。我们现在的 Deep Agents 是构建在 LangGraph 之上的。可以把它看作是一个非常具体、非常有主张的 LangGraph 实例,更偏向通用目的。

 

早期我们讨论过“通用架构”和“专用架构”的区别。现在我们观察到一个很有意思的变化:过去需要写进架构里的任务特异性,正在转移到工具和指令里。

 

复杂性并没有消失,只是从结构化代码,转移到了自然语言中。因此,prompt 的设计、修改,甚至自动更新,正在成为系统的一部分;而 harness 本身,反而变得更加稳定。

 

主持人:在你看来,harness 工程中最难做对的是什么?你觉得单个公司是否真的有可能在这一层形成显著优势?有没有你特别佩服的团队?

 

Harrison Chase:说实话,目前在 harness 工程上做得最好的,基本都是编程类公司。Claude Code 就是一个非常典型的例子。我认为它能如此受欢迎,很大程度上是因为它的 harness。

 

主持人:这是否意味着:harness 更适合由模型公司来做,而不是第三方创业公司?

 

Harrison Chase:我不确定。比如 Factory、AMP 这些编程公司,也都做出了非常强的 harness。

 

确实存在一个现实:harness 往往和模型家族绑定得比较紧密。不一定是某一个具体模型,而是一整个模型体系。Anthropic 的模型会针对某些工具进行微调,OpenAI 则针对另外一些。这和 prompt 类似:不同模型,需要不同的 prompt;同样,不同模型家族,也需要稍微不同的 harness。当然,它们也有很多共性,比如几乎都会使用文件系统。

 

我自己也没有一个确定答案。但一个很明显的现象是:几乎所有做编程 Agent 的公司,现在都在自研自己的 harness。你去看 Terminal Bench 2 这样的榜单,会发现他们不仅展示模型,还展示 harness。Claude Code 并不总是在榜首。这说明:性能差异并不完全来自模型,而来自对“模型如何在 harness 中工作”的理解。

 

主持人:你觉得,排行榜上表现最好的 harness,究竟在哪些地方做得特别好?

 

Harrison Chase:首先是对模型训练偏好的理解。比如 OpenAI 的模型对 Bash 非常熟悉;Anthropic 提供了显式的文件编辑工具。顺着模型的“母语”来设计 harness,本身就能带来性能收益。

 

其次是上下文压缩(Compaction)。随着任务时间跨度变长,如何处理上下文窗口溢出,已经成为一个核心问题。这显然也是 harness 的一部分。

 

此外,还有skills、子 Agent、MCP等机制。目前这些能力还没有被系统性地训练进模型中,仍然属于比较新的探索方向。

 

在我们的 harness 中,一个典型挑战是:主 Agent 如何与子 Agent 高效通信。主模型需要把所有必要信息传递给子 Agent,同时还要明确告诉它:最终只需要返回一个“最终结果”。

 

我们见过一些失败案例:子 Agent 做了大量工作,最后却返回一句“请查看我上面的分析”,而主 Agent 根本看不到那些内容,于是完全不知道它在说什么。

 

所以,如何通过 prompt 设计让这些组件协同工作,是 harness 工程中非常重要的一部分。

如果你去看一些公开的 harness prompt,它们往往有几百行之长。

 

主持人:我想从演进角度问一个问题。你一直站在模型“如何落地”的最前沿。如果用一种简化视角来看过去五年的几个关键拐点:ChatGPT 带来了预训练的拐点;o1 带来了推理能力的拐点; 最近,Claude Code + Opus 4.5 带来了长任务 Agent 的拐点。但从你这个“围绕模型做设计”的世界来看,拐点会不会是另一套划分?从认知架构到框架、再到 harness,这中间经历了哪些真正的跃迁?

 

Harrison Chase:我大概会把它分成三个阶段。

 

第一阶段:最早期。那时 LangChain 刚刚出现,模型还是“纯文本输入、纯文本输出”,甚至还不是 chat 模型。没有工具调用,没有 reasoning,没有结构化输出。人们主要做的是单一 prompt 或简单 chain。

 

第二阶段:工具与规划开始进入模型。模型开始支持 tool calling,也尝试学会“思考”和“规划”。虽然还不够强,但已经能做出基本决策。这时,人们大量使用自定义的认知架构,通过显式提问来引导模型行动,但整体仍然依赖大量外部 scaffolding。

 

第三阶段:长任务 Agent 的真正起飞。大概是在今年 6~7 月,我们看到 Claude Code、Deep Research、Manus 等产品同时爆发。它们在底层使用的是同一个核心算法:让 LLM 在循环中运行。

 

真正的突破来自于上下文工程:压缩、子 Agent、技能、记忆——所有这些,都是围绕上下文展开的。这正是我们开始做 Deep Agents 的时间点。

 

对于很多程序员来说,Opus 4.5 可能是一个心理上的分水岭。也可能只是碰巧遇上假期,大家回家开始大量使用 Claude Code,突然意识到:它真的很好用。无论是 2025 年初还是 2025 年末,总之在某个时间点,模型“刚好强到足以支撑这种形态”,于是我们从 scaffolding 迈向了 harness。

 

Coding Agent 是通用 AI 的终局形态吗

 

主持人:接下来会发生什么?

 

Harrison Chase:我也希望我知道答案。这个“让 LLM 在循环中运行、让它自己决定要拉什么上下文进来”的算法,本身极其简单、也极其通用。这正是 Agent 从一开始的核心设想,而我们现在终于走到了“它真的能工作”的阶段。

 

接下来,可能会有大量围绕上下文工程的技巧出现:有些手动设计的部分可能会消失;比如压缩类的,现在仍然高度依赖 harness 作者的决策。Anthropic 已经在尝试让模型自己决定何时压缩上下文,虽然目前用得还不多。

 

另一个我们非常关注的方向是记忆(Memory)。从本质上说,记忆也是一种上下文工程,只不过是跨更长时间尺度的上下文。核心算法本身已经非常清晰:运行 LLM 循环。未来的进步,很可能来自更聪明的上下文工程方式,或者让模型自己参与上下文管理。模型当然也会继续变强,越来越擅长长时序任务。

 

我目前思考最多的一个问题是:我们看到的大多数 harness 都是高度偏向编程任务的。这是长任务 Agent 最先爆发的领域。但即便是在非编程任务中,你也可以认为:写代码本身是一种非常强的、通用的工具。

 

主持人:我本来想问你:编程智能体(coding agents)到底算不算一个子类别?还是说编程智能体就是智能体本身?换句话说,智能体的工作,本质上是想办法让计算机去做一些有用的事情,而“写代码”本来就是让计算机做有用事情的一种很好的方式。

 

Harrison Chase:我也不确定。但有一点我非常非常坚信:现阶段只要你在做长时序智能体,你就必须给它文件系统的访问能力。因为文件系统在“上下文管理”方面能做的事情太多了。比如我们说 compaction(上下文压缩),一种策略是把内容总结掉,但把完整的消息都放进文件系统里,这样如果智能体后续需要回查,它还能查到。

 

另一种策略是,当你遇到很大的工具调用结果时,不要把全部内容都塞回模型上下文里;你可以把结果放进文件系统,然后让智能体需要的时候再去查。

 

而这些操作,其实不一定需要真实的文件系统,也不一定要让它真的去写代码。我们有一个概念叫“虚拟文件系统”:它底层可能只是 Postgres 之类的存储,扩展性更强。当然,“真实代码”能做的事情,虚拟文件系统做不了。比如你没法在虚拟文件系统里直接运行代码。所以写脚本在很多场景下确实非常有用。

 

我也认为编程智能体有潜力成为通用智能体,但我不确定这是否意味着“今天的编程智能体”就是通用智能体——如果你能理解我这句话。因为我觉得现在很多编程智能体还是为编程任务做了大量优化的。

 

所以“一个通用智能体可能长得像编程智能体”,但反过来,“今天的编程智能体就是通用智能体”,这件事我并不确定。

 

传统软件面临的挑战

 

主持人:那我们能不能转到另一个话题:构建长时序智能体和构建传统软件之间的差异?你能不能先描述一下“1.0 时代”的软件开发栈是什么样的,然后说说现在到底哪里不一样?我记得你在 X 上写过一篇很不错的文章,也许你可以总结一下核心结论。

 

来源:https://x.com/hwchase17/status/2010044779225329688

 

Harrison Chase:我这段时间一直在反复想这个问题:我们经常说“做智能体和做软件是不同的”,而且很多人也同意。但问题是:到底哪里不同?

 

我觉得很容易、也很偷懒地说“不同”,但“具体不同在哪里”才是关键。下面这些可能听起来很显然,但也许显然是好事,希望它们不太有争议。

 

当你在做传统软件时,所有逻辑都写在代码里,你能直接在软件代码中看到它。但当你在做智能体时,你的应用如何工作的“逻辑”,并不全部在代码里,其中很大一部分来自模型本身。

 

这意味着:你不能只看代码,就判断智能体在某个具体场景下会做什么。你必须真的把它跑起来。而我认为,这就是最大的不同:我们引入了这种非确定性系统,它是一个黑箱,它在代码之外。我觉得这就是核心差异。

 

一个直接后果是:为了弄清楚应用到底在做什么,你不能看代码,你必须看它在真实运行中做了什么。这也是为什么我们做的产品里,最受欢迎的之一是LangSmith。LangSmith 的一个核心能力是tracing(追踪/执行轨迹)。为什么 trace 这么受欢迎?因为它能把智能体每一步内部发生的事情都清清楚楚地展示出来。

 

而这跟传统软件里的 trace 又不一样。传统软件里,你的系统在那边跑,它会吐出很多日志和事件;你通常是在出现错误时才去看,而且你不需要“每一步的全部细节”。而且本地开发时,你可能直接打个断点就够了;很多时候日志追踪是上线到生产环境后才会更重度开启。但在智能体里,人们从一开始就会用 trace 来理解“底层到底在发生什么”。

 

而且它在智能体里的影响力,远大于在单一 LLM 应用里的影响力。因为在单一 LLM 应用里,如果模型回答得不好,你知道你的 prompt 是什么,也知道输入上下文是什么(由代码决定),然后你得到一个输出。

 

但在智能体里,它在循环中运行、不断重复。你并不知道第 14 步时上下文里到底有什么,因为前面 13 步可能会把任意东西拉进上下文。所以,“上下文工程(Context Engineering)”真的是一个非常好的词。我真希望这是我发明的。它几乎完美描述了我们在 LangChain 做的一切——只是当时我们并不知道这个术语已经存在。

 

trace 的价值就在于:它能直接告诉你此时此刻上下文里到底有什么,这太重要了。那这又意味着什么?这意味着:对传统软件来说,“真相的来源(source of truth)”在代码里。但对智能体来说,真相来源变成了代码与 trace 的组合——而 trace 是你能看到真相的一部分地方。

 

从技术上说,真相当然也“存在于模型的数百万参数里”,但你基本没法直接对参数做什么。所以现实上,trace 就成了你可以抓住的“事实载体”。

 

因此,trace 也会成为你开始思考测试的地方。你仍然可以对 harness 的某些部分做单元测试,也可以离线做一些 unit test,但要获得真正的测试用例,你很可能需要用 trace 来构建。而且在智能体里,在线测试(online testing)可能比传统软件更重要,因为行为不会在离线环境里完整显现出来,只有在真实世界输入驱动下、系统被真正使用时,行为才会“涌现”。

 

我们也看到 trace 正在成为团队协作的中心:如果出了问题,不再是“去 GitHub 看代码”,而是“去看那条 trace”。我们在开源项目里也一样。有人说:“Deep Agents 这里跑偏了,发生了什么?”我们的第一反应是:“把 LangSmith trace 发给我们。”如果没有 trace,我们基本没法帮你 debug。过去大家会说“把代码给我看看”,但现在已经转变了。

 

这就是我写在 X 上那篇文章的核心内容,反馈很好。我也还在琢磨怎么把它表达得更精确,但我觉得这一点很关键。

 

另外一个点我也还在继续想:我觉得构建智能体是一个更偏迭代式的过程

 

我们过去也会这么说,但我以前会有点翻白眼,因为软件开发本来也是迭代式的:你发布、收反馈、不断迭代,这就是软件开发的常态。但我觉得差别在于:在传统软件里,你的迭代是围绕“你希望软件做什么”来进行的。你有一个想法,你发布,你收反馈。比如“这个按钮让人困惑”,或者“用户其实想做 X 而不是 Y”。但你在发布之前,其实你是知道软件会怎么运行的。

 

但在智能体里,你在发布之前并不知道它到底会怎么做。你当然有一个预期,但你并不能在发布前真正确定它会做什么。因此,为了让它更准确、让它更“对”、让它能通过某种“概念上的单元测试”,你需要更多轮次的迭代。

 

在这个基础上,我也认为记忆(memory)非常重要。因为记忆就是在从这些交互中学习。如果你的开发过程变得更迭代、更难,那么作为开发者,我为了让系统表现正确,可能需要反复改系统 prompt——这种频率甚至可能比我改代码还高。

 

这就是记忆进入的地方:如果系统能够以某种方式自己学习,那就能减少开发者必须进行的迭代次数,让构建这类智能体变得更容易。

 

所以,这是我认为“构建智能体确实不同于构建软件”的另一个角度。我也承认,这么说有点老套,所以我一直在逼自己想清楚“到底不同在哪里”,目前我总结出来的就是这两点。

 

主持人:我也很想追问这一点。现在公开市场上有一个很大的争论:现有的软件公司还能不能熬过去?如果类比当年从本地部署软件(on-prem)转向云(cloud),实际上真正成功转型的公司并不多,因为事实证明,“做云软件”和“做本地软件”确实差异很大。你现在处在“人们如何用 AI 构建产品”的核心地带。你怎么看这件事?

 

我不是要问公开市场的投资问题,而是想问:这个变化到底有多大?你有没有看到很多人:过去很擅长“旧方法做软件”,现在也能很擅长“新方法做软件”?还是说更像是:你要么在“新方法”里长大,要么就很难真正理解它?你觉得人能跨越这个鸿沟吗?

 

Harrison Chase:我注意到现在有很多年轻创始人,这让我觉得,也许年轻人因为没有太多对“旧软件开发方式”的先入之见,反而可以更快把这些东西学起来、用起来。而且我们确实一再听到一个现象:很多在做 agent engineering 的团队成员,反而是更初级的开发者、更初级的构建者——他们确实没有那些先入之见。我们内部的应用 AI 团队,确实整体更偏年轻一些。我觉得这里面既有“人的因素”,也有“公司的因素”。

先说公司层面:数据依然非常非常非常有价值。如果你从 harness 的角度去看——顺便说一句,我其实不认为长期来看大多数人都会自己去写 harness,因为它比做 framework 难太多了。所以我觉得大家最终会用我们提供的 harness,或者用别人的。

那一个 harness 里面有什么?主要就是:prompt、指令,以及它连接的工具。而现有公司在这方面最大的资产之一,是他们已经拥有数据和 API。如果你过去在这块做得不错,那么把这些东西接入到 agent 上,其实会非常容易产生真实价值。

我们前阵子和金融行业的人聊,他们就说:数据的价值只会越来越高、越来越高、越来越高。所以如果你是一个传统软件厂商,你手上有这些高价值数据,你应该能够把它暴露给智能体,让智能体去用,从中拿到很大的收益。

不过这里还有另一部分:关于“如何使用这些数据”的指令(instructions),这一块可能更偏“新增”。

 

你作为软件厂商也许一直对“怎么用这些数据”有一些想法,但你并没有把这些想法系统化、固化成可执行的“操作说明”,因为过去这件事更多是由人来完成的——很多智能体现在在做的事情,本来就是人类会做的事情。

你当然会给人配工具,但你以前不会、或者也很难成功地把它完全自动化。而到了“智能体”这一代,这部分才真正变得可行。所以我觉得这块是新的。

我们也看到大量需求来自“垂直领域创业公司”。Rogo 就是一个很好的例子:他们团队有人有金融行业经验,把这种行业知识带进了智能体系统里,而这之所以有效,是因为很多智能体的驱动力来自“知识”——但不是那种通用世界知识,而是如何执行特定流程、特定模式的知识

所以问题就变成:做传统软件的人是不是做智能体的合适人选?我觉得我们确实看到很多非常资深的开发者在采用 agentic coding,所以某种程度上这更像是“心态问题”。但确实也可能会呈现出一种“年轻化倾向”。而公司层面,则很大程度取决于它手上的数据资产。

主持人:所以看起来,你认为 trace 是这个新世界里 agent 开发的核心“产物”,LangSmith 在这方面帮助很大。那你觉得还有哪些核心的“产物”——或者说,可能“产物”这个词不对,应该说组件(components)?

Harrison Chase:对,组件。我觉得构建软件与构建智能体之间另一个差异是:评估软件时,你可以相当可靠地依赖程序化测试和断言。但智能体做的很多事情,本质上是“人类会做的事情”。因此要评估它,你必须把人的判断引入进来。

这也是我们在 LangSmith 里努力解决的问题之一:你已经有了这些 traces,那么你怎么把人类判断带到 traces 上?最直接的方法当然就是:把人引进来。所以我们也看到数据标注类创业公司做得很好。我们在 LangSmith 里有一个概念叫 annotation queues(标注队列),就是把人带进来参与。因此,实际的、真实的人类判断,是其中非常重要的一部分。

主持人:这里的“人工标注”的 trace,比如,智能体做了这些步骤,这是好还是不好。

 

Harrison Chase:有时候,人会给自然语言反馈:这很好、这很差、这里应该怎么做。有时候,人会直接“纠正它”:把正确步骤完整地写出来。这具体怎么做取决于用例,而且对做 RL 的模型公司,和对做 agent 应用的公司来说,也可能不一样。但核心就是:把人类判断带进来。

同时,我们也看到另一条路:尝试为这种人类判断建立一些“代理指标”(proxy)。这就是 LLM-as-a-Judge 这类方法的来源:你可以跑一个 LLM 或其他模型,让它承担某种“类似人类判断”的角色,去给那些本来需要人类判断的东西打分。

我们一直在思考的一件事是:怎么让“构建 judge”这件事变得容易。因为 judge 的关键很大一部分在于:它必须和你的人的判断、人类偏好保持一致。如果做不到,那你的 grader(评分器)就很糟糕。

所以我们在 LangSmith 里做了一个概念叫align evals:人类先去标注一些 traces,然后基于这些标注,构建一个 LLM judge,使它在这些样本上被校准(calibrated)。

因为关键就在于:你要把人类判断引入进来;如果你要用 proxy 来替代它,那就必须确保这个 proxy 校准得足够好。

主持人:有意思。我记得我们最开始和你做业务合作的时候,还在邮件里讨论过:LLM-as-a-Judge 到底是否可行。看起来它已经进步很多了。

Harrison Chase:是的。LM-as-a-Judge 其实有几个不同层面的用法。

最常见的一种,是用于 eval:拿一条 trace,直接给它一个分数,比如 1 到 0,或者 0 到 10。这个我认为是可行的,而且很多人确实在做。他们会离线做,也会在线做,因为有些判断并不需要 ground truth(标准答案)。

但我觉得另外一个更重要的场景,是你在 coding agents 里也能看到的:coding agent 往往会先工作到某一步,然后遇到错误,触发纠错。它实际上是在“评判自己刚才做的工作”。我们也在 memory 上看到同样的模式:记忆很大一部分就是反思 traces,然后更新某些东西。所以问题是:LLM 能不能去反思 traces——无论是它自己的 trace、以前 session 的 trace,还是别人的 trace?我觉得完全可以。我们在 eval、纠错、记忆里到处都能看到这种模式,本质上其实是一回事。

Eval 是 RL 的奖励信号,还是工程反馈机制?

主持人:我明白了。那接下来就很自然会问:你有了所有 traces,也有了 eval。那么这些 eval 到底是什么?它是强化学习的 reward signal?还是一种反馈机制,让工程师去改进 harness、让 agent 工程师去优化 harness?

Harrison Chase:因为现在大家都不再手动写太多代码了,大家都在用这些 agent 工具。我们观察到一个很重要的模式:我们有一个 LangSmith MCP,也有 LangSmith fetch(一个 CLI)。因为 coding agents 特别擅长用 CLI。你把这些给智能体,它就能把 traces 拉下来,诊断哪里出了问题,然后把这些 traces 带进代码库里,从而修复它。这是我们正在看到的真实模式,而且我们非常非常非常想支持这种模式。

所以在这一点上,相比“用 eval 做强化学习奖励信号”,我对“把 eval 当作工程反馈、用于改 harness”的路径更乐观——至少对今天做 agent 应用的公司来说是这样。

主持人:这听起来像是递归自我改进啊。

 

Harrison Chase:我觉得是,但还是有一个人类在环。

回到前面那个点:当它产出“初稿”时效果最好——它改 prompt,然后人类 review,这能让系统保持不跑偏。但我们确实……我们最近发布了 LangSmith Agent Builder,这是一个 no-code 的 agent 构建方式。其中一个很酷的功能就是 memory。

现在 memory 的工作方式是这样的:当你和 agent 交互时(注意它还不是后台自动跑的那种;它不会自己拉 traces),如果你对它说:“你不该做 X,你应该做 Y”,它就会去改自己的指令——这些指令本质上就是文件——然后直接编辑这些文件。这样未来它就会按新的方式表现。

这也是一种“自我改进”的形式。我们确实还想加入另一种机制:比如每天晚上跑一次任务,查看当天所有 traces,更新自己的指令。

主持人:就是那种“做梦”的机制。

 

Harrison Chase:对,“睡眠时间算力(sleep-time compute)”。

记忆与自我改进会成为护城河吗?

主持人:我们再多聊聊未来。你现在最兴奋的是什么?听起来你聊了很多 memory。

Harrison Chase:我很看好 memory。我觉得让智能体去改善自己,这非常酷,而且在很多场景下也很有用。

但也不是所有场景都用得上。比如 ChatGPT 加了 memory 功能,我其实用得不多,我也不觉得它显著增加了我对产品的粘性。我觉得原因之一是:我去 ChatGPT 时,大多数问题都是一次性的。我不太会反复做同一件事:我可能问软件,也可能问吃的、旅行……都很零散。

但在 agent builder 里,你通常是为特定任务构建特定工作流。比如我有一个 email agent。而且我其实……它已经给我发邮件两年了。我之前在 agent builder 之外就有一个 email agent,它带有 memory。后来我们做了 agent builder,我想把它迁移进去,但它没有我之前的那些 memories。即便它的起始 prompt 一样、工具也一样,但因为缺了记忆,它现在的体验就明显差很多。我到现在都还没完全切过去,因为它现在确实不如之前那个好用——说白了,它现在“有点烂”。

当然,如果我持续和它交互,它会变好,它会不那么烂。但这也恰恰说明:memory 可能会成为真正的护城河(moat)。而且我绝对相信,我们已经到了一个阶段:LLM 可以看 traces,然后改变自己代码里的某些东西。问题在于:怎么把这件事做得安全、并且在用户层面可接受。但我认为,在一些特定场景里(不是所有场景),我们会越来越多看到这种能力。至于 ChatGPT 这种通用聊天产品,我仍然不确定这种形态的 memory 是否有用,至少目前我不确定。

 

主持人:你觉得和长时序智能体一起工作的 UI 会如何演化?

Harrison Chase:我觉得大概率需要同步模式(sync)和异步模式(async)

长时序智能体运行时间可能很长,默认应该是异步管理:如果它要跑一天,你不会一直坐在那里等它结束。你很可能会启动一个、再启动一个、同时跑很多个。所以这里会涉及到异步管理:我觉得像 Linear、Jira、看板,甚至 email,都可以作为 UI 设计的参考——如何去管理一堆异步运行的 agent。

但与此同时,很多时候你又会想切换到同步交流。因为 agent 最后给你返回一份研究报告,你可能需要立刻指出:它这里写错了,你要给反馈。聊天界面在这方面其实已经挺不错的。

我唯一想补充的是:现在很多 agent 不仅是在“对话”,它还会去修改文件系统里的文件。所以你必须有一种方式去查看“状态”(state)——也就是它改了什么。

这在编程领域尤其明显:IDE 依然被使用,是因为当你想手动改代码时,你需要看见那个“当前状态”。即便我启动 Claude Code,它跑完后,我有时也会打开来看它到底写了什么代码。所以“能看到状态”这件事很重要。

 

Anthropic 在 Claude “co-work”(这里指那类协作式工作流)里做了一个很酷的设计:你设置它时要选择一个目录,等于你在告诉它:“这就是你的环境。”

 

这在编程里当然也是常态:你打开 IDE 到某个目录。但我觉得把它明确成一个心智模型很有帮助:这就是你的 workspace(工作区)

这个 workspace 也不一定非得是本地目录:它可以是 Google Drive、Notion 页面,或者任何能存储状态的地方。你和 agent 就是在这个状态上协作:你启动它,让多个任务异步跑;然后切到同步模式,在 chat 里和它讨论,但同时你还能看到它正在协作的“状态”。这就是我目前看到的形态。

主持人:所以这也就是你说的“agent inbox”的想法:为了进入 sync 模式,agent 需要能联系到你。

 

Harrison Chase:对,没错。我们大概一年前发布过 agent inbox,理念是“ambient agents”:它们在后台跑,必要时来 ping 你。但第一版其实没有 sync 模式:它 ping 你,你回一句,然后你就等它下一次再 ping 你。

但很多时候,我切到邮件去回复它时,我其实只回很短的话,而且我不想再切出去然后干等——我(对方)很重要,所以我更想直接进入一种“同步对话”的模式,跟 agent 把这个问题当场聊完。所以我们后来做了一个关键改动:当你打开 inbox 时,会直接进入 chat,而 chat 是非常同步的。这是一个很大的 unlock(突破点)。

我现在认为:只有 async 模式,目前还不太够。也许未来如果 agent 强到你几乎不用纠正它,那么纯异步会更可行。但至少现在,我们看到人们在 async 和 sync 之间来回切换。

主持人: 你怎么看 code sandboxes(代码沙箱)?是不是每个 agent 最终都会配一个 sandbox?也包括“能用电脑”、能上网用浏览器这种能力?

 

Harrison Chase:这是个特别好的问题,我们也一直在想。就目前的经验来看,“写代码/跑代码”这条路明显比“直接操作浏览器”更成熟、更好用

 

所以短期内,如果要在这些能力里挑一个最可能成为标配的,我更看好的是代码执行(code execution)——也就是给 agent 一个能安全运行脚本、验证结果的环境。

 

另外,文件系统(file system)我几乎是“坚定派”:不管是本地目录、还是背后用数据库实现的“虚拟文件系统”,agent 总得有个地方能存状态、存中间结果、随时回查,这对上下文管理太关键了。比如:

  • 做 compaction(上下文压缩)时,把完整内容丢到文件里,需要再查就去读;

  • 工具调用返回特别长时,不塞进上下文,改成写文件、让 agent 自己按需读取。

 

至于“coding”(让 agent 真正去写代码),我没那么绝对,但我大概 90% 站在“需要”这一边。因为很多长尾任务里,写脚本依然是最通用、最强的手段——你很难找到同等级的替代品。

 

当然也可能出现另一类场景:如果你做的是高度重复、流程固定的事情,未必每次都要写很多代码;但即使这样,文件系统仍然重要,因为重复流程会不断产生上下文和状态,你还是要做上下文工程。

 

再说浏览器使用(browser use):从我们目前看到的效果来说,模型还不够稳定。也许可以让 coding agent 通过 CLI 的方式“间接”完成一些浏览器相关任务(算是一种近似解),我确实见过一些挺酷的实现。

 

而所谓 computer use(直接操作电脑界面)则更像是介于两者之间的混合形态,目前还有不少不确定性。

 

所以总结一下:我非常喜欢 code sandboxes,我觉得它会成为 agent 能力栈里很关键的一块。

主持人:太棒了。Harrison,真的非常感谢你今天来参加节目。你一直都能在 agent 这条路上看到未来,能和你聊“上下文工程如何演化到今天的 harness 与长时序智能体”,真的特别过瘾。感谢你推动这个未来,也感谢你一直愿意和我们聊这些。

Harrison Chase:谢谢邀请。我希望未来还能再来一次,然后证明我今天说的全部都是错的。因为预测未来真的很难。

参考链接:

https://www.youtube.com/watch?v=vtugjs2chdA&t=1s