大语言模型长上下文对话质量下降?解析压缩工作摘要策略与实战
最近在尝试将大语言模型LLM应用于长文档分析和多轮复杂对话时遇到了一个普遍但棘手的问题随着对话轮次增加或输入上下文Context变长模型的回复质量会显著下降变得笼统、偏离主题甚至出现“胡言乱语”。这并非某个特定模型的缺陷而是当前基于Transformer架构的LLM在处理超长序列时面临的固有挑战。知名学者Ethan Mollick在其研究中提出了一个颇具工程智慧的解决方案——“压缩工作摘要”。本文将深入探讨“长上下文致对话退化”这一现象的根本原因并详细拆解“压缩工作摘要”这一策略的原理与实战应用。无论你是正在构建AI智能体、开发基于RAG检索增强生成的应用还是单纯希望优化与大模型的交互体验本文提供的分析思路和代码方案都能为你提供直接的帮助。我们将从原理分析到代码实现一步步构建一个可运行的上下文管理模块。1. 背景与核心概念为什么长上下文会“失效”在深入解决方案之前我们首先要理解问题所在。当你给模型输入一段很长的文本例如一篇50页的论文、长达数小时的会议记录或持续数十轮的聊天历史并期望它基于所有信息进行精准回复时结果往往不尽如人意。1.1 现象对话退化与信息稀释回复变得笼统和敷衍模型不再引用上下文中的具体细节而是转向一些安全但无用的通用表述如“根据您提供的文档...”、“总的来说...”。关键信息被忽略或混淆模型可能错误地合并不同部分的信息或者完全遗漏掉位于输入文本中后段的关键指令或事实。出现事实性错误或矛盾在超长上下文中模型的自注意力机制可能“过载”导致生成的内容与上下文事实相悖。1.2 根本原因注意力机制的“瓶颈”当前主流LLM的核心是Transformer架构其关键组件是自注意力机制。该机制允许模型在处理某个词时权衡上下文中所有其他词的重要性。计算与内存开销注意力权重的计算复杂度与序列长度的平方成正比O(n²)。虽然有一些优化技术如Flash Attention但超长序列仍会带来巨大的计算负担和内存压力。“注意力稀释”在极长的序列中任何单个词或句子所能分配到的注意力权重被严重稀释。模型难以维持对遥远但关键信息的聚焦导致这些信息在生成时被“边缘化”。位置编码的局限性虽然RoPE等现代位置编码能更好地处理长序列但当序列长度远超训练时的常见长度时模型外推能力有限对位置的感知会变差。1.3 “压缩工作摘要”的核心思想Ethan Mollick提出的“压缩工作摘要”并非简单地将长文本截断或总结。它是一个动态的、迭代的上下文管理策略工作记忆将当前对话中最相关、最活跃的部分信息如最近几轮对话、被频繁引用的文档片段保持在模型的“工作上下文”中。摘要压缩将那些不再活跃但仍有潜在价值的“历史上下文”如较早的对话轮次、背景文档进行智能压缩生成一个高度凝练的摘要。动态更新随着对话进行不断更新“工作上下文”和“压缩摘要”确保输入给模型的总序列长度可控同时不丢失对话的连贯性和关键背景信息。这模拟了人类处理复杂对话的方式我们不会逐字记住所有说过的话但会保持一个不断演进的“情境理解”。2. 环境准备与项目结构我们将使用Python和OpenAI API或兼容的开源模型API来构建一个简单的上下文压缩管理器。你可以轻松地将其适配到LangChain、LlamaIndex等框架中。2.1 环境与依赖Python版本: 3.8核心库:pip install openai # 用于调用大模型API pip install tiktoken # 用于精准计算Token数量OpenAI模型 # 可选如果你使用其他模型可能需要对应的SDK如 pip install anthropic 用于Claude2.2 示例项目结构long_context_manager/ ├── context_manager.py # 核心上下文管理类 ├── config.py # 配置参数API密钥、模型、长度限制等 ├── example_usage.py # 使用示例 └── README.md3. 核心原理与策略拆解我们的上下文管理器将维护两个核心部分Working Context (工作上下文)一个双端队列deque保存最近几轮完整的对话用户Query 助手Answer。Compressed Summary (压缩摘要)一个字符串是之前所有历史对话的凝练摘要。管理策略的流程图如下用文字描述开始新对话 │ ├── 用户输入新消息 │ │ │ ├── 步骤1将新消息加入工作上下文 │ │ │ ├── 步骤2检查总Token数是否超限 │ │ ├── 若未超限直接组合工作上下文和压缩摘要发送给模型。 │ │ └── 若超限进入压缩流程。 │ │ │ └── 步骤3压缩流程 │ 1. 从工作上下文尾部移除最老的几轮对话。 │ 2. 将这些移除的对话与当前的压缩摘要一起发送给模型指令其生成一个新的、更全面的压缩摘要。 │ 3. 用新摘要替换旧摘要。 │ 4. 将剩余的工作上下文与新摘要组合发送给模型生成回复。 │ └── 模型生成回复后将本轮完整的对话用户消息模型回复加入工作上下文。4. 完整实战构建上下文管理模块4.1 创建配置文件 (config.py)首先定义一些关键参数。# config.py class Config: # 模型相关 MODEL_NAME gpt-4o-mini # 可根据需要更换为 gpt-4, claude-3-5-sonnet 等 API_BASE https://api.openai.com/v1 # 如果使用第三方代理或本地模型需修改 API_KEY your-api-key-here # 请替换为你的实际API密钥 # 上下文管理参数 MAX_WORKING_CONTEXT_LENGTH 4 # 工作上下文中最多保留多少轮完整对话QA MAX_TOTAL_TOKENS 16000 # 发送给模型的总Token上限需小于模型上下文长度 SUMMARY_MODEL gpt-4o-mini # 用于生成摘要的模型可以用更便宜的模型 COMPRESSION_PROMPT 你是一个高效的对话摘要助手。你的任务是将以下对话历史压缩成一个简洁、连贯的摘要保留所有关键事实、决策和上下文信息。这个摘要将用于后续对话以维持长期记忆。 请只输出摘要内容不要添加“摘要”等前缀。 对话历史 {history} 现有摘要供参考和整合 {existing_summary} 新的整合摘要 4.2 实现核心上下文管理类 (context_manager.py)这是最核心的部分。# context_manager.py import tiktoken from openai import OpenAI from collections import deque import config class LongContextManager: def __init__(self): self.client OpenAI(api_keyconfig.Config.API_KEY, base_urlconfig.Config.API_BASE) self.working_context deque(maxlenconfig.Config.MAX_WORKING_CONTEXT_LENGTH) self.compressed_summary # 初始化tokenizer针对OpenAI模型 try: self.encoder tiktoken.encoding_for_model(config.Config.MODEL_NAME) except KeyError: self.encoder tiktoken.get_encoding(cl100k_base) # 大部分新模型通用 def _count_tokens(self, text: str) - int: 计算字符串的大致Token数。 return len(self.encoder.encode(text)) def _build_full_prompt(self, user_input: str) - str: 构建最终发送给模型的提示。 # 1. 组合工作上下文 working_context_text \n\n.join([fUser: {q}\nAssistant: {a} for q, a in self.working_context]) # 2. 组合系统指令、压缩摘要、工作上下文和当前用户输入 system_prompt 你是一个有帮助的助手。请基于以下的对话历史和当前问题提供准确的回答。 full_prompt f{system_prompt}\n\n if self.compressed_summary: full_prompt f【历史对话摘要】\n{self.compressed_summary}\n\n if working_context_text: full_prompt f【近期对话】\n{working_context_text}\n\n full_prompt f【当前问题】\nUser: {user_input}\n\nAssistant: return full_prompt def _needs_compression(self, prompt: str) - bool: 判断当前构建的提示是否超过了Token限制。 return self._count_tokens(prompt) config.Config.MAX_TOTAL_TOKENS def _compress_history(self): 执行压缩操作将最老的对话移出工作上下文并更新压缩摘要。 if not self.working_context: return # 1. 取出最老的一轮对话进行压缩可根据策略调整数量 oldest_q, oldest_a self.working_context.popleft() history_to_compress fUser: {oldest_q}\nAssistant: {oldest_a} # 2. 调用模型生成新的摘要 compression_prompt config.Config.COMPRESSION_PROMPT.format( historyhistory_to_compress, existing_summaryself.compressed_summary ) try: response self.client.chat.completions.create( modelconfig.Config.SUMMARY_MODEL, messages[{role: user, content: compression_prompt}], temperature0.1, # 低温度以保证摘要的稳定性和事实性 max_tokens500 # 控制摘要长度 ) new_summary response.choices[0].message.content.strip() self.compressed_summary new_summary print(f[DEBUG] 已更新压缩摘要。新摘要长度{len(self.compressed_summary)} 字符) except Exception as e: print(f[ERROR] 压缩摘要生成失败: {e}) # 压缩失败将被移除的对话以简化形式加入摘要 self.compressed_summary f\n[历史记录] User曾提到: {oldest_q[:100]}... (摘要生成失败) def get_response(self, user_input: str) - str: 处理用户输入管理上下文并获取模型回复。 # 步骤1构建当前提示并检查长度 current_full_prompt self._build_full_prompt(user_input) # 步骤2如果超长则循环压缩直到长度合适 while self._needs_compression(current_full_prompt) and self.working_context: print(f[DEBUG] 上下文过长 ({self._count_tokens(current_full_prompt)} tokens)开始压缩...) self._compress_history() # 压缩后重新构建提示 current_full_prompt self._build_full_prompt(user_input) # 步骤3调用模型获取回复 try: response self.client.chat.completions.create( modelconfig.Config.MODEL_NAME, messages[{role: user, content: current_full_prompt}], temperature0.7, max_tokens2000 ) assistant_reply response.choices[0].message.content.strip() except Exception as e: assistant_reply f抱歉获取回复时出现错误{e} # 步骤4将本轮完整对话加入工作上下文 self.working_context.append((user_input, assistant_reply)) return assistant_reply def get_context_status(self): 获取当前上下文状态用于调试。 status { working_context_rounds: len(self.working_context), compressed_summary_length: len(self.compressed_summary), current_working_content: \n.join([fQ:{q}\nA:{a} for q, a in self.working_context]) } return status4.3 编写使用示例 (example_usage.py)让我们模拟一个长对话场景。# example_usage.py from context_manager import LongContextManager import time def simulate_long_conversation(): manager LongContextManager() # 模拟一个多轮对话涉及多个主题 conversation_stages [ 你好我叫张三我想咨询一下如何学习Python编程。, 我听说数据分析是Python的一个主要应用方向你能详细介绍一下吗需要学哪些库, 好的。另外我对Web开发也感兴趣用Python做Web开发怎么样和Java比有什么优势, 刚才你提到了Django和Flask我该从哪个开始学起我的目标是快速搭建一个个人博客。, 在部署Python Web应用时有哪些推荐的云服务商听说Heroku不错但它现在收费了。, 回到最开始的数据分析你刚才提到了Pandas和NumPy能不能给我一个简单的例子用Pandas读取CSV文件并计算平均年龄, 这个例子很好。那么在学习了基础之后如何用Python进行机器学习呢Scikit-learn和TensorFlow先学哪个, 我最近还对自动化办公感兴趣能用Python自动处理Excel和Word吗, 我们聊了这么多方向你能根据我的情况零基础但对技术感兴趣想找相关工作给我制定一个为期6个月的学习路线图吗, 第一个月学习Python基础语法第二个月学Pandas做数据分析第三个月学Django做Web开发...这个路线里我怎么把机器学习和自动化办公加进去时间够吗 ] for i, user_msg in enumerate(conversation_stages): print(f\n{*50}) print(f[轮次 {i1}] 用户: {user_msg}) print(f{-*50}) start_time time.time() reply manager.get_response(user_msg) elapsed time.time() - start_time print(f助手: {reply[:200]}...) # 打印前200字符 print(f[状态] 耗时: {elapsed:.2f}s | 工作上下文轮次: {manager.get_context_status()[working_context_rounds]} | 摘要长度: {manager.get_context_status()[compressed_summary_length]}) # 每3轮打印一次详细状态 if (i1) % 3 0: status manager.get_context_status() print(f\n[详细状态检查]) print(f压缩摘要预览: {status[compressed_summary][:300]}...) print(f当前工作上下文:\n{status[current_working_content]}) if __name__ __main__: simulate_long_conversation()4.4 运行与结果分析运行python example_usage.py你将观察到前期工作上下文逐渐填满摘要为空。模型能精准引用之前对话的细节如“你叫张三”、“想学Python”。中期大约在第4-5轮后当总Token数接近阈值时触发压缩机制。你会看到[DEBUG] 上下文过长开始压缩...的日志。最老的关于“Python学习咨询”的对话被压缩成摘要。后期模型在回答关于“机器学习”或“学习路线”的问题时虽然工作上下文中只保留了最近几轮关于Web部署和数据分析的对话但压缩摘要里包含了早期关于学习目标和方向的凝练信息。因此模型依然能给出连贯、个性化的建议而不是忘记用户是“零基础”这个关键背景。通过这种方式我们用一个固定大小的“滑动窗口”工作上下文和一个动态更新的“长期记忆”压缩摘要有效地维持了长对话的连贯性和深度。5. 常见问题与排查思路在实际应用中你可能会遇到以下问题问题现象可能原因解决思路压缩后模型完全“忘记”关键细节压缩摘要的提示词COMPRESSION_PROMPT不够强调保留具体事实。优化提示词明确指令模型保留关键实体、数字、决策和用户目标。例如“请确保摘要包含以下关键信息用户的姓名、主要目标、已做出的技术选择。”摘要变得过长失去压缩意义摘要模型生成了过于冗长的内容。1. 在摘要生成的请求中设置更低的max_tokens如300。2. 在提示词中强调“简洁”、“凝练”。3. 使用能力更强的模型如GPT-4进行压缩其遵循指令能力更好。对话出现逻辑断裂或矛盾工作上下文MAX_WORKING_CONTEXT_LENGTH设置过小导致近期对话也被过快压缩。适当增加MAX_WORKING_CONTEXT_LENGTH让更多近期对话保持完整状态。平衡好“完整性”和“长度”的关系。Token数计算不准确导致意外截断或未压缩使用的tokenizer与模型不匹配或计算方式有误。确保使用模型对应的tokenizer。对于非OpenAI模型需查找其官方或社区提供的分词库。在调试时打印出计算出的Token数以验证。API调用费用显著增加每次压缩和生成回复都需要调用模型增加了Token消耗。1. 使用更便宜的模型如gpt-3.5-turbo进行摘要压缩。2. 调整压缩触发频率不要过于敏感。3. 考虑仅在对话主题明显切换时进行主动压缩。6. 最佳实践与工程建议将“压缩工作摘要”策略投入生产环境时需要考虑更多工程细节6.1 提示词工程优化分层摘要不要只维护一个全局摘要。可以为不同的对话主题如“个人背景”、“技术偏好”、“项目需求”维护不同的摘要块在需要时选择性组合。结构化摘要要求模型以特定格式如JSON、关键词列表、时间线输出摘要便于程序化解析和检索。STRUCTURED_SUMMARY_PROMPT 将以下对话压缩成一个JSON格式的摘要包含以下字段 - “user_profile”: 用户的关键个人信息或目标。 - “key_decisions”: 已讨论并确定的技术选择或方案。 - “open_questions”: 尚未解决或待讨论的问题。 - “technical_context”: 涉及的技术名词和概念列表。 对话历史{history} 现有摘要{existing_summary} 只输出JSON不要有其他文字。 6.2 性能与成本权衡异步压缩压缩操作可以在模型生成回复给用户的同时在后台异步执行不阻塞主流程。条件触发不要只基于Token长度触发压缩。可以结合语义分析当检测到对话主题发生显著变化时例如从“数据分析”跳到“Web部署”主动对旧主题进行压缩。缓存摘要对于相同的输入历史生成的摘要是确定的。可以考虑缓存摘要结果避免重复计算。6.3 与RAG架构结合在RAG检索增强生成系统中长上下文问题同样存在。你可以将“压缩工作摘要”与向量数据库结合将长文档分块存入向量库。用户提问时除了用问题本身检索还将当前的“压缩摘要”作为上下文一起用于检索这样可以找到与整个对话流更相关的文档块。将检索到的文档块、工作上下文和压缩摘要一起组合成最终提示。6.4 生产环境注意事项错误处理与降级压缩摘要的API调用可能失败。必须有降级方案例如暂时将待压缩的历史记录以截断文本形式附加到摘要中并记录错误日志。监控与评估建立监控指标如平均对话轮次、压缩触发频率、摘要长度、用户满意度如有。定期评估压缩策略是否影响了回答质量。版本控制压缩摘要的提示词和参数是核心资产。对其变更要进行版本控制并能快速回滚。“压缩工作摘要”是一个优雅的工程折衷方案它承认了当前LLM的技术限制并通过巧妙的策略设计来规避它。其核心思想——动态区分“工作记忆”与“长期记忆”并通过迭代提炼来维持信息密度——不仅适用于对话对于文档总结、代码分析、多步骤推理等任何涉及长上下文的场景都具有启发意义。

相关新闻

如何使用github安装Oracle 数据库Sample Schema (示例Schema)

如何使用github安装Oracle 数据库Sample Schema (示例Schema)

Sample Schema可以在创建数据库时安装,就是使用DBCA GUI或命令行,命令行中指定-sampleSchema true。以下介绍的利用Github中的项目安装。 首先是一个容器数据库的例子,这时,pdb只能建立1个。 文档:https://docs.oracle…

2026/8/11 11:44:43 阅读更多 →
从科幻到工程:数据迁移与清洗协议的设计与Python实现

从科幻到工程:数据迁移与清洗协议的设计与Python实现

1. 背景与核心概念:从科幻概念到技术隐喻的解读在技术社区,我们偶尔会遇到一些极具想象力的词汇,它们往往源于科幻作品、哲学思辨或是对未来技术的诗意描述。本文标题中的“第七旋臂执政官光码协议”、“天琴座777赫兹蓝光频率”等&#xff0…

2026/8/9 18:29:12 阅读更多 →
深入解读网站群建设规范:如何打造高效协同、安全合规的数字化矩阵平台

深入解读网站群建设规范:如何打造高效协同、安全合规的数字化矩阵平台

在如今这个信息爆炸、流量为王的时代,很多企业、政府机构以及大型组织都有一个共同的痛点:手里握着一大堆网站,却像一堆散乱的珍珠,没法串成一条漂亮的项链。有的网站是几年前建的,有的系统是去年上的,还有的甚至是用不同的外包团队做的,代码风格各不象同,数据更是老死…

2026/8/9 21:23:17 阅读更多 →

最新新闻

Windows风扇控制终极指南:FanControl免费软件完整教程

Windows风扇控制终极指南:FanControl免费软件完整教程

Windows风扇控制终极指南:FanControl免费软件完整教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…

2026/8/11 12:10:31 阅读更多 →
Codex CLI实战速查手册:从安装配置到高频错误排查

Codex CLI实战速查手册:从安装配置到高频错误排查

1. 项目概述:为什么你需要一份“无废话”的Codex命令手册? 如果你正在寻找一个能帮你快速上手Codex,而不是被冗长文档淹没的指南,那么你来对地方了。这份手册的初衷很简单:把官方文档里那些最核心、最常用、最能解决问…

2026/8/11 12:10:31 阅读更多 →
5步掌握Perlego电子书PDF下载:轻松实现离线阅读的完整指南

5步掌握Perlego电子书PDF下载:轻松实现离线阅读的完整指南

5步掌握Perlego电子书PDF下载:轻松实现离线阅读的完整指南 【免费下载链接】perlego-downloader Download books from Perlego.com in PDF format 项目地址: https://gitcode.com/gh_mirrors/pe/perlego-downloader 你是否购买了Perlego电子书却苦于无法离线…

2026/8/11 12:10:31 阅读更多 →
硬件工程师实战指南:寄生电容的成因、危害与抑制策略

硬件工程师实战指南:寄生电容的成因、危害与抑制策略

你有没有遇到过这样的情况:明明电路设计得规规矩矩,仿真结果也完美无瑕,但一到实际焊接调试,信号就开始“抽风”——高频振铃、波形畸变、开关速度变慢,甚至莫名其妙地自激振荡。你反复检查原理图,核对PCB走…

2026/8/11 12:10:31 阅读更多 →
Mac Mouse Fix终极指南:3步免费解锁macOS鼠标的隐藏潜能

Mac Mouse Fix终极指南:3步免费解锁macOS鼠标的隐藏潜能

Mac Mouse Fix终极指南:3步免费解锁macOS鼠标的隐藏潜能 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix是一款革命性…

2026/8/11 12:10:31 阅读更多 →
Unity VR高级动画:动捕与混合现实捕捉技术整合实战

Unity VR高级动画:动捕与混合现实捕捉技术整合实战

1. 项目概述:从VR动画到虚实交融的体验升级 在VR内容开发的深水区,动画系统的逼真度直接决定了沉浸感的成败。当基础的骨骼动画、状态机与IK(反向动力学)系统搭建完毕后,开发者往往会遇到一个瓶颈:如何让虚…

2026/8/11 12:09:31 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →