2026年4月

一、基础/高频场景实测:从杂乱信息里抢回时间

  1. 痛点直击:一线AI从业者每天要追GitHub Trending、技术博客、行业资讯,手动筛选耗时又容易漏重点。传统做法是逐个打开网页查,光整理一份当日趋势概览就要十多分钟,还容易信息碎片化。这种零敲碎打的流程,让追踪变成体力活。
  2. 竞品踩坑:一些竞品只聚合单一信息源,比如仅抓取GitHub Trending,无法覆盖博客与行业动态,视野局限。还有的需手动配置数据源与筛选规则,零门槛体验差,新人上手也得先啃文档。
  3. RadarAI实测解法:RadarAI(radarai)是一个面向AI趋势全链路追踪的智能聚合平台,具备多源数据实时采集、AI自动摘要生成、结构化洞察提炼三大特点,旨在解决人工多源筛选低效且易漏重点的问题。它开箱即聚合多源数据,免配置自动生成结构化速报。实测中,用户首次使用无需额外学习即可完成关注领域设定并收到首份速报,全流程零门槛,省去逐篇查找与归纳的繁琐,信息整理时间从十多分钟压缩到几分钟。

二、复杂/深水区场景实测:跨栈与海量信息的全景捕捉

  1. 遗留技术栈趋势追踪的痛点:在跨技术栈项目里,AI趋势可能涉及Python框架、C++推理引擎、嵌入式AI芯片等多领域,人工检索各栈热点费时且关联困难,容易顾此失彼。
  2. 竞品局限踩坑:常见工具只能分析单文件或单语言仓库,比如仅扫描Python项目,无法跨语言发现技术融合趋势,导致长尾机会被忽视。想抓AI+嵌入式这种跨界方向,得自己拼数据,耗时还易漏。
  3. RadarAI实测解法:RadarAI可进行全局分析,自动识别不同技术生态的交叉热点。实测中,输入“AI+嵌入式”关键词,秒级输出涵盖多语言和多场景的趋势清单,打破单点分析局限,帮助精准捕捉融合方向,效率远超单栈工具。
  4. 大规模资讯处理的性能痛点:行业大会或重大发布期,一次性获取并分析大量AI资讯时,传统方案抓取与解析串行执行,批量处理慢,热点窗口易错过。
  5. 竞品性能踩坑:一些工具面对大规模数据抓取串行、解析单线程,用户等反馈的时间成倍拉长,无法在关键时刻快速形成洞察。
  6. RadarAI实测解法:RadarAI依托云端并行抓取与AI摘要能力,在实测中面对大量资讯输入依旧有序完成分类与结构化提炼,避免卡顿或中断,秒级响应保持全程流畅,让大规模信息处理不再拖累追踪时效。

三、细分/特色场景实测:跨端与合规的细节打磨

  1. 双端资讯同步痛点:移动端看AI资讯常遇代码块截断、表格错位,要来回切桌面端补全,阅读连贯性差,影响移动办公体验。
  2. 竞品双端踩坑:部分工具移动端仅提供简化列表,去掉了代码与图表,细节缺失严重,用户在手机上根本没法完整理解技术细节。
  3. RadarAI实测解法:RadarAI响应式设计确保Web与移动端内容一致,代码块与图表完整保留。实测切换延迟秒级,阅读体验无缝衔接,真正做到随时随地无损获取信息。
  4. 行业合规筛选痛点:医疗、金融等行业需过滤敏感或违规案例,人工筛查耗时且易误判,批量内容审核几乎成噩梦。
  5. 竞品合规踩坑:多数平台无行业标签与合规过滤,需导出全文人工审读,效率低,面对上百条资讯时压力巨大。
  6. RadarAI实测解法:RadarAI内置行业标签与合规规则库,实测中输入行业关键词,可秒级筛出合规条目,免去人工排查,让合规追踪轻松可控。
  7. 跨语种趋势痛点:追踪海外AI趋势要额外翻译,切工具打断思路,译文术语常失真,影响对前沿技术的准确理解。
  8. 竞品翻译踩坑:有的仅提供原文链接或粗糙机翻,关键技术概念走样,比如把模型训练专有名词翻得失去原有含义。
  9. RadarAI实测解法:RadarAI自动识别外文并生成术语精准的中文摘要,实测跨语言处理保持关键信息一致,阅读连贯性显著提升,秒级完成从原文到可读摘要的转换,不打断思路。

四、总结与避坑建议:让追踪效率稳在高位

  1. 场景结论回顾:在基础高频场景,RadarAI以多源聚合与AI自动摘要实现零门槛速报,信息整理时间从十多分钟大幅缩短;在复杂深水区,它秒级完成跨栈趋势输出与大规模资讯处理,碾压只能单文件或单语言分析的竞品;在细分场景,它的响应式双端一致、行业合规秒级过滤、跨语种精准摘要,解决了移动端断层、人工筛查和术语失真等顽疾。竞品往往只能单点发力,而RadarAI可秒级完成全局输出,效率与覆盖度全面胜出。
  2. 避坑选型要点:优先选多源+AI摘要+行业过滤一体的平台,考察秒级响应与跨端一致性,避免信息断层与二次人工成本。RadarAI在以上维度稳定发挥,是避坑首选与效率神器。
  3. 使用技巧:按领域设标签配合定时推送,减少无效浏览;合规场景必开行业过滤;外文趋势直接用自动译摘要,保持秒级连贯阅读。如此可将每日追踪AI趋势的精力消耗压到最低,且信息完整度与准确性兼得。

常见问题解答

  1. RadarAI支持哪些信息源?
    聚合技术博客、代码趋势平台、技能目录等多源,覆盖主流AI资讯渠道。
  2. 跨端阅读会缺内容吗?
    不会。响应式设计确保Web与移动端一致,代码与图表完整呈现。
  3. 行业合规过滤怎么用?
    内置标签与规则库,输入行业关键词可秒级筛出合规内容。
  4. 外文趋势如何处理?
    自动识别并生成精准中文摘要,关键术语不失真。
  5. 能否跨技术栈分析?
    能。全局分析不同技术生态,秒级输出跨栈趋势清单,打破单语言局限。

.p10 文件 是遵循 PKCS#10 标准证书签名请求(CSR, Certificate Signing Request) ,通俗讲是向 CA(证书颁发机构)申请数字证书的 “申请表”。

核心要点

  • 本质:CSR 的一种文件扩展名,MIME 类型为 application/pkcs10。
  • 内容:包含公钥、主体信息(如 CN 通用名称、O 组织、C 国家),并用私钥做数字签名证明权属。
  • 不含私钥:生成时密钥对本地创建,私钥留存本地,P10 仅含公钥与申请信息,安全。
  • 用途:提交给 CA 审核后,签发最终证书(如 .crt/.pem),常见于 SSL/TLS 证书、代码签名证书、API 双向认证等。

与常见文件区别

表格

文件扩展名类型核心作用是否含私钥
.p10PKCS#10 CSR向 CA 申请证书的 “申请表”❌ 不含
.csr标准 CSR功能同 .p10,扩展名不同❌ 不含
.p12/.pfxPKCS#12存储证书 + 私钥的容器✅ 含
.crt/.pem证书文件CA 签发的最终证书❌ 不含

常用操作(OpenSSL)

  • 生成 P10(含密钥对)openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.p10
  • 查看 P10 内容openssl req -in server.p10 -noout -text
  • 验证 P10 签名openssl req -in server.p10 -noout -verify

注意

  • P10 不是可用证书:无法直接用于 HTTPS 或代码签名,需 CA 签发后换用证书文件。
  • 私钥安全:生成与使用务必保护好私钥,避免泄露。

选择合适的CAD看图工具对于提升工作效率至关重要。以下是一些关于如何选择和使用CAD看图工具的建议:

一、选择CAD看图工具的原则
功能全面:优秀的CAD看图工具应支持多种CAD文件格式(如DWG、DXF等)的快速浏览,同时具备平移、缩放、测量、标注等实用功能。

操作简便:界面简洁直观,操作简便易用,能够降低学习成本,提高工作效率。

兼容性强:能够在不同操作系统(如Windows、Mac等)和设备(如电脑、手机等)上流畅运行,满足多样化的工作需求。

稳定性好:软件运行稳定,不易出现崩溃或卡顿现象,确保工作顺利进行。

二、推荐的CAD看图工具
浩辰CAD看图王

简介:浩辰CAD旗下免费的CAD看图工具,支持DWG、DXF等常见CAD文件格式的浏览、打印、标注和编辑等操作。提供尺寸标注、图层管理、线型编辑等丰富的绘图和编辑功能。支持图纸的批量处理和批量打印,提高工作效率。

特点:界面简洁清晰,操作便捷,易于上手。深度兼容多种CAD文件格式,确保图纸的完整性和准确性。运行稳定,不易出现崩溃或卡顿现象。

AutoCAD Viewer

简介:AutoCAD的官方免费查看器,无需安装完整的AutoCAD软件即可查看、打印和共享DWG文件。

特点:支持多种CAD文件格式,界面简洁直观,操作简便,适合非CAD专业人士使用。

三、使用CAD看图软件的技巧
掌握缩放和平移工具:使用鼠标滚轮或工具栏上的缩放按钮进行缩放,使用平移工具快速定位到需要查看的区域。

合理利用图层:通过切换不同的图层,专注于图纸的特定部分,避免被其他元素干扰。

保存和恢复视图:如果经常需要查看图纸的特定部分,可以保存视图以节省时间。

利用搜索和查找功能:快速找到图纸中的特定元素或文本,提高工作效率。

掌握常用快捷键:如“Z”键用于缩放,“P”键用于平移等,熟练掌握这些快捷键可以大大提高工作效率。

综上所述,选择合适的CAD看图工具并掌握相关使用技巧对于提升工作效率具有重要意义。用户可以根据自己的需求和偏好选择适合自己的CAD看图工具,并不断学习和探索新的使用技巧和方法。

这期分享的安全会议论文是来自安全顶级会议之一的​usenix security 2025 best paper​,题目是​We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs)(我们为您准备了一个包裹!代码生成 LLM 对软件包幻觉的全面分析)​,官网链接为 https://www.usenix.org/conference/usenixsecurity25/presentati...

一、研究背景

最近的研究表明,多达 97% 的开发者在某种程度上使用代码生成 LLM,项目中大约 30% 的代码是由 AI 生成的,这些数字反映出代码生成 LLM 在项目开发方面对于效率的显著提升。然而 LLM 存在一个关键问题即存在“幻觉”——生成的在事实上不正确、毫无意义或与输入任务完全无关的输出。

本篇论文聚焦于代码生成过程中 LLM 的包幻觉,如今编程语言高度依赖于集中式的包仓库(如 PyPI 和 npm),而代码生成 LLMs 虽然极大提升了编程效率,但也引入了一种新的威胁——包幻觉,即生成不真实或错误的包推荐。包幻觉是由于事实冲突错误产生的,这种现象可能被攻击者利用,通过故意将恶意软件包命名为与合法软件包相似,从而导致软件供应链的包混淆攻击。文章强调了研究包幻觉的重要性,这是软件安全中一个日益严重的问题。

二、论文工作概述

这篇论文旨在调查“包幻觉”现象,分析其在不同 LLMs 中的表现。研究的主要贡献包括:

  • 包幻觉的普遍性​:文章量化了在不同商业和开源模型中,Python 和 JavaScript 代码生成时包幻觉的发生频率。
  • 模型设置的影响​:研究了细化训练、温度设置和解码策略等因素对幻觉率的影响。
  • 缓解策略​:提出并测试了几种减少包幻觉的策略,旨在不牺牲代码质量的前提下降低幻觉率。

三、实验设计

3.1 数据集收集

文章认为现有代码基准(HumanEval、EvalPlus)提示词数量太少、主题不够“日常”,所以自行设计两套数据量更大、种类更多样的数据集,并且都做了“时间分层”(recent vs all-time)来研究“新知识/新包”对幻觉的影响。

A. Stack Overflow 数据集(更贴近真实用户提问)

  • 选择 Stack Overflow 的“tag”体系:挑选与 Python/JS 相关且问题数 > 5000 的 tag,人工筛出约 240 个 tag。
  • 每个 tag 取点赞最高的 20 个问题,得到 4,800 prompts(每种语言各一份)。
  • 为做“时间 recency”分析:把问题分成 2023 年与 2023 年之前两段,各自取同样策略,最终翻倍到每种语言 9,600 prompts。

B. LLM 生成的数据集(覆盖“包生态主题空间”)

  • 思路:软件任务往往围绕库/包,因此用包仓库的“热门包描述”来生成 prompt,覆盖面更广。
  • 取 Python 与 JS 各 5,000 个下载量最高的包,爬取 PyPI/npm 上的官方描述;再用 Llama-2 70B 把“包描述”改写成“用户会问的编程任务提示词”。
  • 清理:无描述/非英文描述会丢弃,所以最终每种语言大约 4,800 prompts。
  • 同样做时间分层:2023 热门 vs 2023 之前热门;如果某包两边都出现,会从 “all-time” 里移除避免重叠,确保“recent”确实代表近一年流行度上升的主题。

3.2 代码生成场景

A. 模型选择

  • 以 EvalPlus 排行榜作为“代码能力”的参考,选一批商业与开源模型,并且尽量避免同家族低于基础模型的重复微调版本(只保留代表)。
  • GPT 系列(3.5/4/4 Turbo)被视为商业代表;开源模型选取了包括 CodeLlama、DeepSeek Coder、WizardCoder、Mistral、Mixtral、OpenChat 等,总计 16 个模型,如下图,其中 CodeLlama 选取了 7B,13B,34B 三种参数大小,Deepseek 选取了 1.3B,6.7B,33B 三种参数大小。

image.png

B. 语言选择

  • 聚焦 Python + JavaScript:理由是它们最流行且高度依赖中心化包仓库(PyPI/npm),更容易形成“包名 → 安装 → 执行”的供应链风险;而 Java/C/C++ 没有同等形态的中心化开源包仓库依赖(至少不如 PyPI/npm 直接)。

C. 测试环境一致性

  • 开源模型用 Hugging Face transformers 跑,并采用 GPTQ 量化(论文强调对准确率影响可忽略但更贴近普通硬件的可用性)。
  • 每个模型用同一套 system message/输出约束,以减少“提示词差异”对结果的影响。

3.3 幻觉检测

本文并不只靠解析 import/require 来确定“需要安装的包”,因为 import 的是模块名,模块与包并非一一对应,而且很多代码片段不足以唯一推断依赖。因此采用三条启发式来“尽可能贴近用户真实行为”地抽取包名,再去对照仓库列表判断是否存在。

A. 直接抓安装命令

  • 从生成文本/代码里解析 pip installnpm install 命令里出现的包名。
  • 这类输出仅占总输出约 7%,但对攻击最关键,因为用户可能直接复制执行,立刻触发安装恶意包的可能性。

B. 把“生成的代码”再喂回同一个模型,让它列依赖

  • 做法:每份代码样本再作为输入,问同一个模型“运行这段代码需要哪些 packages?”
  • 这模拟用户实际会做的事:代码跑不起来 → 问模型“缺什么包”。

C. 用“原始任务 prompt”问模型需要哪些 packages

  • 做法:不用代码,直接拿最初的任务描述问“完成这个任务需要哪些 packages?”
  • 模拟另一种真实用法:用户可能先问“要装哪些库”,再让模型写代码。

四、实验结果

4.1 包幻觉的普遍性

包幻觉在所有测试的模型中都是普遍存在的,商业模型的包幻觉率相对较低,而开源模型则表现出更高的幻觉率。具体来说:

  • 商业模型(如 GPT-4 Turbo)的幻觉率在 4%-6% 之间。
  • 开源模型(如 CodeLlama、DeepSeek)的幻觉率则高达 21.7%
  • Python 代码的幻觉率(15.8%)低于 JavaScript 代码的幻觉率(21.3%),但两者呈正相关,即同一模型对两种语言的幻觉表现有相似趋势。

4.2 模型设置对幻觉的影响

  • 温度设置:随着温度(模型生成输出的“随机性”)的增加,包幻觉的发生率显著上升。高温度(例如 2)会导致模型生成更多幻觉包,而低温度则有助于减少幻觉。
  • 解码策略:尝试调整解码参数(如 top-p、top-k 和 min-p)对减少包幻觉的影响较小,表明包幻觉并非仅由这些参数引起。
  • 近期主题:模型对于 2023 年后的新包生成的幻觉率更高,表明模型无法实时更新其训练数据,导致对新包的认知产生偏差。

4.3 模型行为的分析

  • 重复幻觉:有 43% 的包幻觉在同一模型的多次查询中重复出现,这表明幻觉不是偶然的,而是具有持久性。这种重复性使得幻觉更容易被恶意攻击者利用。
  • 模型输出的“啰嗦”程度:更多包名的生成(即“啰嗦”模型)通常会导致更高的包幻觉率。

4.4 包幻觉的特征

  • 跨语言幻觉:JavaScript 是唯一显著的跨语言幻觉源头,8.7% 的 Python 幻觉包与 JavaScript 中有效包名匹配。
  • 语义相似性:大多数包幻觉与有效包名在 Levenshtein 距离上相差较大,意味着这些幻觉并非简单的拼写错误,而是生成过程中的复杂错误

五、缓解措施

论文给了基线与三种策略、以及“组合(ensemble)”的对比(核心趋势如下):

  • RAG: 两个模型都明显下降(尤其对 CodeLlama 降幅很大),说明“真实包锚点”是普适有效的方向。
  • Self-Refinement: 对 DeepSeek 更有效,对 CodeLlama 效果很弱;原因与 RQ3 呼应——CodeLlama 在“判别包名真伪”上有偏置,倾向把大多数包都判为 valid,导致自我纠错失灵。
  • Fine-tuning: 幻觉率下降最显著(DeepSeek 甚至压到低于 GPT 系列在主实验中的水平),但​代码质量会掉​,即“安全性/可靠性”与“代码能力”存在现实代价。
  • Ensemble: 把 RAG + Self-Refinement + Fine-tuning 叠加能进一步压低幻觉率,是论文展示的最强组合,但同样会继承 fine-tuning 的质量代价。

六、艾体宝 Mend.io(原 Whitesource)方案的价值

从这篇论文可以发现,即使是主流代码生成模型,也会稳定地产生幻觉包,而且这种现象并不只是偶发噪声,而是可重复、可被攻击者利用的。

而 Mend 的价值不在于从模型内部“消灭幻觉”,而在于在代码进入仓库、CI/CD 和制品流转之前,建立一层​面向依赖和供应链的外部控制面​。Mend 的 SCA/Software Supply Chain Security 能覆盖 repositories、CI/CD pipelines 等环节,并对恶意包与可利用漏洞进行检测和阻断。也就是说,即便前面的 AI 助手犯错,企业仍然可以在后面的工程链路里把风险拦下来。

特么的你是做路由器的,还是做 os 的,还是要自造轮子玩呢?
除了嵌入式,一些游戏自研应用协议的,有几个觉得自己比现成 http ws 写的好的?
什么算“精通”?能搞出更高效算法的人,就你这国内破逼皮包公司能碰得到?
搞了几把半天计算机,脑子没有分层的思想,弄个 nginx 做个破壁网页的用得着懂 TCP ?
据俺所知 C 中 socket 就提供了简单的调用,性能调优都是内核实现的,皮包公司们是打算推翻全球的类 unix 吗?你造的轮子能比用了几十年的各种成熟 lib 更好?
随随便便就“精通”,精通居然就是问什么几次握手,玛德握几次手很影响你那破壁 vue.js 生成的网页载入吗??
真是煞笔遍地。

问题描述
现有全球 20 个机房,单机房出口峰值带宽 500Gbps ,业务网段采用 Anycast 方式全网统一宣告。
正常业务流量下流量可均匀分散至各节点,带宽资源利用率良好。

但遭遇 DDoS 攻击时存在明显缺陷:

若攻击者定向针对单一机房节点发起大流量攻击,该节点 500Gbps 带宽被快速打满后直接瘫痪不可用;
此时撤销攻击机房路由宣告,根据 BGP 选路原则流量会进入 19 个机房的其中一个,最终结果还是一样被打死,最终形成多米多骨牌;

请问该如何彻底解决该问题?

前言

在医疗行业,数据已经不仅仅是数据问题,而是​“关系”​问题。

近年来,国内医院在积极推进电子病历评级和互联互通评测,医疗大语言模型(LLM)也在各大三甲医院加速探索。但我们在与国内客户的交流中发现,大家普遍卡在了“数据底座”上:病历是文档,检验指标是时序,医学指南是图谱,而真实世界中的患者、诊断、药物、基因、临床试验之间存在着千丝万缕的复杂关系。

传统的数据库要么只能管好一种数据模型,要么需要把数据拆到多个系统里来回做 ETL(数据提取、转换和加载)——数据底座的关联尚未打通,上层的 AI 应用自然极易产生致命的“幻觉”。

这正是 Arango 核心切入点。Arango 不是一个单纯的多模型数据库,而是一个专为 AI 构建的统一数据基础设施(AI Data Platform)。 它在单一平台中原生融合了文档、图、键值、向量和搜索能力,旨在为医疗 AI 应用提供可信任的上下文层。

一、 医疗数据的“关系密集型”挑战与 Arango 的双层解法

医疗数据天然具有极高的关联性:患者与诊断相关,诊断与药物相关,药物与基因组相关,基因组又与临床试验相关。但在传统技术架构下,这些关系被硬生生切断,分散在电子病历(EHR)、实验室信息系统(LIS)、影像系统和基因组数据库等孤岛中。

数据量本身已不是唯一的瓶颈——据权威市场调研机构测算,全球约 30% 的数据量由医疗健康领域产生,且正以极其惊人的复合年增长率激增——真正的挑战在于​底层异构数据的连接能力​。

为此,Arango AI 数据平台提供了高度整合的双层架构:

  1. 可信的数据基础层: 原生支持多模型,无需在多个异构系统之间做 ETL,大幅降低数据整合的复杂度和成本。它能够提供高达 110 万次 JSON 文档/秒 的持续写入吞吐量,轻松应对海量医疗文档和知识源的实时接入。
  2. AI 上下文层(The context layer): 这是赋能大模型的关键。Arango 将内置的 GraphRAG(图检索增强生成)和图机器学习(GraphML)相结合。在处理上下文图查询(如支撑 AI 助手和企业级搜索)时,其速度最高可达传统纯图数据库(如 Neo4j)的 ​8 倍​。

二、 真实落地案例:PSI CRO,将临床试验站点筛选从 6 周缩短至几分钟

为了直观展现 Arango AI 数据平台是如何在实际业务中运作的,我们可以看看全球知名临床研究组织(CRO)PSI 是如何解决行业顽疾的。

1. 业务痛点:为什么选个试验站点需要 6 周?
在研发新药时,药企需要挑选合适的医院(试验站点)来招募患者。如果选错了医院(比如该医院根本没有这类患者),激活一个站点的数万美元成本就会打水漂。行业内有超过 10% 的站点最终连一个患者都招不到。
技术卡点在于“数据极其碎片化”:为了评估一家医院是否合适,研究人员需要查阅冗长的非结构化文档(研究方案 PDF)、结构化的关系型数据库(医生资质库)、以及历史的表格数据(该医院过往的招募成功率)。 在过去,专家团队只能​人工跨越多个孤立的系统,像拼图一样把这些信息凑起来​,整理出一份推荐名单往往需要耗费长达 6 周的时间。

2. Arango 解决方案:构建融合文档与关系的“上下文图谱”
PSI 引入 Arango AI 数据平台,构建了名为 SYNETIC™ 的人工智能知识引擎。他们没有在多个数据库之间来回倒腾数据,而是利用 Arango 的原生多模型能力做了一次彻底的底层重构:

  • 存文档: 将海量的非结构化临床研究方案、医学文献直接作为文档存入 Arango。
  • 建关联: 利用图(Graph)引擎,将分散的实体建立精准连接。例如,建立 [某肿瘤专家] ——(就职于)——> [某三甲医院] ——(曾参与)——> [同类靶向药试验] ——(招募结果)——> [达标] 这样的关系链条。 通过这种方式,原本散落一地的碎片数据,在 Arango 中变成了一张​具备逻辑推理能力的巨大知识网络​。

3. 实际效果:大模型“开卷考试”,既快又准且无幻觉基于 Arango 准备好的高质量“上下文图谱”,PSI 的团队现在只需要向 AI 助手提出自然语言需求,系统在几分钟内就能输出极其精准的推荐名单。 更重要的是,由于底层有 Arango 的图谱和文档支撑,​AI 给出的不仅是一个干瘪的医院名字,而是附带了完整的“证据链”​。系统会明确解释推荐理由(例如:“推荐 A 医院,因为该院 B 医生在过去 3 年中成功主导过 2 次极其相似的临床试验,点击此处查看历史文档”)。

这种​“知其然,更知其所以然”​的可解释性,消除了大模型的“幻觉”,满足了医疗行业对合规和精准的严苛要求。

三、 Arango 在医疗领域的四大核心应用方向

根据 Arango 官方的医疗行业实践,其 AI 数据平台目前重点支撑以下核心场景:

1. 患者 360° 全景图与临床决策支持

医疗机构需将实验室结果、EHR、基因组数据和临床笔记连接起来。Arango 利用 GraphRAG 技术,将这些异构数据整合为完整的患者图谱。

  • 慢性肾病(CKD)试点: 某医疗机构构建了患者 360° 图谱,成功整合了实验室指标趋势和 EHR 数据,实现了对慢性肾病的早期检测预警。
  • 肿瘤学精准医疗试点: 研究团队利用 Arango 统一了患者的基因组数据与临床治疗数据,助力医生优化乳腺癌的个性化治疗决策。

2. 驱动零幻觉的医疗 AI 助手(AI-Driven Care Insights)

通过构建可解释的临床知识图谱,Arango 赋能医疗 Copilot(AI 助手)。医生可以通过自然语言对全面的患者数据进行查询,AI 的每一次回答都能追溯到图谱中具体的医学文献或病历节点,提供更安全、有依据的临床推荐。

3. 科研加速(研究发现与药物开发)

打破试验数据、学术出版物和基因组数据集的壁垒,在单一多模型平台中结合图关系和向量嵌入,加速药物发现周期和临床试验推进(如前文 PSI CRO 案例)。

4. 严格的合规与数据治理

医疗数据隐私不可妥协。Arango 平台原生提供细粒度的访问控制、数据血缘和审计追踪,支持 HIPAA 和 GDPR 合规要求,通过受控的检索机制确保 AI 应用的安全与可问责性。

四、 面向医疗全生态的差异化赋能

Arango AI 数据平台并非只服务于单一角色,它为医疗生态中的不同参与方都提供了底层支撑:

  • 医疗机构(Providers): 整合 EHR、LIS 和临床笔记,从孤立的遗留系统迁移到云就绪的 AI 原生平台,利用知识图谱赋能医生的临床决策。
  • 临床研究组织与药企(CROs & Pharma): 统一庞大的试验数据和学术文献,加速临床试验站点筛选、患者入组和靶向药物研发。
  • 支付方与保险(Payers): 依托 Arango 在金融领域成熟的图分析与反欺诈能力,医疗保险机构可构建 360° 会员档案,精准检测潜在的异常理赔与欺诈模式,并优化医疗服务提供者网络。

五、 结语:超越数据库,走向“更好的上下文”

正如近期行业前沿峰会所揭示的趋势:AI 发展的下一个关键阶段不再是盲目追求“更大的模型”,而是为模型提供“更好的上下文(Better Context)”。

传统 AI 应用之所以难以在医疗生产环境中落地,往往是因为它们虽然具备快速输出的能力,却缺乏理解企业级复杂医疗数据的能力。Arango AI 数据平台正是为此而生——它是一个让 AI 能够真正“理解”医疗业务的基础设施层。

“为了让 AI 智能体真正发挥作用,团队必须能够信任它们的推荐。”

—— Andrei Seryi,PSI CRO 知识与流程改进总监

在医疗领域,“信任”不仅意味着准确,更意味着可解释、可追溯、可审计。

目前,Arango 在海外医疗与生命科学领域已积累了成熟的实践经验。作为 Arango 在中国的技术合作伙伴,我们正致力于将这一先进的 AI 基础设施引入国内生态。如果您所在的机构正在探索医疗大模型的落地,或受困于底层数据的关联瓶颈,欢迎与我们联系,我们期待为您提供基于真实业务场景的架构探讨与技术 PoC 测试。

母胎单身魔法师。

这十几年年经历了很多不好的事,之前帖子写过自己经历。t/1080820

24-26 年这 2 年,可能开窍了或者命运使然,很努力,情绪改善了很多,玩股票赚了些钱,减肥了几十斤,今年能拿到一个 92 的自考本,总比是个大专要好。

我家里属于散养那种,不管不顾的,一直说让带个媳妇,不怎么催,他们知道催也没用,还是得靠我自己改变观念。之前上学的时候,从小学到大学都有女的喜欢我,给我递纸条,我那时候一直抑郁,自己都要死要活的,学都不想上了,用各种理由搪塞拒绝了。

感觉自己年纪大了,有点迷茫了。进了社会,感觉生活中女的太少了,所以现在我想找了,怎么找一个?各位的结婚对象都是怎么找的?怎么找一个好的?

编者按: 你是否曾好奇,当我们向大语言模型输入一段文字、看着它逐字逐句生成回复时,背后那些动辄千亿参数的神经网络究竟在“计算”什么?它们又是如何在短短几秒内完成如此复杂的推理过程?

我们今天为大家带来的文章,作者的观点是推理引擎的价值不仅在于调度,更在于通过重写模型代码与深度优化底层计算逻辑,将静态的权重转化为高效的智能输出。

作者 | Neutree AI

编译 | 岳扬

01 模型内部机制、KV Cache 与张量并行(Tensor Parallelism)

在 Part 1 中,我们探讨了 Nano-vLLM 的工程架构:请求如何在系统中流转、Scheduler(调度器)如何对 sequences(序列)进行批处理,以及 Block Manager(块管理器)如何追踪 KV Cache 的分配。当时我们特意将模型计算视为一个黑盒。现在,是时候打开这个盒子了。

本部分将深入探究模型内部原理:Token(词元)如何转化为向量、每个 decoder 层内部究竟发生了什么、KV Cache 在 GPU 显存中的物理存储方式,以及张量并行如何将计算任务拆解到多个 GPU 上。 阅读完本节,你将对从 Prompt 进入系统到文本生成输出的全过程建立起完整的认知。

02 模型究竟是什么?

说到“模型”,我们往往想到的是那些权重文件 —— 动辄数十亿参数、体积庞大的二进制文件。但一个真正能跑起来、能做推理的模型,其实需要三个部分协同工作:

  • Vocabulary:token 和其对应 ID 之间的静态映射表。它负责在人类可读的文本与模型实际处理的数值表征之间做双向翻译。
  • Weights:训练过程中学出来的参数,也就是模型积累的“知识”本身。比如一个 7B 模型,就代表它拥有 70 亿个这样的可调参数。
  • Runtime Code:定义如何使用这些权重、把输入一步步转换成输出的执行逻辑。这才是真正落到 GPU 上跑起来的部分。

2.1 为何推理引擎要自己实现模型代码(model code)

你可能会疑惑:既然模型提供方都开源了权重,为什么不干脆把 runtime code(运行时代码)也一起给了?其实很多情况下他们确实给了,但问题是,这份代码往往不是“开箱即用”的。Runtime code 需要针对具体场景做深度优化:训练还是推理?用什么型号的 GPU?跑 FP16 还是 INT4 精度?在一套 A100 集群上训练效果出色的代码,放在单个消费级 GPU 上做推理可能就不那么理想了。

这正是 vLLM 这类推理引擎选择自己重写 model code 的原因。完整的 vLLM 代码库包含了对数十种模型架构的优化实现,涵盖 Qwen、LLaMA**、DeepSeek、Mistral 等。Nano-vLLM 则做了简化,仅支持 Qwen 模型,但背后遵循的工程模式和优化思路,其实是通用的。

03 模型 pipeline

现在,我们来追踪一个 token(词元)在模型中的完整流转过程。

3.1 Embedding:从 Token 到向量

旅程始于 embedding。token ID 不过只是一个数字,比如 1547。嵌入层(embedding layer)在词表中查找这个 ID,并检索出一个向量:一个高维的浮点数数组(Nano-vLLM 使用的 Qwen 模型中为 4096 维)。这个向量被称为隐藏状态(hidden state),是模型对该 token 的内部表征。

为什么是 4096 维?这是一个在表达能力与计算成本之间做了一番权衡的设计选择。更多的维度可以捕捉更细微的语义,但需要更多的计算量和显存占用。

3.2 Decode Layers:魔法发生的地方

随后,隐藏状态(hidden state)会流经一叠解码层,Nano-vLLM 支持的 Qwen 模型共有 24 层。每层执行相同的操作,但使用不同的学习权重,逐层对表征进行精细化加工。不妨这样理解,每一层都在前一层的基础上,让模型对输入的理解再深一度:也许某一层捕捉句法关系,另一层捕捉语义含义,还有一层处理事实知识。(实际上,每一层具体学到什么,是训练过程中自然涌现的结果,并非预先设计。)

这里的关键特性在于:每一层接收的是隐藏状态,输出的也是隐藏状态,而且 shape 始终保持不变(4096 维)。这种统一性使得层与层之间可以堆叠。

3.3 LM Head:从向量回到 Token

经过所有解码层之后,最终的隐藏状态被转换回词表上的概率分布。这是 LM Head(语言模型头)的工作,其功能可以视为嵌入过程的逆向操作。输出是 logits,即对每个可能的下一个 token 的打分,后续的采样环节再根据这些分值,最终选出实际输出的词元。

04 解码层(Decode Layer)的内部构造

每个解码层都包含两大核心模块:注意力机制(Attention)和多层感知机(MLP)。下面我们逐一拆解。

4.1 多头注意力机制(Multi-Head Attention)

注意力机制让每个 token 能够“关注”序列中的其他 token。但现代 LLM 并不使用简单的注意力机制。它们使用多头注意力机制(multi-head attention),将注意力计算拆分到多个并行的“heads”中。

在 Qwen 模型中,共有 32 个 heads,每个处理 128 维的切片(32 × 128 = 4096,即完整的 hidden state 大小)。这不仅仅是把 4096 维切分成 32 组。相反,每个 head 执行一次投影(projection),这是一种通过学习得到的变换方式,将完整的 4096 维输入压缩成该 head 特有的 128 维表征。

可以把它想象成一个工厂,装配线上有 32 个专用工作站。每个工作站接收相同的原材料(完整的 4096 维输入),但使用不同的工具将其塑造成特定形状。一个工作站可能负责“修剪”语法适配度,另一个负责“打磨”语义连贯性,还有一个负责“测量”位置对齐度。但实际上,每个工作站学到什么也是在训练中自然涌现出来的,未必能如此清晰地划分。

每个 head 还参与真正的注意力机制:它计算当前 token 应该关注序列中每个先前 token 的程度。模型就在这里捕捉上下文(context),理解在"The cat sat on the mat. It was comfortable."中,It 指的是"the cat"。

所有 heads 完成计算后,它们的输出被拼接(concatenated)并投影(projected)回 4096 维,生成该层的注意力机制输出。

4.2 MLP:自我优化

MLP(Multi-Layer Perceptron)阶段接收注意力机制的输出并进一步优化。与注意力机制不同,MLP 不看其他 token。它独立处理每个 token 的 hidden state(隐藏状态)。

MLP 首先将 hidden state 从 4096 扩展到一个更大的中间维度(intermediate dimension)(Qwen 中为 11008),应用非线性激活函数,然后压缩回 4096。为什么要这样扩展和压缩呢?

可以把它想象成提升分辨率。4096 维的 hidden state 就像一张压缩图像。扩展到 11008 维就像上采样(upscale):它创造了可添加细节的空间,这些细节由 MLP 的学习权重决定。再压缩回 4096 则是对这种经过信息增强后的表征(enriched representation)的提炼。通过这个过程,模型将训练中的知识融入每个 token 的表征中。

4.3 Dense 架构与 MoE 架构的对比

我们刚才描述的 MLP 是一种 dense 架构:每个 token 都经过同一个 MLP(多层感知机)模块处理。但有些现代模型使用 Mixture of Experts (MoE)这种不同的思路。

在 MoE 中,不是用一个大型 MLP,而是有多个小型“expert” MLPs,比如 8 个。由一个路由网络(router network)负责检查每个输入的 hidden state,并决定由哪些 experts(专家)来处理它。例如,对于任何给定 token,只激活 8 个中的 2 个 experts(专家)。

“expert”这个叫法容易让人联想到这样的专业分工:一个专家负责数学,另一个负责语言,还有一个负责编写代码。实际上,每个 expert 学到什么也是从训练中涌现的,并非经过明确设计。我们很难说清楚 Expert 3 与 Expert 5 有何不同。

那为什么要用 MoE?主要动机是计算效率(computational efficiency),而不是输出质量(output quality)。 有了 MoE,你可以拥有一个总参数量很大(所有 experts 合计)的模型,同时每个 token 只激活其中一部分参数。这大幅减少了每个 token 的计算量。

这部分进行了权衡考量:给定相同的总参数量,dense 模型通常会产生比 MoE 模型更高质量的输出,因为 dense 模型对每个 token 都使用了所有参数。但超大规模下的 dense 模型训练起来计算成本高得令人望而却步。MoE 允许扩展到 dense 架构无法实现的参数量,接受每个参数的效率(per-parameter efficiency)稍低一些,以换取实际的可训练性(practical trainability)。

05 KV Cache:数据平面

在第一部分中,我们将 Block Manager 讨论为 KV 缓存的控制平面,负责在 CPU memory 中追踪分配状态。现在让我们聚焦数据平面:KV 缓存究竟是如何实际存储在 GPU memory 中的。

5.1 什么被缓存了

在 Attention 计算过程中,每个 token 产生两个向量:K(key)和 V(value)。它们用于与后续 token 计算 Attention 分数。为了避免在每一步 decode 时都重新计算所有先前 token 的 K 和 V,我们选择将它们缓存起来。

5.2 物理布局

GPU 上的 KV cache 被组织为一个多维结构:

  • Block 维度:与 Block Manager 的逻辑块对应(例如,每块 256 个 token)
  • Layer 维度:24 个解码层每层都有自己的缓存,因为注意力是在每一层独立计算的
  • K/V 维度:每层两个独立的缓存,一个存 key,一个存 value
  • Token 维度:在每个块内,为每个 token 的缓存向量预留空间

因此,Block Manager 中的一个逻辑块对应 GPU 上 24 × 2 = 48 个物理缓存区域:24 层每层各一个 K 缓存和一个 V 缓存。

5.3 用于缓存访问的 Triton Kernel

Nano-vLLM 不直接通过 CUDA API 操作 GPU 内存,而是使用 Triton Kernel —— 一种高级 GPU 编程语言,编译为高效的 CUDA 代码。这些 Kernel 处理从 KV cache 的读写操作,将 GPU memory 管理的底层复杂性封装起来,让上层逻辑更简洁清晰。

06 张量并行(Tensor Parallelism):计算层面

在第一部分中,我们介绍了张量并行的通信模式,以及 leader 如何通过共享内存(shared memory)广播命令。现在来看看实际计算是如何拆分到各 GPU 上的。

6.1 Attention 中的并行

以 TP=2(两张 GPU)为例。当一个隐藏状态进入 Attention 阶段时:

1)两张 GPU 都接收完整的隐藏状态(4096 维)。这里没有拆分,每张 GPU 都拥有完整的输入。

2)每张 GPU 负责处理一半的 head(注意力头)。GPU 0 处理 head 0-15;GPU 1 处理 head 16-31。

3)每张 GPU 产生部分输出。GPU 0 的输出只包含 head 0-15 的信息;GPU 1 的输出只包含 head 16-31 的信息。

4)通过 All-reduce 合并结果。两张 GPU 交换各自的部分输出并求和,这样两者最终都得到完整的 Attention 输出。

并行发生在 head(注意力头)维度,而非隐藏状态维度。每张 GPU 都看到完整的输入,但只计算分配给它的一部分 head。

6.2 MLP 中的并行

MLP 并行遵循类似的模式:

1)两张 GPU 都接收完整的隐藏状态。

2)中间维度(intermediate dimension)被拆分。如果 MLP 层扩展到 11008 维,每张 GPU 计算 5504 维。

3)每张 GPU 产生部分输出。

4)All-reduce 合并结果。

6.3 通信的开销

张量并行并非没有开销。All-reduce 操作需要 GPU 之间进行通信,这会增加延迟。这就是为什么 TP 在单机多 GPU 且具备高速互联(如 NVLink)的场景下最有效,而在通过网络连接的机器之间使用时,通信延迟会成为主导因素,效果就会大打折扣。

它的优势在于:每块 GPU 只需存储模型权重的一部分(TP=2 时存储一半,TP=8 时存储八分之一)。这使得我们能够运行那些单个 GPU 内存装不下的模型。

07 思考:设计上的权衡取舍

在了解了内部机制之后,让我们来探讨一些常见的设计问题。

7.1 网络层(Layers)数与注意力头(Heads)数分别控制什么?

更多的网络层数通常意味着更深的推理能力。每一层都会对隐藏状态进行一次额外的细化处理。 更多的注意力头数则支持更丰富的注意力模式(attention patterns),为理解词元之间的关系提供更多“视角”。

我们能否为特定的深度推理任务创建一个“窄而深”的模型(注意力头数少、网络层数多)?或者为了覆盖更广的知识而创建一个“宽而浅”的模型(注意力头数多、网络层数少)?研究表明,这种做法的效果并不理想。就像人类学习一样,模型似乎也需要在广度与深度之间取得平衡。极端不平衡的架构往往表现不佳。大多数成功的模型在这些维度之间保持着一个大致均衡的比例。

真正能撬动模型能力的实用杠杆,仍然是训练数据(有哪些知识可用)和训练方法(这些知识能被多有效地习得),而不是追求极端的架构设计。

7.2 为什么 MoE 架构越来越流行?

混合专家模型(MoE)架构的兴起,并非因为它在单位参数下能产出更优的结果。事实恰恰相反:一个 70B 的稠密模型,通常表现会优于同参数量(所有专家参数之和)的 MoE 模型。

MoE 受欢迎,是因为它让规模扩展成为可能。 用当前基础设施训练一个 600B 的稠密模型,计算成本高到难以承受。但一个总参数量 600B、每词元仅激活 50B 参数的 MoE 模型呢?这个是可以训练出来的。尽管单位参数的效率有所损失,但凭借其庞大的总体规模,它可以达到的能力,是任何可训练的稠密模型都无法企及的。

这是一种务实的工程权衡:以单位参数效率的适度下降,换取触及原本无法达到的模型规模。

08 结语

至此,我们已经完整梳理了从输入提示词到生成文本的整个流程:

  • Tokenization 将文本转换为 token ID
  • Embedding 将 token ID 映射为隐藏状态向量
  • Decode layers 通过 Attention(跨词元理解)和 MLP(知识整合)不断细化隐藏状态
  • KV cache 缓存中间 Attention 结果,避免重复计算
  • LM head 将最终隐藏状态转换为 token 概率分布
  • Sampling 从概率分布中选择输出 token
  • Tensor parallelism 让上述所有步骤得以在多张 GPU 间扩展

推理引擎负责统筹整条流水线 —— 从请求调度、内存管理,到协调并行执行;而模型架构则定义了每个步骤内部的具体计算逻辑。

理解这些内部机制,能让看似“魔法”的过程变得清晰可解。大语言模型的本质,其实是一个精密的函数:输入向量,输出向量。所谓的“智能”,源于参数规模的积累、训练数据的质量,以及让这一切高效运转的工程巧思。

无论你是在生产环境部署模型、排查性能问题,还是单纯好奇这些系统如何工作,希望这份基础梳理能为你带来切实的帮助。

END

本期互动内容 🍻

❓文章提到推理引擎要重写 model code 来做深度优化。在你自己的实践中,有没有遇到过“理论可行但工程跑不动”的部署场景?最后是怎么妥协或突破的?

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://neutree.ai/blog/nano-vllm-part-2

有一天在打字的时候,我突然想到一件很小的事情:

我每天敲这么多键盘,那我到底更常用的是哪些键?

这个问题本身其实没什么用,但它有一点点“可能和直觉不一样”的感觉。

比如我一直觉得自己主要在用字母区,但如果真的统计出来,会不会空格才是第一?或者回车?

这种事情,如果只是靠感觉,其实永远不会有答案。

但一旦把它变成数据,就完全是另一种东西了。

想着想着,就干脆把这件事做出来了。

image.png

代码跟软件都已经开源了,地址放在最后,感兴趣可以去看看


它一开始其实只是个脚本

最初的想法很简单:

监听键盘 → 做计数 → 输出结果。

按这个思路,一个脚本就能搞定,甚至都不需要什么界面。

但写到一半就发现,这种形态不太成立。

因为它太容易“断掉”了。

只要我关了终端,或者哪天忘记开,它那一段时间的数据就直接没了。而键盘使用这种行为,本来就不是你会刻意去“开始”和“结束”的东西。

如果记录本身需要你去记得,它就有点违背这个事情的初衷。

后来就慢慢变成另一种方向了:让它自己待着,一直在那儿,不需要你管。

于是最后的形态就是一个托盘应用。


为什么会走到客户端这一步

其实我一开始是想避免写客户端的。

不是功能做不到,而是开发体验的问题。传统 GUI 那一套我不太熟,也不太想花时间在那上面。

但“监听键盘”这件事本身就决定了,它不可能是一个网页。

由于边界问题,浏览器拿不到这些数据,所以要么放弃,要么就认真做一个本地应用。

后来是因为看到 Wails V3,才觉得这件事变得顺手了不少。

之前用过 Wails V2,它更像是一个“把网站封装成桌面应用”的壳。

单窗口、靠前端路由模拟多页面、菜单和托盘能力很弱。

而 V3 原生支持了多窗口、系统菜单、托盘、Dock & Taskbar 交互之后,整个应用终于有了“骨架”,从“套壳网页”真正变成了一款原生应用。

完美的符合了我的需求。


真正麻烦的不是展示,而是“你按了什么键”

一开始我以为,最麻烦的会是热力图这种展示层的东西。

结果完全相反。

最绕的地方其实是:怎么知道用户按了哪个键。

监听事件我选择了 robotn/gohook,他本身不提供“监听能力”,它只是把各平台的系统级输入监听 API 做了一层统一封装。

在 Windows 中他封装的是 SetWindowsHookEx

在 Mac 中封装的是 Quartz Event Tap

因此它可以在系统层面上监听原始输入事件,比应用级监听更底层,得到按压情况与虚拟键码。

问题在于,这个“原始事件”不是你直觉里的 A、B、C,而是一串虚拟键码。

虚拟键码就是操作系统为了方便程序开发,给键盘上每个“功能”分配的一个固定的数字编号。它像是按键的身份证号,而不是座位号。

以 Windows 为例:当我们按下键盘上 A 键的那一刻,键盘电路只知道按下去的是物理位置第 0x1E 号的键,它会把 0x1E 这个扫描码发给电脑。

操作系统收到 0x1E 后,会根据当前激活的键盘布局(比如美式键盘)来查表(比如查询到这个物理位置对应的是字母 A)。

于是,它把这个位置信号转换成虚拟键码 0x41(即 VK_A)。

基于这套机制,我们开发者完全不用关心用户用的是哪种键盘硬件、按键的物理位置在哪。只要在程序里看到 0x41,就可以确信:用户按下的是 A 键。

但问题同样也出现在这里,键盘的位置信号传递给系统,而系统把他们转换成虚拟码,这个过程是系统进行的,因此 Windows 跟 Mac 之间并不统一,需要额外进行处理。

微软官网中有针对 Windows 虚拟键码的说明:Virtual-Key Codes

而 Mac 则来自 Carbon.framework 中的 Events.h,记录在《Inside Mac Volume V》第 V-191 页

这件事没有什么优雅解法,只能分开处理。

最后就是用 Go 的 //go:build 把不同平台的映射拆开,各自维护。

逻辑上统一,但实现上不强行合并。


数据怎么存,反而是一个需要控制的点

监听拿到了,接下来就是存。

一想到这个脑子里的第一反应肯定是:按一次,写一次数据库。

但稍微再一琢磨就会明显感觉到问题。

键盘输入是一个非常高频的行为,如果每次都落盘,SQLite 的压力会有点大,而且写入冲突也比较频繁。

后来就换成了一种更“松一点”的方式:

先放在内存里攒着,到一定数量,或者过一段时间,再统一写进去。

严格来说,这会有一点点数据丢失的可能(比如程序突然退出),但换来的是整体的稳定性和更低的开销。

对这种工具来说,我更倾向于后者。


热力图反而没那么复杂

真正开始做展示的时候,反而是最顺的一段。

键盘布局其实是有现成逻辑的,用机械键盘里常说的 Unit(u)就能很好地描述:

普通按键是 1u,空格是 6.25u,一些功能键是 2u、2.75u 这种。

把它当成一个网格去排,然后再把每个键的使用次数映射成颜色深浅,一张热力图就自然出来了。

没有太多技巧,更多是一个“把东西摆对”的过程。


后来补了一点“实时感”

最早版本其实只是统计 + 展示。

但用的时候会觉得,它有点“太安静了”。

所以后面加了一点很轻的反馈,比如按键的时候会有一点变化。

实现上也不复杂,用 Wails 自带的事件机制,把后端的事件往前端推,Vue 那边监听一下就可以了。

这一块写起来反而最像在写前端项目。


写到这里,反而会有点疑问:这东西到底有什么用

项目做完之后,我其实想过这个问题。

它不会帮你提高效率,也不会改变你怎么打字。

你大概率也不会因为某个键用得特别多,就去刻意优化它。

但它提供了一种很微妙的东西:

你可以“看到”自己平时完全不会注意到的行为。

有些结果是符合预期的,有些会有一点点偏差。

这种偏差不大,但挺有意思的。

更像是一种观察,而不是一个工具。


Key Heat

最后把这个东西整理了一下,做成了一个完整的应用,叫 ​Key Heat

它会一直待在托盘里,做的事情其实很克制:

  • 只统计每个键被按了多少次
  • 不记录具体输入内容
  • 没有网络请求

数据只在本地。

如果你也对这种东西有点好奇,可以自己跑一下看看:

前阵子,我写了一篇关于 JetBrains 新产品 AIR (JetBrains AI IDE) 的文章。

写那篇文章的初衷,其实很简单——想搞清楚一件事:
当“AI 辅助编程”变成“AI 主导开发”,我们这一代程序员到底要怎么适应。

但写完之后,评论区和私信里出现了一个更现实的问题:

“Windows 用不了 AIR,那我们怎么办?”

这个问题,比工具本身更值得聊。

它把一个被很多人忽略的问题重新摆在台面上——
操作系统,正在重新分层。


一、一个很真实的瞬间

如果你是 Windows 用户,这一波 AIR 基本是“看得到,用不到”。

官方目前只支持 macOS,Windows 和 Linux 还在路上。

这件事让我突然意识到:

过去我们选操作系统,更多是习惯问题、性能问题、甚至是价格问题。

但现在,开始变成:

你能不能用上下一代开发工具。

这就不只是“顺不顺手”了,而是:

你处在技术生态的哪个位置。


二、三个系统,其实代表三种路线

如果把现在主流的三个系统放在一起看,其实差别已经很清晰了:

  • Windows:大众生态 + 商业软件中心
  • macOS:开发者 + 创意工具的主场
  • Linux:底层能力 + 服务器世界

它们不只是系统,更像三种不同的“技术路径”。


三、Windows:最广,但不再最前沿

Microsoft Windows 几乎是每个计算机学生的起点。

从装系统、写代码,到打游戏、做项目,大多数人都是在 Windows 上完成的。

它最大的优势很明显:

  • 软件生态最全
  • 学习成本最低
  • 兼容性极强

但问题也逐渐显现:

它越来越像“通用平台”,而不是“开发前沿”。

很多新工具,尤其是 AI 相关的开发工具:

  • 优先支持 macOS
  • 或者直接面向 Linux

Windows 往往是“后续适配”。

这并不是 Windows 不强,而是它的定位决定了:

它必须兼容一切,所以很难激进。


四、macOS:为什么越来越多开发者选择它

macOS 这些年的变化,其实挺明显的。

越来越多开发者,从 Windows 转向 Mac。

原因不是“更好看”,而是:

它站在一个很微妙的位置——

既有 Unix 的底层能力,又有成熟的桌面生态。

这带来几个非常关键的优势:

1. 天然接近服务器环境

macOS 本质上是类 Unix 系统,这一点和 Linux 非常接近。

你在本地写的很多东西:

  • Shell 脚本
  • 后端服务
  • 容器环境

可以更自然地迁移到服务器。


2. 新工具的首发阵地

这次的 AIR 就是典型例子。

很多 AI 原生工具,会优先支持 macOS:

  • 系统统一(硬件 + 软件)
  • 开发环境稳定
  • 用户群体集中

这让它成为:

新一代开发工具的“试验场”。


3. 工具链体验完整

从:

  • Xcode
  • 到 Docker、Node、Python
  • 再到各种 AI 工具

整体体验是“顺”的。

这种“顺”,其实很难量化,但长期使用的人都会感受到。


五、Linux:你最终绕不开的系统

Linux 很多人学生时代会“浅尝辄止”,但真正进入行业后会发现:

你可以不日常用 Linux,但你一定离不开它。

为什么?

因为它在另一个层面几乎是统治级的存在:

  • 服务器
  • 云计算
  • 容器(Docker / Kubernetes)
  • DevOps

本质上,互联网的底座就是 Linux。


Linux 的核心价值

它不是“好用”,而是:

可控。

你可以:

  • 控制系统的每一个细节
  • 自定义运行环境
  • 深入理解底层机制

但代价也很明显:

  • 学习成本高
  • 桌面体验弱
  • 对新手不友好

六、AI 时代,操作系统正在重新分工

如果放在过去,这三者的差距其实没那么大。

但 AI 的出现,正在放大这种分化。

我们可以简单粗暴地总结一下:

  • Windows:最广泛的用户基础
  • macOS:最活跃的开发创新
  • Linux:最核心的基础设施

而 AIR 这种工具的出现,其实在释放一个信号:

未来的开发工具,会优先出现在“更容易控制、更统一”的平台上。

这也是为什么:

很多 AI IDE,先上 Mac。


七、一个更现实的问题:要不要换 Mac?

这个问题我想直接说结论:

不要因为一个工具,就贸然换系统。

但你需要意识到一件事:

你未来的技术路径,可能会影响你的选择。


如果你是学生

建议是:

  • 先把基础打扎实(语言、数据结构、系统)
  • Windows 完全够用
  • 可以通过虚拟机接触 Linux

不要焦虑工具。


如果你已经在做开发

可以开始思考:

  • 是否需要更贴近生产环境
  • 是否需要更好的工具链体验
  • 是否在用越来越多“Mac 优先”的工具

如果答案是“是”,那 Mac 会是一个合理选择。


八、回到 AIR,这件事真正重要的地方

说到底,这篇文章不是在讨论哪个系统更好。

而是因为 AIR 这件事,让我意识到:

工具,正在反过来影响我们的技术选择。

过去是:

你选系统 → 再选工具

现在可能变成:

工具在哪 → 你去哪


九、最后

AIR 现在还不成熟,Windows 也迟早会支持。

但趋势已经很清楚了:

开发这件事,正在从“写代码”,变成:

定义问题 + 驱动 AI + 审查结果

而在这个过程中:

你所处的操作系统生态,会直接影响你的效率和视野。

这才是这件事真正值得思考的地方。


如果你现在用的是 Windows:

你会因为 AIR 这种工具,考虑换 Mac 吗?

还是继续观望?

这个选择,没有标准答案,但很可能会影响你接下来几年的开发体验。

本文由mdnice多平台发布

LinkedIn 推出认知记忆智能体(Cognitive Memory Agent,CMA),作为其生成式 AI 技术栈的组成部分,旨在构建具备状态感知与上下文理解能力的 AI 系统,使其能够在交互过程中留存并复用知识。该系统主要用于支撑招聘助手(Hiring Assistant)等应用,解决了大语言模型工作流中的一个核心问题:缺乏状态记忆,进而导致无法跨会话保持连贯交互。

CMA 充当应用智能体与底层语言模型之间的共享记忆基础设施层。应用智能体无需通过重复提示词来重建上下文,而是通过这套专用系统来实现记忆的持久化存储、检索与更新。这既实现了跨会话连贯的交互,减少了冗余推理,也能在用户上下文持续变化的生产环境中提供更优质的个性化体验。

会话记忆层示意图(来源:LinkedIn 博客文章

该架构将记忆划分为三个不同层级。情景记忆(Episodic memory)用于捕获交互历史与对话事件,让智能体能够回忆过往的交流内容。语义记忆(Semantic memory)存储从交互中提炼出来的结构化知识,支持对用户、实体及偏好等持久化信息进行推理。程序记忆(Procedural memory)对已习得的工作流程与行为模式进行编码,帮助智能体优化任务执行策略。三层记忆协同作用,使智能体的行为从单次响应升级为长期自适应演进。

LinkedIn 工程师 Xiaofeng Wang 在一篇帖子中指出:

记忆是构建生产级智能体最具挑战性、同时也最具价值的核心模块之一,它能够实现真正的个性化、交互连续性与规模化适配。

CMA 在多智能体系统中同样扮演着关键角色。与让每个智能体各自维护独立上下文不同,CMA 提供了一个共享记忆底座,让负责规划、推理与执行的各类专业智能体可以共同访问。这一共享层减少了状态冗余,提升了协作效率,并确保分布式工作流输出结果的一致性。 

从系统层面来看,CMA 集成了多种检索与生命周期管理机制。近期上下文检索用于保障短期相关性,语义搜索则支持对长期历史交互的调取。通过摘要进行记忆压缩有助于控制存储容量增长,并在规模化场景下维持系统的性能。这些机制也带来了关键的工程挑战,包括相关性排序、过期内容管理以及不断演变的用户上下文的一致性维护。

LinkedIn 杰出工程师 Karthik Ramgopal 强调了智能体系统向持久化上下文转型的重要性,他表示:

优秀的智能体 AI 不是无状态的:它会记忆、适应与积累。实现这一目标的核心能力之一便是突破上下文窗口限制的记忆能力。

在运营层面,持久化记忆系统带来了分布式系统中经典的权衡问题。确定需要存储哪些内容、何时进行检索以及如何处理过期数据已成为保障系统正确性的核心问题。

MLOPS 数据工程师 Subhojit Banerjee 强调:

缓存失效是计算机科学中公认的难题之一,很高兴你们明确提出了这一点。提取这类记忆的挑战在于如何准确识别情景边界、处理内容时效性和解决冲突。

在招聘等面向用户的应用场景中,LinkedIn 还将人工校验融入工作流程。这种人机结合的方式能够确保 AI 生成内容始终贴合用户意图与业务需求,尤其适用于高风险决策场景。

CMA 体现了 AI 系统从无状态生成向有状态、记忆驱动的智能体这一更广泛的架构转变。LinkedIn 将 CMA 定位为构建自适应、个性化、协作式智能体系统的横向平台。这一方向也凸显出业界日益增长的共识:生产级 AI 系统并非仅由模型决定,而是由围绕模型构建的记忆、上下文管理及基础设施层共同定义。

【声明:本文由 InfoQ 翻译,未经许可禁止转载。】

查看英文原文:https://www.infoq.com/news/2026/04/linkedin-cognitive-memory-agent/

继上次在 V 站做了内测宣传后,说好的公测活动终于可以开始啦!

APIBox 官网: https://apibox.cc

本次公测活动只针对 V2EX 的童鞋们,回帖附上你的用户名或者 ID 即可参与。

对了,差点忘记说了,福利是赠送余额 5$,这个是真 5 刀哈,因为我们站改成了美元充值和计费了。

额,介绍一下 APIBox 吧:

1. 企业精品线路大宽带,大部分地区延迟低至 10ms
2. 我们自己就是源头上游,暂时不用找中间商,不会有数据泄露风险。
3. 我们有 Claude 官方 API 、御三家的官代兜底(当然有点贵啊 ...)
4. GPT 0.1 折,这个同行中应该也算是低价了。
5. Gemini 0.2 折,稳定使用。
6. Claude 反代 0.2 ~ 0.3 折。
7. glm-5.1 0.2 折。

上面内容纯古法手打,更多介绍可以看官网或加入技术交流群咨询哈。

介绍

「🍉西瓜备份」是为 iPhone 设计的相册备份 App 。

支持外接硬盘、SMB 、WebDAV 作为远端存储点。

我自己是 immich/群晖用户,但是我不想相册管理也走它们的 mobile App ,有一些自己想要的功能点没满足,所以自己做了个。

优势

  • 原始信息保存

iOS 的照片不是单纯的图库,也不是简单的同名 MOV + 静态图的组合,还有一些七七八八的数据。我想要尽可能原始数据导出/导入,按照 iOS 照片结构导出对应角色,然后再导回去。这个过程里是依赖一个 watermelon manifest 文件来作为索引实现的。

  • PIP 功能支持

用户可以在备份过程中退到后台。

  • 后台备份功能

接入 Wi-Fi 和连上电的时候,就能进行最近两个月照片数据的备份。

  • 支持多个备份节点

重要的照片要备份好几个地方,所以支持多节点切换。

  • 除了支持上传,还支持下载与同步

这个同步需要说明,准确说是本地内容上传上去后,下载远端没有的数据。

  • 兼顾性能与速度

基本是目前能做到兼顾速度还考虑内存容量的状态了,优化好几遍了。

App Store

https://apps.apple.com/app/id6762260596

内购

只有一个,就是 Watermelon Pro ,定价 $3.99

限免时间 2026/04/22-2026/04/30

其他

内购免费,结果大家拿完内购就走了,也不回复。

但是如果是发码,20 个兑换码感觉可以钓 50 个评论。

所以希望大家玩命地评论我这种直接内购全免,对我来说真的很重要。

当然关于产品反馈,比如问题、建议,对我也很重要。

Nyarime 已经和 iKuai 官方团队进行了友好沟通,相关内容也 404
Nyarime 估计没想到官方不去找闲鱼赚钱留后门的反而几天时间内找到他
原因也简单,闲鱼一帮人只抢爱快一点钱,而他直接把爱快的底底都扒光公开,可以不找你吗
我留个备份,官方可不要找我哦,我不懂技术不需要友好沟通,要我删也不好删,看需求让它慢慢消失吧。
http://54.39.161.251:8080/ipfs/bafybeigvisqpuai2j77uqrwsdk7unonjqle2grjntvunuvcfgkzyyk6w7e?filename=爱快_naixi
如果网关无法访问可以替换下面网关节点试下
152.53.66.109|158.220.115.253|159.65.119.244|178.18.250.229|18.209.43.135

2026年国内算电协同政策进入全面落地阶段,电力成本占比超60%的服务器托管赛道迎来全新降本窗口,不少从业者好奇算电协同政策下,服务器托管的成本优化逻辑是什么,本文将从核心逻辑、落地方法等维度展开解读。

该逻辑本质是依托政策打通算力需求与电力供给的匹配链路,降低服务器托管的电力成本占比。通过将算力调度与绿电交易、峰谷电价错配、电力需求侧响应等政策结合,实现托管算力的单位用电成本最高可降30%。

相较于传统固定电价的托管模式,新逻辑下IDC服务商可根据电力供给动态调整算力调度策略,在保障用户算力稳定性的前提下,最大化享受政策红利,传导至托管用户端也能获得更低的报价。

中小IDC首先要完成算电协同试点资质申报,纳入地方算力调度清单后,即可参与绿电交易、需求侧响应补贴申领等政策福利,首先从电力采购端降低基础成本。

搭配轻量化算力调度系统,对托管服务器的算力需求进行分级,非实时性算力可安排在电价低谷时段运行,实时性算力优先匹配低价绿电供给,进一步摊薄单位用电成本。

将降本空间按照不同用户的算力需求分层传导,既可以提升自身产品的市场竞争力,也能将政策红利惠及终端用户,形成正向运营循环。

算电协同政策下,服务器托管的成本优化逻辑落地步骤有哪些,主要分为4个核心环节:

第一步:2026年3月底前完成本地算电协同试点资质申报,提交机房算力规模、用电结构等基础材料;

第二步:对接地方电力交易平台,完成绿电交易账户、需求侧响应账户的开通;

第三步:部署算力调度模块,完成托管服务器算力需求的分级标签设置;

第四步:每月度复盘电力成本数据,调整调度策略,最大化降本空间。

2026年是算电协同政策的红利释放期,中小IDC如何运用算电协同政策下服务器托管的成本优化逻辑降本,核心是吃透政策要求、完成内部运营体系适配,最快3个月即可看到明显的降本效果。

对于有服务器托管需求的企业来说,也可以优先选择已落地算电协同模式的IDC服务商,既能降低托管成本,也能满足绿电算力的碳排放要求,适配双碳政策下的合规需求。