CrownyCode FAB 단계 결함 진단 및 수정
날짜
2026-05-22
개요
CrownyCode 에이전트(
crownycode-agent/agent.sh run)의 FAB(최종 코드 조립) 단계 결함을 진단하고 수정했다. 2가지 테스트 케이스 모두 실패했으나 수정 후 정상 작동 확인.
증상
"배열을 정렬해줘" → 패턴DB에서 퀵정렬 발견했으나 FAB 실패 후 한 줄 압축 코드 출력(검증 없음)
"현재시간 출력" → 패턴 발견했으나 불완전한 함수(함수 출력() { 미완성 코드) 출력
원인 분석 (4개)
원인 1: agent.sh FAB 실패 처리 분기에서 검증 누락
- 위치:
agent.sh 921~940줄 (FAB 실패 후 패턴DB 폴백 경로)
- 문제: 패턴DB에서 코드를 찾으면 검증(verify_code) 없이 바로 출력
- 결과: 불완전하거나 실행 불가한 코드도 그대로 반환됨
원인 2: 패턴DB의 퀵정렬 코드가 crowny VM에서 실행 불가
- 위치:
crownycode/data/all_patterns.dat
- 문제: 기존 코드가
원소(배열, i) 함수를 사용하는데 crowny 바이너리에 이 함수가 없음
- 결과: 컴파일은 되나 실행 시 에러
원인 3: 패턴DB의 현재시간·출력 코드가 불완전
- 위치:
crownycode/data/all_patterns.dat
- 문제:
현재시간|han|함수 현재시간() { — 여는 중괄호만 있고 내용·닫는 괄호 없음
- 원인: 패턴 저장 시 줄바꿈이 잘린 것으로 추정
원인 4: synonyms.dat의 잘못된 동의어 매핑 + keywords.dat 우선순위 미설정
- 위치:
intent/synonyms.dat 405번 줄
- 문제:
현재시간|날짜 매핑으로 "현재시간 출력" 입력에서 현재시간이 날짜로 정규화되어 출력 intent가 우선 적용됨
- 추가:
keywords.dat에서 현재시간이 우선순위 3 (vs 출력 우선순위 1)이어서 항상 지던 문제
수정 내용
1. agent.sh — FAB 실패 처리 분기에 검증 로직 추가
- 패턴DB 히트 시
verify_code()로 검증 후 성공 시에만 반환
- 검증 실패 시 메인 파이프라인으로 진행하도록 변경
- 파일:
/Users/ef/Downloads/CrownyTVM/crownycode-agent/agent.sh
2. all_patterns.dat — 3개 패턴 수정
퀵정렬: 원소(배열, i) → 배열[i] 인덱스 접근 방식으로 교체 + 완전한 코드 + 실행 예제 포함
현재시간: 함수 현재시간() { (미완성) → 변수 현재 = 지금()\n출력값(...) (완전 코드)
출력: 함수 출력() { (미완성) → 함수 출력하기(값) (완전 코드)
- 파일:
/Users/ef/Downloads/CrownyTVM/crownycode/data/all_patterns.dat
3. synonyms.dat — 잘못된 동의어 매핑 제거
현재시간|날짜 (405번 줄) → 주석 처리
현재시간|시간_현재시간 (856번 줄) → 주석 처리 (keywords.dat에서 직접 처리)
- 파일:
/Users/ef/Downloads/CrownyTVM/crownycode-agent/intent/synonyms.dat
4. keywords.dat — 현재시간 우선순위 향상
현재시간|셀코어_현재시간|3 → 현재시간|현재시간|1 + 현재시간출력|현재시간|1 추가
- 파일:
/Users/ef/Downloads/CrownyTVM/crownycode-agent/intent/keywords.dat
재테스트 결과
"배열을 정렬해줘"
- 이전: FAB 실패 → 검증 없는 한 줄 압축 코드 출력
- 이후: FAB 실패 → 패턴DB에서 퀵정렬(완전 코드) 발견 → 검증 통과 → 정상 출력
"현재시간 출력"
- 이전: intent=
출력 → 불완전 패턴 출력
- 이후: intent=
현재시간 → 변수 현재 = 지금()\n출력값("현재 유닉스시각: " + ...) 출력
컴파일 검증
- crowny VM (
/Users/ef/Downloads/CrownyTVM/target/release/crowny): 두 케이스 모두 정상 실행
- hanseonc_high: 퀵정렬 정상, 현재시간은
가져오기 "날짜.한선" import 필요 (crowny VM과 내장 함수 셋 차이)
관련 파일
/Users/ef/Downloads/CrownyTVM/crownycode-agent/agent.sh — FAB 실패 처리 로직
/Users/ef/Downloads/CrownyTVM/crownycode-agent/fab/fab.sh — FAB 실행 파일
/Users/ef/Downloads/CrownyTVM/crownycode/data/all_patterns.dat — 패턴DB
/Users/ef/Downloads/CrownyTVM/crownycode-agent/intent/keywords.dat — 키워드 사전
/Users/ef/Downloads/CrownyTVM/crownycode-agent/intent/synonyms.dat — 동의어 사전
잔여 이슈
- FAB 자체(버블정렬 의미어)의 코드 생성 버그:
버블정렬 의미어의 본문내 단계 처리 시 닫는 } 구조 불균형 (컴파일 에러: 기대: RBrace, 실제: Eof) — fab-kernel.han 코드생성기 수정 필요
현재시간 의미어 (의미어.dat 47906번 줄): @단계 {}, @테스트 {} 모두 비어 있어 FAB 경로에서 빈 함수 생성 — 내용 채움 필요
- crowny VM vs hanseonc_high VM 내장 함수 불일치 (
지금() 등): verify_code()가 crowny를 사용하므로 hanseonc_high용 패턴과 crowny용 패턴이 분리되어야 함