네 가지 지침은 어떤 실패를 줄이려 할까
이 프로젝트의 중심은 무거운 runtime보다 모델에 전달하는 Markdown 지침입니다. 효과를 평가할 때는 “말을 잘 듣는다”는 인상보다 관련 없는 변경, 질문 지연, test 통과와 review 수정량의 변화를 봅니다.
중요한 문제 중 하나는 모호한 상황에서 모델이 선택한 가정을 알리지 않고 구현하는 것입니다. 지침은 가정을 명시하고 위험한 선택은 질문하도록 유도합니다. 그러나 system prompt가 AST 수정 권한을 기술적으로 제한하는 것은 아니며 실제 file permission과 diff gate가 필요합니다.
| 비교 항목 | 기존 AI 코딩 어시스턴트 (Default) | Andrej Karpathy Skills 적용 시 |
|---|
| 모호성 처리 | 임의로 가정을 세우고 조용히 코드를 자동 완성함 | Think Before Coding: 가정을 명시하고, 혼란스러우면 즉시 멈추고 사용자에게 질문함 |
| 코드 수정 범위 | 주변 코드와 주석을 “개선”하려 들며 광범위한 수정을 가함 | Surgical Changes: 요청받은 라인만 ‘외과 수술처럼’ 도려내고 수정하며, 기존 스타일을 철저히 유지함 |
| 설계 철학 | 확장성을 고려해 추상화된 패턴과 오버엔지니어링 적용 | Simplicity First: 추측성 기능(Speculative features)을 배제하고 최소한의 코드로 구현 (YAGNI 원칙 강제) |
| 검증 방식 | “완료했습니다. 코드를 확인해보세요.”라며 즉시 결과물 제출 | Goal-Driven Execution: 테스트 등 성공 기준을 먼저 정의하고, 이를 통과할 때까지 자율 루프 실행 |
연결된 Autoresearch 저장소는 성공 기준을 두고 반복 실험하는 아이디어를 살펴볼 별도 근거입니다. 이 아이디어를 코딩 작업에 옮길 때는 “어떻게 하라”는 세부 방법보다 어떤 test와 지표가 성공인지 먼저 정할 수 있습니다. 다만 반복 실행 권한과 종료 조건은 지침 문장만으로 맡기지 않습니다.
아래 JSON은 원칙을 구조화한 예시입니다. 특정 도구가 이 schema를 그대로 읽거나 enforcement_level을 기술적 권한으로 강제한다는 보장은 없으므로 선택한 client의 실제 지침 형식을 확인해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| {
"karpathy_guidelines": {
"alwaysApply": true,
"principles": [
{
"name": "Think Before Coding",
"directive": "절대 가정하지 마라. 해석이 갈릴 경우 조용히 선택하지 말고, 트레이드오프를 명시하여 사용자에게 질문하라. 불확실하면 멈춰라."
},
{
"name": "Surgical Changes",
"directive": "고장나지 않은 것을 리팩토링하지 마라. 당신의 방식과 달라도 기존 코드 스타일을 100% 매칭하라. 관계없는 데드코드를 발견하면 삭제하지 말고 언급만 하라."
},
{
"name": "Goal-Driven Execution",
"directive": "명령형 지시를 검증 가능한 목표로 변환하라. 예: '버그 수정' -> '버그를 재현하는 테스트 작성 후 통과'. 다단계 작업은 반드시 '1. [Step] -> verify: [check]' 형태의 계획을 먼저 출력하고 실행하라."
}
],
"enforcement_level": "strict"
}
}
|
이 설정은 행동을 유도하지만 test 전 code 수정을 물리적으로 막는 lock은 아닙니다. “계획 먼저”를 출력한 뒤 바로 넓은 diff를 만들 수도 있고, 기존 test를 약화해 녹색 결과를 만들 수도 있습니다. 읽기, 쓰기 허용 경로, test command와 test file 변경 정책을 실행기에서 검사해야 지침이 운영 통제가 됩니다.
모호성도 모두 같은 위험이 아닙니다. 변수 이름처럼 되돌리기 쉬운 지역 선택은 기존 style을 따라 진행하고 기록할 수 있지만 API contract, data migration이나 외부 side effect를 바꾸는 선택은 멈추고 질문해야 합니다. 질문 기준이 없으면 작은 결정마다 사람을 호출해 생산성이 떨어집니다.
Surgical Change는 단순히 줄 수가 적다는 뜻도 아닙니다. 필요한 test와 migration까지 빠뜨린 작은 diff는 안전하지 않습니다. 요구사항을 충족하는 최소 범위를 먼저 적고 그 범위 밖 파일, format 변화와 dependency 변경을 별도 review 대상으로 표시합니다.