|
| 1 | +# AI 보조 개발 워크플로우 |
| 2 | + |
| 3 | +## 1. 목적 |
| 4 | + |
| 5 | +AI가 코드를 빠르게 생성하는 것보다 변경 범위와 리스크를 사람이 이해하고 검증할 수 있도록 관리하는 것을 목표로 한다. |
| 6 | + |
| 7 | +이 워크플로우는 다음 질문에 답할 수 있어야 한다. |
| 8 | + |
| 9 | +- AI는 어떤 범위에서 사용됐는가 |
| 10 | +- 구현 전에 어떤 영향과 리스크를 검토했는가 |
| 11 | +- 어떤 제안을 사람이 채택하거나 기각했는가 |
| 12 | +- 구현 결과는 별도 리뷰와 테스트를 거쳤는가 |
| 13 | +- 다른 사람이 변경 이유와 검증 방법을 다시 확인할 수 있는가 |
| 14 | + |
| 15 | +## 2. 핵심 원칙 |
| 16 | + |
| 17 | +1. AI는 구현 전에 기존 구조와 영향 범위를 분석한다. |
| 18 | +2. 사람은 계획을 검토하고 승인한다. |
| 19 | +3. AI는 승인된 범위 안에서만 구현한다. |
| 20 | +4. 구현과 리뷰는 다른 작업으로 분리한다. |
| 21 | +5. 사람은 리뷰 의견의 채택 여부를 최종 판단한다. |
| 22 | +6. 테스트 결과와 남은 리스크를 PR에 기록한다. |
| 23 | +7. 원본 로그보다 설명 가능한 판단과 검증 결과를 우선한다. |
| 24 | + |
| 25 | +## 3. 역할 구분 |
| 26 | + |
| 27 | +| 역할 | 책임 | 하지 않는 일 | |
| 28 | +| --- | --- | --- | |
| 29 | +| 사람 | 문제 정의, 계획 승인, 제안 채택과 기각, 최종 검증 | AI 결과를 검토 없이 수용하지 않는다 | |
| 30 | +| 구현 AI | 구조 분석, 계획 제안, 승인 범위 구현, 테스트 실행 | 승인 전 파일을 수정하지 않는다 | |
| 31 | +| 리뷰 AI | diff 기반 오류, 회귀, 누락 테스트, 운영 리스크 검토 | 리뷰 중 코드를 직접 수정하지 않는다 | |
| 32 | +| Logging Hook | 도구 실행과 검증 흐름 기록 | 코드 정확성이나 동일 결과 생성을 보장하지 않는다 | |
| 33 | + |
| 34 | +구현 AI와 리뷰 AI는 같은 모델을 사용해도 된다. 다만 리뷰 AI는 구현 대화의 맥락보다 PR diff와 리뷰 기준을 중심으로 검토해야 한다. |
| 35 | + |
| 36 | +## 4. 현재 적용 상태 |
| 37 | + |
| 38 | +| 항목 | 상태 | 근거 | |
| 39 | +| --- | --- | --- | |
| 40 | +| 전역 AI 작업 원칙 | 적용 중 | `~/.codex/AGENTS.md` | |
| 41 | +| 저장소별 작업 규칙 | 적용 중 | `AGENTS.md` | |
| 42 | +| AI 사용 판단 기록 | 적용 시작 | `.github/PULL_REQUEST_TEMPLATE.md` | |
| 43 | +| 구현과 GitHub PR 리뷰 분리 | 적용 시작 | Codex GitHub Code Review | |
| 44 | +| 도구 실행 Logging Hook | 계획 | [`logging-hook-reproducibility-plan.md`](logging-hook-reproducibility-plan.md) | |
| 45 | +| 검증 재현성 효과 측정 | 계획 | Hook과 PR 기록 누적 후 확인 | |
| 46 | + |
| 47 | +## 5. 1회 설정 |
| 48 | + |
| 49 | +### 5.1 전역 규칙 |
| 50 | + |
| 51 | +전역 `~/.codex/AGENTS.md`에는 모든 프로젝트에 공통으로 적용할 개인 원칙을 둔다. |
| 52 | + |
| 53 | +- 구현 전 가정과 트레이드오프 확인 |
| 54 | +- 최소 범위 변경 |
| 55 | +- 관련 없는 코드 수정 금지 |
| 56 | +- 검증 가능한 성공 조건 정의 |
| 57 | + |
| 58 | +### 5.2 저장소 규칙 |
| 59 | + |
| 60 | +루트 `AGENTS.md`에는 Docsa에서 지킬 구체적인 규칙을 둔다. |
| 61 | + |
| 62 | +- 구현 전 변경 파일과 영향 범위 제시 |
| 63 | +- 승인 전 파일 수정 금지 |
| 64 | +- API와 데이터베이스 호환성 검토 |
| 65 | +- 구현과 리뷰 역할 분리 |
| 66 | +- PR에 AI 사용 범위와 판단 기록 |
| 67 | + |
| 68 | +리뷰 기준은 Codex GitHub Code Review가 명확히 인식할 수 있도록 `## Review guidelines` 섹션에 둔다. |
| 69 | + |
| 70 | +- 리뷰 코멘트는 한국어로 작성한다. |
| 71 | +- 사소한 서식보다 기능 오류, 데이터 정합성, 운영 리스크, 누락 테스트를 우선한다. |
| 72 | +- AI 워크플로우 문서는 실제 구현 전 주장된 자동화나 과장된 효과 표현을 확인한다. |
| 73 | + |
| 74 | +### 5.3 PR 기록 구조 |
| 75 | + |
| 76 | +PR 템플릿에는 다음 내용을 기록한다. |
| 77 | + |
| 78 | +```markdown |
| 79 | +## AI 보조 작업 기록 |
| 80 | + |
| 81 | +- 사용 범위: |
| 82 | +- 채택한 제안과 이유: |
| 83 | +- 기각한 제안과 이유: |
| 84 | +- 실행한 검증: |
| 85 | +- 남은 리스크: |
| 86 | +``` |
| 87 | + |
| 88 | +### 5.4 Codex GitHub Code Review |
| 89 | + |
| 90 | +GitHub PR에서 구현과 리뷰를 분리하기 위해 Codex Code Review를 사용한다. |
| 91 | + |
| 92 | +1. Codex Cloud에 GitHub 저장소를 연결한다. |
| 93 | +2. Codex Code Review 설정에서 저장소의 Code review를 활성화한다. |
| 94 | +3. 처음에는 Automatic reviews를 끄고 수동 리뷰로 동작을 확인한다. |
| 95 | +4. PR 댓글에 `@codex review`를 작성해 리뷰를 요청한다. |
| 96 | +5. 운영 방식이 안정되면 Automatic reviews 적용을 검토한다. |
| 97 | + |
| 98 | +참고: |
| 99 | + |
| 100 | +- [Codex code review in GitHub](https://developers.openai.com/codex/integrations/github) |
| 101 | +- [Codex Code Review 설정](https://chatgpt.com/codex/settings/code-review) |
| 102 | + |
| 103 | +## 6. 작업별 실행 흐름 |
| 104 | + |
| 105 | +### 6.1 작업 정의 |
| 106 | + |
| 107 | +Issue 또는 작업 문서에 문제와 성공 조건을 먼저 작성한다. |
| 108 | + |
| 109 | +```markdown |
| 110 | +## 문제 |
| 111 | + |
| 112 | +어떤 기능에서 어떤 비용이나 실패 가능성이 발생하는가 |
| 113 | + |
| 114 | +## 성공 조건 |
| 115 | + |
| 116 | +- 변경 후 지켜야 할 동작 |
| 117 | +- 반드시 통과해야 할 테스트 |
| 118 | +- 유지해야 할 API 또는 데이터 계약 |
| 119 | + |
| 120 | +## 제외 범위 |
| 121 | + |
| 122 | +- 이번 작업에서 변경하지 않을 영역 |
| 123 | +``` |
| 124 | + |
| 125 | +이 단계의 목적은 AI가 해결해야 할 문제와 해결하지 않아야 할 문제를 구분하는 것이다. |
| 126 | + |
| 127 | +### 6.2 구조 분석 요청 |
| 128 | + |
| 129 | +구현 AI에게 파일 수정 없이 분석과 계획만 요청한다. |
| 130 | + |
| 131 | +```text |
| 132 | +아직 구현하지 마. |
| 133 | +기존 구조를 분석하고 다음 내용을 먼저 정리해줘. |
| 134 | +
|
| 135 | +- 문제 원인 |
| 136 | +- 변경이 필요한 파일과 책임 |
| 137 | +- API, 데이터베이스, 호환성 영향 |
| 138 | +- 필요한 테스트 |
| 139 | +- 예상 리스크 |
| 140 | +- 이번 작업에서 제외할 범위 |
| 141 | +``` |
| 142 | + |
| 143 | +산출물: |
| 144 | + |
| 145 | +- 변경 계획 |
| 146 | +- 영향 범위 |
| 147 | +- 테스트 계획 |
| 148 | +- 리스크 목록 |
| 149 | + |
| 150 | +### 6.3 사람의 계획 검토와 승인 |
| 151 | + |
| 152 | +사람은 AI 계획을 다음 기준으로 검토한다. |
| 153 | + |
| 154 | +- 문제 원인이 정확한가 |
| 155 | +- 변경 범위가 과도하지 않은가 |
| 156 | +- 기존 설계 원칙과 충돌하지 않는가 |
| 157 | +- 더 단순한 대안이 있는가 |
| 158 | +- 트랜잭션 경계와 실패 경로를 고려했는가 |
| 159 | +- 검증 방법이 충분한가 |
| 160 | + |
| 161 | +계획을 그대로 승인할 필요는 없다. 수정하거나 기각한 내용과 이유가 중요한 판단 근거가 된다. |
| 162 | + |
| 163 | +승인 예시: |
| 164 | + |
| 165 | +```text |
| 166 | +조회 API 응답 계약은 유지하고 Graph 조회는 제외해. |
| 167 | +Domain Event Outbox와 Read Model 변경만 이 계획으로 구현해줘. |
| 168 | +계획 밖의 변경이 필요하면 수정 전에 설명해줘. |
| 169 | +``` |
| 170 | + |
| 171 | +### 6.4 구현 |
| 172 | + |
| 173 | +구현 AI는 승인된 계획 안에서만 파일을 수정한다. |
| 174 | + |
| 175 | +- 계획에서 벗어나는 변경이 필요하면 먼저 이유와 영향을 설명한다. |
| 176 | +- 관련 없는 리팩터링과 서식 변경은 하지 않는다. |
| 177 | +- 기존 사용자 변경을 되돌리지 않는다. |
| 178 | +- 테스트가 필요한 변경은 검증 코드와 함께 구현한다. |
| 179 | + |
| 180 | +산출물: |
| 181 | + |
| 182 | +- 코드 변경 |
| 183 | +- 테스트 코드 |
| 184 | +- 계획과 달라진 내용의 설명 |
| 185 | + |
| 186 | +### 6.5 로컬 검증 |
| 187 | + |
| 188 | +구현 후에는 변경 위험에 맞는 검증을 수행한다. |
| 189 | + |
| 190 | +- 컴파일 |
| 191 | +- 단위 테스트 |
| 192 | +- 통합 테스트 |
| 193 | +- API 계약 확인 |
| 194 | +- 데이터 마이그레이션 영향 확인 |
| 195 | +- 성능 주장이 있다면 측정 결과 확인 |
| 196 | + |
| 197 | +테스트를 실행하지 못했다면 이유와 남은 리스크를 명시한다. |
| 198 | + |
| 199 | +### 6.6 PR 작성 |
| 200 | + |
| 201 | +브랜치를 push하고 PR을 만든다. PR에는 AI 사용 자체보다 사람의 판단과 검증 결과를 기록한다. |
| 202 | + |
| 203 | +```markdown |
| 204 | +## AI 보조 작업 기록 |
| 205 | + |
| 206 | +- 사용 범위: 기존 구조 분석, 구현 계획, 테스트 누락 검토 |
| 207 | +- 채택한 제안과 이유: 변경 이벤트를 Outbox에 저장해 후속 작업을 재시도할 수 있도록 함 |
| 208 | +- 기각한 제안과 이유: 요청 시점 이중 쓰기는 부분 실패 복구가 어려워 제외 |
| 209 | +- 실행한 검증: 통합 테스트, 중복 이벤트 테스트 |
| 210 | +- 남은 리스크: 최종적 일관성으로 인한 조회 반영 지연 |
| 211 | +``` |
| 212 | + |
| 213 | +### 6.7 독립 리뷰 |
| 214 | + |
| 215 | +GitHub PR 댓글에 다음과 같이 리뷰를 요청한다. |
| 216 | + |
| 217 | +```text |
| 218 | +@codex review |
| 219 | +``` |
| 220 | + |
| 221 | +특정 관점이 필요하면 리뷰 범위를 명시한다. |
| 222 | + |
| 223 | +```text |
| 224 | +@codex review for transaction boundaries, event duplication, and missing tests |
| 225 | +``` |
| 226 | + |
| 227 | +리뷰 AI는 PR diff와 저장소 `AGENTS.md`의 리뷰 기준을 바탕으로 문제를 찾는다. 리뷰 중에는 코드를 직접 수정하지 않는다. |
| 228 | + |
| 229 | +### 6.8 리뷰 의견 판단 |
| 230 | + |
| 231 | +사람은 리뷰 의견을 무조건 반영하지 않는다. |
| 232 | + |
| 233 | +- 실제 오류인가 |
| 234 | +- 기존 요구사항과 충돌하지 않는가 |
| 235 | +- 복잡도를 불필요하게 높이지 않는가 |
| 236 | +- 추가 테스트로 확인할 수 있는가 |
| 237 | + |
| 238 | +채택하거나 기각한 의견과 이유를 PR에 남긴다. |
| 239 | + |
| 240 | +### 6.9 수정과 최종 검증 |
| 241 | + |
| 242 | +채택한 리뷰 의견만 별도 구현 작업으로 반영한다. |
| 243 | + |
| 244 | +1. 리뷰 의견의 수정 범위를 정의한다. |
| 245 | +2. 구현 AI가 수정한다. |
| 246 | +3. 관련 테스트를 다시 실행한다. |
| 247 | +4. 필요하면 `@codex review`를 다시 요청한다. |
| 248 | +5. 사람이 최종 diff와 테스트 결과를 확인한 뒤 merge한다. |
| 249 | + |
| 250 | +## 7. 자동화와 사람의 판단 경계 |
| 251 | + |
| 252 | +| 단계 | 자동화 가능 여부 | 최종 책임 | |
| 253 | +| --- | --- | --- | |
| 254 | +| 기존 구조 분석 | 가능 | 사람 | |
| 255 | +| 변경 계획 작성 | 가능 | 사람 | |
| 256 | +| 계획 승인 | 자동화하지 않음 | 사람 | |
| 257 | +| 코드 구현 | 가능 | 사람 | |
| 258 | +| 테스트 실행 | 가능 | 사람 | |
| 259 | +| PR 리뷰 요청 | 자동화 가능 | 사람 | |
| 260 | +| 리뷰 의견 채택과 기각 | 자동화하지 않음 | 사람 | |
| 261 | +| merge 결정 | 자동화하지 않음 | 사람 | |
| 262 | + |
| 263 | +Human Approval Gate는 사람이 계획과 리뷰 결과를 실제로 판단할 때 의미가 있다. 단순히 승인 버튼을 누르는 절차로 만들지 않는다. |
| 264 | + |
| 265 | +## 8. 단계별 확장 계획 |
| 266 | + |
| 267 | +### 1단계: 수동 워크플로우 검증 |
| 268 | + |
| 269 | +- 최소 3건의 PR에서 계획 승인, 구현, PR 리뷰, 판단 기록 흐름을 반복한다. |
| 270 | +- 실제로 필요한 기록 항목과 불필요한 항목을 구분한다. |
| 271 | + |
| 272 | +### 2단계: 리뷰 자동화 검토 |
| 273 | + |
| 274 | +- 수동 `@codex review`가 안정적으로 동작하면 Automatic reviews 적용을 검토한다. |
| 275 | +- 자동 리뷰가 사소한 문제보다 운영 리스크를 우선하도록 `AGENTS.md` 리뷰 기준을 조정한다. |
| 276 | + |
| 277 | +### 3단계: Logging Hook 구축 |
| 278 | + |
| 279 | +- Codex Hook으로 도구 실행과 검증 흐름을 작업 단위로 기록한다. |
| 280 | +- 원본 로그는 Git에 커밋하지 않고 사람이 검토한 요약만 PR에 연결한다. |
| 281 | +- 상세 계획은 [`logging-hook-reproducibility-plan.md`](logging-hook-reproducibility-plan.md)를 따른다. |
| 282 | + |
| 283 | +### 4단계: 검증 재현성 확인 |
| 284 | + |
| 285 | +- 작업 시작 commit과 검증 명령을 연결한다. |
| 286 | +- 다른 사람이 같은 기준점에서 검증 명령을 다시 실행할 수 있는지 확인한다. |
| 287 | +- 로그를 이용해 변경 원인이나 검증 누락을 찾은 사례를 남긴다. |
0 commit comments