Главная / Статьи / Practical notes: Context Graphs для ИИ-агентов: как дать ИИ память опытного специалиста

Practical notes: Context Graphs для ИИ-агентов: как дать ИИ память опытного специалиста

Пошаговое руководство по Practical notes: Context Graphs для ИИ-агентов: как дать ИИ память опытного специалиста, включая контракты, проверки и готовые блоки кода для команд, использующих эту модель.

7970 слов

Почему следующему поколению ИИ-агентов нужно нечто большее, чем векторный поиск, эмбеддинги и более большие окна контекста

Укажите те фрагменты, которые действительно легли в основу ответа. Без цитат операторы не смогут отличить галлюцинации от пробелов в индексации.

Что такое граф контекста?

EmployeeController.java exists.
ReimbursementService.java exists.
SecurityConfig.java exists.
ADR-17.md exists.
EmployeeController
      |
      | follows_pattern
      v
EmployeeApiConvention
      |
      | requires
      v
TenantValidation
ReimbursementEndpoint
      |
      | handled_by
      v
ReimbursementOrchestrator
      |
      | writes_to
      v
ReimbursementRepository
      |
      | persists
      v
HrReimbursement
ReimbursementEndpoint
      |
      | governed_by
      v
ADR-17
ADR-17
      |
      | created_because_of
      v
ProductionIncident-928

Граф — это по сути точки и линии

На этапе A Graph Is Basically необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо одновременно задокументировать успешный и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не этапом последующей доработки. Вносить изменения, связанные с тратой денег или изменением производственных данных, можно только после одобрения человека. Настройка на этапе компиляции не гарантирует полноты функционала продукта. На этапе A Graph Is Basically необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задач.

Node ---- Relationship ---- Node
Vaibhav ---- works_at ---- PeopleStrong
Controller ---- calls ---- Service
Service ---- calls ---- Repository
Repository ---- writes_to ---- DatabaseTable
Endpoint ---- protected_by ---- Permission
Feature ---- explained_by ---- ADR
ADR ---- resulted_from ---- Incident
Test ---- validates ---- Endpoint

Граф знаний против графа контекста

При работе над этапом сравнения графа знаний и графа контекста сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отслеживание затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, если оператор попытается выполнить следующий шаг.

Employee
    WORKS_FOR
Organization
Order
    BELONGS_TO
Customer
PaymentService
    USES
PaymentRepository
PaymentService
    USES
PaymentRepository
PaymentService
    GOVERNED_BY
ADR-12ADR-12
    CREATED_AFTER
Incident-492PaymentService
    REQUIRES
FinancePermissionPaymentRepository
    WRITES_TO
PaymentTransactionPaymentTransaction
    MUST_BE_SCOPED_BY
OrganizationIDPaymentTransaction
    MUST_BE_SCOPED_BY
TenantID

Самая важная часть: графы контекста хранят причины

При работе над этапом «Самая важная часть» сначала запишите условия контракта: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить более поздний узел.

Discount = 25%
Approved = true
ApprovedBy = 182
Customer-482
    RECEIVED
25% Discount
25% Discount
    APPROVED_BY
SalesDirector25% Discount
    EXCEPTION_TO
StandardDiscountPolicyException
    BECAUSE
CustomerMigrationRiskCustomerMigrationRisk
    DOCUMENTED_IN
Opportunity-928Decision
    PRODUCED
SuccessfulRenewal

Основные компоненты графа контекста

При работе над основными компонентами этапа сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Документируйте как успешный, так и восстановительный пути выполнения. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Выполняйте контрольные точки после дорогостоящих операций. Механизм возобновления выполнения не должен повторно взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий элемент. При работе над основными компонентами этапа сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия результатам работы, определите критерии успеха и не допускайте безусловного частичного завершения задачи.

1. Энтитеты — те объекты, которые существуют

Этап «1 Энтитеты, 1 Вещь» работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на раннем этапе предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной. Вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и нарушают возможность продолжения работы после прерываний.

Repository
Module
Package
Class
Method
API Endpoint
Database Table
Database Column
Configuration
Skill
Rule
Architecture Decision
Pull Request
Commit
Issue
Incident
Test
Developer
Team
Node: ReimbursementController
Type: JavaClass
Path: services/hr/.../ReimbursementController.java
Node: POST /reimbursements
Type: Endpoint
Node: HrReimbursement
Type: DatabaseTable

2. Взаимосвязи — как связаны элементы

Два вида связей: система «Things stage» работает наилучшим образом, когда рассматривается как измеримая структура. Соберите один идеальный пример работы, один пример сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая всю структуру. Сохраняйте состояние графа простым и типизированным. Вложенные структуры данных скрывают информацию о том, какой узел заполнил тот или иной поле, и приводят к нарушению возобновления работы после перерывов.

ReimbursementController
    EXPOSES
POST /reimbursements
POST /reimbursements
    CALLS
ReimbursementService
ReimbursementService
    USES
ReimbursementRepository
ReimbursementRepository
    WRITES_TO
HrReimbursement
POST /reimbursements
    REQUIRES_PERMISSION
CREATE_REIMBURSEMENT
ReimbursementService
    FOLLOWS_PATTERN
OrchestratorPattern

3. Свойства — детали о узлах и связях

Три характеристики этого этапа наилучшим образом проявляют себя, когда их рассматривают как измеримую поверхность. Зафиксируйте один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию до расширения объема работ. Документируйте как успешный, так и восстановительный пути выполнения. Повторные попытки, проверки со стороны человека и обработка неработоспособных сообщений являются частью продукта, а не последующими доработками. Сохраняйте структуру графа простой и типизированной. Вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и могут нарушить возобновление работы после прерываний. Три характеристики этого этапа наилучшим образом проявляют себя, когда их рассматривают как измеримую поверхность. Зафиксируйте один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию до расширения объема работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успеха и не допускайте безответственного частичного завершения работы.

JavaClass:
    name = ReimbursementController
    language = Java
    framework = Spring Boot
    module = hr-service
Endpoint:
    method = POST
    path = /api/v1/reimbursements
    authenticationRequired = true
Service
    CALLS
Repository
since = 2026-04-18
confidence = 1.0
source = static-analysis

4. Время

На этапе 4 Time необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Необходимо ввести человеческое утверждение для операций, связанных с тратой денег или изменением производственных данных. Подключение на этапе компиляции не гарантирует полноты решения с точки зрения бизнес-процессов.

Controller
    USES
FieldInjection
FieldInjectionPattern
    validUntil = 2025-01-15
ConstructorInjectionPattern
    validFrom = 2025-01-16

5. Происхождение — откуда взялась эта информация?

Для этапа «5 Provenance Where Did» необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Вводите утверждение человека для ребер, связанных с тратой денег или изменением производственных данных. Подключение на этапе компиляции не гарантирует полноты бизнес-логики.

Rule:
All employee APIs must validate TenantID.
Rule
    EXTRACTED_FROM
ADR-0027.md
Rule
    OBSERVED_IN
14 Production Endpoints
Rule
    INTRODUCED_BY
PR-8421

6. Краткосрочная память

Для этапа 6 «Кратковременная память» необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не этапом последующей доработки. Внедрять утверждение человеком для операций, связанных с тратой денег или изменением производственных данных. Настройка на этапе компиляции не гарантирует полноты функционала продукта. Для этапа 6 «Кратковременная память» необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте безответственного частичного завершения работы.

CurrentTask
    TARGETS
AdminAPI
CurrentTask
    EXCLUDES
EmployeeApp

7. Долгосрочная память

При работе над этапом 7 «Долгосрочная память» сначала запишите условия работы: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов LLM при повторной обработке последующего узла оператором.

Repository
    USES
Java17
Repository
    USES
SpringBoot3EndpointCreation
    REQUIRES
ControllerTestEndpointCreation
    REQUIRES
ServiceTest

8. Память решений или логических выводов

При работе над 8 этапами принятия решений или логического анализа сначала запишите условия контракта: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой чек-лист помогает сохранять честность последующих изменений в коде. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Храните в кэше стабильные инструкции системы и схемы инструментов. Пересылка одинаковых заголовков — распространенная причина избыточных затрат ресурсов.

Approach A:
Controller -> Repository
Business logic must pass through the service/orchestrator layer.
Approach-A
    REJECTED_BECAUSE
ArchitectureRule-42

Как на самом деле работает граф контекста?

При работе над этапом «So How Does the» сначала запишите условия работы: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Документируйте как успешный, так и восстановительный пути выполнения. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Выполняйте контрольные точки после дорогостоящих операций. Механизм возобновления работы не должен повторно взимать плату за один и тот же вызов большой языковой модели, если оператор пытается выполнить следующий узел заново. При работе над этапом «So How Does the» сначала запишите условия работы: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия результатам работы, определите критерии успеха и не допускайте безусловного частичного завершения задачи.

Task:
Create Endpoint
Domain:
ReimbursementOperation:
ApproveActor:
Admin

Шаг 1 — Нахождение начальных узлов

Шаг 1 «Найти этап» работает наилучшим образом, если рассматривать его как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на раннем этапе предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной; вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и могут нарушить возобновление работы после прерываний.

Reimbursement
Approve
Endpoint
Admin
ReimbursementController
ReimbursementService
HrReimbursement
ReimbursementStatus
APPROVE_REIMBURSEMENT permission
ReimbursementWorkflow

Шаг 2 — Расширить их взаимосвязи

Этап 2 «Расширение» работает наилучшим образом, когда его рассматривают как измеримую структуру. Перед расширением объёма сбора данных необходимо зафиксировать один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая всю структуру данных. Сохраняйте состояние структуры в простом и типизированном виде. Вложенные структуры данных маскируют информацию о том, какой узел заполнил тот или иной поле, и приводят к нарушению возобновления работы после перерывов.

ReimbursementController
   |
   +--- FOLLOWS_PATTERN ---> ExpenseController
   |
   +--- CALLS -------------> ReimbursementService
   |
   +--- PROTECTED_BY ------> FinancePermission
ReimbursementService
   |
   +--- USES --------------> ReimbursementOrchestrator
ReimbursementOrchestrator
   |
   +--- WRITES_TO ---------> HrReimbursement
   |
   +--- GOVERNED_BY -------> ADR-24
ADR-24
   |
   +--- CREATED_AFTER -----> Incident-842

Этап 3 — Фильтрация структуры

Этап фильтрации шага 3 работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Документируйте одновременно успешный и восстановительный пути выполнения. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не последующими доработками. Сохраняйте структуру графа простой и типизированной. Вложенные структуры скрывают информацию о том, какой узел заполнил какое поле, и мешают возобновлению работы после прерываний. Этап фильтрации шага 3 работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задач.

current branch
current module
task
user permission
repository version
organization
time
confidence

Шаг 4 — Создание контекста агента

На этапе 4 «Создание сцены» необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Необходимо ввести человеческое утверждение для операций, связанных с тратой денег или изменением производственных данных. Подключение компонентов во время компиляции не гарантирует полноты реализации бизнес-логики.

TASK
Create reimbursement approval endpoint.
RELEVANT PATTERN
ExpenseApprovalController.REQUIRED ARCHITECTURE
Controller -> Service -> Orchestrator -> Repository.SECURITY
Permission APPROVE_REIMBURSEMENT required.TENANCY
Queries must include OrganizationID and TenantID.DATABASE
HrReimbursement.IMPORTANT DECISION
ADR-24 prohibits direct status updates.TEST PATTERN
ExpenseApprovalControllerTest.

Шаг 5 — Агент выполняет работу

На этапе 5 «Агент выполняет действия» необходимо определить входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Внедряйте утверждение человека для операций, связанных с тратой денег или изменением производственных данных. Подключение на этапе компиляции не гарантирует полноты бизнес-логики.

Controller
Request DTO
Response DTO
Service
Orchestrator
Repository query
Authorization
Tenant filtering
Tests

Шаг 6 — Хранение информации о произошедшем

На этапе «Хранение данных» шага 6 необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Внедрять утверждение человеком для операций, связанных с тратой денег или изменением производственных данных. Настройка на этапе компиляции не заменяет полноты бизнес-логики. На этапе «Хранение данных» шага 6 необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте безответственного частичного завершения задач.

PR-9928
    IMPLEMENTED
ReimbursementApprovalEndpoint
ReimbursementApprovalEndpoint
    FOLLOWS
OrchestratorPattern
PR-9928
    VALIDATED_BY
ArchitectureTests

База данных векторов против графа контекста

При работе над вопросом «База данных векторов против графа контекста» сначала запишите условия использования: необходимые входные данные, сигнал о успешном выполнении и что происходит при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения операций, а также стоимость токенов или запросов. Отслеживание затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, если оператор попытается выполнить последующий шаг.

EmployeeController.java
EmployeeService.java
EmployeeRepository.java
SecurityConfig.java
ADR-17.md
Incident-928.md
EmployeeControllerTest.java
add-end-point/SKILL.md

Что делает поиск векторов

При работе над этапом «Что такое поиск векторов» сначала запишите спецификацию: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий шаг.

EmployeeController.java        similarity 0.94
CandidateController.java       similarity 0.89
EndpointGuide.md               similarity 0.87
EmployeeService.java           similarity 0.82
ADR-17.md

Что делает граф контекста

При работе над этапом «Что такое граф контекста» сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Создавайте контрольные точки после дорогостоящих операций. Механизм возобновления работы не должен повторно взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий этап. При работе над этапом «Что такое граф контекста» сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как договор между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успешности и не допускайте безусловного частичного завершения работы.

EmployeeEndpoint
EmployeeEndpoint
    MUST_FOLLOW
EmployeeApiPattern
EmployeeApiPattern
    REQUIRES
TenantIsolation
TenantIsolation
    DEFINED_BY
ADR-17
ADR-17
    INTRODUCED_AFTER
SecurityIncident-28

Вопросы, связанные с векторным поиском:

Этап «Вопросы, связанные с векторным поиском», работает наилучшим образом, если рассматривать его как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной. Вложенные структуры данных маскируют информацию о том, какой узел заполнил тот или иной поле, и приводят к нарушению последовательности действий после перерывов.

Вопросы, связанные с графом контекста:

Граф контекста Asks stage работает наилучшим образом, когда его рассматривают как измеримую структуру. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объёма работы. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Сохраняйте состояние графа простым и типизированным. Вложенные структуры данных маскируют информацию о том, какой узел заполнил тот или иной поле, и мешают возобновлению работы после прерываний.

Но не выбрасывайте свою базу данных векторов

Этап «Но не бросайте исключение» работает наилучшим образом, когда его рассматривают как измеримую среду. Сохраните один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Документируйте одновременно успешный и восстановительный пути выполнения. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не последующими доработками. Сохраняйте структуру графа простой и типизированной. Вложенные структуры скрывают информацию о том, какой узел заполнил какое поле, и мешают возобновлению работы после прерываний. Этап «Но не бросайте исключение» работает наилучшим образом, когда его рассматривают как измеримую среду. Сохраните один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успеха и не допускайте безответственного частичного завершения работы.

Vector Search
      +
Graph Traversal
      +
Metadata Filters
      +
Keyword Search
      +
Agent Reasoning

Простая модель мышления

На этапе «Простая умственная модель» необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. При следующем шаге, представляющем собой код или вызов инструмента, следует отдавать предпочтение структурированным выводам с проверкой схемы перед произвольными текстовыми описаниями.

Графы контекста внутри репозитория Git

Для графов контекста внутри этапа необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища конфиденциальных данных и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Для ребер, связанных с тратами денег или изменением производственных данных, необходимо предусмотреть утверждение человеком. Подключения, созданные во время компиляции, не гарантируют полноты описания бизнес-логики.

employee-platform/
│
├── services/
│   ├── employee-service/
│   ├── payroll-service/
│   └── recruitment-service/
│
├── docs/
│   └── adr/
│
├── database/
│   └── migrations/
│
├── .agents/
│   ├── AGENTS.md
│   │
│   ├── skills/
│   │   └── add-end-point/
│   │       ├── SKILL.md
│   │       ├── templates/
│   │       └── references/
│   │
│   └── context/
│       ├── repository.yml
│       ├── architecture.yml
│       └── rules.yml
add-end-point

Проектирование графа контекста хранилища

На этапе проектирования контекста хранилища необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не этапом последующей доработки. Внедрять утверждение человеком для операций, связанных с тратой денег или изменением производственных данных. Настройка на этапе компиляции не гарантирует полноты функционала продукта. На этапе проектирования контекста хранилища необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задач.

Repository
Module
Service
Class
Method
Endpoint
DatabaseTable
DatabaseColumn
Skill
ArchitecturePattern
Rule
Permission
ADR
Issue
PullRequest
Commit
Test
Repository CONTAINS Module
Module CONTAINS ClassController EXPOSES EndpointEndpoint CALLS ServiceService USES RepositoryRepository READS_FROM TableRepository WRITES_TO TableEndpoint REQUIRES PermissionClass TESTED_BY TestClass FOLLOWS PatternPattern DEFINED_IN ADRRule GOVERNED_BY ADRCommit CHANGES ClassPullRequest CONTAINS CommitIssue RESOLVED_BY PullRequestSkill APPLIES_TO EndpointSkill REQUIRES Rule

Небольшая примерная графика

При работе над этапом «Небольшая примерная графика» сначала запишите условия использования: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, если оператор попытается выполнить последующий узел заново.

EmployeeController
       |
       | CALLS
       v
EmployeeService
       |
       | DELEGATES_TO
       v
EmployeeHandler
       |
       | USES
       v
EmployeeRepository
       |
       | WRITES_TO
       v
HrEmployee
EmployeeController
       |
       | REQUIRES
       v
EmployeePermission
EmployeeRepository
       |
       | FILTERS_BY
       +----> TenantID
       |
       +----> OrganizationID
EmployeeController
       |
       | TESTED_BY
       v
EmployeeControllerTest
add-end-point
       |
       | USES_PATTERN
       v
EmployeeEndpointPattern

Как мы создаем эту графику?

При работе над этапом «Как мы строим» сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий шаг.

Java source
imports
method calls
Spring annotations
package structure
repository interfaces
SQL queries
DDL
configuration
test classes
Git history
ADR documents
AGENTS.md
SKILL.md

Этап 1 — Статический анализ кода

При работе над этапом статического кода первой фазы сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не этапом доработки позже. Выполняйте контрольные точки после дорогостоящих операций. Система возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить последующий этап. При работе над этапом статического кода первой фазы сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как договор между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успешности и не допускайте безусловного частичного завершения работы.

@RestController
@RequestMapping("/employees")
public class EmployeeController {
    private final EmployeeService employeeService;    @PostMapping
    public EmployeeResponse create(
            @RequestBody EmployeeRequest request) {
        return employeeService.create(request);
    }
}
EmployeeController
    TYPE
Controller
EmployeeController
    EXPOSES
POST /employeesEmployeeController
    CALLS
EmployeeService.create

Этап 2 — Анализ хранилища

Этап анализа хранилища на втором этапе работает наилучшим образом, если рассматривать его как измеримую структуру. Соберите один эталонный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на ранней стадии предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной. Вложенные элементы скрывают информацию о том, какой узел заполнил тот или иной поле, и могут нарушить возобновление работы после прерываний.

public interface EmployeeRepository
        extends JpaRepository<EmployeeEntity, Long> {
}
EmployeeRepository
    OPERATES_ON
EmployeeEntity
@Entity
@Table(name = "HrEmployee")
EmployeeEntity
    MAPS_TO
HrEmployee

Этап 3 — История Git

Этап истории Git третьей фазы работает наилучшим образом, когда его рассматривают как измеримую структуру. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объёма работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая всю структуру данных. Сохраняйте состояние структуры в простом и типизированном виде. Вложенные блоки данных скрывают информацию о том, какой узел заполнил тот или иной поле, и мешают возобновлению работы после прерываний.

Commit 812ac3
Message:
Add tenant filtering to employee repository.
Reason:
Prevent cross-tenant access.
EmployeeRepository
    CHANGED_IN
Commit-812ac3
Commit-812ac3
    PART_OF
PR-982PR-982
    INTRODUCED
TenantIsolationRule

Фаза 4 — Документация архитектуры

Этап подготовки документации архитектуры на 4-й фазе работает наилучшим образом, когда его рассматривают как измеримую основу. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию до расширения объёма работ. Документируйте как успешный путь выполнения, так и путь восстановления. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не этапом последующей доработки. Сохраняйте структуру графа простой и типизированной; вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, что приводит к нарушению возобновления работы после перерывов. Этап подготовки документации архитектуры на 4-й фазе работает наилучшим образом, когда его рассматривают как измеримую основу. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию до расширения объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия создаваемым документам, определите критерии успеха и не соглашайтесь на молчаливое частичное выполнение задач.

All employee mutations must pass through the EmployeeHandler.
EmployeeMutation
    MUST_USE
EmployeeHandler
rule source:
ADR-17

5-я фаза — навыки ИИ

На этапе 5 навыков ИИ необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Для операций, связанных с расходами или изменением производственных данных, требуется утверждение человека. Настройка на этапе компиляции не гарантирует полной готовности решения к использованию в бизнесе.

.agents/skills/add-end-point/SKILL.md
Before creating an endpoint:
1. Identify the nearest existing endpoint pattern.
2. Resolve authentication and authorization rules.
3. Resolve tenant and organization isolation.
4. Identify service/orchestrator pattern.
5. Identify persistence pattern.
6. Identify required tests.
get_context(
    task="create-endpoint",
    domain="employee",
    operation="create"
)

Служба графа контекста

На этапе сервиса Context Graph Service необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Для ребер, связанных с тратами денег или изменением производственных данных, необходимо предусмотреть утверждение человеком. Подключения, созданные во время компиляции, не гарантируют полноты функционала бизнес-процесса.

AI Agent
   |
   v
Context API / MCP Server
   |
   +--------> Graph Database
   |
   +--------> Vector Database
   |
   +--------> Git Repository
find_entity
get_neighbors
find_path
get_architecture_context
get_security_context
get_database_context
get_change_history
get_similar_implementations
get_context_for_task
record_decision
get_context_for_task(
    repository="employee-platform",
    skill="add-end-point",
    task="create reimbursement approval endpoint"
)

Какую базу данных графов нам использовать?

На этапе определения выбора графовой базы данных необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо одновременно задокументировать успешный и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Вносить изменения в данные, связанные с расходами или изменением производственных данных, следует только после одобрения человека. Настройки на этапе компиляции не гарантируют полноты функционала продукта. На этапе определения выбора графовой базы данных необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия создаваемым элементам, определите критерии успеха и не допускайте безответственного частичного завершения задач.

JSON files
+
NetworkX
+
SQLite

При работе над этапом «Очень простая реализация в стиле Neo4j» сначала запишите условия использования: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отслеживание затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели при повторной обработке последующего узла оператором.

CREATE (:Class {
    name: "EmployeeController",
    type: "Controller"
});
CREATE (:Service {
    name: "EmployeeService"
});CREATE (:Repository {
    name: "EmployeeRepository"
});
MATCH (c:Class {name:"EmployeeController"}),
      (s:Service {name:"EmployeeService"})
CREATE (c)-[:CALLS]->(s);
MATCH (s:Service {name:"EmployeeService"}),
      (r:Repository {name:"EmployeeRepository"})
CREATE (s)-[:USES]->(r);

При работе над этапом запросов к графу сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает избегать ошибок при последующих изменениях кода. Храните конфигурацию отдельно от кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна повторно взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий узел.

MATCH path =
    (endpoint:Endpoint)-[*1..4]-(context)
WHERE endpoint.domain = "employee"
RETURN path
Controller
Service
Handler
Repository
Table
Permission
Tenant Rule
Tests
ADR

Лучшая архитектура: гибридный поиск

При работе над этапом A Better Architecture Hybrid сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Документируйте одновременно успешный и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Измеряйте точность воспроизведения ответов на фиксированном наборе вопросов перед настройкой подсказок. Частая смена подсказок редко помогает улучшить качество поиска. При работе над этапом A Better Architecture Hybrid сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как договор между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задач.

User Request
                         |
                         v
                 Context Retriever
                         |
          +--------------+--------------+
          |              |              |
          v              v              v
      Vector          Graph         Keyword
      Search         Traversal        Search
          |              |              |
          +--------------+--------------+
                         |
                         v
                  Context Ranking
                         |
                         v
                  Agent Context
                         |
                         v
                       LLM

Проблема бюджета контекста

Этап решения проблемы бюджета контекста работает наилучшим образом, когда его рассматривают как измеримую структуру. Соберите один эталонный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Очевидность затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной; вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и могут нарушить возобновление работы после прерываний.

Repository:
8 million tokens
Controller conventions
Service convention
Security rule
Two repositories
One ADR
Three tests
Total:
18,000 tokens

Граф контекста + навыки агента

Механизм Context Graph Agent Skill работает наилучшим образом, когда рассматривается как измеримая структура. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объёма задачи. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая всю структуру графа. Сохраняйте состояние графа простым и типизированным. Вложенные структуры данных маскируют информацию о том, какой узел заполнил тот или иной поле, и приводят к нарушению возобновления работы после перерывов.

Developer
   |
   v
AI Agent
   |
   v
add-end-point Skill
   |
   v
Context Graph Query
Developer
   |
   | "Create employee endpoint"
   v
AI Agent
   |
   | reads
   v
.agents/skills/add-end-point/SKILL.md
   |
   | SKILL.md says:
   | "Before generating code,
   |  call get_task_context"
   v
MCP Tool
get_task_context(...)
   |
   v
Context Graph Service
   |
   +---- Neo4j / Graph DB
   |
   +---- Vector Search
   |
   +---- Git metadata
   |
   v
Relevant Context
   |
   v
AI Agent
   |
   | follows retrieved rules
   v
Generate / modify code
Nearest endpoint:
LeaveRequestController
Controller pattern:
@RestController
constructor injectionService pattern:
interface + implementationArchitecture:
Controller
   -> Service
   -> Handler
   -> RepositorySecurity:
LEAVE_VIEWTenant rules:
OrganizationID + TenantIDPersistence:
HrLeaveBalanceTesting:
ControllerTest
ServiceTest
RepositoryITArchitecture decision:
ADR-42

Затем агент генерирует код

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

LeaveBalanceController
LeaveBalanceRequest
LeaveBalanceResponse
LeaveBalanceService
LeaveBalanceServiceImpl
LeaveBalanceHandler
LeaveBalanceRepository
LeaveBalanceProjection
LeaveBalanceException
LeaveBalanceControllerTest
LeaveBalanceServiceTest
LeaveBalanceRepositoryTest

Этап «Затем агент генерирует» работает наилучшим образом, когда его рассматривают как измеримую структуру. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успеха и не допускайте молчаливого частичного завершения работы.

Does the endpoint follow the required architecture?
YES.Does it apply security?YES.Does repository filtering include TenantID?YES.Does it include OrganizationID?YES.Are mandatory tests present?YES.

Запуск хранилища

На этапе Bootstrap хранилища необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат на раннем этапе предотвращает неожиданные счета при переходе с демо-среды в общедоступные среды. Для операций, связанных с расходами или изменением производственных данных, требуется утверждение человека. Настройки во время компиляции не гарантируют полноты реализации бизнес-логики.

bootstrap-context
2-3 representative endpoints
architecture
build files
framework versions
dependency injection
security
database patterns
testing
exception handling
transactions
module boundaries
Repository
   USES
Java17
Repository
   USES
SpringBoot3Endpoint
   FOLLOWS
Controller-Service-Handler-RepositoryDatabaseQuery
   MUST_INCLUDE
TenantIDDatabaseQuery
   MUST_INCLUDE
OrganizationID

Наборы навыков становятся гораздо меньше

На этапе, когда навыки становятся значительно проще, необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Вводите ручное утверждение для операций, связанных с тратой денег или изменением производственных данных. Подключение компонентов во время компиляции не гарантирует полноты бизнес-логики.

For employee APIs use EmployeeHandler.
For payroll APIs use PayrollOrchestrator.For recruitment APIs use ActionHandler.For employee APIs tenant filtering happens...For payroll APIs...
1. Understand the requested endpoint.
2. Query the repository Context Graph.3. Resolve:
   - architecture pattern
   - closest implementation
   - security
   - data ownership
   - persistence
   - testing requirements4. Generate code.5. Validate generated changes against graph constraints.6. Record newly confirmed repository knowledge.

Навыки указывают агенту КАК

На этапе «Skills Tell the Agent» необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и аварийный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Внедрять утверждение человеком для операций, связанных с тратой денег или изменением производственных данных. Подключение компонентов во время компиляции не гарантирует полноты функционала продукта.

Граф контекста указывает агенту, ЧТО ЗДЕСЬ ИСТИНА

Поскольку контекстная графика указывает на этап выполнения, необходимо заранее определить входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Лучше использовать небольшие, тестируемые единицы вместо обширных скриптов. При сбое шага он должен указывать на конкретную причину, а не на сложную цепочку операций. Вносить изменения, связанные с тратой денег или изменением производственных данных, следует с участием человека. Подключение компонентов во время компиляции не гарантирует полноты реализации бизнес-логики.

Контекстные графики и многопроцессные системы

Для этапов контекстных графов и многокомпонентной работы необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия результатам работы, определите критерии успеха и не допускайте безответственного частичного выполнения задач. Внедряйте утверждение человека для операций, связанных с тратой денег или изменением производственных данных. Подключение компонентов во время компиляции не гарантирует полноты выполнения бизнес-задач.

Architecture Agent
Security Agent
Backend Agent
Testing Agent
Database Agent
Reviewer Agent
duplicate work
different conclusions
large token usage
conflicting decisions
Context Graph
              /      |      \
             /       |       \
            v        v        v
       Backend   Security   Testing
        Agent      Agent     Agent
Endpoint requires FINANCE_WRITE

Контекстные графы могут учиться на пул-риквестах

На этапе обучения контекстных графов необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат на раннем этапе предотвращает неожиданные счета при переходе с демо-среды в общедоступные среды. На ребрах, связанных с тратами денег или изменением производственных данных, должно быть указано одобрение человека. Подключение компонентов во время компиляции не гарантирует полноты реализации бизнес-логики.

repository.findByEmployeeId(employeeId);
EmployeeRepositoryQuery
    MUST_FILTER_BY
TenantID
EmployeeRepositoryQuery
    MUST_FILTER_BY
OrganizationIDRule
    LEARNED_FROM
PR-11882

Контекстный граф — это не мозг LLM

На этапе A Context Graph Is необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. При следующем шаге, являющемся кодом или вызовом инструмента, предпочтительнее использовать структурированные выходные данные с проверкой схемы вместо свободного текста.

LLM
=
Reasoning Engine
Context Graph
=
Structured MemoryVector Database
=
Semantic Memory SearchSkills
=
ProceduresTools
=
Actions
AI Agent
                |
      +---------+---------+
      |         |         |
      v         v         v
   Skills    Context    Tools
              Graph
                |
        +-------+-------+
        |               |
        v               v
     Vector           Graph
     Search           Store

Context Graph против тонкой настройки

На этапе сравнения Context Graph и процесса тонкой настройки необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо одновременно задокументировать успешный сценарий выполнения и сценарий восстановления. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не этапом последующей доработки. Вносить изменения, связанные с расходами или изменением производственных данных, должны быть утверждены человеком. Настройка на этапе компиляции не гарантирует полноты функционала продукта. На этапе сравнения Context Graph и процесса тонкой настройки необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Укажите названия результатов работы, определите критерии успеха и не допускайте безответственного частичного завершения задачи.

OldRule
    status = deprecated
NewRule
    status = active

Граф контекста против крупных запросов

При работе над этапом сравнения графа контекста и крупных запросов сначала запишите условия использования: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отслеживание затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Храните в кэше стабильные инструкции системы и схемы инструментов. Повторная отправка одинаковых данных — частая причина избыточных затрат.

AGENTS.md
= 40,000 lines
Task
   |
   v
Relevant Subgraph
   |
   v
Prompt
Entire Organization
   |
   v
Prompt

Как развернуть первую версию

При работе над этапом «Как осуществить развертывание» сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Храните конфигурацию отдельно от кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий шаг.

Repository:
employee-service
Skill:
add-end-point
Module
Class
Endpoint
Service
Repository
Table
Rule
Permission
Test
ADR
CONTAINS
EXPOSES
CALLS
USES
WRITES_TO
READS_FROM
REQUIRES
TESTED_BY
FOLLOWS
DEFINED_IN

Рекомендуемый способ развертывания

При работе на этапе рекомендуемой развертки сначала запишите условия контракта: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный сценарий работы и сценарий восстановления. Повторные попытки, проверки со стороны оператора и обработка некорректных сообщений являются частью продукта, а не элементами последующей доработки. Создавайте контрольные точки после дорогостоящих операций. Механизм возобновления работы не должен повторно взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий этап.

Git Repository
      |
      |
      v
Repository Indexer
      |
      +------ Java Parser
      |
      +------ Git Parser
      |
      +------ Markdown Parser
      |
      +------ SQL Parser
      |
      v
Context Graph DB
      |
      +------ Vector Index
      |
      v
Context Service / MCP
      |
      v
AI Coding Agent
      |
      v
Repository Skills

Постепенное обновление графа

При работе над этапом постепенного обновления графа сначала запишите контракт: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность последующих изменений в коде. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Если какой-то шаг не сработает, причина неудачи должна указывать на конкретную ответственность, а не на запутанную цепочку операций. Вносите контрольные точки после дорогостоящих шагов. Функция возобновления работы не должна повторно оплачивать один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий узел.

EmployeeController.java
EmployeeService.java
ADR-42.md
git diff HEAD~1
changed files
      |
      v
re-index
      |
      v
update graph

Контекст должен быть уверен

При работе на этапе «Контекст должен обеспечивать уверенность» сначала запишите контракт: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой чек-лист помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успешности и не допускайте безусловного частичного завершения работы. Выполняйте контрольные точки после дорогостоящих операций. Система возобновления работы не должна снова запрашивать один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий этап.

EmployeeController
    CALLS
EmployeeService
confidence = 1.0
source = static-analysis
Employee APIs
    PROBABLY_REQUIRE
ManagerPermission
confidence = 0.62
source = llm-inference
FACT
OBSERVATION
INFERENCE
DECISION
RULE

Люди должны иметь возможность корректировать граф

При работе над этапом «Люди должны иметь возможность» сначала запишите условия контракта: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рядом с результатами функционирования записывайте время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Выполняйте контрольные точки после дорогостоящих шагов. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий узел.

Payroll APIs use Handler architecture.
HandlerPattern
    status = deprecated
OrchestratorPattern
    status = active

Более широкая концепция: от поиска в репозитории к пониманию репозитория

При работе над этапом «The Bigger Idea From» сначала запишите условия работы: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Создавайте контрольные точки после дорогостоящих операций. Система возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий шаг.

Question
   |
   v
Search Files
   |
   v
Read Files
   |
   v
Generate Code
Question
   |
   v
Understand Task
   |
   v
Identify Relevant Entities
   |
   v
Traverse Architecture
   |
   v
Recover Rules
   |
   v
Recover History
   |
   v
Recover Decisions
   |
   v
Build Context
   |
   v
Execute Skill
   |
   v
Validate Result
   |
   v
Record Learning

Аналогия со старшим инженером

При работе над этапом «Аналогия старшего инженера» сначала запишите условия соглашения: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный и восстановительный пути выполнения. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Выполняйте контрольные точки после дорогостоящих шагов. Система возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить последующий узел. При работе над этапом «Аналогия старшего инженера» сначала запишите условия соглашения: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как соглашение между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задач.

Вот что является настоящим обещанием

Модель «Это и есть реальная среда» работает наилучшим образом, когда рассматривается как измеримая поверхность. Соберите один пример успешной работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на ранних этапах предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной; вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и могут нарушить возобновление работы после прерываний.

Будущий репозиторий может сильно отличаться

CODE
What the system does.
SKILLS
How agents should perform work.CONTEXT GRAPH
What the agent should understand about this repository.
my-platform/
│
├── services/
│
├── database/
│
├── docs/
│
├── tests/
│
│
├── AGENTS.md
│
├── .agents/
│   │
│   ├── skills/
│   │   ├── add-end-point/
│   │   ├── fix-bug/
│   │   ├── create-migration/
│   │   └── review-pr/
│   │
│   └── context/
│       ├── graph-schema.yml
│       ├── rules.yml
│       └── bootstrap.yml
│
└── context-graph/
    ├── indexer/
    ├── extractors/
    ├── graph-api/
    └── validation/

Ещё один пример

TASK
Create reimbursement endpoint.
DOMAIN
Finance / Employee.PATTERN
ExpenseController.ARCHITECTURE
Controller -> Service -> Orchestrator -> Repository.AUTHENTICATION
Session authentication required.AUTHORIZATION
CREATE_REIMBURSEMENT.TENANCY
OrganizationID + TenantID mandatory.DATABASE
HrReimbursement.TRANSACTION
Orchestrator owns transaction.IMPORTANT HISTORY
Direct reimbursement status mutation caused incident FIN-822.RULE
Use ReimbursementWorkflow.TESTING
Controller + Service + Repository tests required.REFERENCE PR
PR-11822 implemented similar Expense workflow.

LLM
gives the agent intelligence.
Skills
give the agent procedures.Tools
give the agent hands.Vector search
helps the agent find things.Context Graph
helps the agent understand how those things are connected.Decision history
helps the agent understand why.