☰
AI编程工具上下文管理:从散装拼接到运行时架构设计的实践
2026/10/8 10:43:23 网站建设 项目流程

做AI编程工具这两年,我最大的感受是:大家天天在聊模型能力、聊Prompt技巧,却很少有人真正把“上下文”当一回事。上下文窗口就那么大,模型能记住的东西就那么多,但一个真实工程项目的复杂度,远超大模型能装下的范围。上下文管理得不好,Token浪费、上下文溢出、回答漂移,这些坑我一个都没少踩。

灵妙-Agent这个项目,就是我从这些坑里爬出来之后做的一次重构尝试。核心思路很直白:与其把上下文管理拆成一个个零散的功能模块,不如把它直接做成引擎的运行时架构。也就是说,“上下文怎么收集、怎么组织、怎么注入、怎么回收、怎么恢复”这套逻辑,不是一个可以任意装卸的插件,而是整个AI编程引擎运转起来之后的基础设施,就像操作系统的进程调度器一样。

这篇文章我会把灵妙-Agent的设计思路、关键实现细节、实际效果和一些踩坑经验完整分享出来。适合正在做大模型应用、Agent框架、AI辅助编程工具,或者被“上下文溢出”问题折磨得头大的开发者参考。项目本身我已经在内部业务场景跑了两个多月,经历过几次大改,所以下面写的每一条,都是真金白银试出来的。

1. 为什么必须把上下文管理做成运行时架构

先说一个反常识的结论:上下文管理这件事,越早进入架构层,后面的迭代成本越低。如果你是在业务逻辑里“缝缝补补”地处理上下文,那随着Agent数量变多、任务链路变长,迟早会崩。

1.1 传统Agent框架里,上下文管理为什么容易变成烂摊子

现在市面上主流的Agent框架,基本都遵循类似的执行循环:模型收到任务、调用工具、拿到结果、再继续推理。这个循环看起来合理,但上下文管理往往是“散装”的——每个模块各管一段上下文。有的模块负责把用户输入拼进去,有的模块负责把工具返回结果塞进消息列表,有的模块又把历史会话记录粗暴地截断。

这种做法的第一个问题,是上下文来源不可控。你很难回答“当前这轮调用里,模型到底看到了哪些信息”,因为上下文是各个模块随手拼出来的。第二个问题,是上下文生命周期没有统一管理。代码文件变更了、任务目标切换了、会话隔了一整天,旧的上下文依然可能残留在消息队列里,模型就会被过期信息误导。第三个问题,是上下文没有优先级和预算的概念。什么东西必须进、什么东西可以放、什么东西应该丢,全靠Prompt工程师的手感,而不是一套可计算的规则。

我在做早期原型的时候,就吃过这个亏。当时我写了一个代码审查Agent,第一步把整个项目的文件树塞进上下文,第二步再让模型逐文件分析仓库里的逻辑问题。结果模型来回“翻找”文件,一会儿说这个文件有Bug,一会儿又说那个文件没问题,实际上它连当前看的是哪个文件都搞混了。问题就出在:上下文被当成一次性字符串拼进去,没有结构和生命周期,模型自然也没有“当前任务语境”可言。

1.2 灵妙-Agent的核心转变:把上下文当成“进程地址空间”

我后来想通了一件事:在传统软件里,进程的内存管理不会交给业务代码去抠每一个字节,而是由操作系统统一分配、隔离、回收。上下文对Agent来说,本质上就是它的“内存”。既然AI编程引擎要处理的是大型代码库、多文件修改、跨会话协作,那上下文管理就必须上升到运行时层面。

灵妙-Agent的运行时架构,借鉴了操作系统的几个核心概念,落地成了自己的机制:

  • 上下文编址:每一条上下文都有唯一的“地址”,相当于内存指针,引擎可以通过地址精准定位和引用。
  • 上下文生命周期:从创建、激活、休眠到销毁,都有统一状态机管理,而不是消息列表里的“一次性消费品”。
  • 上下文调度:每一轮模型调用前,调度器根据任务需求决定哪些上下文进入窗口、哪些留在外部存储,也就是“换页”逻辑。
  • 上下文快照:定期给上下文空间打快照,支持任务失败后的回滚恢复,相当于Systemd的journal,也相当于虚拟机的磁盘快照。

在这个架构下,Agent程序员的日常工作就不是“拼Prompt”,而是“声明上下文需求、注册上下文生产者、观察上下文调度结果”。模型看到的每一条信息,都经过了统一的编码、校验、路由,而不是哪段代码随手塞进来的匿名文本。

1.3 为什么不直接用现成的Memory组件,非要自研一套

市面上有不少Agent框架提供了Memory模块或向量记忆库,我也认真评估过,但最后还是决定自研引擎运行时。原因很简单:通用Memory方案解决的是“记住重要信息”的问题,而AI编程引擎面临的真实难题是“在正确的时间,把正确的信息,以正确的形式,送到模型面前”。

举个例子,在代码生成场景里,模型需要了解当前正在编辑的函数的完整签名、依赖的第三方包的接口定义、项目里已有的命名规范,以及最近几分钟内改动过的相关文件。这些信息有强时效性、强关联性,而且总量极大。通用的向量召回虽然能找到“语义相似”的内容,但做不到“按执行阶段精确注入”。还有一点,Memory组件通常是附加在Agent外层的一层工具,它不负责调度,也不掌握模型的全局上下文窗口预算,更没法做故障恢复。灵妙-Agent把“上下文管理”做成引擎运行时架构之后,这些能力才算真正长了根。

2. 灵妙-Agent的运行时架构整体设计

整个灵妙-Agent的运行时可以分为四层:接入层、上下文中枢、调度执行层、持久化存储层。底下每一层解决一类具体问题,层与层之间用明确定义的接口通信。

2.1 上下文中枢:所有信息进出的唯一收口

上下文中枢是灵妙-Agent的心脏。所有要进入模型上下文的信息,都必须先经过中枢登记、校验、编码,然后才允许被调度器注入到窗口里。

中枢维护了一张上下文注册表,每一条上下文都带着元信息:

字段含义示例
context_id全局唯一标识cxt://repo/core/auth/tokenizer.py@main/v3
namespace所属命名空间repo / session / task / tool
scope可见范围global / project / file / symbol
source来源git_diff / lsp_symbol / user_input / tool_result
schema结构类型text / tree / json / patch
ttl存活时间300s / 24h / until_invalidated
priority重要度评分0.0 ~ 1.0

每一条上下文都必须是“结构化对象”,而不是裸文本。比如“用户输入”这条上下文,会记录用户的原始意图、与哪个任务绑定、产生在哪个时间点;而“工具返回结果”这条上下文,会记录对应的工具名、参数哈希、返回状态码。这样一来,调度器在做决策时就有据可依,而不是只能对着字符串做长度截断。

2.2 上下文分级与生命周期状态机

灵妙-Agent把上下文分成四个级别,分别对应不同的管理策略:

  • 全局级:项目全局信息,比如工程简介、代码规范、依赖清单、目录结构。这类上下文变化频率低,适合一次性注入后长期驻留,但总量必须严格限制。
  • 会话级:针对整个会话窗口的上下文,比如用户在多轮对话中表达的偏好、已确认的需求、尚未完成的目标。会话级上下文需要跨轮保持,但不能无限增长。
  • 任务级:当前子任务的上下文,比如正在修复某个Bug的相关文件、刚跑出来的测试输出。任务级上下文只在任务生命周期内有效,任务结束后立即回收。
  • 原子级:单次模型调用内的临时上下文,比如某一次工具返回的JSON结果。用完即弃,不进持久化层。

这种分级带来的直接好处,是回收策略变得非常清晰。任务上下文结束时立刻释放空间,会话上下文在会话关闭时归档,全局上下文除非项目变更否则常驻。模型窗口不再被动地“塞满”,而是始终由调度器按级别控制水量。

上下文生命周期状态机是运行时里最容易被忽略却最关键的部件。一条上下文的完整状态流转包括:

  1. Registered:已注册,但尚未进入候选注入池。
  2. Active:已通过调度,占据窗口空间。
  3. Standby:暂时不占窗口,但保留在外部存储中,随时可被调度唤醒。
  4. Expired:TTL到期或依赖失效,等待回收。
  5. Archived:已持久化到存储层,未来可能需要,但不再活跃。

调度器绝不直接销毁一条Active状态且仍被引用的上下文,而是先将其降级到Standby,再根据预算与重要度决定是归档还是淘汰。这个设计避免了“模型正在用着某条信息,结果被另一步流程顺手清掉”的奇葩情况。

2.3 调度器:决定每一轮模型调用“看什么”

调度器是运行时架构里最复杂的一层。它做的事,等价于回答一个问题:“假设模型上下文窗口是128K Token,现在有2M Token的候选上下文,我应该让哪一部分进入窗口?”

灵妙-Agent的调度器不采用简单的固定截断,而是按下面的流程执行:

  1. 意图解析:根据任务指令,提取本次调用需要的关键实体(比如“修改auth.py的login函数”)。
  2. 候选收集:从上中获取与关键实体相关的上下文,包括文件内容、函数定义、依赖关系、错误堆栈、测试用例等。
  3. 预算分配:在总窗口预算内,按上下文级别分配配额。全局级最多占20%,会话级最多占30%,任务级占40%,原子级预留10%给输出空间。
  4. 重要度排序:对候选上下文计算匹配分数,综合实体相关度、最近访问时间、上下文来源可信度等因素。
  5. 增量去重:如果新候选上下文与已存在内容有重叠,用diff代替整段文本,减少体积。

这个调度流程不是每次调用都从头跑一遍,而是增量运行。上下文保持不变时,直接复用上一次的调度结果;只有文件变更、任务切换、工具返回新结果时,才触发重新调度。

3. 核心实现细节与实操要点

在这一章,我会把灵妙-Agent里最核心的几个实现机制展开讲,包括上下文编址、快照恢复、增量更新、Token预算计算。这些细节决定了引擎在真实场景下是“好用”还是“能跑但难用”。

3.1 上下文编址与引用:让模型编辑“文件”而不是贴“文本”

灵妙-Agent的上下文编址格式设计成了可读性很强的URI风格:

cxt://project/{project_id}/file/{file_path}#{symbol_name} cxt://session/{session_id}/task/{task_id}/decision/{decision_id} cxt://tool/{tool_name}/{invocation_id}/output

这个设计不是装样子,而是让上下文的引用变得精确。当模型需要在多轮对话中反复引用同一个函数时,引擎只需要传递一个上下文地址,而不是重复粘贴整个函数内容。模型上下文窗口里放的是这个地址对应的“摘要”,真实的完整内容存放在外部存储中,只有模型真正需要查看时才通过工具调用按地址加载。

我试过在灵妙-Agent里给模型传递一个名叫“ctx://file_auth_login_func”的引用,模型在后续对话中可以直接说“看一下当前login函数有没有绕过密码校验的地方”,引擎就把按地址解析出来的函数体注入到下一轮上下文里。相比传统做法里每次手动把函数体塞进消息,这种方式有两个明显优势:一是消息队列里不会堆积冗余代码,二是模型始终指向“当前最新版本”,而不是快照时点的旧文本。

3.2 快照与恢复:让长任务经得起“意外中断”

长时间运行的AI编程任务,最怕中途出错。模型可能在执行第7步时突然产生混乱输出,或者工具调用直接超时,导致整个任务链路断裂。如果上下文的演进过程没有保存,你就只能从头再来。

灵妙-Agent的快照引擎借鉴了数据库的检查点机制。默认配置下,引擎每完成3次工具调用,或每积累5000 Token的上下文变更,就会拍一次快照。快照内容包括:当前任务的目标指令、上下文注册表全量状态、模型最近的消息序列、任务执行到第几步。快照采用全量加增量的策略:第一个检查点保存全量,后续检查点只保存与上一个检查点的diff。

实际使用时,我经常把Agent丢在后台跑一个涉及30多个文件的重构任务,然后去做别的事。有一次任务在跑到第14步时,某次工具调用返回了异常数据,模型开始往错误方向“发挥”。引擎检测到上下文重要度曲线异常下滑,自动回滚到第12步的快照,重新恢复了上下文,然后继续执行。没有快照体系的时候,这种事故只能靠人工介入,有了快照之后,引擎自己就能把任务拖回正轨。

3.3 增量更新:如何避免“上下文越用越臃肿”

上下文管理的最大敌人是“累积”。每轮模型调用都会产生新的消息,每轮工具调用都会返回新的数据,如果只增不减,窗口迟早爆炸。

灵妙-Agent的做法是增量更新加内容压缩。工具返回结果的原始数据,哪怕有几十KB,也只把“结构化摘要”放进窗口,完整内容留给模型按需取用。代码文件如果只改了一行,引擎不会重新加载整个文件,而是对上下文中的文件节点应用一个diff补丁。摘要生成由专门的上下文压缩器完成,它会丢掉无关变量、重复信息和已知常量的值,只保留语义关键内容。

我在灵妙-Agent里实测过一个场景:用户让AI在大型代码库里新增一个模块,然后接着让AI解释刚才的实现思路。传统方案下,解释阶段的上下文里还完整保留着前几轮的20多条工具返回记录,窗口占用高达9万Token;经过增量更新与压缩后,引擎把已经完成的步骤压缩成了摘要节点,窗口占用降到了2万Token左右,模型依然能准确回答实现思路,而且回答质量没有下降。

3.4 Token预算计算:给“窗口空间”做精确规划

调度器的一切决策都需要依据Token预算,而预算计算在灵妙-Agent里是动态的。下面给出一套可以直接参考的计算逻辑。

假设模型窗口上限为W,例如 128K Token。引擎先预留三部分固定开销:

  • 输出预留区O:模型在窗口内的输出空间,通常占总窗口的15%~20%;
  • 系统指令区S:固定系统提示与任务级指令,一般占2K~4K Token;
  • 缓冲安全区B:防止注入上下文后因编码差异溢出窗口,占总窗口的5%。

因此可用于上下文注入的有效预算C为:

C = W - O - S - B

以 W=128K、输出预留 20%(25.6K)、系统指令 3K、缓冲 5%(6.4K)为例,有效预算C = 128K - 25.6K - 3K - 6.4K = 93K Token。

接下来,按级别建立配额:

  • 全局级上下文配额,占C的20%,约18.6K Token;
  • 会话级上下文配额,占30%,约27.9K Token;
  • 任务级上下文配额,占40%,约37.2K Token;
  • 原子级上下文配额,占10%,约9.3K Token。

每个级别内部再按“重要度评分”排序,超过配额的部分直接切换为外部存储,不在窗口内驻留。这套预算算法写进调度器后,上下文溢出问题从我项目里的“每周必现”变成了“几乎绝迹”。而且更重要的是,因为有了预算约束,上下文总数被严格控制,模型接收到的是“精选集”,不是“流水账”,注意力涣散的问题也跟着缓解了。

3.5 核心调度伪代码:最小可复现的引擎循环

下面是一段极简的调度核心逻辑,保留了灵妙-Agent运行时架构的关键思路,方便你理解和复现:

def dispatch_context(task_intent, effective_budget_c): # 1. 意图解析:抽取关键实体 entities = parse_intent(task_intent) # 2. 候选收集 candidates = context_registry.query(entities) # 3. 按级别分配预算 quotas = { "global": effective_budget_c * 0.20, "session": effective_budget_c * 0.30, "task": effective_budget_c * 0.40, "atomic": effective_budget_c * 0.10, } # 4. 计算重要度分数 for c in candidates: c.score = compute_relevance(c, entities) * 0.6 + \ compute_recency(c) * 0.3 + \ compute_source_reliability(c) * 0.1 # 5. 按级别排序,裁剪 selected = {} for level in ["global", "session", "task", "atomic"]: level_items = [c for c in candidates if c.level == level] level_items.sort(key=lambda x: x.score, reverse=True) selected[level] = pack_until_budget(level_items, quotas[level]) # 6. 增量去重与补丁化 context_window = build_window(selected) return context_window

这个代码省略了很多工程细节,但调度逻辑的完整链路就是这样一个顺序:解析意图、收集候选、分配预算、计算分数、裁剪打包、增量去重。你在自己的项目里可以先从这段代码跑通最小闭环,再逐步加入快照、回滚、持久化那些外围能力。

4. 真实场景应用与效果数据

说完了理论,来看实际表现。我在灵妙-Agent里接入过三类典型任务:大型代码库的跨文件生成、多轮交互式Bug修复、长时间运行的重构任务。这三类任务对上下文管理的压力各不相同。

4.1 跨文件代码生成:从“信息残缺”到“按需供给”

在传统方案下,让Agent生成一个涉及多个模块的文件,最常见的情况是模型只参考了当前目录和少量提示信息,生成出来的代码要么依赖了不存在的函数,要么风格和其他模块不一致。

接入灵妙-Agent后,调度器会在生成指令发出前,根据意图解析出本模块可能依赖的相邻模块、公共工具函数、现有配置项,并把它们以“引用地址+摘要”的形式注入。模型需要看某个依赖的具体实现时,再通过工具调用精准读取,而不是一开始就把所有相关文件一股脑塞进窗口。

实测中,跨文件生成任务的一次通过率从之前的41%提升到了73%。所谓一次通过,指的是生成的代码在不需要人工修改或只修改少量配置的前提下,能通过编译并实现需求。上下文不是用得越多越好,而是精准命中才有效。

4.2 多轮交互式Bug修复:上下文一致性的试金石

Bug修复往往要对话很多轮:“先看看这个报错是什么”、“追踪一下这个变量的来源”、“这个函数看起来逻辑不对”、“改完之后跑一下测试”。每一轮对话都可能引入新的上下文,同时又要保持对旧上下文的引用。

传统方案的最大痛点是,第5轮对话时模型经常“忘记”第2轮发现的线索。灵妙-Agent的快照与引用机制在这里发挥了关键作用。第2轮发现的线索被登记为“带优先级”的任务级上下文,即使后面几轮涌入了新的错误堆栈和代码片段,它依然会在调度器中保持高分数,持续占据窗口位置。我在一个真实Bug修复任务中观察,模型在第8轮对话时依然能准确引用第3轮发现的连接池泄漏原因,修复方案的方向没有漂移。

4.3 长时间重构任务:经得起中断的“长跑选手”

有一次我给灵妙-Agent下达了一个重构任务:把项目中一个3000行的模块拆分成多个子模块,同时保持所有对外接口不变。这个任务由多个子步骤组成,每个子步骤会修改不同文件,且前后步骤之间有逻辑依赖。

在运行时架构的支持下,引擎把每个子步骤的输入、决策、输出记录成独立的任务级上下文,并在每3个子步骤完成后自动拍快照。实际执行时间接近40分钟,中间我还手动中断过一次,把某个文件的依赖结构调整了一番。恢复后引擎自动加载最近快照,对比了文件变更,重新计算了上下文增量,继续执行时没有出现前后矛盾的情况。

这次任务最终生成的新模块结构完全满足拆分要求,对外接口保持一致,测试全部通过。放在以前,这种40分钟的长链路任务,模型大概率会在某一步“把自己绕晕”,很难善终。

4.4 几项关键指标的变化对比

下面是灵妙-Agent运行时架构上线前后,在我内部项目里的总体数据对比(同一批任务、同一个模型,配置规模相同):

指标改造前(模块化内存)改造后(运行时架构)
平均每轮窗口占用86K Token52K Token
任务完成率62%84%
上下文重复注入比例37%12%
长任务(>30min)失败率33%9%
上下文溢出报错次数/周7次0次

这些数字直观反映了上下文管理是否进入运行时架构的差距。窗口占用下降了近40%,而任务完成率提升了22个百分点。因为模型看到的上下文更精炼、更有结构性,它的注意力不用浪费在无关信息上。

5. 常见问题与排查技巧实录

再好的架构,落地上也不会一帆风顺。这一章我把灵妙-Agent开发过程中遇到的最典型的几个问题整理成速查表,并给出排查思路。

5.1 上下文污染:全局上下文把任务级上下文“冲垮”

现象:任务级上下文明明已经标注为高优先级,但调度结果里全被全局上下文占了空间,模型看不到关键的任务信息。

排查:我先看调度日志里各分级配额的使用率,发现全局级配额被填满到100%,但任务级配额只用了60%。这是因为全局级上下文的总量没有被约束,只要注册到的内容都往里面塞,逐渐膨胀到超出了配额。

解法:全局上下文必须严格限制数量。我在全局级上下文入口加了一道“白名单注册”规则,只有项目级配置文件、代码规范、依赖清单等少数几类允许进入全局级,其余内容一律下沉到任务级。同时给全局上下文整体设置了硬上限,超出部分直接走Standby状态,不参与注入。

这个问题的本质是“预算没有守卫者”,只有配额,没有强制执行。我后来改成在注册阶段就拦截超限上下文,而不是等调度阶段再来挤空间,效果立刻好了很多。

5.2 上下文过期:文件改了,旧上下文还在误导模型

现象:某个文件已经重构完成,但模型在后续对话里还在引用旧版本的函数签名,生成代码时用了一个不存在的参数。

排查:查上下文注册表里的文件节点,发现其来源标记是静态注册,没有绑定Git变更事件。文件内容变了,引擎里对应的上下文节点还挂着旧版内容。

解法:我给文件类上下文增加了“来源指纹”字段。每当Git检测到文件变更,引擎会重新计算文件哈希,与注册表里的指纹对比,不一致的直接把旧节点置为Expired,同时触发对新版本的索引。这个机制避免了“模型用旧地图找新路”的尴尬。

这类问题在文件型上下文中尤其容易发生,因为代码重构的节奏太快,语义相似但版本不同的函数实在太容易混淆。运行时不追踪来源,就算模型再强也会被“脏数据”带跑偏。

5.3 快照存储膨胀:全量快照撑爆磁盘

现象:跑了几天任务后,快照存储目录占了几十个GB,磁盘报警。

排查:发现快照引擎没有对快照保留版本做数量限制,每拍一次快照就存一次, diff文件本身还要再占空间,旧快照也从不删除。

解法:设定了快照保留策略:每个任务最多保留最近3个快照和1个初始化全量;超过3次的快照在确认不再需要回滚时删除。同时把快照内容做无损压缩,并在快照文件里只保留上下文变更记录,不保存完整的工具返回原文,原文在需要时重新从原始工具调⽤记录中拼接。压缩后整个快照存储的体积下降了80%以上。

5.4 注入顺序对效果影响:不是所有上下文都该放在开头

现象:同样的上下文内容,放在不同位置,模型回答质量差异很大。

排查:通过上下文可视化面板观察模型调用的消息序列,发现当全局上下文放在开头、任务指令放在中间、相关文件内容放在末尾时,模型经常忽略末尾的内容;而把任务指令放在开头、关键任务级上下文紧随其后、全局上下文压缩为背景信息放在中间时,效果明显改善。

解法:调度器在组装窗口时,默认按“任务指令 → 任务级关键上下文 → 会话级偏好 → 全局级背景 → 原子级临时数据”的顺序注入。这个顺序不是凭空定的,是多次对照实验试出来的。你在自己的引擎里最好也做几组顺序对照,因为不同模型对“注意力聚焦位置”的偏好可能有细微差异。

5.5 快速排查速查表

现象可能原因排查入口解决办法
上下文窗口经常满配额与预算未生效查看调度日志各级配额使用率检查注册表是否被塞入超限内容
模型答案前后矛盾过期上下文未被回收检查文件指纹与Git变更是否同步启动来源指纹对比机制
长任务中途失忆快照频率过低查看快照时间节点分布缩短快照间隔或按Token变更量触发
工具返回结果淹没主任务原子级上下文未及时清理查看原子上下文的生命周期状态强制用完即回收,转成摘要引用
模型不遵循指令注入顺序不合理可视化窗口消息序列按“指令→任务→会话→全局”调整顺序

5.6 一个小技巧:给调度器装个“仪表盘”

上下文管理非常依赖可观测性。灵妙-Agent里我实现了一个简易的上下文可视化面板,可以实时展示当前窗口内的上下文分布、各级配额占用率、每条上下文的活跃状态和最近调度时间。有了这个仪表盘,排查问题时就不用靠猜了。你如果只想做一遍最小验证,哪怕只是把调度器日志里每轮上下文等级分布打成表格,也能发现很多隐藏问题。

6. 写在最后的一点个人体会

做完灵妙-Agent的这次重构,我对“上下文管理”这件事的理解彻底变了。它不是一个可以靠Prompt技巧绕过去的工程问题,而是Agent系统里和模型能力同等重要的基础设施。模型的窗口资源是有限的,如何在有限空间里构建出“高信息密度、强时效性、可回溯”的上下文,值得每一个做AI编程工具的人认真对待。

回到最开始那个让我头疼的问题——为什么模型会搞混文件?因为上下文没有“地址”,没有“生命周期”,没有“调度策略”,它就是一堆平铺的文本。当我把这些能力放进引擎运行时后,模型看到的每一个信息都有来龙去脉、有优先级、有状态,它才能真正像一个“上下文的管理者”一样工作。

如果您也在做类似的Agent或者AI编程工具,我特别建议您在项目早期就把上下文的调度设计提上日程,不要等到消息列表变得不可控了再考虑重构。最后再分享一个小经验:先给所有上下文统一编号,哪怕是硬编码的规则,也比完全没有编号强。有了编号,才有状态,有了状态,才能管理。这一点在任何架构下都成立。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询