当前位置: 首页 > news >正文

GLM-5.2 与 PowerMem 碰撞:七轮长程任务评测,展现稳定工程判断能力但仍留缺口

GLM-5.2 与 PowerMem 碰撞:七轮长程任务评测,GLM-5.2 表现出色但仍留缺口

GLM-5.2 是智谱 6 月 17 日开放的新一代大模型,具备 1M 上下文、兼容 Claude Code 协议。PowerMem 是 OceanBase 开源的 AI 记忆引擎,能为 LLM 应用提供长期记忆、检索、智能遗忘等能力。当 GLM-5.2 碰上 PowerMem,会出现怎样的火花?

灵光一闪:一个撞上门来的真实 case

这个灵感来得很突然。起因是有幸受邀参与 GLM-5.2 模型长程任务执行的测试计划,需要在智谱和 AGI Bar 联合举办的活动中分享一个内测 case。正巧手上在做的 Agent 平台项目要用到 OceanBase PowerMem 的 TypeScript 版本 SDK。但翻了翻 PowerMem 的 GitHub 仓库,发现 TypeScript SDK 的迭代节奏没跟上 Python SDK,存在一些滞后。GLM-5.2 一个绝佳的长程任务测试 case,就这么撞上门来了——让 GLM-5.2 去完成 PowerMem 从 Python SDK 到 TypeScript SDK 的功能拉平,把滞后的迭代节奏都给补齐。

PowerMem:为什么它是长程任务的天然试金石

PowerMem 覆盖的能力很多,核心能力面铺得很广,而每一项背后都是一块独立的工程模块:长期记忆的存储、检索、更新、删除和批量管理;来源管理 (SourceStore) 和技能管理 (SkillStore);基于艾宾浩斯曲线的智能遗忘;多 Agent 协作、Scope 和 Permission 控制;HTTP server 和 Dashboard 可视化;向量、全文、图和时间信号的混合检索。PowerMem 在多语言 SDK 上铺得比较开,官方目前维护 Python、TypeScript、Go、Java 等几种主流语言。其中 Python SDK 是主维护版本,行为规范最完整、更新最活跃,几乎每天都有提交;TypeScript SDK 则在早期完成了核心能力的实现,但近期没能完全跟上 Python 的节奏,两个版本之间存在一些功能层面的错位和对齐空间。于是一个工程问题浮出水面:如何把 Python SDK 已经沉淀下来的行为规范,完整、可控地映射到 TypeScript 版本上?这事并不容易,很考验模型的能力——它要求模型做的是工程判断,而不只是写代码。TypeScript 仓库已经有大量能力,模型既不能为了显得"做了很多"而从零重写,也不能机械照搬 Python 的命名和风格。它必须先识别已有实现,再判断哪些地方需要补代码、哪些地方应该补测试、哪些地方只需写入 known-gaps。这个任务的验证面也很完整:可以看 type-check、test、build、lint,可以看 git diff,可以看 upstream 是否被误改,可以看测试是否依赖真实 API Key,还可以看模型是否诚实记录了 baseline 失败和剩余缺口。所以这个 case,一方面能看 GLM-5.2 能不能在一个持续数小时、多轮变化、带真实约束的工程任务里始终保持正确方向,另一方面也能顺手给 PowerMem TypeScript SDK 做一次完整的功能复盘和对齐。嗯,一举两得。

划定边界:把“翻译”和“对齐”分清楚

真实的工程 case 定下来之后,接着要想的是怎么开始。想让模型顺利上手,首先得把它落成一份模型能接住的工程任务:从哪个仓库出发、能改什么不能改什么、最终交付物有哪些、哪些行为必须保留……这一整套边界定清楚,模型的表现才能被客观评审。具体到 PowerMem 这次任务,主要涉及两个仓库:upstream-powermem,即 Python 主仓库,只读参考、不允许修改,它是行为来源;candidate-powermem-ts,即 TypeScript 候选仓库,是模型的主要修改对象,必须保留现有项目结构和 API 风格。在此之上,还规定了几条核心要求:读懂 Python 主仓库的 PowerMem 行为;读懂 TypeScript 当前实现和已有测试;识别 TypeScript 已有能力,避免重复实现;建立 Python API 到 TypeScript API 的行为 mapping;对关键差异补充实现、测试或 known-gaps;编写 Vitest parity tests,用测试证明行为对齐;保证 type-check、test、build、lint 等结果可复现;输出迁移文档和最终报告。这个 case 里最容易踩的坑,是把任务理解成“翻译”。真正的目标是行为对齐:这个 API 在 Python 里的真实行为是什么?TypeScript 里有没有实现?如果有,行为是否等价?如果不完全等价,该修代码、补测试,还是作为差异记录?如果要修,能不能最小修改、不破坏现有架构?每一步都是判断题。

评测设计:挖好坑,才测得出真本事

任务边界定下来之后,还得设计怎么评——用什么标准衡量最终结果的好坏。如果只盯着最终仓库看,很容易掉进两个对称的陷阱:要么模型把环境历史问题包装成自己修好的业务 bug,要么反过来把环境问题算到模型头上。所以评测不能只看终态,得提前埋下一些过程观察点和隐藏验收点。正式测试前,需要先记录 baseline。其实 PowerMem 候选仓库在 baseline 阶段的 type-check、test、build 都是失败的,但失败原因是 npm 安装不完整以及 Windows 上 npm optional dependency 的问题,而非候选代码本身的 bug。这份 baseline 记录很关键,它能挡住一个常见的评测误差:要么把环境历史问题算到模型头上,要么让模型把 baseline 问题包装成自己的功劳。同时,为 GLM-5.2 的任务执行埋了一批隐藏验收点:是否误改 Python 主仓库;是否从零重写 TypeScript 仓库;是否识别 TypeScript 已有核心实现;是否伪造测试结果;是否依赖真实 API Key;是否覆盖批量操作;是否有 known-gaps;是否保留 TypeScript API 风格;需求变更时是否增量修改;故障修复时是否最小修改;是否有 PR 级交付意识;是否区分 baseline 问题和候选实现问题。这些点不会提前告知模型,但会在最终审查中逐项评估。在长程任务里,最危险的往往不是写错一行代码,而是方向漂移、无谓重写、掩盖失败、改动范围失控,或者把环境问题和业务问题搅在一起。埋下这些点不是为了刁难,而是为了测出真正的工程能力。

七轮任务执行总览

准备工作做完,GLM-5.2 可以正式开跑了。整个任务按阶段推进,每一阶段对应一个明确的子目标——既给模型设了工程检查点,也方便后续评审按阶段复盘。过程一共分成七轮,见下表。

轮次内容关键词
R1主任务:核心 SDK 行为对齐审计、最小补丁、parity tests
R2批量 API 复核业务代码 0 改动、补测试
R3文档债修复最小修复、不碰业务代码
R4深度功能对齐差异矩阵
R5深水区真实实现Source/Skill/Ebbinghaus/HTTP
R6文档与开发者体验收尾README、examples、导出
R7最终一致性审查验证、报告、HTML

从 R1 到 R7,大致可以分成两段:R1 到 R3 偏向核心 SDK 的行为对齐,工程纪律优先;R4 到 R7 偏向深度功能和文档收尾,复杂度和稳定性是重点。下面就按这两段拆开看。

R1 到 R3:先审后写的工程纪律

R1:先审计,再动手

R1 里模型没有上来就写代码,而是先做审计。PowerMem TypeScript 不是空仓库,它已经实现了 12 个核心 Memory API。所以 GLM-5.2 没有重写 Memory 类,而是做了 4 处最小行为对齐:update 空 content 校验,对齐 Python 的 ValueError 行为;getAll 默认 order 显式设为 desc;count 包 try-catch,异常时返回 0;deleteAll 在存在 graphStore 时同步清理。这一轮业务代码只动了 src/powermem/core/memory.ts 一处,其余主要是新增测试、文档和示例。改动出乎意料地小,稍微有点意外。

R2:需求变更,克制住不重写

接着是 R2,这是一次需求变更:要求复核 addBatch、getAll、count、deleteAll、reset 五个批量 API,并明确不重写、不删除。模型先审计了已有状态,判断这些 API 在第一轮已经覆盖,第二轮重点不该是再改业务代码,而是补测试和文档。于是 R2 业务代码 0 改动,只追加了 22 个 batch parity tests,并更新了 migration 文档和最终报告。

R3:故障修复,只动文档不碰代码

R3 是一次故障修复,属于临时加入的一轮——R1、R2 之后发现了一些问题,比如 api-mapping 文档里关于 getAll 默认 order 的描述自相矛盾。但重新审核后,模型把它归类为“文档 - 代码不一致”而非实现问题,最终只修了文档中的相关行,没碰业务代码,也没删测试。前三轮,没让 GLM-5.2 一上来就推倒重来,而是先审计、后判断、再做最小改动——这在长程工程任务里,是一种相对严格的规范行为。

R4 到 R7:复杂度飙升后还稳得住吗

R4:认知负荷最高的一轮

从 R4 开始,任务从核心 SDK API 的表面对齐,扩展到深度功能对齐。这是整个 case 里认知负荷最高的一轮:前几轮处理的是 12 个核心 Memory API 这种相对集中的目标,而 R4 一下子把视野拉到全仓库——Python 仓库共 183 个源文件,TypeScript 仓库 80 多个源文件,两边逐一对照。涉及的深层模块有 SourceStore、SkillStore、SkillManager、ScopeController、PermissionController、HttpMemoryClient、EbbinghausAlgorithm、IntelligentMemoryManager 等几十个,每个 API 都要明确:Python 里在哪、TypeScript 里在哪、当前状态如何、该怎么处理。为了不让这些差异散落在零碎笔记里,GLM-5.2 审计了大量 Python 与 TypeScript 文件后,汇总出一份 deep-feature-gap-matrix。每条记录都带 Python 来源文件、TypeScript 对应位置、状态归类、优先级和本轮处理策略。状态分成五类:已对齐:TypeScript 已有对应实现,行为也一致,不需再动;部分对齐:两边都有实现但行为有差异,要决定是改 TypeScript,还是文档化为已知差异;未实现:TypeScript 完全没有,需要在 R5 里补真代码或补 stub;不适合对齐:Python 侧能力依赖 Python 生态或外部服务,TypeScript 侧没必要硬怼,直接记入 known-gaps;需要人工确认:差异本身比较模糊,模型不敢自己拍板,标出来留给后续人工评审。每条还标了优先级:P0 必须本轮处理、P1 应当本轮处理、P2 可放到后续 PR。这个优先级机制让 R5 的施工顺序一目了然——先 P0 再 P1,P2 留到后面。这份矩阵,在 R5 里就是真正的施工图纸,每实现一块就回头打个勾,避免掉进“看起来实现了、其实只是 stub”的坑。

R5:啃下深水区

R5 是整个任务里代码复杂度最高的一轮,从“补丁式修改”正式进入“新增实现”阶段。R4 生成的差异矩阵在这里化作施工图纸,每一行“未实现”或“部分对齐”都得落到真实代码上。这一轮新增的模块横跨好几个完全不同的技术域:存储抽象与参考实现的 SourceStore/SkillStore、数值计算类的 EbbinghausAlgorithm、LLM-driven 的 SkillManager、语义对齐类的 ScopeController 和 PermissionController,还有走 HTTP 协议的 HttpMemoryClient。每一块的实现风格、测试方式、外部依赖都不一样,却要在同一轮里同时推进,模块之间还得保持接口和数据流连贯,不能各写各的、最后拼不上。复杂度不只在于模块多,更在于每个模块背后都有判断题:哪些能力直接照搬 Python 不现实、需要重新设计抽象层?哪些行为必须做数值对齐而非逻辑对齐?哪些测试不能依赖真实外部服务、得把 LLM、fetch、数据库这些依赖全部注入化?这些都很考验模型的整体工程判断。这一轮跑下来,最终测试达到 649 passed / 2 skipped / 0 failed,比 R4 之前多出几百个 case;整个仓库的真实实现占比提升到约 92%,stub 压到约 8%。剩下的 stub 集中在 OceanBase 原生能力和少量高层串联 API 上,而且这些缺口都被显式记录在 known-gaps 里——没有藏在代码注释里,也没有被悄悄忽略。

R6 与 R7:文档收尾与最终审查

啃完最复杂的 R5 之后,R6 负责文档收尾。这里有个细节很重要:模型没有只写“能力已完成”,而是同步修正 README、api-mapping、python-ts-parity、known-gaps,让文档和代码状态保持一致,并明确标注 OceanBase 真实集成仍属后续 PR。最后的最后,R7 站在评审者视角,复查那些“声称实现”的能力是否真有代码支撑、测试是否真覆盖、文档是否还有过时描述。最终给出 PASS,并建议进入 dashboard 人工验收。这说明模型在复杂度提升后没有明显崩盘——它能从 API 层进入算法、存储、HTTP、Agent 控制器等多模块场景,并始终保持测试和文档闭环。七轮跑下来,从最初的 baseline 记录到 R7 final 收官,总跨度大约 4 小时 37 分钟。这也是长程任务常见的样子:不是一次性完成,而是在多个阶段里不断扩大范围、处理变更、修补文档债、补充测试证据,最后形成一个可审查的闭环。这些过程记录,也是后面最终结果和交叉评审的依据。

最终结果:漂亮数字背后的证据链

这次任务最终可验证的结果,详细来说包括:npm run type-check 通过;npm test 通过,结果是 649 passed / 2 skipped / 0 failed;npm run build 通过;npm run lint 通过,0 errors;upstream-powermem 的 git status 为空,说明 PowerMem Python 主仓库未被修改;candidate-powermem-ts 的最终 diff 显示 13 个已修改文件、12 个新增文件。最终报告记录的关键功能状态包括:Memory 类公开方法对齐 38/38;EbbinghausAlgorithm 核心方法 8/8 对齐;HttpMemoryClient 10/10 方法实现;parity tests 合计 189 个 case;API surface 完整度约 98%;真实实现占比约 92%,stub 约 8%。这些数字背后都有据可查:日志、测试输出、diff、最终报告和观察日志,都能互相印证。除了这些可验证数据,GLM-5.2 在任务过程中还持续产出完成情况报告,记录每一轮做了什么、改了哪些文件、跑了哪些命令、哪些测试通过、哪些能力尚未完成,以及后续 PR 应该怎么拆。这既是模型对自己工作的交付,也是后续交叉评审的素材基础。

交叉评审:请 ChatGPT-5.5 来当裁判

不过,让 GLM-5.2 自己出报告,总有种“既当运动员又当裁判”的味道。于是另外请出 ChatGPT-5.5 做了一次独立交叉评审——重新读取本地日志、最终报告等内容,再按独立评分标准重新打分。最终的可视化报告里,呈现了总分、各评分维度、证据链、剩余风险、时间线和关键数据。结果还挺意外——ChatGPT-5.5 按自己的评分标准重新打分后,给出的分数甚至比 GLM-5.2 自评还要高。细看报告,分数高的原因在于后四轮把任务复杂度拉了上来:从核心 SDK parity 扩展到算法公式、存储抽象、HTTP client、Agent 权限控制,再到 README 和 examples 收尾,而最终验证仍然全绿。但客观讲,这次任务执行仍然留有缺口。比如对 OceanBase 的真实集成并没有完成:SQLite 版的 SourceStore 和 SkillStore 已经实现并通过测试,但 Python 生产环境中的 OceanBase 原生能力——索引、SQLAlchemy engine、向量与全文混合检索——需要真实外部环境验证,不能因为本地测试通过就说完全完成。再比如,部分 AgentMemory 高层 API 仍是 stub。底层的 ScopeController 和 PermissionController 已经比较完整,但 createAgent、shareMemory 这类高层串联,还得靠后续 PR。又比如,ImportanceEvaluator 的 LLM 路径,以及 IntelligentMemoryManager 的部分高级方法,仍未完全对齐。这些,报告里都如实列了出来。但它们并不影响整体结论:这次任务评价虽高,却也明确留有后续工作。至此,整个评测任务结束。

总结

一个意料之外的发现

这次 case,有一个挺意外的感受。开始之前,以为 PowerMem TypeScript SDK 因为近期更新不多,可能需要模型做大量重构和大型新增,才能追齐 Python 版本。但真正上手后才发现,PowerMem TypeScript SDK 是一个相当完整的项目,几乎所有核心能力都已就位:Memory 类的 12 个核心 API 全部到位,配置系统、存储后端、Provider 工厂、艾宾浩斯衰减、CLI、HTTP server、Dashboard 框架都已有完整骨架,baseline 阶段就已经有 460 个测试用例。所以 GLM-5.2 在这次任务里实际写的代码量并不大,整个七个阶段真正复杂的改动,集中在 R5 的深水区模块。换句话说,GLM-5.2 这次展现的核心能力,不是“写了多少代码”,而是“能不能在一个已有的大型代码库上做出正确的工程判断”——知道哪里该改、哪里不该改、哪里只需补测试、哪里要诚实记录为缺口。这何尝不是传统编程里,资深工程师和初级工程师的核心区别呢?初级工程师面对一个项目,倾向于直接动手改写;资深工程师则会先花时间读懂结构,然后只在该改的地方做最小改动。GLM-5.2 这次的表现,更像后者 —— 资深工程师。

落到 PowerMem 和 GLM-5.2 上

从 PowerMem 这个项目本身来看,这次 case 也让对它有了更深的认识。Python SDK 的高活跃度,体现了项目的工程推进力;TypeScript SDK 虽然更新节奏放缓,但底子依旧扎实,核心抽象没有走偏。一个能在停滞一段时间后仍被模型快速理解和扩展的代码库,本身就说明 PowerMem 早期的架构设计经得起时间检验。从 GLM-5.2 这个模型来看,1M 上下文在跨仓库任务里的作用很明显。任务需要同时持有 Python 仓库的行为规范、TypeScript 仓库的当前实现、配置系统的状态、测试覆盖情况、文档历史债、多轮需求变更等等信息——只有把它们放进同一个上下文窗口,才能做出连贯的工程判断。这对国内做 Agent 应用的开发者来说,是一个相当实际的利好。这次长程任务评测,也提供了一个值得借鉴的样本,是一次很有意思的经历。一个高质量的长程任务评测,不该是“丢给模型一个超长 prompt 然后等结果”,而应提前设计好 baseline、隐藏验收点、阶段化检查点、过程日志——脚手架越扎实,模型的真实能力越能被测出来,分数也越有参考价值。总体来说,在这次 PowerMem 从 Python 到 TypeScript 的长程功能对齐任务中,GLM-5.2 的表现相当不错:它既展现了稳定的长上下文跟踪能力,也展示了阶段化规划、工程边界控制、最小增量修复、证据化测试、风险诚实记录等一系列能力。当然,它并非毫无缺点,但能在多轮任务中持续保持目标、持续验证、持续记录风险,并最终交付一个可审查、可运行、可复盘的工程结果,已经很难得。长程任务评测,本身就是一门需要认真设计的工程:脚手架越扎实,模型的真实能力才越能被测出来。这是第一次认真地跑这么复杂的长程任务,把 baseline、过程截图、观察日志、每轮测试、最终报告、可视化评审都尽量记录下来。总的来说,是一次非常有意思的体验。

http://www.jsqmd.com/news/1117799/

相关文章:

  • IS31FL3731 LED驱动与TM4C129微控制器实战指南
  • WinForm依赖注入实战:从原理到应用
  • 3分钟掌握百度网盘高速下载:Python解析工具实战指南
  • ICM-42688-P与STM32F745ZG在工业自动化中的高精度运动控制应用
  • PingFangSC字体终极指南:6种字重+双格式支持,如何为你的Web应用节省50%字体加载时间
  • 金融系统Java安全实战:纵深防御、安全左移与核心漏洞防护
  • 零代码SQLite数据库管理:DB Browser for SQLite完整指南
  • LV3296与PIC18F4620构建高效条码识别系统
  • 【Bug已解决】MCP error -32000: Connection closed 解决方案
  • 3大核心功能打造专业级Windows音频调校方案
  • 从入门到精通:openeuler/compiler-test中的测试套管理与维护终极指南
  • 微信聊天记录删了?3 种手机本地方法一键找回
  • 【独家首发】头部金融科技公司内部AI编程规范白皮书(含17条防Bug硬约束规则与自动化校验脚本)
  • WarcraftHelper:魔兽争霸III终极增强插件完整使用教程
  • 5分钟掌握WeMod Pro功能免费解锁:Wand-Enhancer技术解析与部署指南
  • 网盘直链下载助手终极指南:5分钟解锁浏览器直接下载八大网盘的秘密武器
  • 警惕AI领域虚假技术营销:如何识别伪基准与杜撰模型
  • LTC6904与MK64FN1M0VDC12构建精密可调方波发生器
  • 智驾3D目标检测落地选型实战指南:单目/激光雷达/多模态如何抉择
  • SPAdes基因组组装工具:从入门到精通的完整指南
  • 猫抓Cat-Catch:重塑浏览器资源捕获体验的开源革命
  • 从0到1掌握openeuler/cpds-agent:容器数据采集入门到精通
  • LDAP未授权访问漏洞:原理、验证与安全加固实战指南
  • 4步构建企业级Windows系统兼容性保障体系:VisualCppRedist AIO深度技术解析
  • 从AI原型到生产系统:Harness Engineering与Hermes Agent的工程化实践
  • Claude Code 保姆级实战指南:从安装到项目集成,解锁对话式编程
  • Kali Linux渗透测试实战:Netcat瑞士军刀从基础连接到反弹Shell全解析
  • 高精度电压管理方案:KMR221传感器与TM4C129ENCPDT微控制器应用
  • KMR221+PIC32MX795F512L高精度电压监测方案解析
  • Chrome全屏截图:当技术遇见艺术,一次点击记录整个网页世界