Галоўная / Артыкулы / Практычныя прыказкі: стварэнне сучаснага каналу ISR для роботы з кодам у великіх проектах.

Практычныя прыказкі: стварэнне сучаснага каналу ISR для роботы з кодам у великіх проектах.

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

4540 слоў

Наступныя прыміткі паказваюць практычны шлях адпрацоўкі тэмы “Стварэнне сучасной системы 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: не кладзіце ключы прадаўцоў у репазітарый, задаце максымальную кантэнцію токена на сесію і храніце транскрыпты празаўсёды разам з фіксатрамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.