← 목록
기타 2026-07-05 4KB 읽기 4분

크라우니브레인 t1 대응 확장 — 요약·정리 규칙엔진

개요

브레인 로드맵 L1: t1(하이쿠급 — 요약·정리·목록·형식) 티켓의 일부를 규칙기반(결정론, 토큰0)으로 브레인이 직접 처리하도록 확장. 완전 한선씨 구현 + high2rpn.sh RPN 정본 + 작업구분.sh 배선까지 완료.

무엇을 했는지

1. 브레인요약.한선 (추출식 요약)

  • '¶' 문장분리 → 단어빈도맵(2글자+, 조사꼬리 간이 제거) → 문장스코어=문장내 단어빈도 합
→ 문장≤5면 그대로, 초과 시 상위 3문장을 원문 순서로 반환
  • 가드: 문장수 상한 200(초과 시 절단표기), 단어빈도 맵 키 상한 500
  • 검증: 10문장 텍스트(주제어 반복 3문장+잡문 7문장) → 상위3에 주제문장 정확히 포함(3/10)

2. 브레인정리.한선 (목록 정리)

  • '¶' 분리 → 공백제거 → 중복제거(맵, 키 상한 1000) → 오름차순 버블정렬(문자열 </>)
→ 번호매김
  • 검증: "사과¶바나나¶사과¶ 포도 ¶바나나" → 유니크 3/5, 정렬(바나나,사과,포도) 정확

3. 브레인t1.sh (래퍼)

  • 브레인t1.sh 요약|정리 <파일|-> — 개행→'¶', '|'제거, 20000자 절단(cut -c 문자단위,
바이트 아님) → 더미줄+단일 printf로 VM 실행
  • exit 0=성공 / exit 3=실패("t1 위임 필요" — haiku 티켓 폴백)

4. RPN 정본 + high2rpn.sh 버그 수정

  • high2rpn.sh 브레인요약.한선/브레인정리.한선*.rpn.한선 생성, hanseonc_rpn 컴파일 rc=0.
  • 발견한 진짜 버그: high2rpn.sh의 라벨 관리가 lbl=$(new_label)(명령치환=서브셸)로
전역 LABEL_COUNT 증가분을 매번 잃어버려, 중첩된 만약/동안/아니면이 전부 "끝1"로 충돌 (실측: 브레인요약.한선 3중첩 → "미정의 라벨: 끝1" 반복 + .끝-1 오염). 근본 수정: 타입태깅 블록스택(push_block/pop_block, 서브셸 없이 직접 호출)으로 if/else/while/func를 정확히 매칭해 라벨 유일성+while 역행점프(@루프N 점프)를 복원. 수정 후 라벨 중복/미정의 0건.
  • 남은 한계(전부터 존재, 이번 범위 밖): convert_expr()이 단순 pass-through라 함수호출·
연산자 포함 식은 실제 postfix로 변환되지 않음(hanseonc_rpn이 대량 "미인식 단어" 경고, 기존 라이브러리 RPN도 동일 경고 발생 — 이 자체는 정상 잡음). 단, 그 결과 생성된 .toau를 실제 실행하면 무한루프(테스트: crownyc run 무한 "0" 출력, alarm으로 강제종료 확인). 즉 RPN 컴파일 rc=0은 달성했으나 RPN 산출물의 실행 정확성은 미검증/미보장 (고수준 .toau는 정상 실행 확인됨). 완전한 infix→postfix 컴파일러는 별도 과제.

5. 학습 (crownycode-brain.sh)

  • 학습완료: 브레인요약_추출식_t1 (별칭: 브레인요약)
  • 학습완료: 브레인정리_목록_t1 (별칭: 브레인정리)

6. 작업구분.sh 배선

  • t1 케이스에서 기존 위임티켓 출력 전에: 문맥에 "요약" 포함 시 브레인t1.sh 요약,
"정리"/"목록화" 포함 시 브레인t1.sh 정리(콤마→개행 전처리)를 1차 시도. 성공(exit0) 시 그 출력으로 종료(exit 0, 토큰0), 실패 시 기존 t1~t4 티켓 로직 그대로 폴백.
  • 스모크: 작업구분.sh "이 목록 정리해줘: 사과, 바나나, 사과" → 정리 브랜치 성공, exit 0.
  • 회귀 확인: 요약/정리 키워드 없는 t1 문맥은 기존 티켓 경로(exit 3) 그대로 동작.

관련 파일

  • /Users/ef/.claude/scripts/브레인요약.한선 / .rpn.한선
  • /Users/ef/.claude/scripts/브레인정리.한선 / .rpn.한선
  • /Users/ef/.claude/scripts/브레인t1.sh
  • /Users/ef/.claude/scripts/작업구분.sh (배선 패치)
  • /Users/ef/CrownyOS/crownyc/tools/high2rpn.sh (라벨스택 버그 수정)

잔여 이슈

  • high2rpn.sh의 convert_expr()이 진짜 infix→postfix 변환을 하지 않음 — 함수호출/연산자
포함 코드의 RPN 실행 정확성 미보장(별도 과제, 이번 범위 밖).
  • 작업구분.sh의 "정리" 트리거는 콤마 분리만 지원(콜론 앞 서술문 등 자연어 완전 파싱은 안 함) —
실사용 데이터로 추가 튜닝 여지.