Мне никогда не нравилась эта фраза «Инженерная инженерия», которая всегда звучала для меня как причудливый способ поговорить о магических заклинаниях. Теперь эта фраза устала, а контекстная инженерия подключена. Мы все понимаем, что важно управлять тем, что агенты ИИ держат в их контекстных окнах.
Инженерия Этот контекст может означать разные вещи. Я сосредоточусь здесь на том, как обновление до сервера MCP для XMLUI улучшило его способность управлять контекстом для агентов (раскрытие: я консультант по проекту XMLUI; см. Также запись нового стека).
Использование XMLUI-MCP
XMLUI-MCP работает с документацией, исходным кодом и примерами. Вот типичная конфигурация для таких агентов, как Claude или Cursor.
«xmlui»: {«command»: «/users/jonudell/xmlui-mcp/xmlui-mcp», «args»: [
«/Users/jonudell/xmlui»,
«/Users/jonudell»,
«xmlui-invoice,xmlui-mastodon»
]
}, 12345678 «xmlui»: {«command»: «/users/jonudell/xmlui-mcp/xmlui-mcp», «args»: [ «/Users/jonudell/xmlui», «/Users/jonudell», «xmlui-invoice,xmlui-mastodon» ]},
Этот код означает:
- Запустите двоичный файл XMLUI-MCP
- Использовать/пользователи/jonudell/xmlui в качестве местоположения клона Xmlui Repo
- Использовать /пользователи /jonudell в качестве корня для примеров
- Ищите примеры в подпапке XMLUI-Invoice и Xmlui-Mastodon
Это сработало довольно хорошо. Я слышал от Xmlui Devs об успешных результатах с одним выстрелом и был в восторге от этой обратной связи:
«Я покинул MCP -сервер, работающим, обновил страницу, и внезапно устроил работу по пользовательскому интерфейсу для того, что я спросил. Я живу в будущем».
Хороший!
Повышение ожиданий
Несмотря на поддержку, я не был удовлетворен. Когда вы работаете с комбинацией агентов и XMLUI-MCP, вам всегда следует привести к правильному решению, которое поддерживается цитатами для исходного кода, документов, практических статей или рабочих примеров. Если решение не появляется? Это ошибка в документации (которую мы можем исправить) или отсутствующая функция (которую мы можем добавить). Вы никогда не должны быть приведены к неправильному решению, которое не привязано к наземной правде. И это много происходило.
Я добавил подсказку под названием xmlui_rules с руководством, такими как «Не изобретайте ни одного синтаксиса XMLUI, используйте только конструкции, для которых вы можете найти примеры в документах и приложениях, и всегда цитируйте свои источники». Теперь, вместо того, чтобы вставлять правила в чат, я мог бы просто сказать «помнить правила», но мне все время повторяли. Как XMLUI-MCP может сыграть более активную роль в управлении контекстом и повторения правил?
Для начала, инструменты поиска XMLUI-MCP, необходимые для того, чтобы стать умнее о нечетком поиске. Работая с моей командой помощников (в данном случае CHATGPT, CLAUDE и CURSOR), мы придумали поэтапный подход: сначала поищите точную поисковую строку, затем используйте расслабленный подход, который пропускает общие остановки, а затем придерживайтесь частичного подхода, который требует только подмножного слова). В первой версии использовался алгоритм, который предпочитал точность по сравнению с отзывами. Это казалось слишком строгим, но когда я увеличил вспоминание, результаты были затоплены неактуальными ударами. Оказалось, что консервативный подход к точности в этом слое не был нарушителем сделки, если система могла бы помочь агентам организовать сочетание инструментов и стратегий поиска.
Чтобы сделать этот бетон, рассмотрите этот тестовый запрос: «Как мне создать ряд компонентов равной ширины?»
Это URL, который я хочу, чтобы агент нашла и сообщил: составить набор карт равной ширины. Запрос был несовершенным для этого результата, но курсор получил туда, куда я хотел, чтобы он пошел.
Как это попало? Я попросил это объяснить.
1. Первоначальный поиск я начал с поиска «макета компонентов равной ширины строк», но не получил никаких совпадений. Затем я попробовал больше конкретных терминов: MCP_XMLUI_XMLUI_SEARCH с «компонентами макета HSTACK ROW»-обнаружено общей информацией о HSTACK 2. ОТКРЫТИЕ В результате поиска «ширина на 100%», я обнаружил этот конкретный совпадение: MCP_XMLUI_XMLUI_SERKI_SERCH с «шириной 100% равной»-это был ключевой поиск, который нашел то, как наполняется, что наполняется сама по себе. Это было именно то, что мне было нужно! 3. Как я подключил компоненты равной ширины к картам равной ширины, соединение не было прыжком — это было прямое совпадение в результатах поиска. Когда я искал «ширину 100% равной», найдена поисковая система:-Имя файла: Make-a-set-a-e-equal-width-cards.md-Название: «Сделайте набор карт равной ширины»-Список Howto: Сделайте набор из равных ширинов, в индексе Howto-Процесс поиска 4. Вот точный последовательность. Компоненты макета строк »→ Найденная информация об общем hStack-третий поиск:« Ширина 100% равна »→ Нашел руководство по праву! Третий поиск был прорывом, потому что он нашла конкретное руководство по праву, которое точно касается того, о чем вы просили. Почему это сработало, поиск был успешным, потому что:-Имя файла практического файла содержит «карты равной ширины»-«равный» поисковый термин «равна», соответствующий «равной ширине» в имене файла-термин поиска «ширина» соответствовал контенту о размере ширины-как рекомендации, специально адресованы
Чтобы увидеть, как это работает, посмотрите на один из ответных курсоров, полученный от XMLUI-MCP:
Запрос: «Ширина 100% равна» (Stages = 3, Hits = 50, уверенность = высокая) Файеты: Компоненты = 12 файлов (36 совпадений) Примеры = 0 файлов (0 совпадений) Howtos = 2 Source = 6 файлов (12 совпадений) DOCS/Public/Pages/Layout.md: 395: Когда вы используете `hStack’s hipact a docs/purse/pages/layout.md: 395: Когда вы используете` hstack `wardse with, wardth warth withs is wisport is apport is apport is apport. docs/content/components/iframe.md: 45: width = «100%» … xmlui/src/components/appheader/appheader.module.scss: 127: ширина: 100%; xmlui/src/components/autocomplete/autocomplete.module.scss: 42: ширина: 100%; — json: {«Query_plan»: [
{
«stage»: «exact»,
«query»: «width 100% equal»,
«hits»: 1
},
{
«stage»: «relaxed»,
«query»: «width 100% equal»,
«hits»: 1
},
{
«stage»: «partial»,
«query»: «width 100% equal»,
«hits»: 109
}
]»Раздел»: {«Компоненты»: [
{
«type»: «components»,
«path»: «docs/content/components/IFrame.md»,
«line»: 45,
«snippet»: » width=\»100%\» »
},
…
{
«type»: «components»,
«path»: «docs/public/pages/tutorial-09.md»,
«line»: 146,
«snippet»: » \u003cTable width=\»100%\» data=\»{[$props.details]} \ «\ u003e»}]»Примеры»: []»Howtos»: [
{
«type»: «howtos»,
«path»: «docs/public/pages/howto/make-a-set-of-equal-width-cards.md»,
«line»: 0,
«snippet»: «[filename match]»}, {» type «:» howtos «,» path «:» Docs/public/pages/howto/make-a-set-of-equal-width-cards.md «,» line «: 1,» Snippet «:»# Сделайте набор карт равной ширины «}],« Источник »: [
{
«type»: «source»,
«path»: «xmlui/src/components/Accordion/Accordion.module.scss»,
«line»: 19,
«snippet»: » width: 100%;»
},
…
{
«type»: «source»,
«path»: «xmlui/src/components/App/App.module.scss»,
«line»: 165,
«snippet»: » width: calc(100% + (2 * var(—scrollbar-width)));»
},
},
«facets»: {
«components»: {
«files»: 12,
«matches»: 36
},
«examples»: {
«files»: 0,
«matches»: 0
},
«howtos»: {
«files»: 1,
«matches»: 2
},
«source»: {
«files»: 6,
«matches»: 12
}
},
«confidence»: «high»,
«agent_guidance»: {
«rule_reminders»: [
«🚨 BEFORE RESPONDING: Ask yourself ‘Am I about to provide code without a documented working example?’ If yes, STOP and acknowledge the limitation instead»,
«🚨 PRIORITY ORDER: 1) Check for documented working examples 2) IF NONE FOUND: Explicitly state this and provide no code 3) ONLY THEN: Provide general documentation URLs (if any exist)»,
«🚨 MANDATORY ACKNOWLEDGMENT: When no documented examples are found, you MUST start your response with: ‘I am following the guidance by not providing code examples because no documented working examples were found.'»,
«🔍 SEARCH STRATEGY: Use xmlui_examples and xmlui_search_howto first, then fall back to xmlui_search»,
«📚 PREFER: Examples and howtos over general component documentation»,
«🔄 FALLBACK: If no examples/howtos found, then search general documentation»,
«🔗 MANDATORY: Always include documentation or example URLs in your response»,
«🔗 MANDATORY: Always include documentation URLs in your response — see documentation_urls»,
«📍 REQUIRED: Cite specific sources with clickable links from the search results»,
«✅ VERIFY: You must include at least one URL from documentation_urls in your response»,
«❌ Do not invent syntax — only use documented constructs»,
«📝 Always cite your sources when providing code examples»,
«🔗 Provide specific URLs to documentation sources (see documentation_urls)»,
«📍 Reference file paths and line numbers when available»,
«⚠️ Preview and discuss limitations before providing code»
]»Предлагаемое_аполнение»: «Обнаруженные ограниченные примеры. Документация компонента перекрестных ссылок с любыми доступными примерами. Всегда предоставляйте URL-адреса для источников документации.», «URL_BASE»: «Document_urls»: [
{
«title»: «Layout»,
«url»: »
«type»: «components»
},
…
{
«title»: «Make A Set Of Equal Width Cards»,
«url»: »
«type»: «howtos»
},
…
{
«title»: «Accordion.module»,
«url»: »
«type»: «source»
},
]
}} 123456789101112131415161718192021222324252627282930313233343536373839404142 4344445464748495051525354555657585960616263646566768697071727374777778798 0818283848586878889909192939495969798991001011021031041051061071081091101111 1121131141151161171181191201211212312412512612712812913013113213334135136 Запрос: «Ширина 100% равна» (Stages = 3, Hits = 50, уверенность = высокая) Аспекты: Компоненты = 12 файлов (36 совпадений) Примеры = 0 файлов (0 совпадений) Howtos = 2 Source = 6 файлов (12 совпадений) Docs/public/pages/layout.md: 395: Когда вы используете `hstack` globs wildse. width.docs/content/components/iframe.md:45: width = «100%» … xmlui/src/components/appheader/appheader.module.scss: 127: ширина: 100%; xmlui/src/components/autocomplete/autococlete.module. — json: {«Query_plan»: [ { «stage»: «exact», «query»: «width 100% equal», «hits»: 1 }, { «stage»: «relaxed», «query»: «width 100% equal», «hits»: 1 }, { «stage»: «partial», «query»: «width 100% equal», «hits»: 109 } ]»Раздел»: {«Компоненты»: [ { «type»: «components», «path»: «docs/content/components/IFrame.md», «line»: 45, «snippet»: » width=\»100%\» » }, … { «type»: «components», «path»: «docs/public/pages/tutorial-09.md», «line»: 146, «snippet»: » \u003cTable width=\»100%\» data=\»{[$props.details]} \ «\ u003e»}]»Примеры»: []»Howtos»: [ { «type»: «howtos», «path»: «docs/public/pages/howto/make-a-set-of-equal-width-cards.md», «line»: 0, «snippet»: «[filename match]»}, {» type «:» howtos «,» path «:» Docs/public/pages/howto/make-a-set-of-equal-width-cards.md «,» line «: 1,» Snippet «:»# Сделайте набор карт равной ширины «}],« Источник »: [ { «type»: «source», «path»: «xmlui/src/components/Accordion/Accordion.module.scss», «line»: 19, «snippet»: » width: 100%;» }, … { «type»: «source», «path»: «xmlui/src/components/App/App.module.scss», «line»: 165, «snippet»: » width: calc(100% + (2 * var(—scrollbar-width)));» }, }, «facets»: { «components»: { «files»: 12, «matches»: 36 }, «examples»: { «files»: 0, «matches»: 0 }, «howtos»: { «files»: 1, «matches»: 2 }, «source»: { «files»: 6, «matches»: 12 } }, «confidence»: «high», «agent_guidance»: { «rule_reminders»: [ «🚨 BEFORE RESPONDING: Ask yourself ‘Am I about to provide code without a documented working example?’ If yes, STOP and acknowledge the limitation instead», «🚨 PRIORITY ORDER: 1) Check for documented working examples 2) IF NONE FOUND: Explicitly state this and provide no code 3) ONLY THEN: Provide general documentation URLs (if any exist)», «🚨 MANDATORY ACKNOWLEDGMENT: When no documented examples are found, you MUST start your response with: ‘I am following the guidance by not providing code examples because no documented working examples were found.'», «🔍 SEARCH STRATEGY: Use xmlui_examples and xmlui_search_howto first, then fall back to xmlui_search», «📚 PREFER: Examples and howtos over general component documentation», «🔄 FALLBACK: If no examples/howtos found, then search general documentation», «🔗 MANDATORY: Always include documentation or example URLs in your response», «🔗 MANDATORY: Always include documentation URLs in your response — see documentation_urls», «📍 REQUIRED: Cite specific sources with clickable links from the search results», «✅ VERIFY: You must include at least one URL from documentation_urls in your response», «❌ Do not invent syntax — only use documented constructs», «📝 Always cite your sources when providing code examples», «🔗 Provide specific URLs to documentation sources (see documentation_urls)», «📍 Reference file paths and line numbers when available», «⚠️ Preview and discuss limitations before providing code» ]»Предлагаемое_аполнение»: «Обнаруженные ограниченные примеры. Документация компонента перекрестных ссылок с любыми доступными примерами. Всегда предоставляйте URL-адреса для источников документации.», «URL_BASE»: «Document_urls»: [ { «title»: «Layout», «url»: » «type»: «components» }, … { «title»: «Make A Set Of Equal Width Cards», «url»: » «type»: «howtos» }, … { «title»: «Accordion.module», «url»: » «type»: «source» }, ] }}
Ответы ранее были недифференцированными списками имен файлов и фрагментов. Теперь они описывают, как результаты попадают в ведра, которые предполагают, какой инструмент выбрать для последующих поисков. Кроме того, они стучат агентом руководством по прикреплению ответов на документацию, которую они могут цитировать.
Для охвата ремнями и ссуды я также добавил это в базовые подсказки пользователя для Claude и Cursor:
Соблюдайте руководство, которое вы получаете от сервера XMLUI-MCP.
Я не поверию любой ответ, на который вы не сможете привести URL -адрес документации или рабочий пример.
Если вы не найдете URL, скажите так.
Если вы найдете один, процитируйте это.
Признавая неудачу честно
Мы не должны только проверить счастливый путь. Вот запрос, который должен потерпеть неудачу: «Как я могу выравнивать ячейку в таблице?» Пока нет способа сделать это! Агенты, работающие с оригинальным XMLUI-MCP, дали все виды бессмысленных ответов. Вот как курсор ответил, используя новую версию.
Это больше похоже на это. Покажите мне, что ваше исследование нашло, но не притворяйтесь, что есть окончательный ответ, если нет. Когда вы не можете привести доказательства, скажите так.
Контекстная инженерия с тестируемой документацией
В последнем выпуске (а также в предыдущем посте) я предложил, чтобы документация теперь поддалась тестированию. Если есть правильный способ что -то сделать, разработчик XMLUI, работающий с агентом ИИ, должен найти это. Неспособность найти правильное решение должно указывать на отверстие в документации, которую мы можем подключить, добавив рабочий пример, который иллюстрирует рекомендуемый шаблон. Затем мы можем проверить, чтобы убедиться, что ранее провал поиска теперь успешен в том, как мы ожидаем.
Ничего о том, как мы пишем наши документы, привилегирует LLM. Мантра доступности «сокращение бордюров приносит пользу всем» здесь также применяется.
В настоящее время вы слышите: «Мы больше не пишем для людей, мы пишем для машин, чтобы они могли помочь людям». Я не вижу этого таким образом. Ничего о том, как мы пишем наши документы, привилегирует LLM. Мантра доступности «сокращение бордюров приносит пользу всем» здесь также применяется. Вдумчивое именование и тщательный отбор — это лучшие практики, которые приносят пользу всем читателям. Что привилегирует LLM, тем не менее, является сервером MCP, который предоставляет документацию доступной для агентов таким образом, чтобы они лучше всего подходили для обработки.
Это становится партнерством, в котором Docs, удобные для агента, помогают нам работать с агентами для создания большего и более благоприятных для агентов документов, в то время как сервер MCP с учетом документов помогает нам работать с агентами для производства программного обеспечения, информированным DOCS. Агенты могут даже помочь нам настроить полезность сервера MCP для агентов. Это было самой восхитительной частью этого упражнения: работа с агентами для итерации на сервере MCP, использование его, индивидуально на выбор инструмента и стратегию поиска, а также обратно в следующую итерацию сервера MCP.
Хотя автономные LLMS по своей природе ненадежны, существует длинная традиция программного обеспечения для создания надежных слоев поверх ненадежных слоев. Это тоже здесь относится. Мы не можем гарантировать, что вы никогда не будете сбиты с пути с пути при создании приложения XMLUI с помощью агентов, которые используют сервер XMLUI MCP для извлечения шаблонов из документов, источников, как то, и образцов. Но теперь гораздо более вероятно, что вы и ваша команда искусственного интеллекта останется на якоре с наземной правдой. На этом этапе я бы определил контекстную инженерию как все, что нужно, чтобы это произошло.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Джон Уделл — автор и разработчик программного обеспечения, который исследует программные инструменты и технологии и объясняет их в письменной форме, аудио и видео. Он является автором культового классического практического интернет -программного обеспечения. Прошлые концерты включают Lotus, Byte Magazine, Safari … Подробнее от Джона Уделла