Галоўная / Артыкулы

Практычныя нататкі: сучасны ISR-канвеер для кода ў вялікіх мадэлях

Практычны разбор тэмы «сучасны ISR-канвеер для мадальнасці кода ў вялікіх мадэлях»: кантракты, праверкі і гатовыя фрагменты кода для каманд, якія ўкараняюць гэты падыход.

Выдавец: REACTAPP.TOP20 хв чытання4578 слоў

Крыніцы: **Building a Modern ISR Pipeline for Code Modality in Large Scale Agent Harnesses**

Наступныя прыміткі паказваюць практычны шлях адпрацоўкі тэмы “Стварэнне сучасной сістэмы ISR для апрацоўкі коду ў велікіх масштабных агентах”. Акцэнс ставіцца на контракты, перакрычанняя і месця для падставкі коду, а не на мотывацыйныя аспекты. Калі працуеце на этапы агледжэння, спачатку запісайце контракт: неабяжныя вхідныя даны, сігнал успеху і тое, што відбываецца у разе частковай нявыполнення. Такі спіс перакрычанняя дапамагае залішыцца чыстым пад час пазнейшых змян у кодзе. Документавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контралі і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.

Проблема, яку ніхто насправды не рашыў

Проблема, якой ніхто насправды не зважае, працюе найкрашча, калі яе розглядаць як вімерную паверхню. Запісаўце адна «золатая» транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Валіце вароты малым, тэставаным елементам замест вялікіх скрыптав. Калі якісь крок не выходзіць, неудача павінна вказваць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Актуалізавайце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць ўпраўленні.

Фаза 1: Прыйом — стварэнне трох прымоў

Этап стварэння базы дадзеных па першай фазе работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Спрыяйце гэтаму этапу як кантракту межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за хоставанне должны ведаць, якія вызовы мутуюць стан дадзеных, перш чым автаматычна ўтвердзіць іх.

Шаг 1: Клонаванне і падготовка рэпазітарыя

Клонаванне на першым кроце і стадыя працююць наўзям найэфектывней, калі іх розглядаць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Запісвайце час выканання і вартасць токеноў або запытак па боку функцыйнальных рэзультатаў. Візуабельнасць вартасцей з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайшанняў у спяльныя сераўы. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі пабочных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць ўпраўленні.

git.Repo.clone_from(
    f"https://{token}@github.com/{owner}/{repo}",
    target_dir=f"~/.isr/repos/{owner}/{repo}",
    depth=None  # Full history — crucial for incremental updates
)

Клонаванне на першым кроце і стадыя працююць наўзям найэфектывней, калі іх розглядаць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавайце як успішны, так і вярнэнчы выкарыстоўвання працэсу. Перапробаванні, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

Крок 2: Перыяктуванне файлаў і выявленне мовы

Для этапы перыявлення файлаў у 2-му кроце неабходна пазначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае перадзеі крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Автэнтыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай аб’екта выкарыстоўвання.

3-й крок: Разбіўка AST на часткі — найцяжэйшая проблема

Для этапы AST Chunking у трэцьму кроку неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяць гэтай этапы як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, узначыць перакананні на успех і адмовіцца ад бяспечнага частковага завершэння. Автэнтыфікувацца ў шлюзе і паўторна автарызавацца на роўні дадзенняў. Толькі токэн-носіцель не ёст кантактная межа тэнанты.

assert "".join(chunk.raw_text for chunk in chunks) == file.content

Крок 4: Выяўленне сімвалаў — стварэнне графа вызоў

Для этапы выкарыстоўвання сімвалаў у 4-му кроцы неабходна перад зменой коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае перадзеўсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Автэнтыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзенняў. Толькі токен-носіцель не ёсць межай арэндаванага прыёмніка. Для этапы выкарыстоўвання сімвалаў у 4-му кроцы неабходна перад зменой коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае перадзеўсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

class_pattern = r'class\s+(\w+)'
func_pattern_python = r'def (\w+)\('
func_pattern_go = r'func.*\('

Шаг 5: Стварэнне заголовка — Дадзенне кантэксту мета-даных

Калі працуеце над стадзіяй стварэння заголовка па шагу 5, спачатку запісайце умовы кантракта: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы частковага нявыполнення. Такі спіс пераканальвае заставіць пазнейшыя змены коду быць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь шаг не выйшоў, прычына нявыполнення павінна вказываць на адну адповядальнасць, а не на заплутаны ланцужок задач. Зявіце лог з назвай інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.

# File: decode.go
# Class/Module: decoder
# Function: unmarshal(n *Node, out reflect.Value) (good bool)
# Description: Handles type dispatch for YAML → Go struct conversion

Шаг 6: Стварэнне кантэксту (неабяжлівае) — Адгэнераванне інформацыі з LLM

Калі працюеце над стадзіяй 6 «Стварэнне кантэксту», спачатку запісайце кантракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладзець пазнейшыя змены коду ў правільны направленні. Спрэцьвуйце да гэтай стадзіі як да кантракта межа данымі і перакананымі выходамі. Дайце назву рэзультатам, задаце крытэрыя успеху і не падзволяйце частковаму завершэнню без паведамлення. Зберагаце ў кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача ідэнтычных прамулкіў ёсць частым выкарыстоўваннем рэсурсаў.

INPUT: [large function body]
OUTPUT: "Handles type dispatch for YAML to Go struct conversion.
         Routes based on the target type reflection and handles nil values."
embedding_input = contextual_text + raw_text

Стадзія 7: Убудова коду — пераклад коду ў вектары

Калі працуеце над стадзіяй 7 «Умяшчэнне коду», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс дапамагае заліцварваць пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнаімі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя сераўы. Замерьце рэткісць аднаходжэння даўедзеных даных на фіксаванай сэтцы запытаў прычым рэгулюванні прамптав. Частае змена прамптав рэдка калі-небудзь выправляе слабую эфектыўнасць аднаходжэння інформацыі. Калі працуеце над стадзіяй 7 «Умяшчэнне коду», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс дапамагае заліцварваць пазнейшыя змены ў кодзе. Аддзекументавайце як «шчаслівы» так і «вярнучыся» маршруты. Перапрыбуткі, людзкія контрольныя пункты і обработка неканальных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.

Шаг 8: Сістэма з трыма хранальнікамі — сэрцо гібрыднага падходу

Этап Шаг 8, сэргаваецься з сістэмай з трыма хранальнікамі, працуе наяўна, калі яго розглядаць як мерыемую структуру. Зберагчыце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь шаг не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю людзі павінны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Хранальнік 1: Qdrant — вектары + повны тэкст

Этап Store 1 Qdrant Vector працюе наякрашча, калі яго розглядаць як вімерную паверхню. Зафіксавце адзін ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Разглядзіце этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыі успеху і не падзейцеся частым, непূরным выкананнем задачы. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкав. Адміністраторам неабходна інфармацыя пра тое, якія запыткі змінююць стан, перш чым яны автаматычна схваляюць іх.

{
  "chunk_id": "a1b2c3d4e5f6:1",
  "repo_name": "go-yaml/yaml",
  "rel_path": "decode.go",
  "language": "go",
  "raw_text": "func (d *decoder) unmarshal(...) { ... }",
  "contextual_text": "Handles type dispatch for YAML...",
  "header": "# File: decode.go\n# Function: unmarshal...",
  "start_line": 340,
  "end_line": 390
}
point_id = uuid.uuid5(NAMESPACE_DNS, chunk_id).int % (2**63)

Store 2: BM25 — Чыстая рангаванне за ключовымі словамі

Этап Store 2 BM25 Pure працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зберажыце адны ідэальны прыклад працы, адну справу з бягамі і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнальныя рэзултаты. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўы. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі пабочных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх. Этап Store 2 BM25 Pure працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зберажыце адны ідэальны прыклад працы, адну справу з бягамі і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Дакументавайце як успешны, так і вярнучыся паты. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

# Build the BM25 index with full text
corpus = [chunk.get_text_for_embedding() for chunk in all_chunks]
bm25.fit(corpus)
# Store only the chunk IDs in the doc store
doc_store = [chunk.chunk_id for chunk in all_chunks]# Save both
pickle.dump(bm25, "index.pkl")
pickle.dump(doc_store, "doc_store.pkl")

Store 3: KùzuDB — The Property Graph

Для этапы Store 3 K zuDB неабяцо пазначыць вхідныя даны, адпаведнага адпаведальнага за крок і крэтырыя выходу пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшае, прычына неудачы должна вказываць на адзіну адпаведальнасць, а не на заплутаны працэс. Автэнтыфікуйцеся на входзе і парадэкстрыруйце правыя на роўні дадзенняў. Толькі токэн-носіцель не ёсцца межай арэндаванага рэсурсу.

CREATE NODE TABLE Symbol (
  fqn STRING PRIMARY KEY,
  file STRING,
  language STRING,
  kind STRING
)
CREATE REL TABLE Calls (FROM Symbol TO Symbol, confidence FLOAT)
CREATE REL TABLE Imports (FROM Symbol TO Symbol, confidence FLOAT)
CREATE REL TABLE Inherits (FROM Symbol TO Symbol, confidence FLOAT)
MATCH (seed:Symbol WHERE seed.fqn IN [list_of_fqns])
      -[*1..hops]->(reachable:Symbol)
RETURN DISTINCT reachable.fqn

Store 4: Hash Tracker — Адкрыванне можлівасця пашаговага прыему дадзенняў

Для этапы Store 4 Hash Tracker неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяць гэтай этапы як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, узначыць перакананні на успех і адмовіцца ад тыхоўскага частковага завершэння. Автэнтыфікувацца ў шлюзе і паўторна автарызавацца на роўні дадзенняў. Толькі токэн-носіцель не ёсцца межай арэнды.

CREATE TABLE chunks (
  chunk_id TEXT PRIMARY KEY,
  repo_name TEXT,
  rel_path TEXT,
  content_sha256 TEXT,
  ingested_at TIMESTAMP
);
CREATE TABLE repos (
  repo_name TEXT PRIMARY KEY,
  last_sha TEXT,
  last_ingested TIMESTAMP
);

Крок 9: Оркестрацыя — Аб’еднанне усяго

Для этапы оркестрацыі Крока 9 «Прыведчы» неабходна яшчэ до змены коду адзначыць вхідныя даны, адпаведальнага за крок і крэтарыя выходу. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і вартасць токена або запытку разам з функцыйнальнымі рэзултатамі. Відразы вартасці з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Автэнтыфікацыя выканаўцца ў шлюзе, а прабачэнне праваў — у плане дадзеных. Толькі токен-носіцель не ёсць межай арэны выкарыстоўвання. Для этапы оркестрацыі Крока 9 «Прыведчы» неабходна яшчэ до змены коду адзначыць вхідныя даны, адпаведальнага за крок і крэтарыя выходу. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Адзначыць як шлях успеху, так і шлях вярнення ў нормальны стан. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не дадатковым элементам пасля яго стварэння.

Фаза 2: Пошук — Тры ўсілявыя сігналы, адна рангаваная спіс

Калі працуеце над трэцім этапам пошуку Фазы 2, спачатку запісайце умовы контракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына невыпання павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.

Маршрутазатор запытаў — Класіфікацыя без затрат

Калі працюеце над стадзіяй «The Query Router Zero-Cost», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у случае частковага нявыпання. Такі спіс перакладзець пазнейшыя змены коду на адказнае. Спрэцьвуйце з гэтай стадзіяй як з контрактом межа данымі і перакананымі выходамі. Дайце назву артыфактам, задаце правіла пераканання успеху і не прымайце часткова завершэння без паведамлення. Зявляйце логі з назвай кантролю, хэшам аргументаў, часу затрымкі і рэзультатаце кожнага вызову. Без такога следу дэбаггінг агента губіць гады на бесканечныя цыклы.

"how does ...", "explain how ...", "walk me through ...",
"trace ...", "step by step", "what happens when ..."
"what calls ...", "who calls ...", "callers of ...",
"what imports ...", "subclasses of ...", "where is X used ..."
camelCase like "parseTimestamp" or "NewDecoder"
snake_case like "parse_yaml"
quoted strings like "permission denied"
function calls like "handleErr()"

The EXACT_FIRST Short-Circuit — Grep

Калі працуеце з этапам The EXACTFIRST Short-Circuit Grep, спачатку запісайце умовы вікорыстоўвання: неабходныя даныя, сігнал успеху і тое, што выходзіць на падзею частковага невыпання. Такі спіс дапамагае залічваць пазнейшыя змены ў кодзе чыста і прозрачна. Запісвайце час выканання і вартасьць токеноў або запытанняя пры кожным функцыйнальным выніку. Відразлівае паказанне вартасцей запобегае неспадзянанным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльныя сераўеры. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзультат кожнага вызову. Без такога журналу дэбаггін агента займае гадзіны. Калі працуеце з этапам The EXACTFIRST Short-Circuit Grep, спачатку запісайце умовы вікорыстоўвання: неабходныя даныя, сігнал успеху і тое, што выходзіць на падзею частковага невыпання. Такі спіс дапамагае залічваць пазнейшыя змены ў кодзе чыста і прозрачна. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

rg --json --max-filesize 1M --context 5 --smart-case -- <query> <search_root>

Семантычныя пошукі — Вектарная сэмплярнасць

Этап семантычных пошукоў, базаваны на вектарной сэмплярнасці, працюе найкрашча, калі яго розглядаць як вімерную велічыну. Перш чым расшырваць масштаб, неабходна зафіксаваць адны ідэальны прыклад, адзін прыклад неудачы і прыметкі па поверненню да попярэдня стану. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Іспользуйце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за аператывуцію павінны ведаць, якія вызовы мутуюць стан сістэмы, прытаму якія можна будзе аўтоматычна затвердзіць.

Пошук за ключовымі словамі — Спаўненне лексычных крэатываў BM25

Этап лексычнага пошуку ключоўых слоў BM25 працюе наякшэй, калі яго розглядаць як вімерную структуру. Зафіксавайце адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Разглядзайце этап як кантракт межаў вхідных дадзеных і паверыцьных выходных рэзультатаў. Паказвайце назвы артыфактаў, задаюце крытэрыя успеху і не падтрымайце беззвучнае частковае завершэння задання. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за аператывуцію должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна ўзяць іх на спрыт.

Пашырэнне графа — структурныя зв’язкі

Этап структурных адаптацый The Graph Expansion працюе найкрашча, калі яго розглядаць як вімерную паверхню. Перш чым расшырваць масштаб, зафіксавайце адны ідэальны прыклад працы, адну справу з бягамі і прыметку па вярнэнню да пачатковага стану. Запісвайце часы выканання і косты токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Візуабельнае паказанне костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўры. Адкройце інструменты з вузкімі схемамі і чыткімі пазначэннямі па боковых эфектах. Адпаведальныя за хоставанне должны ведаць, якія вызовы мутуюць стан сістэмы, перш чым автаматычна ўзьмяць рашэнне. Этап структурных адаптацый The Graph Expansion працюе найкрашча, калі яго розглядаць як вімерную паверхню. Перш чым расшырваць масштаб, зафіксавайце адны ідэальны прыклад працы, адну справу з бягамі і прыметку па вярнэнню да пачатковага стану. Дакументавайце як успішны, так і вярнучыся шляхы працы. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных запытаў ёсць часткай продукту, а не пасляднім дапрацоўкам.

MATCH (seed:Symbol WHERE seed.fqn IN [{seed_fqns}])
      -[*1..1]->(reachable:Symbol)
RETURN DISTINCT reachable.fqn
def _fqn_lookup_term(fqn: str) -> str:
    parts = fqn.split(".")
    # Use last two segments for specificity
    term = ".".join(parts[-2:])  # "PieceTree.applyDelta", not just "applyDelta"
    return term

RRF Fusion — Спаўліванне сігналаў

Для этапы спаўлівання сігналаў у RRF Fusion неабходна пазначыць вхідныя даны, адпаведальнага за этап і крэтыяры завершэння пры перадзмене коду. Аператары должны магчыма было перзапускаць этап з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі этап не выканаецца, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Автэнтыфікуйцеся на входзе і паўторна автарызавайцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай адпаведальнасцяў.

score(doc) = Σᵢ  1 / (k + rankᵢ(doc))
1/(60+1) + 1/(60+3) = 0.01639 + 0.01587 = 0.03226
1/(60+1) = 0.01639

Пераранжаванне — Оцэнка за дапамою глыбокага крос-кодэра

Для стадыі атрыбуцыі балоў за дапамой Reranking Deep Cross-Encoder неабходна перад змянай коду вызначыць вхідныя даны, адпаведальнага за этап і крэтыры завершэння. Аператары должны магчымае запускіць этап з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце цій этапы як даговору межы вхідных і перакананых выходных дадзенняў. Дайце назвы артыфактам, вызначыце крэтыры успеху і адмовіцеся ад тыхнай частковай рэалізацыі без паведамлення. Автэнтыфікуйцеся на входзе і паўторна автарызавайцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай арэнды.

client.rerank(query, documents, model="rerank-english-v3.0", top_n=20)

Цікл агента — ORA (Абсалюванне → Разумаванне → Дзеянне)

Для этапы The Agentic Loop ORA неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры змяне коду. Аперацыйныя працавнікі должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і вартасць токена або запыту паляглі разам з функцыйнальнымі рэзультатамі. Відразліва візуабельнасць вартасцей запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Автэнтыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзенняў. Сам токен-носіцель не ёсць межай арэндаванага рэсурсу. Для этапы The Agentic Loop ORA неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры змяне коду. Аперацыйныя працавнікі должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

INPUT: "How does YAML error handling work?"
OUTPUT: "yaml error handling failf TypeError panic propagate"

SearchPipeline — Аранжавальнік

Калі працуеце з этапам SearchPipeline The Orchestrator, спачатку запісайце умовы вікорыстоўвання: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контролю дапамагае залічыць змяны ў кодзе пасля таго. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выканаецца, прычына нявыполнення павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш параметраў, час адпаведзі і рынак кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.

Фаза 3: Атрыманне — Складанне кантэксту і сынтэза адпаведзі

Калі працюеце над стадзіяй Phase 3 Retrieval Context, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладзець пазнейшыя змены коду ў правільны направленні. Спрэцьвуйце гэтую стадзію як контракт межа данымі і перакананымі выходамі. Дайце назву артыфактам, задаце крытэрыя успеху і не падзеўляйцеся частковым завершэнням без паведамлення. Змяроўваце рэкалі на фіксаванай сэтке запытаў прычым падбір прамптав. Частае змена прамптав рэдка калі вярнуе слабую эфектыўнасць адзысквання інформацыі.

ContextAssembler — Стварэнне вікна кантэксту

Калі працуеце над стадзіяй «Стварэнне кантэкста» у ContextAssembler, спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцварыць пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразлівасць коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзултат кожнага вызову. Без такога лёгкага следу дэбагаванне агента займае гадзіны. Калі працуеце над стадзіяй «Стварэнне кантэкста» у ContextAssembler, спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцварыць пазнейшыя змены ў кодзе. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

<context id="1" file="decode.go" lines="340-390"
         repo="go-yaml/yaml" source="qdrant" expansion="function">
func newDecoder() *decoder {
    ...
}
</context>

AnswerSynthesizer — Адзенераванне LLM з цітатамі

Адзенераванне AnswerSynthesizer LLM з разнымі стадыямі працюе найкрашча, калі яго спрыяваць як мерыемую структуру. Запісаўце адна ідэальная версія рэзультата, адзін прыклад неудачы і прыметкі па поверненню да пярвоначальнага стану пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якаясь стадзія не выйшла, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Аккуратна распадзіліце токены на кожны раунд і кожную сесію. Інструменты з агентным падходам агрэсіўна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.

You are a code intelligence assistant. Answer questions about source code precisely.
Rules:
- Answer ONLY from the provided code context — never hallucinate code or APIs
- Cite every file you reference using [path/to/file.go:start-end] format
- Show working code examples from the context, not just descriptions
- If context is insufficient, say exactly: "Insufficient context: [what is missing]"
\[([^:\]\s][^:\]]*):(\d+)(?:-(\d+))?\]

RetrievalPipeline — Апошній оркестрактар

Этап Final Orchestrator у прынцыпе RetrievalPipeline даўа najlepsыя рэзультаты, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адны ідэальны прымер працы, адзін кейс неудачы і прыметкі па адвярнуць работу, перш чым расшырваць сферу дзеяння. Спрыявайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, неконтрольаваным завершэнням задачы. Раздзеліце правілы часткавага абрабатвання даных і правілы ўзяць іх. Змена адных не павінна вымагаць перапісву іншых, калі зменяюцыся паказнікі якосці.

retrieval = RetrievalPipeline(
    search_pipeline=SearchPipeline(...),
    context_assembler=ContextAssembler(search_pipeline.qdrant),
    answer_synthesizer=AnswerSynthesizer(...),
)

API і CLI

API і CLI ўраджакі працуюць наякшым чынам, калі іх спрыяваць як меравальную плошчу. Зберыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра абратыванне працы, перш чым расшырваць сферу ўжытку. Запісвайце час выканання і вартасьць токена або запыту разам з функцыйнальнымі рэзултатамі. Відразы вартасцей з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Адкройце інструменты з вузкімі схемамі і чыткімі пазначэннямі пабочных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.

HTTP API

Этап HTTP API працюе найкрашча, калі яго розглядаць як параметрызаваную плошчу для аналізу. Зберагучы адны ідэальны прыклад працы, адны прыклад неудачы і запіс працэў па адвярненню, перш чым расшырваць сферу яго прыменення. Канфігурацыю трэба залічваць паза кодам прыемліка. Файлы сяродавішняе сераўісу, хранілішчы секрэтных дадзеных і пазнакі функцый должны знаходзіцца ў адном месцы, куды аператары можаць адбавляць контроль, не чытаючы весь структураны код. Неабходна выклікаць інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан дадзеных, перш чым яны автаматычна схваляюць іх.

{
  "query": "parseTimestamp",
  "repo_name": "go-yaml/yaml",
  "top_k": 10,
  "use_graph": false,
  "use_rerank": true
}
{
  "question": "how does yaml error handling work?",
  "repo_name": "go-yaml/yaml",
  "mode": "answer",
  "max_context_chunks": 10
}

CLI

Этап CLI працюе найкрашча, калі яго розглядаць як меркавыя парадакты. Запісайце адны ідэальны прыклад працы, адну сітуацыю неудачы і прыметкі па поверненні да пачатковага стану пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контраліны і обработка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага доўрабкі. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы меняюць стан, перш чым яны автаматычна схваляюць ўпрацоўкі.

# Ingest a repository
isr ingest go-yaml/yaml --with-context
# Search
isr search "what calls Unmarshal" --repo go-yaml/yaml# Retrieve with answer
isr retrieve "how does YAML error handling work?" \
  --repo go-yaml/yaml --mode answer --verbose# Start the server
isr server

Канфігурацыя і налашоўкі

Этап налагоджання і каналізацыі працюе найэфектывней, калі яго розглядаць як мерыемую структуру. Зберагачыце адны ідэальны прыклад працы, адну справу з бягамі і прыметкі па поверненню да пачатковага стану пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына бягу должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Адкрывайце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна ведаць, якія вызовы меняюць стан, перш чым яны автаматычна схваляюць ўпраўленні.

Ацэнка і тэставанне

Этап ацэнкі і тэставання працюе наяўней, калі яго спрыяваць як мерыемую плошчу. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Спрыяйце гэтам этапу як кантракту межа вхіднымі данымі і падтвердзенымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Вывык: Чаму гэта важна

Этап «Вывыкі і прычыны значэння» работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Адкройце інструменты з вузкімі схемамі і чыткімі пазначэннямі парадуктываў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх. Этап «Вывыкі і прычыны значэння» работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавайце як успішны, так і вярнучыся шляхы працы. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

Чэк-ліст для эксплуатацыі

У стадыі перагляду канцэлекту для аператыўнай працы неабходна праказаць вхідныя даны, адпаведальнага за крок і крэтарыя завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан.

Конфігурацыю трэба зберагчы паза кодам прыкладнення. Файлы сераўіса, хранальнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытачы весь ланцуг задаń.

Аўтэнтыфікацыя павінна выконвацца на воратах, а пераправенне прав на доступ — у роўні дадзенаў. Сам токен-носіцель не ёсць межай адпаведнага тэнантства.

Ствараць точку контролю пасля дорогіх крокаў. Сістэма вярнення працы не должна занова ставіць плату за той самы вызов LLM, калі аператар перапрыяўляе працу да пазнейшай вузловой стадыі.

Фіксаваць версіі залежнасцяў і запісваць хэш адобраза, які выканаў дэманстрацыю. Возможнасць перадарабаткі працэсу важлівей, чым традыцыйныя знання.

Спрытваце гэты ўраг як кантракт межа вхіднымі дадзеннямі і пасвярджанымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыя успеху і не падтрымвайце безсловесна часткова завершэння.

Перад павышэнням рангу стака заморозьце версіі, зафіксуйце «золаты» транскрыпты для крытычнага маршруту і паказвайце крокі для атрыбуцыі. У спадзяльных сэрвісах неабходны ліміты частоты запытоў, перакананні ў прыналежнасці і чыстае адначасовае кераванне секрэтнымі дадзеннямі. Валіце надзейнасць працы над крэатывнымі дэманстрацыйнымі прыкладамі.

Запіс для пакета 2f4a57bf7527: не кладзіце ключы прадаўцоў у рэпазітарый, задаце максымальную кантэнцію токена на сесію і храніце транскрыпты празаўсёды разам з фіксатрамі для ацэнкі, каб пазнейшыя замены мадэляў заставаліся пораўнанымі.