AI Agent (1/3):核心技術 Context Engineering 基本概念解說
Hung-yi Lee · 2026-03-15 · 53м 6с · 105 840 просмотров · YouTube ↗
Топики: ai-loop-engineering
🎧 Аудио
📝 Summary
model=deepseek-v4-flash · prompt=summary-v7 · 11 026→3 800 tokens · 2026-07-20 11:59:47
🎯 Главная суть
AI Agent выполняет роль шлюза между языковой моделью и внешним миром: он фильтрует, сжимает и структурирует всю информацию, которая подаётся на вход LLM, чтобы та укладывалась в ограничение по длине контекста. Совокупность методов управления тем, что именно и в каком объёме видит модель, называется Context Engineering.
Почему нужен Context Engineering
Языковая модель — это машина для продолжения последовательности: она получает на вход промпт и выдаёт ответ. Если модель взаимодействует с инструментами (читает файлы, выполняет команды), каждое новое действие должно добавляться к истории, а вся цепочка — подаваться модели заново. Без ограничений контекст рос бы бесконечно, но все современные LLM имеют жёсткий лимит на длину входа. AI Agent перехватывает поток данных, сжимает историю и решает, какая часть контекста действительно нужна модели в текущий момент.
Алгоритм без Context Engineering
В простейшем случае (без агента) цикл выглядит так:
- Начальный контекст C пуст.
- На каждой итерации к контексту добавляется новый вход I (команда человека или результат выполнения инструмента).
- Модель получает C + I и выдаёт выход O.
- Контекст обновляется: C ← C + I + O.
Такой подход приводит к неограниченному росту контекста, и рано или поздно модель перестаёт работать из-за превышения лимита токенов.
Алгоритм с Context Engineering
С Context Engineering единственное изменение — на шаге 4 вместо простого добавления применяется функция F, которая преобразует предыдущий контекст, вход и выход в новый контекст C'. Функция F может выполнять сжатие, фильтрацию или любые другие манипуляции. Эта F и есть суть работы AI Agent.
Методы сжатия: compaction и Observation Masking
Compaction — вызов другой LLM (или того же агента) для превращения длинной истории в краткое резюме. Встроенный пример — функция compaction в Longsha (китайский AI Agent).
Observation Masking — грубый метод: весь длинный вывод инструмента заменяется одной фразой «здесь был вывод инструмента».
На бенчмарке SWE Bench (автоматическое исправление багов) оба метода показали схожую точность, но Observation Masking оказался дешевле по токенам. Однако иногда сжатие приводит к «удлинению траектории»: модель не помнит, что она уже делала, и повторяет шаги, что сводит экономию токенов на нет.
Комбинирование методов сжатия
Лучший результат даёт комбинация: сначала применяется Observation Masking для быстрого сокращения каждого вызова инструмента, а когда контекст всё равно становится слишком длинным, выполняется полное summarisation.
Пометка о сжатии и внешнее хранилище
После сжатия полезно оставлять не просто «здесь был вывод», а ссылку на сохранённый лог (например, «см. log1.txt»). Полный текст выгружается на жёсткий диск и исчезает из контекста. Если модели позже понадобятся детали, она может выполнить инструмент «read» и загрузить нужную часть обратно. Так реализована концепция «памяти» в AI Agent.
Различие между context и prompt
Context — это вся история, которую пережил агент (включая данные на диске). Prompt — только та часть контекста, которая реально подаётся на вход LLM. Prompt = P (подмножество context). Hard disk = M (остальная часть context).
Формально алгоритм обновляет обе части: P (то, что видит модель) и M (внешнее хранилище). Когда модель выполняет «load memory», она читает из M и добавляет в P; когда «save memory» — наоборот.
Проблема сжатия: потеря критической информации
Обычное summarisation часто удаляет важные детали. В статье Alicon показано, что после сжатия точность на задачах из бенчмарка AppWorld падает. Решение: взять примеры, где сжатие привело к ошибке, попросить отдельную LLM проанализировать траекторию и написать feedback (текстовую подсказку). Этот feedback затем подаётся модели, выполняющей summarisation, — она учитывает прошлые ошибки и лучше выделяет существенное. Подход не требует изменения параметров, только динамического промптинга.
Обучение модели сжатию через reinforcement learning
Можно fine-tune саму языковую модель так, чтобы она лучше сжимала контекст в задачах агента. Для этого используется RL: модель генерирует сжатое представление, затем решает задачу; если задача решена верно — положительное вознаграждение, если нет — отрицательное. Так обучается и навык сжатия, и навык работы с укороченным контекстом.
Нежелание LLM самостоятельно сжимать память
Языковые модели «не любят» забывать: даже получив инструмент «erase», они стараются его не вызывать. В одном эксперименте модель игнорировала прямую команду выполнить «reflection → erase» и продолжала работать, не удаляя контекст. Поэтому в OpenCloud сжатие выполняется принудительно: как только контекст превышает порог, система сама запускает Memory Flush — модель вынуждена сжать свои воспоминания.
Альтернатива: обучить модель использовать инструмент «fold» (сворачивание указанного диапазона шагов в одну запись). Это обучение требует fine-tuning; просто промптом заставить модель стабильно применять «fold» не удаётся.
Subagent как механизм сжатия
Subagent — это дочерний агент, которому поручается подзадача. Пока subagent работает, его контекст накапливается отдельно от основного. Когда subagent завершается командой «return», вся его история удаляется, а в основной контекст попадает только краткое резюме, переданное в return.
Пример: агент ищет научную статью. Он порождает subagent для поиска, тот находит заголовки и возвращает их; после return длинные детали поиска исчезают. Без subagent контекст вырос бы до 100 000+ токенов.
Subagent — не врождённое умение LLM, оно приобретается через RL. Для обучения нужны дополнительные сигналы: штраф за слишком длинный основной контекст (побуждает порождать subagent) и штраф за то, что subagent решает всю задачу сам (он должен только подзадачу).
Фильтрация на входе: умный read
Большую часть контекста (до 84%) занимают «наблюдения» — результаты выполнения инструментов. Следовательно, эффективно сокращать контекст можно ещё до его попадания в модель, если сделать инструменты «умными». Вместо тотального чтения файла можно дать модели указание прочитать только фрагмент, релевантный задаче (например, «найди в логе строки, относящиеся к ошибке X»).
Для этого инструмент «read» должен обладать собственной интеллектуальностью: он может быть маленькой обученной моделью, которая по запросу выбирает нужную часть данных. В OpenCloud аналогом является функция MemoryGate, которая читает из файла памяти не всё подряд, а заданное количество строк, начиная с определённого номера.
Динамическая загрузка инструментов (skills)
Описания всех доступных инструментов тоже занимают много места в системном промпте (например, документация GitHub API — 4600 токенов). Вместо статического списка применяется динамическая загрузка: агент по текущей задаче генерирует запрос на нужный инструмент, поисковый движок находит его описание, и только оно добавляется в контекст.
Этот подход (аналогичен RAG) реализован в OpenCloud через механизм Skills — навыки подгружаются по мере необходимости, а не хранятся в промпте постоянно.
Agentic Context Engineering
Идея: передать саму функцию F (управление контекстом) другой языковой модели, а не проектировать её вручную. Вместо жёстких правил LLM сама решает, как преобразовать контекст на каждом шаге.
Dynamic Cheatsheet — ранняя реализация: промпт содержит инструкцию «храни только общие стратегии, ключевые находки и переиспользуемый код; конкретные детали задачи выбрасывай». Модель переписывает контекст, следуя этой философии.
Agentic Context Engineering (буквально та же статья) использует три LLM, которые последовательно проверяют и модифицируют так называемый «playbook» — руководство для модели. Изменения вносятся командами модификации, а не полной заменой, чтобы не сломать полезные старые записи.
Recursive Language Model — контекст для бесконечной длины
Эта модель (OverLong) не является новой архитектурой, а представляет собой метод Context Engineering, обёрнутый вокруг существующей LLM. Вся длинная история хранится на диске, в контекст (prompt) загружаются только метаданные: длина контекста, количество сегментов, координаты. Модель, видя эти метаданные, сама пишет код для поиска нужных данных на диске (RAG), извлекает их и обновляет метаданные.
Хотя промпт Recursive Language Model содержит сильные намёки на выполнение RAG, его эффективность высока: на бенчмарках длинного контекста (до 1 млн токенов) модель, обёрнутая этим методом, значительно превосходит базовую LLM без него.
Итоговое резюме
Context Engineering — ключевая технология AI Agent. Он решает проблему ограниченности контекста через сжатие (summarisation, observation masking, subagent), фильтрацию (умный read, динамические инструменты) и делегирование управления контекстом самой модели (agentic context engineering). Все эти методы обеспечивают баланс между полнотой информации и длиной промпта, позволяя LLM эффективно решать сложные многошаговые задачи.
📜 Transcript
zh · 281 слов · 118 сегментов · clean
Показать текст транскрипта
好,各位同學大家好啊我們就開始來上課吧今天呢我們要繼續來講AI Agent那今天的課程呢還是比較科普性的那我們分成三個段落第一段呢我們來講AI Agent背後的核心技術我們比較系統化的來講Context Engineering然後第二段呢我們來講AI Agent之間的互動然後最後我們來講AI Agent對於我們未來的工作可能造成什麼樣的衝擊那我們就先從AI Agent的核心技術Context Engineering開始講起等一下這段課程也許你聽了會覺得似曾相似因為很多Context Engineering的技術都已經在OpenCloud裡面被實作那今天這段課程比較不一樣的地方是會引用大量的論文發現這些論文都是非常新的論文幾個月前半年前的論文而這些技術都已經被實作在OpenCloud裡面所以上週其實很多技術我們都已經有提到那只是今天呢再從另外一個角度來談Context Engineering好那在談Context Engineering之前呢這邊有一個開場我們還是跟大家複習一下為什麼需要Context Engineering那我們知道語言模型呢就是在做文字接龍你給它一個輸入給它一個Prompt它就接一段話出來那人類給語言模型一個輸入語言模型給人類一個回應那這個回應不一定是一句話它可能是一個使用工具的指令那這個使用工具的指令可能會去驅動環境裡面的某一個程式被執行然後得到工具的輸出那當我們要把工具的輸出傳給語言模型告訴它這個工具執行的結果的時候你不能夠只給它工具的輸出大家要記得語言模型是活在當下的他只管現在的輸入他不管你之前曾經給他過什麼所以當你得到工具一的輸出的時候你要把之前人類給的命令語言模型自己操控工具的指令加上工具的輸出全部接在一起丟給語言模型有同學可能會說這邊不是輸入三個東西嗎語言模型不是應該三個回語你誤會這個投影片的意思了這邊是這三段話被接成一段對語言模型來說他看到的就是一串非常長的輸入然後他再給一個回應比如說他決定使用另外一個工具然後他在得到工具2的輸出工具2的輸出要丟給語言模型的時候切記不能只給他工具2的輸出之前發生所有的事情串成一串非常長的輸入再丟給語言模型同樣的步驟就反覆下去語言模型說他要使用工具3得到工具3的輸出把一串非常长的输入传给语言模型那这里会遇到的难点就是语言模型的输入长度是有限的他不能够吃无限长的输入这就是为什么我们需要AI agentAI agent就是拦截在语言模型跟人类或者是语言模型要执行的环境之间的一个界面他就像是语言模型的守门人语言模型的经纪人他決定語言模型會看到什麼所以來自外界的輸入會經過AI agent這個AI agent不一定是OpenCloud只是AI agent的其中一個例子今天OpenCloud還非常的原始你可以想成他是初代的AI agent他也許再過幾年以後我們再回頭看OpenCloud就像今天你拿著iPhone去看過去的Nokia手機一樣的感覺我們現在看到的只是AI Agent的原型以後一定還會有更多的進展那OpenCloud做的事情或AI Agent做的事情就是選擇給語言模型看的內容所以語言模型真正看到的是OpenCloud AI Agent篩選過的長度合適的輸入那這個輸入啊它不能太長因為語言模型它的輸入就是有上限但也不能夠太短如果太短語言模型就不知道剛才發生了什麼事就沒有辦法正確的做接龍所以對AI agent來說他要做的事情其實非常的複雜他需要產生一個長度合適的輸入不能太長也不能太短而這個AI agent幫語言模型管理他的輸入讓輸入的長度是合適的這件事情就叫做Context Engineering剛才是概念性的介紹Context Engineering如果我們今天要用比較程式語言的方法來描述它的話可能看起來像是這樣子的現在左邊這段程式碼是沒有做Context Engineering的狀況其實沒有做Context Engineering的時候你可以想成語言模型跟外界的互動就是一個復回權這個放回圈是從1到無限大這個1要執行多少個step這個取決於你想要讓語言模型運作多久你想要讓這個AI運作多久那我們希望它永遠的執行下去執行到天荒地老所以這邊放一個無限大然後這邊會有一個初始的輸入這個可能就是你給語言模型的指令今天這個指令甚至可以就是一個非常high level的目標比如說成為YouTuber或者是跟魯夫一樣就是成為海賊王然後他就去做他自己該做的事情然後這個我們把輸入叫做I第一個輸入我們叫做I1然後我們用C來表示現在所有環境中發生的事情這個我們通常就叫做Context然後用C來表示那最開始的時候C是空的那在每一個Fore圈裡面會做的事情就是把之前發生的所有事情CT加上現在目前的輸入叫做IT它可能是人對語言模型說的一句話它可能是語言模型執行某個工具後的結果總之是某一個現在發生的事情現在要給語言模型的輸入把IT跟CT接起來給語言模型它給你一個回應叫做OT然後接下來就把IT跟OT都接到剛才的Context CT後面我們更新我們的Context變成CT加1這是沒有做Context Engineering的狀態那如果有做Context Engineering呢你其實唯一改變的只有最後這一行程式其他部分運作的都還是一樣的語言模型吃一個輸入吃一個Context得到新的輸出但是我們現在不是直接把輸入跟輸出接到語言模型的Context上我們可能做了一個比較複雜的操作我們把比較複雜的操作用大F來表示那我們現在還沒有仔細說明這個複雜操作是什麼你可以在這邊定義各式各樣自己開發各式各樣複雜的操作把Context剛才的輸入剛才的輸出轉換成新的Context叫做CT加1然後CT加1在下一個FOR回圈的時候會被當作語言模型的輸入那至於這個F要做什麼那就要問你自己這個就是Context Engineering也就是一個AI Agent要做的事情好那AI Agent這個Context Engineering在那個大F裡面會做什麼樣的事情呢接下來我們就來舉幾個例子一個最需要做的事情就是壓縮因為之所以要做Context Engineering最核心的需求就是語言模型的輸入不能夠太長所以那個大F裡面最重要的一個功能就是壓縮把本來很長的歷史紀錄把它壓短那怎麼壓短呢上週在最後課程結尾的時候我們有講說這個龍蝦裡面是內建這個compaction的功能的那他做的事情其實說穿了也不值錢就把整個歷史記錄裡面擴掉system prompt的部分比較久遠的歷史記錄通過某一個語言模型然後把它變成摘要所以省來很長的歷史記錄就變成了一段簡短的摘要然後再繼續去接上新的資訊這個是龍蝦做的事情那其實上週呢在課程快結束的時候我們也說龍蝦其實還有別的處理壓縮的方式比如說有一個非常簡單粗暴的方式是如果呢某一段文字它原來是某一個工具的輸出那有時候工具輸出它會輸出非常長篇大論的東西那把那一段長篇大論改成這裡曾經有個工具的輸出就結束了上週講到這邊的時候我看到同學笑了你可能覺得這個什麼爛方法這個方法真的會有用嗎神奇的事情是這個方法還真的有用這個就是引用之一篇去年年終的論文有人就嘗試在SWE Bench上面比較用語言模型做壓縮還有單純把工具的輸出換成這裡曾經有個工具的輸出這兩個方法他們在表現上有什麼樣的差異那這邊這些實驗是做在SWE Bench上面SWE就是Software Engineering的縮寫就是要讓語言模型去做一些平常軟體工程師在做的事情那在SWE Bench裡面語言模型要解的問題就是給他一個GitHub Report給他一個issue然後他要去把這個GitHub Report的這個issue把它解掉就一般軟體工程師在做的事情雖然非常有挑戰性不過今天很多語言模型在這樣有挑戰的任務上面都可以做得非常的不錯那這邊就是嘗試了各式各樣不同的語言模型縱軸是正確率橫軸呢他這邊的單位是用那個美金你就想成是我們今天在整個解問題的過程在fix這個issue的過程用了多少的token花了多少的錢付出了多少的成本那黑色的點呢他這邊叫做Role Agent也就是沒有做任何的壓縮反正環境裡面發生什麼事情就通通跌到你的歷史記錄裡面去那這個時候你會發現雖然在多數的情況下Role Agent都表現得不錯但是相較於其他方法他會耗費更多的Token耗費更多的成本才能解決問題那這個紅色的正方形代表的是拿一個語言模型對上下文進行壓縮如果今天上下文太長了就用一個語言模型進行壓縮那你得到的是紅色這一個點那你發現紅色這個點其實跟黑色這個點多數的時候比起來是差不多的所以用 LLM 做壓縮其實跟沒有做壓縮表現在 SWE Bench 上面差別沒有非常大代表這個壓縮其實是蠻有效的但是一個神奇的地方是這個三角形這個三角形呢這篇論文裡面叫Observation Masking那其實就是我剛才講的把工具的輸出換成這邊曾經有個工具的輸出那你發現三角形的表現很多時候跟LL and Summary的表現其實是差不多的也就是你與其去呼叫一個語言模型做摘要跟你直接把今天Agent使用某個工具的輸出直接換成這裡曾經有個工具的輸出結果表現是差不多的他並不會真的比LLM summary好但是LLM summary並沒有在所有的Case都穩定的比Observation Masking好然後呢多數時候啊當然有做壓縮都是比較省錢的但是你會發現在這個例外上面有做壓縮沒有比較省錢那作者其實也提供了一個解釋他說這是因為發生了一個叫做軌跡延長的現象當你做壓縮以後當然你的上下文變短了但是因為有一些步驟就不見了所以對一個語言模型來說他覺得我剛才到底執行過這個工具了嗎還沒有嗎他重複做了剛才已經做過的事所以變成他執行的步驟反而變多了雖然輸入語言模型的Content變短但他執行的步驟變多了所以最後結一個問題所耗費的Token其實就沒有下降好那我們剛才講了兩個不同的壓縮方式那你可能問說那實際上到底哪一個比較好呢當然你可以兩個同時執行是在同篇論文裡面他最後提出來的方法就是不同的壓縮方法是可以同時執行的那他最後釋出來最好的策略就是在前期的時候先用這個Observation Masking的方法把工具的輸出換掉把工具的輸出縮短但是這一招終究會讓你的 context 越來越長因為就算你只是把工具的輸出換成一句這裡曾經有個工具的輸出你的 context 最終還是會越來越長所以強到某一個地步以後再用 summarization 的方式一次把非常長的輸入直接壓縮壓短那把這兩個方法同時使用可以得到最好的結果好 那做完壓縮以後這邊要留一個句子代表它曾經被壓縮過但這個句子應該要留什麼呢與其放一句話說這邊曾經有個工具的輸出換別的字眼放別的符號會不會更有效呢所以在後來的論文裡面有人就說那我們能不能夠在這邊放一個連結放一段記錄說這個工具的輸出詳見log1.txt那你就真的把這個工具的輸出存到你的硬碟裡面存這個檔案叫log1.txt這樣算之後呢可能多數的時候語言模型都不會再回來看這個log1.tst裡面有什麼因為多數的時候工具的輸出可能沒有那麼重要很多時候工具的輸出可能是執行read然後去讀了一篇論文然後把整篇論文的內容漏的進來那可能你根本不需要整篇論文的內容你只需要論文的其中一段只需要它的某一個摘要所以這些內容不需要一直存留在你的上下文裡面但是如果你不做壓縮的話直接執行工具這一些非常長篇大論的文章或非常長的程式碼就會一直存留在你的上下文中所以你可以把這一些內容存到某一個檔案裡面它就從你的這個語言模型的輸入裡面消失了語言模型輸入裡面就只留下一句話詳見log1.txt那如果語言模型有一天他真的很需要知道這個工具當初到底輸入了什麼輸出了什麼那這個時候他可以再執行一個工具他可以執行Rick這個指令去log1.txt裡面把他需要的內容再讀取出來他就可以重拾他的記憶這就讓我想到那個RickMulti裡面的其中一段這是第三季的其中一段就是有一天Multi發現他家有一個地下室他爺爺Rick呢把他很多的記憶通通都存在這個地下室裡面他的每一個記憶就存在一個一個管子裡面那多數都是Morty感到難堪的記憶比如說他不小心害死了一個人等等但也有一些呢是Rick本身覺得難堪的記憶比如說他發音念錯一個字被Morty糾正等等然後Morty發現原來我的大半生人生的記憶通通都存在一個地下室的管子裡面就爆氣然後就跟他爺爺打了一架就把他爺爺打倒然後兩個人記憶就都消失了就是一個這樣莫名其妙的故事最近我重看了一下Rick & Morty那我現在覺得自從有了AI agent以後很多這個科幻電影科幻小說裡面有的情節感覺就沒有那麼神奇比如說Rick & Morty最新一季裡面有一個電影製造機就是你輸入一個腳本他就輸出一個電影你想想看現在其實根本就已經有電影製造機了不是很多現在的短電影都是直接用AI生成的嗎所以這個技術現在看起來也沒有那麼遙遠了總之就是一個記憶清除然後再讀取的故事那對語言模型來說其實剛才把存在上下文中的這個內容放到Hard Disk裡面之後再讀取出來其實就是它的記憶所以語言模型的記憶其實就是它在某一些時候它可以自主的去執行把內容放到資料庫放到硬碟裡面的指令然後他就把資料放到硬碟裡面那在這邊要怎麼把資料儲存在硬碟裡面那不同的文獻就有非常多不同的方式比如說有人呢會把這一些檔案建成Graph的形狀然後讓你之後在搜尋的時候比較能夠了解不同記憶之間的關聯性或者是有人會幫記憶標上時間那你比較知道說要存取什麼時間段的記憶或者是比較新的記憶他可能就比較需要被讀出來然後接下來呢只要在某個時間點模型能夠執行抽取記憶的指令他就可以從你的資料庫裡面把記憶抽取出來那這邊需要研究的就是那怎麼讓模型在適當的時機抽取出他原來存在WAP裡面的記憶到你的檔案系統裡面那什麼時候要從檔案系統裡面把失去的記憶讀取回來那我這邊就是列了比較多的論文然後給大家參考那這方面跟這個AI agent記憶有關的文獻可以說是汗牛衝動那我就列了幾個reference放在這邊給大家參考好那講到記憶啊那我們其實需要稍微修改一下剛才才有關Context Engineering的式子我們剛才說我們有一個東西叫做context 叫做C然後我們會有一個大F來更新這個C那如果我們要把記憶的概念加進來的話講得更精確一點這個C應該被分成兩部分那我們在這邊用P和M這兩個符號來代表C的兩部分那這個P和M有什麼不同呢P就是會被丟進語言模型的資訊nn就是不會被丟進語言模型存在你的硬碟中的資訊所以context我們其實可以把它包含有存在硬碟中的資訊有可以放到語言模型中的資訊那我們這邊把context裡面兩種不同的資訊分別用p和n來表示它那左邊這個演算法跟右邊這個演算法除了c呢我們告訴你說它裡面有兩個component以外唯一不同的地方就是這個呼叫lln的輸入變了從CT變成PT就是要告訴你說我們只需要把C裡面我們準備要給LLM看的部分給LLM看就好那其他部分就存在硬碟裡面那所以當我們更新CT的時候是把CT裡面的兩個componentPT跟MT分別更新成PT加1MT加1那有時候你更新的是P的部分就放進語言模型的部分當你執行load memory當你把記憶從那個硬碟中讀取出來的時候那你就更新了P那有時候你是執行save memory你是要把memory存到硬碟裡面那你就更新了add所以這是一個context engineering更完整的式子那講到這邊我想要對我們常常用的幾個詞彙做一下Clarification有幾個詞彙其實在我上課的時候往往是被混用的比如說context比如說prompt這兩個詞彙在上課的時候好像幾乎差不多是同樣的意思但實際上如果細分起來的話我認為這兩個詞彙還是有所不同的這邊所謂的context指的就是這個演算法的C它包含了會被輸入語言模型的部分也包含了存在硬碟中的部分你可以想成所謂的Context他是AI agent所經歷過的一切事情那P呢P是真正會被輸進語言模型的部分所以P是Context的一部分他是語言模型會看到的部分這個部分才是Prompt所以Prompt跟Context我認為他還是有差別的Context不一定會成為語言模型的輸入只有Context的一部分會被作為 prompt那不過在上課的時候或者在文獻上或者在你看到別人在討論的時候往往 prompt 跟 context其實現在就是混雜成一團但我覺得這兩者其實還是可以做出區別的那我們剛才講到在做摘要的時候其實你就是呼叫某一個語言模型跟他說把這一段記憶做摘要那今天語言模型都有摘要的能力所以他就會輸出摘要來但是有一篇paper叫做Aikon他就發現說語言模型在做摘要的時候很多時候是會失敗的所謂的失敗並不是說他沒辦法產生摘要而是他產生完摘要把摘要放到Pump裡面以後結果本來能夠答對的問題本來做得了的任務做不了了那這一件事情呢叫做 Compaqs collect今天在做壓縮的時候損失的一些資訊如果損失的是最重要的資訊那語言模型就非常有可能犯錯就像我們上一堂課舉的最後一個例子有一個Meta的研究人員他讓AI幫他收信結果AI在做 Compaq 的時候把最重要的指令刪除郵件要經過人類同意這個指令把它壓縮變不見了所以模型就開始不聽人類的話所以今天在做壓縮的時候它不是一個普通的壓縮它不是一個普通的摘要我們應該要想辦法告訴語言模型什麼樣的資訊是最應該被留在Pump裡面的那這篇論文的解法是它呢拿另外一個語言模型出來然後呢它有一些訓練資料這些訓練資料是本來沒有做壓縮的時候可以做的對但是語言模型在壓縮之後就做不對的一些例子然後他把這一些例子給一個語言模型看然後跟那個語言模型看說你看壓縮以後結果變差了你能不能夠說明一下反省一下為什麼壓縮會變差呢然後這個語言模型呢就檢查了這兩個trajectory以後呢他就會得出他的結論把這個結論呢寫成feedback那其實這個feedback呢就是一段文字他沒有什麼特別的這邊完全沒有訓練模型這個feedback就是一段文字那下一次有不一樣的任務進來的時候再把這段feedback給負責摘要的語言模型看希望有多這段額外的feedback可以讓語言模型做得更好那其實在這篇論文裡面他也把他的資料集分成訓練資料跟測試資料不過這邊要注意這邊所謂的訓練資料並沒有真的去改變模型的參數這些訓練資料就是拿來得到這個feedback然後測試資料會拿這一個feedback來強化模型做摘要的能力當語言模型看到這個feedback的時候它裡面的參數是沒有任何改變的但它只是因為看到這個feedback更知道說在做摘要的時候什麼資訊是重要的如果漏了什麼資訊之後可能就會任務失敗所以它更能夠做摘要更能夠做人類要的摘要任務要的摘要所以可以表現得更好那Acon這招真的有用嗎還真的有用他這個walk是做在App Work上面那App Work就是要讓語言模型去操控一大堆的App然後來執行一些比較複雜的事情其實就跟今天AI agent在做的事情是一樣的所以你就知道說今天這些AI agent那麼能夠執行各式各樣的程式把它組合起來完成複雜的任務其實早就有這樣子的benchmark在評量AI agent能夠執行複雜任務的能力那這邊橫軸是這個peak token也會在整個promp裡面token最多的時候多到什麼樣的地步那如果今天你是黑色的點就代表沒有做compressions那這個時候你的token量當然是最多的這三張圖就是比較三個不同的模型然後縱軸呢縱軸就是正確率正確率當然是越高越好那如果你只是做一般的LLM prompt在AppWord這個benchmark上面只做LLM壓縮有時候結果是會變差的壓縮完之後本來解得了的任務就解不了了雖然做完壓縮以後你當然用的Token量比較少但是正確率是會下降的那他發現說當他用ACON這個做法也就是讓語言模型更能夠做摘要更能夠做任務需要的摘要的時候他得到的是紫色這一個點不只所耗費的Token變少表現也變得更好所以這個是 ACON 做的事情在 ACON 那篇論文裡面是完全沒有訓練模型的當然你想要訓練模型也是可以的那也當然有論文我就引用在這邊嘗試去 Fine-tune 一個 LLM這個 LLM 是專門對 context 做壓縮的但你可能想說那我們要怎麼訓練這樣子的 LLM呢我們一般訓練一個模型的時候你不只要輸入也要有正確的答案才能夠訓練模型但是今天假設沒有正確的答案或實際上我們就是沒有正確的答案那我們要怎麼訓練這個模型呢你又不知道正確的摘要應該要長什麼樣子你又不知道什麼樣的摘要才是對任務有幫助的所以實際上在訓練這個模型的時候是用一個reinforcement learning的方法他是說好讓這個模型產生摘要之後那還不算完還不知道這個摘要好不好接下來再繼續去解這個任務然後直到最後解完任務之後看有沒有做對有做對就是positive reward沒有做對就是negative reward用reinforcement learning的方法來訓練這個做摘要的語言模型但其實做摘要的語言模型跟負責做其他事情比如說產生執行工具指令的模型其實是同一個模型所以實際上在訓練的時候你不只是強化了語言模型做摘要的能力你其實強化了解整個任務的能力包括語言模型根據摘要來解任務的能力也許你今天這個訓練不是不一定不只是讓摘要寫的更好可能同時也是讓模型更能夠讀取摘要更知道怎麼從一個簡短的摘要裡面去執行他的任務訓練一個LLM他的目標是特化在Agent的這個情況下可以做的更好那講到目前為止啊我們都還沒有講什麼時候應該開始壓縮但直覺上今天context太長的時候就應該開始壓縮但是長到什麼樣的地步應該開始壓縮呢如果你去看這個opencloud的話那裡面就是一條寫死的規則反正長度超過某個上限的時候就開始壓縮為什麼是用寫死的規則呢為什麼不讓語言模型自己決定什麼時候要壓縮呢因為前人的文獻已經發現語言模型不喜歡做壓縮對他來說壓縮就是抹除記憶他非常不喜歡這件事就像Morty發現自己大半身的記憶都被藏在一個地下室的時候他非常的生氣就毆打了他的爺爺所以這個語言模型跟Morty一樣他不喜歡他的記憶無緣無故就消失了就算是你給他一個工具跟他說這邊有個好用的工具這個工具會把你過去的記憶某一些地方抹除他聽了就不高興聽了就不想執行這個工具那甚至在這篇論文裡面他還嘗試逼迫模型使用這個工具他跟模型說現在有一個工具叫做 erase那就是會抹去模型部分的記憶然後他說當我跟你說reflection反省的時候你就要執行erase這個工具然後這個模型就開始做事情做著做著做著人類在這邊強制輸入說reflection然後非常重要你只能做erase不能做其他事語言模型才不做他就繼續做他的事情他不想要抹除他自己的記憶所以語言模型沒那麼喜歡被抹除記憶所以怎麼辦呢有一篇paper呢叫做Agent 4所以你會發現說今天這個因為你的模型不太喜歡被抹除記憶所以OpenCloud用的是強制執行的方法只要Context超過一個上限他就執行一個動作叫Memory Flush這強制執行的會讓模型自己開始壓縮自己的記憶那有一篇paper呢叫做Agent 4他做的事情是他去訓練模型訓練模型使用壓縮記憶的工具他把這個壓縮記憶的工具叫做fold叫做折疊這個fold會吃兩個輸入一個輸入是我們要把剛才整個對話的第幾步到第幾步做壓縮那麼說壓縮完之後你最好還可以留一個小紙條說這邊曾經被壓縮過那這個小紙條內容寫什麼也可以讓語言模型透過這個工具自己決定所以他就可以說第三步到第四步剛才是上網搜尋收到了一大堆的資料那也許太冗長了我們就改成一句話上網搜尋我已經知道我要資訊比如說台灣最高的山是玉山然後呢就執行這個Ford的指令要的事情把前面第三步驟跟第四步驟置換成一段文字那講到這邊你可能會想說剛才不是說語言模型不喜歡壓縮或抹除自己的記憶嗎這邊怎麼能夠壓縮或抹除自己的記憶其實這篇論文正好就是呼應了過去的研究發現語言模型不喜歡壓縮記憶因為這篇論文的核心是使用壓縮記憶工具這件事情必須要透過訓練才能取得所以他們是微調了模型的參數這跟剛才前面的Acon不一樣Acon那個paper教模型做 summary的時候是沒條參數的這邊是得調參數才能夠做到你得逼迫去训练语言模型使用这些压缩的工具他才有办法自己做压缩那在这篇论文里面其实也有提到说他们试图呢硬是Pump模型努力的Pump模型看看能不能够在不微调模型的情况下让模型自己使用压缩工具他们发现模型很难透过Pump的情况下稳定的使用压缩工具所以压缩这个能力是需要另外训练的那我们上周也讲到Subagent的概念那Subagent呢其實可以看作是一種自主的壓縮行為當模型到某一個時間他產生一個使用工具的指令叫做 Spawn 繁殖的時候他就可以產生一個 Sub-agent那其實 Sub-agent 他仍然是跟原來的語言模型互動Sub-agent他的 Context 裡面可能有一個 Sub-Task告訴這個 Sub-Agent 要做什麼這個 Sub-Agent 就把他的任務傳給語言模型語言模型給他一個回覆叫他用指令他可能傳回指令導致的工具的輸出然後這個狀況就一直下去那 Sub-Agent 可能會有一個動作叫做 Return他可以執行一個工具叫 Return那 Return 裡面會告訴主 Agent 說現在sub agent他的輸出是什麼他想給主agent的資訊是什麼當sub agent執行return以後他就把return的資訊丟給主agent那主agent就可以繼續再跟LN互動下去那當sub agent執行return之後他之前所做的事情就通通從這一串context裡面被抹除那你就可以想成這其實也是自動刪除記憶的一種方式那這一整段記憶就被改成了return裡面寫的這句話所以本來一直到subagent運作的時候他的contact都從這邊一直到這邊但是當執行return以後等於執行了一個自主壓縮這一段對話記錄就通通不見了對話記錄就從這邊開始那為了讓大家可以更直觀的了解subagent是怎麼運作的那我就截了這一篇paper裡面的一張圖裡面就非常清晰的用個具體的例子展示subagent對於context的長度的影響那這邊就是有一個很複雜的問題他就說有一篇發表在2023年的論文內容是跟什麼什麼主題有關的然後這個作者有三個人其中一個人是某個教授等等等等我想說你都知道這麼多資訊還自己找不到這篇論文還要Agent幫你找所以這顯然是一個蠻artificial的問題但總之這是一個特別難來考驗agent能力的問題那看看agent解不解得了好然後agent呢看到這個問題之後他就會首先開始搜尋相關的文章那每一次agent執行一個動作的時候這個時候他的context呢都會逐漸的越來越長那他這邊就記錄了context lab那但是這一個語言模型呢是有產生上agent的能力的所以他先產生一個sub-agent所以我們來搜尋相關的論文然後找到相關論文以後他只把找到的論文的標題傳回給主agent所以這個時候整個context就縮短了然後主agent會再分裂一個sub-agent去執行另外一個任務比如說驗證作者是不是對的那這時候context又逐漸伸長然後等找到這個作者的資訊之後這個context又開始縮短所以當你執行sub-agent的時候對Context而言你當然是可以把Subagent看作是有一個主agent帶了一堆小弟在工作但是如果從Context Engineering的角度而言所謂的Subagent就是對Context做自主的壓縮每次分裂一個Subagent的時候就是預示了某一段的Context之後會被壓縮掉所以每次產生一個Subagent的時候你就可以累積Context這個Subagent結束的時候那段Context就不見了你就會看到這個Context有鋸齒狀的上升跟下降那他另外呢還特別說明說假設如果沒有這個Sum Agent所有的Context都不斷的累積的話最終會累積到10萬多個Token那超過了他們語言模型可以吃的Token的上限所以對他們來說能夠產生Sum Agent也是蠻重要的能力不過就像我剛才說的語言模型其實不喜歡自主做壓縮所以Sum Agent這個能力通常不是天生的他是後天取得的它是需要經過訓練取得的但今天很多模型它都有產生subagent的能力當你把你的OpenCloud接給Cloud的時候它有產生subagent的能力但這可能不是一個自然原生的能力它是需要經過特別的訓練才能夠具備這種能力那在這篇論文裡面他們就有針對產生subagent的能力做了特別的訓練那怎麼訓練呢他們是用reinforcement learning的方法他們去用 reinforcement learning的方法去訓練語言模型希望語言模型可以得到正確的答案但他們發現如果只用答案正確與否來當作語言模型學習的信號的話他不見得能夠學會正確的產生some agent因為假設你的目標只是得到正確的答案對語言模型來說有什麼理由他一定要產生some agent嗎他就是努力得到正確的答案就好啦所以他其實是需要加上一些額外的reward才能夠去促使逼迫誘導語言模型去使用subagent這個工具比如說他有一個reward是如果主幹的context過長就會被懲罰主幹的context太長的話就會有一個懲罰所以今天語言模型會不得不去分裂出一些subagent讓主幹不會太長然後他又怕Sub-agent永遠都不結束有時候分裂出一個Sub-agent那Sub-agent就自己把自己當作主agent然後把所有事情都做完了就失去產生Sub-agent的意義這種事情也是有可能發生的所以他也要去懲罰一下如果Sub-agent做出超越範圍的事情他直接自己把整個問題解完了那也是會受到懲罰的用這種方法才能夠訓練語言模型使用Sub-agent這個工具好那讲到目前为止我们刚才都是在提压缩也就当我们context过长的时候把过长的context把它弄短但是那是治标那我们能不能治本一开始就不要让context过长呢那怎么样不让context过长呢那你就要分析一下说现在到底是什么样的资讯让context过长那这篇有两篇论文都有做类似的分析而且分析的结果非常的一致所以左邊這篇論文他說他分析了假設我們沒有做Context Engineering就記錄現在在整個對話的歷程中到底模型做了什麼事情到底這些Token來自於什麼樣的行為到底這些Token都代表了什麼樣的事情他做了一個分析他分析的結果是這樣子的這邊Action指的是模型去產生執行工具的指令那這些指令通常很簡短所以只占了歷史紀錄的6.5%Reasoning 指的是模型自己說出來的話語言模型自己說出來的話那這個也很間斷只占9.6%那在整個 context 裡面什麼樣的 token 佔據了多數的 context 呢他發現所謂的 observation 佔據了幾乎 84% 左右的 content那這些 observation 指的是來自外界的輸入比如說語言模型讀了一個檔案打開那裡面整個檔案所有的資訊都變成context的一部分他執行了某一個工具那工具有非常長的輸出那些輸出變成context的一部分這些來自外界的輸入才佔據了多數context的內容另外一篇論文他也得到幾乎一樣的結論另外一篇論文他是主要focus在software engineering上面所以他主要是讓模型去改程式還有執行程式他發現當模型在做software engineering的時候他只有12%的context是在執行程式碼只有11.8%的context是在修改程式碼多數的時候他都在讀程式碼有76%的context是花在把整個report裡面的程式碼讀進來所以佔了非常大量的context所以有沒有辦法直接製本一開始就不要讓這麼多的文字進入context呢所以就有一些論文提出了一些想法我們也許應該在observation進到語言模型之前就做一些過濾的行為那一般我們在執行讀一個檔案或讀一個文件的時候常見的做法就是語言模型它輸出一個指令說我要讀一個Log file然後你有一個叫做read的工具那這read的工具就把Log file找到然後把Log file的內容語言封不動的一口氣的逼語言模型吞下去如果這個log file非常大有時候語言模型就會哽到所以怎麼辦呢也許我們需要一個更聰明的read的工具我們也許可以讓語言模型它在輸出指令的時候它不只說我想要讀log file它還說我想要讀log file裡面跟修復box有關的內容那希望這個read的指令夠聰明它不只能夠打開一個檔案它還能夠從檔案裡面找出真正重要的部分那這個Read的指令顯然它需要有一點intelligence在它去讀了這個log從log裡面把跟 bug fixing有關的content把它讀出來語言模型只focus在跟 bug fixing有關的內容上面那我剛才說這個Read的指令顯然它需要有一點智能那或者是你需要做比較多的engineering去implementRead的這個函式那在這篇論文裡面他們其實就是訓練了一個小的語言模型所以這個 read 本身也是一個小的語言模型這個小的語言模型本來就可以吃這個指令根據這個指令找出合適的內容再傳給主要的 agent好那講到這邊我們也可以回顧一下看看之前在講 Open Cloud 的時候他是怎麼處理 memory 的在講處理 memory 的時候我們說他其實有兩個函式一個叫 memory search一個叫MemoryGate它其實有兩個工具那我們其實並沒有細講為什麼它需要MemoryGate這個工具你可以想說為什麼讀Memory還需要一個特別的工具讀MemoryMemory又不是什麼神奇的東西它就是文字檔它不是什麼神奇的東西用一般的函式用一般讀檔的函式也可以把那個檔案的內容通通讀出來為什麼在讀Memory的時候OpenCloud要設計一個特別的工具去讀Memory呢其實就是為了做到我剛才在前一頁投影片裡面講的過濾那其實MemoryGet這個函式它不是只給它要讀的檔案它其實還會給額外的兩個數字代表說從這個檔案的第幾行開始讀起然後我們總共要讀多少行所以MemoryGet是從整個巨大的MemoryFile裡面只存取一部分出來因為OpenCloud當初在設計的時候害怕Memory裡面存了非常大量的資料把所有資料一次都讀到語言模型的context裡面語言模型會哽到所以他就只從Memory裡面選一小段的內容那至於要怎麼選一小段的內容到底一整個Memory file要取哪裡那由Memory search的結果來決定根據Memory search的結果還有語言模型自己的判斷去使用Memory get這個工具只存取Memory這個檔案的一小部分那這個其實也是過濾的概念那另外一個過濾的概念呢就是按需加載那有一篇paper叫做NCP0那我們一般呢在讓AI agent使用工具的時候你其實就是把使用工具的指令有哪些工具這些工具可以拿來幹嘛把它放在語言模型的SystemProm裡面那這個SystemProm在有了這些工具的指令之後可能會非常的長NCP0這邊 paper裡面就特別提到說舉個例子比如說有一個使用GitHub的工具這個使用GitHub的工具足足有4600個token而且這只是使用GitHub的工具而已如果有更多的工具模型就會直接超過它的context window可以承受的上限所以怎麼辦呢工具這種東西應該是要動態加載的過去比較傳統的方法是說根據使用者輸入的任務再去挑選合適的工具其實這跟 RIG 的概念是非常類似的假設這些工具的說明都被存在一個非常巨大的資料庫裡面今天有一個新的任務進來根據這個任務去啟動一個搜尋引擎去工具的資料庫裡面進行搜尋把相關的工具指令把它抽取出來將模型知道有哪些工具可以用它就可以執行這些工具來得到我們想要的結果但這篇論文就是發現說這不是一個特別好的方法因為今天使用者的需求往往非常的模糊所以不容易根據使用者的需求來判斷需要使用哪些工具比如說今天使用者的需求可能是幫我修改這個 bug但是修改 bug 要用的工具不只一個比如說模型會需要至少先用讀檔的工具能讀檔然後看了這個程式以後再用一個這個 edit 編輯的工具才能夠修改這個程式所以今天雖然使用者只說了幫我修改這個程式嗎或幫我抵這個bug但被換用的工具其實是好幾個那你很難直接從使用者問的這個問題讓搜尋語情決定要使用哪些工具所以這篇 paper 它提出來的核心想法就是我們何不讓語言模型用 AI 動態的決定它自己需要什麼工具讓語言模型輸出它想要什麼所以語言模型可能在讀到任務的指令之後它想一想就輸出一個任務的需求 輸出一個工具的需求用這個工具的需求去操控搜尋引擎讓搜尋引擎找出它需要的工具然後它就可以使用它需要的工具來解接下來的任務那這件事情你可能覺得聽起來很熟悉這個其實就是OpenCloud裡面所用的Skill的概念Skill這個東西它也是按需加載的我們不會把所有的Skill都放到Context裡面我們不會把所有的Skill都放到這個Pump裡面只有在需要的時候才從硬碟裡面把Skill讀出來放到Pump裡面這個就是按需加載的概念好那講到這邊我們就講了一些有關Context Engineering的想法但到目前為止多數Context Engineering也就這個大F要做的事情都是人類決定的人類編寫好寫死固定的指令這邊就是寫寫寫死的指令然後讓你的電腦讓你的程式按照這些寫死的指令來處理context但是有沒有辦法讓這個context engineering做的更複雜更有智慧做的更好呢有一個想法叫做agentic context engineering那這個說法就是來自於一篇叫agentic context engineering的paper然後把論文的連結也放在這邊那這邊想法的核心就是把Context Engineering也交給語言模型也不給人類設計直接交給語言模型讓他自己想辦法幫自己做Context Engineering你覺得本來大F是人類工程師設計的現在直接交給語言模型工程師看看他有沒有更好的想法這邊這個Agentic Context Engineering的概念如果要畫成圖的話就是這樣你現在有一個Context然後呢這個Context呢會加上一個輸入語言模型給一個輸出接下來呢把context輸入輸出全部串起來直接丟給一個語言模型然後他愛幹嘛就幹嘛得到一個新的context我們叫context T加1然後呢前面可能接個system prompt然後後面呢加個input然後呢再從語言模型那邊得到Output T加1然後再有一個語言模型把Context T加1Input T加1Output T加1再變成Context T加2那這個步驟呢就反覆繼續下去那我這邊在畫圖的時候呢沒有把System Point加到Context裡面那你要把System Point視為Context的一部分也可以啦不過如果你細讀這些Agentic Context Engineering的Paper的話你會發現實際上他讓語言模型自己處理的Context是全部Context的一部分他們通常就是留一個區塊這個區塊給語言模型愛玩什麼就玩什麼但是比較重要的東西比如說System Prompt裡面是包含了這個AI Agent本身的identity等等重要的資訊的這個是不能夠隨便亂動的所以通常你就固定住它不要動它這一系列Agentic Contact Engineering的paper通常只改整個context裡面的其中一部分而已好那Agentic Contact Engineering一個比較早期的paper可能是Dynamic Cheatsheet他就把context叫做cheatsheet叫做小抄只是這個小抄是會隨時間變化的那概念非常簡單就是呼叫一個語言模型給他一段Prompt跟他說我們這個context要怎麼改比較好然後他就把context t input t output t改成context t加1就結束了這邊他的核心就是Prompt Engineering把這段Prompt寫好希望語言模型讀了這段Prompt自己知道怎麼做 Context Engineering也就是用 Pump Engineering來做 Context Engineering這段 Pump 非常的長那仔細讀下來呢它的核心精神就是存下未來能用的東西就它告訴語言模型說你不要存一些很Specific 的東西你要存的是精神概念比如說什麼有效的策略可以把它存起來如果你寫一段程式嘛你覺得之後用得上也把它存起來關鍵的發現也存起來但是非常跟現在這個任務有具體關聯的東西那可能之後都用不上了就不要存起來總之這邊就是Pump Engineering來做Context Engineering那像這樣子的paper呢現在很多比如像Agentic Contact Engineering這篇paper裡面呢他就做了更複雜的他把他的這個Context T到Context T加1呢就經過了更複雜的流程那他把他的Context呢取了另外一個名字叫做Playbook就是一個守則 手冊那他希望語言模型看著這個手冊做他應該做的事情那這篇paper實際上做的事情我就不細講總之這個playbook的演化不是只有一個步驟要過三個語言模型這三個語言模型分別做了不同的檢查之後最後產生一個修改playbook的指令他不是直接產生新的playbook因為他怕直接產生新的playbook搞不好一些舊的資訊就被弄壞了所以他是去修改舊的Playbook所以這三個模組合起來會產生一個修改的指令用這個修改指令去修改原來Playbook的內容把Context T原來的Playbook變成Context T加1變成一本新的員工守則這是Agentic Context Engineering這篇Paper做的事情那還有另外一篇Paper呢叫做Recursive Language Model它其實也是Agentic Context Engineering的其中一個可能性那這件Paper曾經一度非常的知名因為他號稱說他發明了一個新的語言模型這個語言模型可以吃無窮長的輸入那其實他真正做的事情就是Context Engineering他做的事情是這樣他說假設現在的Context真的可以非常非常的長那非常非常長怎麼辦呢就通通放到Hot Disk裡面我們只把這邊的Context拿非常非常小一部分load到memory的pump裡面那他這邊paper裡面說這些資限率叫做metadata比如說他只記了現在這個context到底有多長然後context被切成幾段context被存在哪裡等等非常簡短的資訊那如果用我們這邊paper的符號來講這些存在hard disk裡面的東西就是add這些會真的load到memory裡面被load這邊不應該講memory 這邊講memory大家可能會覺得很困惑這邊真的被放到pump裡面的叫做p那LM做的事情就是看著這個p然後去想看看他要從m裡面找尋什麼樣的資訊然後發現語言模型很厲害因為這個語言模型可以寫程式他會寫程式去對Tadisk裡面的內容做搜尋也會自己自主的知道要做RAG然後他自己知道說他要去HotDisk裡面搜尋一些東西出來把這些搜尋的東西拿出來去修改他的MetaData所以PT就變成PT加1那這張Paper裡面還有一個章節討論了這個模型的這些自主產生的Pattern但是實際上到底有沒有那麼神奇真的是見仁見智啦因為如果你仔細去讀他的Pump的話因為這些做Context Engineering的LLN背後是需要做Pump Engineering的你仔细去读它的PUMP的话就只差没有教语言模型说你直接做RIG了他花了蛮多力气不断地暗示语言模型说你可以做RIG这件事所以语言模型就写了一个程式做RIG实际读它的PUMP我觉得也没那么神奇不过它的表现是非常好的他说你看原来的GPT-5这个是个很好的模型如果输入越来越长输入越来越长到某个长度有些任务它就解不了了這邊All-Long這些Benchmark就是測試語言模型在Context非常長的情況下它能不能夠好好的運作但是加上它的Recursive Language Model以後因為它這個Recursive Language Model是一個Context Engineering的方法所以它可以外掛在任何現有的語言模型上所以如果外掛在GPT5上就可以讓本來已經很厲害的GPT5變得更厲害在輸入真的非常長比如說長達1M100萬個Token的時候仍然可以在这一些长context的benchmark上面做出不错的效果总之呢今天就是比较系统化的跟大家介绍了context engineering那我们这边有一个演算法这个演算法摘要了context engineering实际上做的事情那我们也跟大家说其实context分成两部分一部分是add它是存在你的hard disk里面的一部分是p它是真的会当做prompt丟给语言模型的那有一系列比较新的研究尝试说把Context Engineering里面这个最关键的F看能不能不要由人类工程师来设计也把它交给语言模型这个部分要跟大家分享的是Context Engineering
⚙️ Pipeline jobs
| Stage | Status | Att. | Updated | Error |
|---|---|---|---|---|
| download | done | 1/3 | 2026-07-20 11:58:29 | |
| transcribe | done | 1/3 | 2026-07-20 11:59:07 | |
| summarize | done | 1/3 | 2026-07-20 11:59:47 | |
| embed | done | 1/3 | 2026-07-20 11:59:49 |
📄 Описание YouTube
Показать
影片剪輯:李一駿助教 背景知識:語言模型基本原理 https://youtu.be/lVdajtNpaGI?si=gW7MvcA0BE0RgT5V 背景知識:解剖小龍蝦 — 以 OpenClaw 為例介紹 AI Agent 的運作原理 https://youtu.be/2rcJdFuNbZQ?si=U2JvWOj6rk7HNT8E