粉丝312获赞1510

市面上有哪些好用的国产尼尼克斯号系统?一欧纳尼尼克斯,它是华为二零一九年发布的服务器扫码系统,支持鲲鹏处理器和容器虚拟化技术。第二个容器扫码系统,它是二零零二零二一年发布的扫码系统,支持叉八六、 arm 等多种新品架构和计算场景。 第三个呢,就是统性,他是二零一九年由中国电子集团还有武汉深制度在内的多家企业共同来打造的,利用操作系统。统性历史呢,提供了专业版的系统,还有家庭版的系统,社区版本以及服务器版本的操作系统。 第四个麒麟零零四,分为银河麒麟和钟表麒麟,他们呢都属于麒麟软件公司,也有扶起版本和桌面版。银河麒麟的社区版呢,是优麒麟桌面版呢,还有个版本呢,是比较受欢迎的,就是深制度开发的 dp, 基本呢可以跟 windows 抗衡,简单的办公,在线看视频、听音乐,甚至啊还能够玩一些简单的游戏。如果说你是个人电脑,那么我推荐你使用 dp。 如果说你是服务器呢,我推荐你使用欧拉超系统,这是这些超系统的下载链接,记得点赞加收藏。

华为 open water 和统性 u s 是什么样的关系?刘文欢在采访中表示,目前国内很多 cpu 厂商都有自言操作系统,华为的 open water, 龙星的 lunix, 他们定位是一致的。 cpu 厂商并非是想把自言操作系统变成商业版,而更多的是为了验证优化自身的 cpu 性能, 提供给社区使用,所以这类系统跟操作系统厂商实际上没有直接竞争关系,而更多的是合作关。系统性软件将联合这些厂商共同打造丰富的操作系统应用生态, 为用户提供完整的应用开发及运行环境,帮助客户将现有业务快速平滑的迁移到国产平台上。

字节跳动最近开源了一个专门给 agent 的 设计的记忆系统,叫 open viking。 我 翻了他的原码,发现他的设计思路跟目前主流的做法完全不同。 今天聊一下他解决了什么问题,以及他是怎么解决的。先说当前 agent 的 记忆系统的实际现状和痛点。目前主流的 coding agent, 比如 cloud code 记忆系统的做法是这样的,记忆存成 markdown, 文件解锁的时候,递归,扫描目录,读取每个文件的前几十行元数据,拼成一个清单, 然后让一个便宜的模型从清单里挑出最相关的几条,读取全书,注入上下文。这套方案在编码场景下够用,记忆量通常不超过几百条,每条都是高价值的、不太会变的信息。 但当你把 agent 的 应用场景扩展到更复杂的领域,这套方案就开始暴露问题了。第一个痛点,记忆量有硬上限。 cloud code 的 active recall 机制,扫描上线是两百个文件,超过的直接忽略,对于编码场景够用。但如果你的 agent 需要管理大量的项目文档、用户历史领域知识,两百条远远不够。 而且随着记忆量增长,让模型从一个两百行的平面清单里挑选,准确率会下降,因为清单太长,模型的注意力会分散。第二个痛点,检索是单次判断,没有探索能力,模型看到一个招标清单,做一次选择就结束了, 他没有能力说这个方向看起来相关,让我深入看看这个类别下还有什么。如果最相关的记忆的摘药恰好写的不够好,或者用户的查询跟记忆的表述方式不同,一次判断就可能漏掉,没有递归,没有回溯,没有多步探索。第三个痛点,所有记忆平铺在一起,没有结构, 不管是用户偏好、项目背景,还是工具使用经验,全部混在一个平面清单里。模型需要从一堆混杂的信息中同时判断类型和相关性。如果记忆能按类型和主题组织成层级结构,模型可以先定位到相关的类别,再在类别内精确搜索,效率会高得多。 第四个痛点, token 消耗没有精细控制,要么读取完整文件,消耗大量 token, 要么只看摘要,可能丢失信息,没有中间力度。 一个记忆文件可能有几千字,但你当前只需要知道它的核心结论,不需要看全部细节缺少,先看该要判断值不值得深入,再决定是否读全书的分级机制。第五个痛点, agent 的 执行经验不会自动沉淀。 cloud code 的 记忆系统主要记录用户的偏好和反馈,但 agent 在 执行任务过程中积累的经验,哪个工具在什么场景下好用,哪种解析策略有效,哪些错误模式反复出现,这些不会被自动提炼和存储。每次新绘画, agent 对 自己过去的表现没有记忆。 open viking 针对这五个痛点,给出了五个对应的解法。解法一,用虚拟文件系统统一管理所有上下文。 open viking 不 把记忆资源技能分开存储,它把所有东西映射到一个虚拟文件系统里,用统一的 u r i 标识。顶层有三个目录, resources 放外部资源,比如项目文档、代码、仓库、网页。 user 放用户的长期记忆, 包括偏好实体记忆、事件记录, agent 放 agent 自己的学习记忆,包括案例、模式、技能。 agent 的 操作记忆就像操作文件一样,用 ls 列目录看有什么,用 find 搜索特定内容,用 tree 看层级结构。这不是一个比喻,是真的可以这样操作。为什么用文件系统?因为文件系统天然有层级结构, 层级结构意味着上下文,即一条记忆不是孤立的,它在某个目录下,这个目录有自己的描述,描述告诉你这个目录里的所有内容是关于什么的,相关的信息自然地聚集在一起。 解法二,三层分级加载,按需获取不同力度。这是 open viking 最核心的设计之一。每个目录节点都有三层内容。 l 零层叫 abstract, 大 概一百个 token, 就是 一句话,摘要用来快速判断这个目录跟我当前的问题有没有关系。 l 一 层叫 overview, 大 概两千个 token, 包含核心信息和使用场景,用来做决策。我需不需要深入看这个目录的具体内容? l 二层是完整的原始内容,只有在 agent 确定需要深入阅读的时候才加载。 源码里的实现是,每个目录下有一个叫 abstract 的 markdown 文件存 l 零,一个 overview markdown 文件存 l 一, 实际内容文件存 l 二,写入的时候,三层同时生成,读取的时候按需选择层级。 这个设计的效果是什么?在集成测试中,输入 token 成本降低了百分之八十三到九十六。因为大部分时候 agent 只需要看 l 零和 l 一 就能做出决策,不需要加载完整内容。 解法三,目录地归剪索,替代平面向量搜索。传统做法是查一次向量数据库,返回最相似的几条结果。 open viking 的 做法是一个多步的地归过程。第一步,全局向量搜索,在所有 l 零和 l 一 节点上做一次搜索,找到得分最高的目录。 注意,这一步找的不是最终答案,是哪些目录可能包含答案。第二步,在高分目录内搜索子节点找到的子节点,如果还是目录,继续递归下钻。如果是叶子节点,收集为后选结果。第三步,分数传播。 子节点的最终得分不只取决于自身的向量相似度,还会继承副目录的得分。一个高度相关的目录下的所有内容都会获得位置加成。 第四步,收敛检测。如果连续三轮搜索,结果没有变化,停止地归,防止无线下钻。为什么这比平面搜索好?因为它利用了层级结构提供的鲜艳信息。 如果一个目录的摘要跟你的查询高度相关,那这个目录下的所有内容都值得看一看,即使某些内容的向量相似度不是最高的。这就像你在图书馆找书,先找到对的书架,再在书架上找具体的书,比在整个图书馆里主本翻要高效得多。 解法四,解锁轨迹可示化。因为所有内容都组织在层级结构里,解锁过程就是一个从根目录逐层下钻的路径,这个路径是完全可追踪的,你可以看到 agent 先看了哪个目录的摘药,然后决定进入哪个子目录,最终选中了哪些内容。 出了问题的时候,你可以直接看解锁轨迹。是第一步局搜索就没找到对的目录,还是找到了对的目录,但在子节点搜索时漏掉了,还是分数传播的权重不对,每一步都是可诊断的。 解法五,自动记忆提取和自我迭代 open viking 有 一个 session commit 机制,当一轮对话结束的时候,系统自动从对话中提取。记忆分成八个类别存储用户。测四类, profile 是 用户画像, preferences 是 偏好, entities 是 实体记忆, events 是 事件记录, agent 测四类, cases 是 具体问题加解法, patterns 是 可付用的流程方法, tools 是 工具使用经验, skills 是 技能执行策略。 源码里的 memory extractor 类负责这个工作,他用大模型分析对话内容,提取后选记忆,每条记忆都生成 l 零、 l 一、 l 二三层内容,然后写入对应的目录。 还有一个 working memory 的 设计系统,维护一个期段式的结构化工作记忆,文档绘画标题、当前状态、任务目标、关键决策、相关文件、错误记录待解决问题。 每次更新的时候,大模型对每个段落做保持更新或追加的决策,而不是重写整个文档,这保证了工作记忆的结构稳定性。效果数据 open viking 在 集成测试中的表现,任务完成率比基线提升百分之四十三到四十九,同时输入 token 成本降低百分之八十三到九十六,任务完成率提升将近一半, token 成本降低超过百分之八十。 这两个数字同时改善,说明不是靠塞更多信息来提升效果,而是靠更精准地找到需要的信息。 一句话总结, open viking 的 核心思路是把 agent 的 所有上下文组织成一个有层级结构的虚拟文件系统,每个节点有三层力度,可以按需加载。 解锁的时候沿着层级结构地归下钻,而不是做平面搜索。层级结构提供了平面存储没有的鲜艳信息,让解锁从在所有记忆里找最像的变成先找到对的目录,再在目录里找具体内容。 最后说一个他没解决的问题。之前有一篇论文叫 man, 测试了 a 阵的记忆系统在急连更新场景下的表现。当一个上游事实变化后,依赖它的下游事实能不能自动更新?比如你搬家了,每天骑车十五分钟到公司,这条记忆还成立吗?结果是所有系统的准确率只有百分之三。 open viking 能解决这个问题吗?从源码来看,不能直接解决。它有一个 relations 机制,可以存储 u r i 之间的关联关系。但这个机制的设计意图是解锁时发现相关内容,不是写入时触发急连更新。 写入新记忆的时候,系统不会自动检查已有记忆是否受影响。不过它的层级结构部分缓解了这个问题,因为相关事实自然聚集在同一个目录下。 住在望京和汽车通勤可能都在用户记忆的同一个实体目录下。当 a 阵通过地归解锁进入这个目录时,它能同时看到这些相关事实,从而有机会在读取时发现不一致。 但这依赖 a 阵的推理能力不是系统层面的保证。急连更新仍然是一个开放问题,目前没有任何记忆系统从根本上解决了它。 open viking 让相关信息更容易被一起看到,但看到之后能不能正确推理出依赖关系,还是取决于模型本。
