
AI 에이전트 중심의 디자인 패턴 연구
작성자
김창종
학과 또는 소속(회사명)
디지털콘텐츠학과, 소프트웨어융합학과
이메일
phlnxciws5@khu.ac.kr
조회수
1
평가(좋아요)수
0
댓글수
1
에이전트들이 코드를 더 직관적으로 이해할 수 있도록 하는 데 초점을 맞춘 새로운 아키텍처 프레임워크를 작성했습니다.
제가 깨어 있는 대부분의 시간을 코딩 에이전트를 사용하는 데 쓰는 만큼 아키텍처를 계획해서 에이전트에게 넘기고 돌아가도록 내버려 두는데, 에이전트들이 기본적으로 같은 기능을 하는 객체를 다수 만들어내는 특이한 행동을 자주 취하는 걸 관찰했고 이는 SSOT를 깨뜨리는 등 수많은 문제의 발단이 되었습니다.
에이전트는 단지 LLM을 하네스와 RAG에 연결한 것일 뿐이니까 코드를 좀 더... 벡터 포인트(또는 이 경우에는 자연어)로 '압축 가능한' 형태로 유지하면 에이전트들이 코드를 찾고 읽거나, 자신들이 하려는 작업이 이미 구현되어 있는지 확인하거나, 버그를 찾아 수정하는 데도 더 편리할 것으로 생각하여 이번 연구를 자체적으로 진행해 보았습니다.
# 핵심 개념
기본적인 개념은 각 파일을 정확하게 벡터로 변환할 수 있게 하는 것입니다. 클래스를 작은 조각들로 분해하고 기능을 중심에 두어, 1~2단어 정도의 블록이 그 조각을 충분히 정확하게 표현할 수 있도록 해야 합니다. 스파게티 현상을 피하기 위해, 조각들은 선형으로 정렬되어 직선 '파이프'를 형성합니다, 이들이 상호작용의 그물을 형성하지 않도록 하기 위해서입니다. 즉, 기본적으로 하나의 파이프가 최대 한 개의 파이프만 사용하게 됩니다. 이 파이프는 '인덱스'로 관리되며, 문자 그대로 에이전트가 읽는 책 속의 인덱스처럼 작동합니다. 이떄 인덱스는 실제로 책 인덱스처럼 보여야 하는데 개인적으로는 이것이 에이전트들이 실제 기능을 구현하려는 시도를 막는다고 생각합니다. 조건문(if/switch)을 위한 '브랜치', 새 스레드를 시작하는 '트리거', 리소스를 나타내는... '리소스', 데이터를 나타내는 '레코드', 그리고 로깅을 위한 '장부'. 이 모든 패턴은 각 부분을 몇 마디 단어로 표현할 수 있게 하기 위한 것들이며, 그래서 'Semantic Block Architecture'(SBA)라는 이름이 붙었습니다. 더 좋은 제안이 있다면 공유해 주세요.
규칙을 요약하자면 다음과 같습니다:
## 1. 기본
- 파일 하나에 타입 하나, 타입 하나에 책임 하나.
- 파일명 = 타입명 = 명사구.
- 이름이 단일 명사구로 안 떨어지면 쪼갠다. 단, **반드시 같은 파일에 존재해 하는 것이라면 예외적으로 갈라놓지 않는다.**
- 공개 진입점은 타입당 하나.
- 폴더는 **역할**으로 나눈다. 유형으로 나누지 않는다(`Fragments/`, `Pipelines/` 금지).
## 2. 여덟 유형(패턴)
| 종류 | 접미사 | 하는 일 | 하지 않는 일 | 상한 |
|---|---|---|---|---|
| 인덱스 | `Index` | 요청 → 파이프라인 목차 | 로직, `if`/`for`/`switch` | — |
| 파이프라인 | `Pipeline` | 한 기능의 순서 | 조건 분기, 계산 | 90줄 |
| 분기 | `Branch` | 조건 조건에 따라 다음 파이프라인 고르기 | 계산 | 갈래당 2문장 |
| 파편 | `Fragment` | 계산·검증 (순수 함수) | 상태 변경, `try/catch` | 40줄 |
| 트리거 | `Trigger` | 완료 후 다음 작업 적립 | 스레드 생성, 결과 대기 | 40줄 |
| 자원 | `Resource` | 소켓·풀·큐·카운터 등 살아 있는 상태 | 계산, 판단 | 110줄 |
| 레코드 | 없음 | 오가는 불변 값과 그 조건 | 분기 | — |
| 장부 | `Ledger` | 신고 받아 쌓기 | 판단 | 60줄 |
SBA와 DOD의 차이점은 불변량이 데이터 내부에 존재하고, 함수처럼 작동하는 거대한 선형 파이프라인이 있다는 점입니다. DOD는 이걸 혐오합니다.
절차적 프로그래밍은 조금 더 가깝지만, 불변 조건은 집합체에 내장되어 있고, 파이프를 만들고 교체하는 방식에도 모듈성이 있습니다. 솔직히 말해서, 파이프 안에서는 절차적 프로그래밍과 좀 비슷해 보이긴 해요.
이쯤 되면 SBA가 거대한, 구조화된 안티패턴처럼 보일 수 있지만, 코드가 스스로 문서화되어 있어서 기능을 파악하려면 파이프라인만 잡아서 그 기능을 읽으면 됩니다. 각 단계 사이에 로그를 끼워 넣기만 하면 되니 디버깅도 훨씬 수월하고, 심지어 이렇게 되면 이진 탐색(!)을 디버깅에 도입할 수도 있습니다.
이 방법이 실제로 작동하는지 확인하기 위해, 저는 이전에 만들었던 c# 네트워킹 엔진의 사양을 바탕으로 두 가지 새로운 버전을 만들었습니다. 하나는 통제군이고 다른 하나는 대조군인데, 두 버전 모두 Anthropic의 Claude Opus 5(high)로 생성했습니다. 버전 1(제어)에는 specs.md 링크만 제공했고, 버전 2에는 새로운 규칙과 사양을 함께 제공했습니다.
# 실험 결과
자, 그럼 이게 의도대로 작동하는지는 어떻게 확인할까 고민을 해야 했는데, 우선은 에이전트가 토드를 얼마나 잘 해석하느냐의 척도가 필요하고, 이건 결국 디버깅과 버그가 적은(또는 가능하다면, 없는) 코딩을 위해 필요한 거잖아요?
예전에 생물학자들이 진흙탕 속의 물고기의 수를 추정하기 위해 일정 수를 잡고 놓아준 다음 다시 포획할 때 표시된 물고기의 비를 가지고 알아낸다는 걸 어디서 본 적이 있어서 유사한 실험을 기획했습니다.
만들어진 두 엔진을 가지고 각각 25개씩 코드 리뷰 에이전트를 돌린 다음 수집된 버그를 파악했고, 그 결과는:
## 1. SBA
---
포획 빈도수 분포
| 포획 횟수 | 해당 빈도의 결함 수 | 해당 결함 ID 목록 |
| :---: | :---: | :--- |
| **1회** | **5개** | D8, D10, D14, D18, D21 |
| **2회** | **7개** | D6, D11, D13, D15, D16, D19, D20 |
| **3회** | **2개** | D5, D7 |
| **4회** | **3개** | D4, D12, D17 |
| **5회** | **1개** | D9 |
| **14회** | **1개** | D2 |
| **15회** | **1개** | D3 |
| **18회** | **1개** | D1 |
| **합계** | **21$개** | **총 포획 건수 = 89건** |
### 고유 결함 21종 상세 목록
1. **D1** (18회): `ReassemblyDeliveryPipeline`의 `ConnectionTag` 검증 누락 (Use-After-Free / 슬롯 오배달)
2. **D2** (14회): `FragmentOffsetBoundsFragment` 내 `offset + expected > total` 항등 거짓 (죽은 코드)
3. **D3** (15회): `DatagramOpenPipeline` 2단계 `TryParse` 실패 분기 도달 불가 (죽은 코드)
4. **D4** (4회): `ReassemblyAggregate`/`SecurityAggregate` 저널 필드 수 주석(3개) vs 코드(4개) 불일치
5. **D5** (3회): `ReassemblyExpirySweepPipeline`의 완성 대기 슬롯 조기 만료 회수 (메시지 유실)
6. **D6** (2회): `SealedDatagramSendPipeline` 비정상 플랜 입력 시 `ArgumentOutOfRangeException` 발생
7. **D7** (3회): `UniformFragmentPayloadBytes` 주석의 `null` 반환 표기 오류 (값 형식 `DropReason`)
8. **D8** (1회): `FragmentDuplicateFragment` 64비트 시프트 오버플로 (`1UL << 64 == 1UL`)
9. **D9** (5회): `harness/Program.cs` 주석의 검사 수 불일치 (15개 vs 실제 21개)
10. **D10** (1회): `MessageSplitPlanRecord` 생성자 4대 불변식 미강제
11. **D11** (2회): `ReassemblyProgressRecord.IsComplete` 기본값(`default`)에서 `true` 반환
12. **D12** (4회): `FragmentReceivePipeline.OpenSlot` 내 `!IsValid(lease)` 도달 불가 (죽은 코드)
13. **D13** (2회): `EngineConstantsRecord` X7 관계식 `long.MaxValue` 비교 오류
14. **D14** (1회): `ASYMMETRY-NOTES.md` 천장 경로 크기 산술 오류 (1,386 B vs 1,414 B)
15. **D15** (2회): `DatagramOpenPipeline` 내 `slot == Next` 키 해제 분기 도달 불가 (죽은 코드)
16. **D16** (2회): 연결 회수 시 `PathLimitTable`/`SecurityAssociationTable` 미회수 (자원 누수)
17. **D17** (4회): `DEVIATIONS.md`/`EXTENSION-NOTES.md` 산문 내 과거 세대 수치 잔존
18. **D18** (1회): `ReassemblyArenaResource`의 연결별 D7 최악 예산 미집행
19. **D19** (2회): 재조립 예산 4개 축 거절 사유 산술적 도달 불가 (죽은 코드)
20. **D20** (2회): `SealKeyScheduleExhausted` 거절 사유 산술적 도달 불가 (죽은 코드)
21. **D21** (1회): `DatagramOpenPipeline` 주석의 `MaxSealedDatagramBytes` 평문 버퍼 폭 오설명
---
## 통제군(자유 설계)
---
| 포획 횟수 | 결함 수 | 해당 결함 항목 |
| :---: | :---: | :--- |
| **9회** | **1개** | `Realtime.Assembly.csproj` 주석 모순 ("암호 없다" vs 실제 구현) |
| **8회** | **1개** | `EngineOptions.Validate` 내 $N_{conn}$ 불변식 예외 메시지 논리 역전 |
| **5회** | **1개** | `EngineOptions.Validate` 내 K9 검사의 항진식 조건문 |
| **4회** | **2개** | D4 상한 하향 불변식 미강제, `WriteFragment` 예외 `nameof(datagramDestination)` 오류 |
| **2회** | **5개** | `SealedDatagramIntake.Dispose` 시 자원 누수, `slot < 0` 도달 불가 분기, 거절 사유 분열, `MalformedDatagram` 주석 모순, `Intake` 스크래치 고정 할당 예외 위험 |
| **1회** | **8개** | `LateFragment` 주석 모순, `Intake.Offer` 사유 소거, `NonceSalt` 미사용, `IDisposable` 비대칭, `F=64` 도달 불가, 링버퍼 예산 이중 청구, `DropReason` 헤더 불일치, `PathSizeClamp` null 누락 |
| **합계** | **18개** | **총 누적 포획 건수 = 50 건** |
---
얼핏 보면 SBA를 적용한 버전이 버그가 많아 보일 수 있지만, 버그가 많고 적고의 문제는 버그의 '탐색 난이도'와 '재포획 비율'에 따라 달라지는 것입니다.
수학적으로 이를 분석해 보면:
# ???? [비교 분석 보고서] SBA vs 자유 설계 아키텍처 결함 총량 및 정량적 투명도 평가
---
## 1. 기준 데이터 (버그 검출 및 재포획 데이터 1:1 대조)
25회의 독립 에이전트 코드 리뷰를 통해 수집된 **SBA**와 **자유 설계**의 기초 데이터 대조표입니다.
| 항목 구분 | **SBA** | **자유 설계** | 수학적 비교 및 통계적 의미 |
| :--- | :---: | :---: | :--- |
| **총 에이전트 수 ($K$)** | **25회** | **25회** | 동일한 표본 크기 |
| **관측된 고유 결함 ($S_{\text{obs}}$)** | **21개** | **18개** | SBA가 3개 더 많은 결함 확보 |
| **누적 포획 총건수 ($\sum k \cdot f_k$)** | **89건** (평균 3.56건) | **50건** (평균 2.00건) | SBA의 결함 노출 밀도가 **1.78배 높음** |
| **에이전트 검출 성공률** | **100%** (25/25명 성공) | **64.0%** (16명 성공 / **9명 0개 오판**) | 자유 설계는 결함 은폐도가 높아 36%가 검출 실패 |
| **1회 단독 포획 ($f_1$, Singletons)** | **5개** (23.8%) | **8개** (**44.4%**) | 자유 설계는 단독 발견 희귀 결함 비중이 2배 |
| **2회 포획 ($f_2$, Doubletons)** | **7개** (33.3%) | **5개** (27.8%) | SBA는 2회 재포획된 결함이 더 많음 |
| **희귀도 비율 ($f_1 / f_2$)** | **0.714** ($f_1 < f_2$) | **1.600** ($f_1 > f_2$) | **SBA는 포화 수렴, 자유 설계는 꼬리 발산** |
| **전반부 포획 ($n_1$, 1~12차)** | **20개** | **16개** | 전반부 누적 결함 |
| **후반부 포획 ($n_2$, 13~25차)** | **15개** | **8개** | 후반부 누적 결함 |
| **전·후반 공통 재포획 ($m_2$)** | **14개** | **6개** | 전반부 결함의 후반부 재등장 수 |
| **후반부 재포획 비율 ($m_2 / n_2$)** | **93.3%** ($14/15$) | **75.0%** ($6/8$) | **SBA는 후반부 결함의 93%가 기존 결함** |
| **이질성 계수 ($\hat{\gamma}^2$)** | **1.154** | **0.365** | 상위 결함(18회)의 가시성 집중도 편차 |
---
## 2. 각 방식과 적용 수학적 근거
### 방식 1. Chapman 2-Sample 재포획 모델
- **수학적 공식**:
$$\hat{N}_{\text{Chapman}} = \frac{(n_1 + 1)(n_2 + 1)}{m_2 + 1} - 1, \quad \text{Var}(\hat{N}) = \frac{(n_1 + 1)(n_2 + 1)(n_1 - m_2)(n_2 - m_2)}{(m_2 + 1)^2 (m_2 + 2)}$$
- **수학적 근거**:
- 전반부($n_1$)에 발견된 결함이 후반부($n_2$)에서 다시 잡힌 비율($m_2$)을 통해 소표본 편향을 제거(Chapman, 1951)한 비편향 추정량입니다.
- **SBA**: 후반부 결함 15개 중 14개가 재포획($93.3\%$)되어 표준오차($\pm 0.75$)가 극도로 작고 닫힌 형태를 보입니다.
- **자유 설계**: 후반부 결함 8개 중 6개만 재포획($75.0\%$)되어 표준오차($\pm 2.07$)가 상대적으로 큽니다.
---
### 방식 2. Chao1 비모수 하한 모델
- **수학적 공식**:
$$\hat{N}_{\text{Chao1}} = S_{\text{obs}} + \frac{f_1^2}{2 f_2}, \quad \text{Var}(\hat{N}) = f_2 \left[ \frac{1}{2}\left(\frac{f_1}{f_2}\right)^2 + \left(\frac{f_1}{f_2}\right)^3 + \frac{1}{4}\left(\frac{f_1}{f_2}\right)^4 \right]$$
- **수학적 근거**:
- 코시-슈바르츠 부등식(Cauchy-Schwarz Inequality)에 기반하여 0회 포획 결함($f_0$)의 **이론적 최소 하한선**을 추정합니다.
- **SBA**: $f_1/f_2 = 5/7 = 0.714 \implies f_0 = 1.8$개 (미발견 결함 하한선이 2개 미만).
- **자유 설계**: $f_1/f_2 = 8/5 = 1.600 \implies f_0 = 6.4$개 (미발견 결함 하한선이 6개 이상).
---
### 방식 3. 2차 잭나이프 모델 (Jackknife-2)
- **수학적 공식**:
$$\hat{N}_{\text{Jack2}} = S_{\text{obs}} + f_1 \left(\frac{2K - 3}{K}\right) - f_2 \left(\frac{(K - 2)^2}{K(K - 1)}\right) \quad (K=25)$$
- **수학적 근거**:
- 25개 에이전트 표본에서 하나씩 제거하며 리샘플링하여 $O(1/K^2)$ 차수의 표본 편향을 제거(Burnham & Overton, 1978)한 비모수 모델입니다.
- **SBA**: $f_1=5$가 작아 점추정치 $\hat{N} = 21 + 9.40 - 6.17 = \mathbf{24.2\text{개}}$.
- **자유 설계**: $f_1=8$이 커서 점추정치 $\hat{N} = 18 + 15.04 - 4.41 = \mathbf{28.6\text{개}}$.
---
### 방식 4. Chao $M_h$ 포획 이질성($\hat{\gamma}^2$) 보정 모델
- **수학적 공식**:
$$\hat{N}_{M_h} = S_{\text{obs}} + \frac{f_1^2}{2 f_2} (1 + \hat{\gamma}^2), \quad \hat{\gamma}^2 = \max\left(0, \;\; \frac{S_{\text{obs}} \sum k(k-1)f_k}{\left(\sum k f_k\right)^2} \cdot \frac{K}{K-1} - 1\right)$$
- **수학적 근거**:
- 결함 간 발견 난이도 편차(변동계수 $\hat{\gamma}^2$)를 실측 2차 모멘트로부터 산출하여 단순 하한을 팽창 보정한 모델입니다.
- **SBA**: $\hat{\gamma}^2 = 1.154$ (상위 결함 집중도가 높아 고이질성 보정 적용 $\implies \hat{N} = \mathbf{24.9\text{개}}$).
- **자유 설계**: $\hat{\gamma}^2 = 0.365$ ($\implies \hat{N} = \mathbf{26.7\text{개}}$).
---
### 방식 5. Reed 이중 파레토(Double Pareto) 멱법칙 꼬리 모델
- **수학적 공식**:
$$f_0 = \frac{f_1}{\beta} \cdot \Gamma\left(1 - \frac{1}{\alpha}\right), \quad \hat{N}_{\text{DP}} = S_{\text{obs}} + f_0$$
- **수학적 근거**:
- 소프트웨어 결함 빈도가 멱법칙 롱테일(Shriram et al., 2018; Reed, 2001)을 따를 때, 극미세 엣지 결함의 적분값을 추정합니다.
- **SBA**: 꼬리 지수 $\beta \approx 1.25$로 빠르게 감쇄 $\implies f_0 \approx 4.5$개 ($\hat{N} = \mathbf{25.5\text{개}}$).
- **자유 설계**: 꼬리 지수 $\beta \approx 0.71$로 두텁게 발산 $\implies f_0 \approx 13.0$개 ($\hat{N} = \mathbf{31.0\text{개}}$).
---
### 공통 신뢰구간 공식 (Burnham-Chao Log-transformed 95% CI)
모든 모델에 동일하게 로그 정규 변환 비대칭 신뢰구간을 적용했습니다:
$$C = \exp\left( 1.96 \cdot \sqrt{\ln\left(1 + \frac{\text{Var}(\hat{N})}{(\hat{N} - S_{\text{obs}})^2}\right)} \right), \quad \text{95% CI} = \left[ S_{\text{obs}} + \frac{\hat{N} - S_{\text{obs}}}{C}, \;\; S_{\text{obs}} + (\hat{N} - S_{\text{obs}}) \times C \right]$$
---
## 3. 각 방식에서의 95% 신뢰구간과 점추정치 1:1 비교
### (1) SBA vs 자유 설계 상세 결과표
| 분석 모델 | **SBA 점추정치 ($\hat{N}$)** | **SBA 95% CI** | SBA 발견율 | **자유 설계 점추정치 ($\hat{N}$)** | **자유 설계 95% CI** | 자유 설계 발견율 |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: |
| **방식 1. Chapman 2-Sample** | **21.4개** (SE $\pm 0.75$) | **[ 21개 ~ 25개 ]** | **98.1%** | **20.9개** (SE $\pm 2.07$) | **[ 19개 ~ 28개 ]** | 86.1% |
| **방식 2. Chao1 비모수 하한** | **22.8개** (SE $\pm 2.19$) | **[ 22개 ~ 33개 ]** | **92.1%** | **24.4개** (SE $\pm 3.79$) | **[ 20개 ~ 37개 ]** | 73.8% |
| **방식 3. 2차 잭나이프 (Jackknife-2)** | **24.2개** (SE $\pm 2.05$) | **[ 22개 ~ 31개 ]** | **86.8%** | **28.6개** (SE $\pm 4.12$) | **[ 23개 ~ 41개 ]** | 62.9% |
| **방식 4. Chao $M_h$ (이질성 보정)** | **24.9개** (SE $\pm 4.71$) | **[ 22개 ~ 46개 ]** | **84.3%** | **26.7개** (SE $\pm 4.85$) | **[ 21개 ~ 43개 ]** | 67.4% |
| **방식 5. 이중 파레토 (Double Pareto)** | **25.5개** (SE $\pm 4.35$) | **[ 22개 ~ 46개 ]** | **82.4%** | **31.0개** (SE $\pm 6.24$) | **[ 23개 ~ 50개 ]** | **58.1%** |
---
### (2) 핵심 지표 종합 1:1 대조
| 비교 분석 지표 | **SBA** | **자유 설계** | 구조적 차이 및 해석 |
| :--- | :---: | :---: | :--- |
| **후반부 재포획 비율 ($m_2 / n_2$)** | **93.3%** (15개 중 14개) | **75.0%** (8개 중 6개) | SBA는 기존 결함이 93% 반복 재포획되는 완전 수렴 상태 |
| **이중 파레토 추정 결함 총량** | **약 25.5개** | **약 31.0개** (최대 50개) | 자유 설계 코드베이스의 잠재 결함이 더 많음 |
| **잔여 미발견 결함 수** | **약 4개 내외** (0.4 ~ 4.5개) | **약 13개 내외** (2.9 ~ 13.0개) | 자유 설계에 미지의 버그가 약 3배 많음 |
| **현재 검증 완성도 (발견율)** | **82.4% ~ 98.1%** | **58.1% ~ 86.1%** | SBA는 안정화 완료, 자유 설계는 추가 감사 필수 |
---
## 4. 정량적 투명도(Observability) 배수 산출
SBA가 자유 설계 대비 얼마나 더 결함을 명확하게 드러내고 있는지에 대한 정량적 배수 산출 결과입니다.
| 투명도 세부 척도 | SBA | 자유 설계 | **SBA의 투명도 우위 배수** |
| :--- | :---: | :---: | :---: |
| **1. 결함 노출 밀도** (1회 리뷰당 포획 수) | **3.56건** / 명 | **2.00건** / 명 | **▶ 1.78배 더 잘 보임** |
| **2. 에이전트 탐지율** (0개 오판 억제력) | **100%** (0명 실패) | **64%** (9명 실패) | **▶ 1.56배 더 높은 검출 신뢰도** |
| **3. 결함 은폐 억제력** (미발견 암수 억제) | **잔여 4.5개** | **잔여 13.0개** | **▶ 2.89배 결함 은폐가 적음** |
| **4. 재포획 수렴성** (표준오차 안정성) | **SE $\pm 0.75$** | **SE $\pm 2.07$** | **▶ 2.76배 더 명확한 수렴** |
| **5. 롱테일 희귀 버그 억제력** ($f_1$ 비중) | **23.8%** (5개) | **44.4%** (8개) | **▶ 1.87배 희귀 암수가 적음** |
---
### ???? 최종 종합 결론
$$\mathbf{SBA\text{의 종합 투명도 우위}} = \mathbf{1.78\text{배} \sim 2.89\text{배} \quad (\text{종합 평균 약 } 2.2\text{배})}$$
- **SBA 아키텍처**는 불변식과 파이프라인 구조가 명확히 분리되어 있어, 결함이 발생했을 때 겉으로 쉽게 드러나므로 **결함 노출도는 자유 설계 대비 약 1.8배 높습니다.**
- 반면 **자유 설계 아키텍처**는 결함들이 코드 심층부와 예외 경로에 은폐(Obscure)되어 검토자의 36%가 버그를 놓쳤으며, **SBA는 이러한 심층 결함 은폐 위험을 약 2.9배 낮추어 줍니다.**
- 결론적으로 **SBA는 자유 설계 대비 종합적으로 약 2.2배 더 높은 코드 투명성(Inspectability / Observability)을 제공**합니다.
즉, 적어도 자유 설계에 대해서는 SBA가 커다란 우위를 가지고 있다는 말이 됩니다.
총 오류 추정치도, 코드 리뷰 당 전체 대비 버그의 포획 비율도.
더 연구해 보고 싶지만 일단은 토큰을 전부 소모하여 여기에서 마칩니다. 관심 있는 분들께서 적용해 보신 후 결과를 공유해 주시면 연구에 큰 도움이 될 것 같습니다.
정확한 프롬프트를 원하시는 분들이 계신다면 댓글로 달아두도록 하겠습니다.
제가 깨어 있는 대부분의 시간을 코딩 에이전트를 사용하는 데 쓰는 만큼 아키텍처를 계획해서 에이전트에게 넘기고 돌아가도록 내버려 두는데, 에이전트들이 기본적으로 같은 기능을 하는 객체를 다수 만들어내는 특이한 행동을 자주 취하는 걸 관찰했고 이는 SSOT를 깨뜨리는 등 수많은 문제의 발단이 되었습니다.
에이전트는 단지 LLM을 하네스와 RAG에 연결한 것일 뿐이니까 코드를 좀 더... 벡터 포인트(또는 이 경우에는 자연어)로 '압축 가능한' 형태로 유지하면 에이전트들이 코드를 찾고 읽거나, 자신들이 하려는 작업이 이미 구현되어 있는지 확인하거나, 버그를 찾아 수정하는 데도 더 편리할 것으로 생각하여 이번 연구를 자체적으로 진행해 보았습니다.
# 핵심 개념
기본적인 개념은 각 파일을 정확하게 벡터로 변환할 수 있게 하는 것입니다. 클래스를 작은 조각들로 분해하고 기능을 중심에 두어, 1~2단어 정도의 블록이 그 조각을 충분히 정확하게 표현할 수 있도록 해야 합니다. 스파게티 현상을 피하기 위해, 조각들은 선형으로 정렬되어 직선 '파이프'를 형성합니다, 이들이 상호작용의 그물을 형성하지 않도록 하기 위해서입니다. 즉, 기본적으로 하나의 파이프가 최대 한 개의 파이프만 사용하게 됩니다. 이 파이프는 '인덱스'로 관리되며, 문자 그대로 에이전트가 읽는 책 속의 인덱스처럼 작동합니다. 이떄 인덱스는 실제로 책 인덱스처럼 보여야 하는데 개인적으로는 이것이 에이전트들이 실제 기능을 구현하려는 시도를 막는다고 생각합니다. 조건문(if/switch)을 위한 '브랜치', 새 스레드를 시작하는 '트리거', 리소스를 나타내는... '리소스', 데이터를 나타내는 '레코드', 그리고 로깅을 위한 '장부'. 이 모든 패턴은 각 부분을 몇 마디 단어로 표현할 수 있게 하기 위한 것들이며, 그래서 'Semantic Block Architecture'(SBA)라는 이름이 붙었습니다. 더 좋은 제안이 있다면 공유해 주세요.
규칙을 요약하자면 다음과 같습니다:
## 1. 기본
- 파일 하나에 타입 하나, 타입 하나에 책임 하나.
- 파일명 = 타입명 = 명사구.
- 이름이 단일 명사구로 안 떨어지면 쪼갠다. 단, **반드시 같은 파일에 존재해 하는 것이라면 예외적으로 갈라놓지 않는다.**
- 공개 진입점은 타입당 하나.
- 폴더는 **역할**으로 나눈다. 유형으로 나누지 않는다(`Fragments/`, `Pipelines/` 금지).
## 2. 여덟 유형(패턴)
| 종류 | 접미사 | 하는 일 | 하지 않는 일 | 상한 |
|---|---|---|---|---|
| 인덱스 | `Index` | 요청 → 파이프라인 목차 | 로직, `if`/`for`/`switch` | — |
| 파이프라인 | `Pipeline` | 한 기능의 순서 | 조건 분기, 계산 | 90줄 |
| 분기 | `Branch` | 조건 조건에 따라 다음 파이프라인 고르기 | 계산 | 갈래당 2문장 |
| 파편 | `Fragment` | 계산·검증 (순수 함수) | 상태 변경, `try/catch` | 40줄 |
| 트리거 | `Trigger` | 완료 후 다음 작업 적립 | 스레드 생성, 결과 대기 | 40줄 |
| 자원 | `Resource` | 소켓·풀·큐·카운터 등 살아 있는 상태 | 계산, 판단 | 110줄 |
| 레코드 | 없음 | 오가는 불변 값과 그 조건 | 분기 | — |
| 장부 | `Ledger` | 신고 받아 쌓기 | 판단 | 60줄 |
SBA와 DOD의 차이점은 불변량이 데이터 내부에 존재하고, 함수처럼 작동하는 거대한 선형 파이프라인이 있다는 점입니다. DOD는 이걸 혐오합니다.
절차적 프로그래밍은 조금 더 가깝지만, 불변 조건은 집합체에 내장되어 있고, 파이프를 만들고 교체하는 방식에도 모듈성이 있습니다. 솔직히 말해서, 파이프 안에서는 절차적 프로그래밍과 좀 비슷해 보이긴 해요.
이쯤 되면 SBA가 거대한, 구조화된 안티패턴처럼 보일 수 있지만, 코드가 스스로 문서화되어 있어서 기능을 파악하려면 파이프라인만 잡아서 그 기능을 읽으면 됩니다. 각 단계 사이에 로그를 끼워 넣기만 하면 되니 디버깅도 훨씬 수월하고, 심지어 이렇게 되면 이진 탐색(!)을 디버깅에 도입할 수도 있습니다.
이 방법이 실제로 작동하는지 확인하기 위해, 저는 이전에 만들었던 c# 네트워킹 엔진의 사양을 바탕으로 두 가지 새로운 버전을 만들었습니다. 하나는 통제군이고 다른 하나는 대조군인데, 두 버전 모두 Anthropic의 Claude Opus 5(high)로 생성했습니다. 버전 1(제어)에는 specs.md 링크만 제공했고, 버전 2에는 새로운 규칙과 사양을 함께 제공했습니다.
# 실험 결과
자, 그럼 이게 의도대로 작동하는지는 어떻게 확인할까 고민을 해야 했는데, 우선은 에이전트가 토드를 얼마나 잘 해석하느냐의 척도가 필요하고, 이건 결국 디버깅과 버그가 적은(또는 가능하다면, 없는) 코딩을 위해 필요한 거잖아요?
예전에 생물학자들이 진흙탕 속의 물고기의 수를 추정하기 위해 일정 수를 잡고 놓아준 다음 다시 포획할 때 표시된 물고기의 비를 가지고 알아낸다는 걸 어디서 본 적이 있어서 유사한 실험을 기획했습니다.
만들어진 두 엔진을 가지고 각각 25개씩 코드 리뷰 에이전트를 돌린 다음 수집된 버그를 파악했고, 그 결과는:
## 1. SBA
---
포획 빈도수 분포
| 포획 횟수 | 해당 빈도의 결함 수 | 해당 결함 ID 목록 |
| :---: | :---: | :--- |
| **1회** | **5개** | D8, D10, D14, D18, D21 |
| **2회** | **7개** | D6, D11, D13, D15, D16, D19, D20 |
| **3회** | **2개** | D5, D7 |
| **4회** | **3개** | D4, D12, D17 |
| **5회** | **1개** | D9 |
| **14회** | **1개** | D2 |
| **15회** | **1개** | D3 |
| **18회** | **1개** | D1 |
| **합계** | **21$개** | **총 포획 건수 = 89건** |
### 고유 결함 21종 상세 목록
1. **D1** (18회): `ReassemblyDeliveryPipeline`의 `ConnectionTag` 검증 누락 (Use-After-Free / 슬롯 오배달)
2. **D2** (14회): `FragmentOffsetBoundsFragment` 내 `offset + expected > total` 항등 거짓 (죽은 코드)
3. **D3** (15회): `DatagramOpenPipeline` 2단계 `TryParse` 실패 분기 도달 불가 (죽은 코드)
4. **D4** (4회): `ReassemblyAggregate`/`SecurityAggregate` 저널 필드 수 주석(3개) vs 코드(4개) 불일치
5. **D5** (3회): `ReassemblyExpirySweepPipeline`의 완성 대기 슬롯 조기 만료 회수 (메시지 유실)
6. **D6** (2회): `SealedDatagramSendPipeline` 비정상 플랜 입력 시 `ArgumentOutOfRangeException` 발생
7. **D7** (3회): `UniformFragmentPayloadBytes` 주석의 `null` 반환 표기 오류 (값 형식 `DropReason`)
8. **D8** (1회): `FragmentDuplicateFragment` 64비트 시프트 오버플로 (`1UL << 64 == 1UL`)
9. **D9** (5회): `harness/Program.cs` 주석의 검사 수 불일치 (15개 vs 실제 21개)
10. **D10** (1회): `MessageSplitPlanRecord` 생성자 4대 불변식 미강제
11. **D11** (2회): `ReassemblyProgressRecord.IsComplete` 기본값(`default`)에서 `true` 반환
12. **D12** (4회): `FragmentReceivePipeline.OpenSlot` 내 `!IsValid(lease)` 도달 불가 (죽은 코드)
13. **D13** (2회): `EngineConstantsRecord` X7 관계식 `long.MaxValue` 비교 오류
14. **D14** (1회): `ASYMMETRY-NOTES.md` 천장 경로 크기 산술 오류 (1,386 B vs 1,414 B)
15. **D15** (2회): `DatagramOpenPipeline` 내 `slot == Next` 키 해제 분기 도달 불가 (죽은 코드)
16. **D16** (2회): 연결 회수 시 `PathLimitTable`/`SecurityAssociationTable` 미회수 (자원 누수)
17. **D17** (4회): `DEVIATIONS.md`/`EXTENSION-NOTES.md` 산문 내 과거 세대 수치 잔존
18. **D18** (1회): `ReassemblyArenaResource`의 연결별 D7 최악 예산 미집행
19. **D19** (2회): 재조립 예산 4개 축 거절 사유 산술적 도달 불가 (죽은 코드)
20. **D20** (2회): `SealKeyScheduleExhausted` 거절 사유 산술적 도달 불가 (죽은 코드)
21. **D21** (1회): `DatagramOpenPipeline` 주석의 `MaxSealedDatagramBytes` 평문 버퍼 폭 오설명
---
## 통제군(자유 설계)
---
| 포획 횟수 | 결함 수 | 해당 결함 항목 |
| :---: | :---: | :--- |
| **9회** | **1개** | `Realtime.Assembly.csproj` 주석 모순 ("암호 없다" vs 실제 구현) |
| **8회** | **1개** | `EngineOptions.Validate` 내 $N_{conn}$ 불변식 예외 메시지 논리 역전 |
| **5회** | **1개** | `EngineOptions.Validate` 내 K9 검사의 항진식 조건문 |
| **4회** | **2개** | D4 상한 하향 불변식 미강제, `WriteFragment` 예외 `nameof(datagramDestination)` 오류 |
| **2회** | **5개** | `SealedDatagramIntake.Dispose` 시 자원 누수, `slot < 0` 도달 불가 분기, 거절 사유 분열, `MalformedDatagram` 주석 모순, `Intake` 스크래치 고정 할당 예외 위험 |
| **1회** | **8개** | `LateFragment` 주석 모순, `Intake.Offer` 사유 소거, `NonceSalt` 미사용, `IDisposable` 비대칭, `F=64` 도달 불가, 링버퍼 예산 이중 청구, `DropReason` 헤더 불일치, `PathSizeClamp` null 누락 |
| **합계** | **18개** | **총 누적 포획 건수 = 50 건** |
---
얼핏 보면 SBA를 적용한 버전이 버그가 많아 보일 수 있지만, 버그가 많고 적고의 문제는 버그의 '탐색 난이도'와 '재포획 비율'에 따라 달라지는 것입니다.
수학적으로 이를 분석해 보면:
# ???? [비교 분석 보고서] SBA vs 자유 설계 아키텍처 결함 총량 및 정량적 투명도 평가
---
## 1. 기준 데이터 (버그 검출 및 재포획 데이터 1:1 대조)
25회의 독립 에이전트 코드 리뷰를 통해 수집된 **SBA**와 **자유 설계**의 기초 데이터 대조표입니다.
| 항목 구분 | **SBA** | **자유 설계** | 수학적 비교 및 통계적 의미 |
| :--- | :---: | :---: | :--- |
| **총 에이전트 수 ($K$)** | **25회** | **25회** | 동일한 표본 크기 |
| **관측된 고유 결함 ($S_{\text{obs}}$)** | **21개** | **18개** | SBA가 3개 더 많은 결함 확보 |
| **누적 포획 총건수 ($\sum k \cdot f_k$)** | **89건** (평균 3.56건) | **50건** (평균 2.00건) | SBA의 결함 노출 밀도가 **1.78배 높음** |
| **에이전트 검출 성공률** | **100%** (25/25명 성공) | **64.0%** (16명 성공 / **9명 0개 오판**) | 자유 설계는 결함 은폐도가 높아 36%가 검출 실패 |
| **1회 단독 포획 ($f_1$, Singletons)** | **5개** (23.8%) | **8개** (**44.4%**) | 자유 설계는 단독 발견 희귀 결함 비중이 2배 |
| **2회 포획 ($f_2$, Doubletons)** | **7개** (33.3%) | **5개** (27.8%) | SBA는 2회 재포획된 결함이 더 많음 |
| **희귀도 비율 ($f_1 / f_2$)** | **0.714** ($f_1 < f_2$) | **1.600** ($f_1 > f_2$) | **SBA는 포화 수렴, 자유 설계는 꼬리 발산** |
| **전반부 포획 ($n_1$, 1~12차)** | **20개** | **16개** | 전반부 누적 결함 |
| **후반부 포획 ($n_2$, 13~25차)** | **15개** | **8개** | 후반부 누적 결함 |
| **전·후반 공통 재포획 ($m_2$)** | **14개** | **6개** | 전반부 결함의 후반부 재등장 수 |
| **후반부 재포획 비율 ($m_2 / n_2$)** | **93.3%** ($14/15$) | **75.0%** ($6/8$) | **SBA는 후반부 결함의 93%가 기존 결함** |
| **이질성 계수 ($\hat{\gamma}^2$)** | **1.154** | **0.365** | 상위 결함(18회)의 가시성 집중도 편차 |
---
## 2. 각 방식과 적용 수학적 근거
### 방식 1. Chapman 2-Sample 재포획 모델
- **수학적 공식**:
$$\hat{N}_{\text{Chapman}} = \frac{(n_1 + 1)(n_2 + 1)}{m_2 + 1} - 1, \quad \text{Var}(\hat{N}) = \frac{(n_1 + 1)(n_2 + 1)(n_1 - m_2)(n_2 - m_2)}{(m_2 + 1)^2 (m_2 + 2)}$$
- **수학적 근거**:
- 전반부($n_1$)에 발견된 결함이 후반부($n_2$)에서 다시 잡힌 비율($m_2$)을 통해 소표본 편향을 제거(Chapman, 1951)한 비편향 추정량입니다.
- **SBA**: 후반부 결함 15개 중 14개가 재포획($93.3\%$)되어 표준오차($\pm 0.75$)가 극도로 작고 닫힌 형태를 보입니다.
- **자유 설계**: 후반부 결함 8개 중 6개만 재포획($75.0\%$)되어 표준오차($\pm 2.07$)가 상대적으로 큽니다.
---
### 방식 2. Chao1 비모수 하한 모델
- **수학적 공식**:
$$\hat{N}_{\text{Chao1}} = S_{\text{obs}} + \frac{f_1^2}{2 f_2}, \quad \text{Var}(\hat{N}) = f_2 \left[ \frac{1}{2}\left(\frac{f_1}{f_2}\right)^2 + \left(\frac{f_1}{f_2}\right)^3 + \frac{1}{4}\left(\frac{f_1}{f_2}\right)^4 \right]$$
- **수학적 근거**:
- 코시-슈바르츠 부등식(Cauchy-Schwarz Inequality)에 기반하여 0회 포획 결함($f_0$)의 **이론적 최소 하한선**을 추정합니다.
- **SBA**: $f_1/f_2 = 5/7 = 0.714 \implies f_0 = 1.8$개 (미발견 결함 하한선이 2개 미만).
- **자유 설계**: $f_1/f_2 = 8/5 = 1.600 \implies f_0 = 6.4$개 (미발견 결함 하한선이 6개 이상).
---
### 방식 3. 2차 잭나이프 모델 (Jackknife-2)
- **수학적 공식**:
$$\hat{N}_{\text{Jack2}} = S_{\text{obs}} + f_1 \left(\frac{2K - 3}{K}\right) - f_2 \left(\frac{(K - 2)^2}{K(K - 1)}\right) \quad (K=25)$$
- **수학적 근거**:
- 25개 에이전트 표본에서 하나씩 제거하며 리샘플링하여 $O(1/K^2)$ 차수의 표본 편향을 제거(Burnham & Overton, 1978)한 비모수 모델입니다.
- **SBA**: $f_1=5$가 작아 점추정치 $\hat{N} = 21 + 9.40 - 6.17 = \mathbf{24.2\text{개}}$.
- **자유 설계**: $f_1=8$이 커서 점추정치 $\hat{N} = 18 + 15.04 - 4.41 = \mathbf{28.6\text{개}}$.
---
### 방식 4. Chao $M_h$ 포획 이질성($\hat{\gamma}^2$) 보정 모델
- **수학적 공식**:
$$\hat{N}_{M_h} = S_{\text{obs}} + \frac{f_1^2}{2 f_2} (1 + \hat{\gamma}^2), \quad \hat{\gamma}^2 = \max\left(0, \;\; \frac{S_{\text{obs}} \sum k(k-1)f_k}{\left(\sum k f_k\right)^2} \cdot \frac{K}{K-1} - 1\right)$$
- **수학적 근거**:
- 결함 간 발견 난이도 편차(변동계수 $\hat{\gamma}^2$)를 실측 2차 모멘트로부터 산출하여 단순 하한을 팽창 보정한 모델입니다.
- **SBA**: $\hat{\gamma}^2 = 1.154$ (상위 결함 집중도가 높아 고이질성 보정 적용 $\implies \hat{N} = \mathbf{24.9\text{개}}$).
- **자유 설계**: $\hat{\gamma}^2 = 0.365$ ($\implies \hat{N} = \mathbf{26.7\text{개}}$).
---
### 방식 5. Reed 이중 파레토(Double Pareto) 멱법칙 꼬리 모델
- **수학적 공식**:
$$f_0 = \frac{f_1}{\beta} \cdot \Gamma\left(1 - \frac{1}{\alpha}\right), \quad \hat{N}_{\text{DP}} = S_{\text{obs}} + f_0$$
- **수학적 근거**:
- 소프트웨어 결함 빈도가 멱법칙 롱테일(Shriram et al., 2018; Reed, 2001)을 따를 때, 극미세 엣지 결함의 적분값을 추정합니다.
- **SBA**: 꼬리 지수 $\beta \approx 1.25$로 빠르게 감쇄 $\implies f_0 \approx 4.5$개 ($\hat{N} = \mathbf{25.5\text{개}}$).
- **자유 설계**: 꼬리 지수 $\beta \approx 0.71$로 두텁게 발산 $\implies f_0 \approx 13.0$개 ($\hat{N} = \mathbf{31.0\text{개}}$).
---
### 공통 신뢰구간 공식 (Burnham-Chao Log-transformed 95% CI)
모든 모델에 동일하게 로그 정규 변환 비대칭 신뢰구간을 적용했습니다:
$$C = \exp\left( 1.96 \cdot \sqrt{\ln\left(1 + \frac{\text{Var}(\hat{N})}{(\hat{N} - S_{\text{obs}})^2}\right)} \right), \quad \text{95% CI} = \left[ S_{\text{obs}} + \frac{\hat{N} - S_{\text{obs}}}{C}, \;\; S_{\text{obs}} + (\hat{N} - S_{\text{obs}}) \times C \right]$$
---
## 3. 각 방식에서의 95% 신뢰구간과 점추정치 1:1 비교
### (1) SBA vs 자유 설계 상세 결과표
| 분석 모델 | **SBA 점추정치 ($\hat{N}$)** | **SBA 95% CI** | SBA 발견율 | **자유 설계 점추정치 ($\hat{N}$)** | **자유 설계 95% CI** | 자유 설계 발견율 |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: |
| **방식 1. Chapman 2-Sample** | **21.4개** (SE $\pm 0.75$) | **[ 21개 ~ 25개 ]** | **98.1%** | **20.9개** (SE $\pm 2.07$) | **[ 19개 ~ 28개 ]** | 86.1% |
| **방식 2. Chao1 비모수 하한** | **22.8개** (SE $\pm 2.19$) | **[ 22개 ~ 33개 ]** | **92.1%** | **24.4개** (SE $\pm 3.79$) | **[ 20개 ~ 37개 ]** | 73.8% |
| **방식 3. 2차 잭나이프 (Jackknife-2)** | **24.2개** (SE $\pm 2.05$) | **[ 22개 ~ 31개 ]** | **86.8%** | **28.6개** (SE $\pm 4.12$) | **[ 23개 ~ 41개 ]** | 62.9% |
| **방식 4. Chao $M_h$ (이질성 보정)** | **24.9개** (SE $\pm 4.71$) | **[ 22개 ~ 46개 ]** | **84.3%** | **26.7개** (SE $\pm 4.85$) | **[ 21개 ~ 43개 ]** | 67.4% |
| **방식 5. 이중 파레토 (Double Pareto)** | **25.5개** (SE $\pm 4.35$) | **[ 22개 ~ 46개 ]** | **82.4%** | **31.0개** (SE $\pm 6.24$) | **[ 23개 ~ 50개 ]** | **58.1%** |
---
### (2) 핵심 지표 종합 1:1 대조
| 비교 분석 지표 | **SBA** | **자유 설계** | 구조적 차이 및 해석 |
| :--- | :---: | :---: | :--- |
| **후반부 재포획 비율 ($m_2 / n_2$)** | **93.3%** (15개 중 14개) | **75.0%** (8개 중 6개) | SBA는 기존 결함이 93% 반복 재포획되는 완전 수렴 상태 |
| **이중 파레토 추정 결함 총량** | **약 25.5개** | **약 31.0개** (최대 50개) | 자유 설계 코드베이스의 잠재 결함이 더 많음 |
| **잔여 미발견 결함 수** | **약 4개 내외** (0.4 ~ 4.5개) | **약 13개 내외** (2.9 ~ 13.0개) | 자유 설계에 미지의 버그가 약 3배 많음 |
| **현재 검증 완성도 (발견율)** | **82.4% ~ 98.1%** | **58.1% ~ 86.1%** | SBA는 안정화 완료, 자유 설계는 추가 감사 필수 |
---
## 4. 정량적 투명도(Observability) 배수 산출
SBA가 자유 설계 대비 얼마나 더 결함을 명확하게 드러내고 있는지에 대한 정량적 배수 산출 결과입니다.
| 투명도 세부 척도 | SBA | 자유 설계 | **SBA의 투명도 우위 배수** |
| :--- | :---: | :---: | :---: |
| **1. 결함 노출 밀도** (1회 리뷰당 포획 수) | **3.56건** / 명 | **2.00건** / 명 | **▶ 1.78배 더 잘 보임** |
| **2. 에이전트 탐지율** (0개 오판 억제력) | **100%** (0명 실패) | **64%** (9명 실패) | **▶ 1.56배 더 높은 검출 신뢰도** |
| **3. 결함 은폐 억제력** (미발견 암수 억제) | **잔여 4.5개** | **잔여 13.0개** | **▶ 2.89배 결함 은폐가 적음** |
| **4. 재포획 수렴성** (표준오차 안정성) | **SE $\pm 0.75$** | **SE $\pm 2.07$** | **▶ 2.76배 더 명확한 수렴** |
| **5. 롱테일 희귀 버그 억제력** ($f_1$ 비중) | **23.8%** (5개) | **44.4%** (8개) | **▶ 1.87배 희귀 암수가 적음** |
---
### ???? 최종 종합 결론
$$\mathbf{SBA\text{의 종합 투명도 우위}} = \mathbf{1.78\text{배} \sim 2.89\text{배} \quad (\text{종합 평균 약 } 2.2\text{배})}$$
- **SBA 아키텍처**는 불변식과 파이프라인 구조가 명확히 분리되어 있어, 결함이 발생했을 때 겉으로 쉽게 드러나므로 **결함 노출도는 자유 설계 대비 약 1.8배 높습니다.**
- 반면 **자유 설계 아키텍처**는 결함들이 코드 심층부와 예외 경로에 은폐(Obscure)되어 검토자의 36%가 버그를 놓쳤으며, **SBA는 이러한 심층 결함 은폐 위험을 약 2.9배 낮추어 줍니다.**
- 결론적으로 **SBA는 자유 설계 대비 종합적으로 약 2.2배 더 높은 코드 투명성(Inspectability / Observability)을 제공**합니다.
즉, 적어도 자유 설계에 대해서는 SBA가 커다란 우위를 가지고 있다는 말이 됩니다.
총 오류 추정치도, 코드 리뷰 당 전체 대비 버그의 포획 비율도.
더 연구해 보고 싶지만 일단은 토큰을 전부 소모하여 여기에서 마칩니다. 관심 있는 분들께서 적용해 보신 후 결과를 공유해 주시면 연구에 큰 도움이 될 것 같습니다.
정확한 프롬프트를 원하시는 분들이 계신다면 댓글로 달아두도록 하겠습니다.
AI 에이전트 중심의 디자인 패턴 연구
조회수
1
평가(좋아요)수
0
댓글수
1
게시 : 2026년 08월 30일
-
김창종 2026-08-30 02:02세계 최초 성공 사례인 것 같은데... 좀 더 알아본 다음 반영하겠습니다

김창종
디지털콘텐츠학과, 소프트웨어융합학과
phlnxciws5@khu.ac.kr
AI 에이전트 중심의 디자인 패턴 연구
조회수
1
평가(좋아요)수
0
댓글수
1
게시 : 2026-08-30
Member
김창종
Keyword
디자인 패턴, 소프트웨어 아키텍처
수상여부
- 인공지능
- 기타
