Meta Harness로 파이프라인을 동적으로 만들 수 있게 됐는데, 한 가지 걱정이 생겼다. AI가 자유도가 높아지면 위험한 코드도 쓸 수 있다는 거. 그래서 같은 날 바로 두 가지를 추가했다.
Policy Engine
.adelie/constraints.yaml 파일 하나에 규칙을 선언하면, 코드가 프로젝트에 반영되기 전에 자동으로 검사된다. 세 종류를 지원하게 했다:
- pattern: 정규식으로 위험 패턴 탐지 (예:
eval()호출) - ast: Python AST를 파싱해서 구조적으로 검사 (와일드카드 임포트, 독스트링 누락)
- file: 파일 줄 수 제한
negative_pattern이라는 것도 넣었다. 예를 들어 requests.get( 패턴을 잡되, timeout=이 있으면 통과시키는 식. 이게 없으면 false positive가 너무 많았다.
Coder AI랑 Reviewer AI 프롬프트에도 현재 활성 정책을 주입해서, 생성 단계에서부터 위반을 줄이게 했다. 그래도 빠져나가는 건 PolicyGate에서 마지막으로 막는다.
Memory Harness — 선택적 망각
이건 좀 다른 문제였다. 프로젝트가 진행될수록 KB 파일이 쌓이는데, 옛날 에러 로그나 이미 완료된 페이즈의 문서가 컨텍스트를 오염시키는 거였다. AI가 이미 해결된 에러를 다시 고치려고 하거나, 초기 설정 문서에 영향받아서 이상한 방향으로 가거나.
그래서 세 가지 메커니즘을 만들었다:
- Phase Scope Filter: KB 파일에
phase_scope태그를 붙이면 해당 페이즈에서만 보임 - Archive Manager: 3사이클 이상 된 에러 파일은 자동 아카이빙
- Summary Tree: 아카이빙된 파일의 1-2줄 요약을 남겨서 최소한의 맥락은 유지
컨텍스트 윈도우의 5%만 아카이브 요약에 할당하는 것도 중요했다. 너무 많이 주면 또 오염되니까.