내 코딩 에이전트는 작업이 아닌 세션을 기억했다
코딩 에이전트는 스레드를 유지하면서도 여전히 건망증이 있는 것처럼 느껴질 수 있습니다.
CliGate를 구축하는 동안 이 문제에 직면했습니다. 세션 연속성은 해결했지만, 반복되는 작업은 여전히 너무 느렸습니다.
에이전트는 대화는 기억했지만, 작업은 기억하지 못했습니다.
세션 연속성은 한 가지 문제를 해결합니다. 다음과 같은 후속 명령에 도움이 됩니다:
- continue (계속해)
- do the same for this file (이 파일에도 똑같이 적용해)
- retry that (다시 시도해)
이는 유용합니다. 하지만 며칠 뒤에 워크플로우를 반복할 때는 도움이 되지 않습니다.
에이전트는 지난 실행을 성공하게 만든 것이 무엇인지 상기해야 합니다. 다음을 알아야 합니다:
- 어떤 버튼이 작동하는지
- 어떤 단계가 막다른 길인지
- 어떤 필드에 특별한 처리가 필요한지
- 어떤 규칙을 항상 적용하고 싶은지
첫 번째 실행이 가장 비용이 많이 듭니다. 에이전트가 탐색을 통해 프롬프트에 없는 세부 사항을 찾아내는 시점이기 때문입니다.
수정하기 전에는 이러한 세부 사항이 원시 로그(raw logs)에만 존재했습니다. 에이전트에게 히스토리는 있었지만, 재사용 가능한 메모리는 없었습니다. 매번 모든 것을 새로 찾아내야 했습니다.
그것은 지능이 아닙니다. 똑같은 디버깅 비용을 두 번 지불하는 것일 뿐입니다.
잘못된 접근 방식은 더 많은 히스토리를 저장하고 모델이 이를 사용하기를 바라는 것입니다. 이는 노이즈를 생성합니다.
대신 저는 더 작고 재사용 가능한 메모리 레이어를 구축했습니다. 저는 다음 사항에 집중했습니다:
- 절차 (procedures)
- 사실 (facts)
- 지침 (directives)
- 참조 (references)
일어난 모든 일을 저장하려는 시도를 멈췄습니다. 대신 기억해야 할 것을 저장하기 시작했습니다.
이제 어시스턴트는 파일 기반 메모리 레이어를 사용하여 다음을 상기합니다:
- 절차: 최적의 단계와 알려진 막다른 길
- 사실: URL 또는 특정 설정
- 지침: 작업이 수행되기를 원하는 방식
- 참조: 문서가 있는 위치
이것이 사람들이 일하는 방식입니다.
인터페이스가 바뀌고 버튼 위치가 이동하기 때문에 과거의 완벽한 재현을 원하는 것이 아닙니다. 저는 에이전트가 다음과 같이 행동하기를 원합니다:
- 알려진 최적의 절차를 상기한다
- 먼저 시도한다
- 각 단계를 검증한다
- 실패하면 다시 탐색 단계로 돌아간다
- 성공 후 메모리를 업데이트한다
이를 통해 취약한 자동화가 유용한 운영 메모리로 변모합니다.
또한 고정된 규칙(standing rules)을 대화 히스토리와 분리했습니다. "항상 중국어로 답변해" 또는 "운영 데이터는 건드리지 마"와 같은 규칙은 세션 컨텍스트가 아닙니다. 그것은 운영 규칙입니다.
이를 분리하고 나니 어시스턴트의 동작을 예측할 수 있게 되었습니다. 더 이상 작업 중간에 사용자의 선호도를 다시 찾아낼 필요가 없습니다.
반복 작업이 이제 더 짧아졌습니다. 매번 빈 모델 상태에서 시작하지 않기 때문에 어시스턴트가 더 빠르게 움직입니다.
연속적인 스레드와 학습하는 시스템을 혼동하지 마세요.
세션은 대화를 유지합니다. 메모리는 유용한 교훈을 유지합니다.
코딩 에이전트를 구축하고 있다면 스스로에게 물어보세요. 당신의 시스템은 스레드를 기억하고 있습니까, 아니면 성공적인 절차를 기억하고 있습니까?
Source: https://dev.to/codekingai/my-coding-agent-remembered-sessions-not-work-that-was-the-bug-2fig
