지식을 쌓기만 하면 되는 걸까? — AKM이 실제로 "꺼내지는지" 재는 평가 시스템 만들기

평가 시리즈 (1/2) — 이번 편은 평가 도구를 만든 과정입니다. 실제로 돌려서 나온 점수와 발견은 [사례 5편]에서 이어집니다. 아직 측정은 시작하지 않았습니다.

소개

시도하고자 했던 것과 그 이유를 알려주세요.

1~3편에서 AKM에 지식을 쌓았습니다. 리서치를 인테이크하고, 지식 노트로 컴파일하고, 실패를 Learn Back으로 환류하고, 설치 프로젝트로 전 레이어를 돌려봤습니다.

그런데 4편을 준비하면서 계속 걸리는 게 있었습니다.

"이거 실제로 쓰이고 있나?"

노트는 늘어나는데, 정작 에이전트가 답할 때 그 노트를 여는지는 확인한 적이 없습니다. 답이 맞아도 그게 저장소에서 나온 건지 모델이 원래 알던 건지 구분이 안 됩니다. 후자라면 저장소는 아무 일도 안 한 겁니다.

마침 시험대가 생겼습니다. 이번 주에 track-me라는 별도 프로젝트(가족 안전 위치추적 앱)를 이 AKM에 붙였습니다. 코드는 apps/track-me에, 지식은 AKM에 두고, 코드 저장소의 AGENTS.md에 "지식은 저 폴더를 봐라"는 포인터만 심었습니다.

그러면 자연스럽게 질문이 생깁니다.

포인터를 타고 들어가서 답하는 것이, AKM을 직접 열고 답하는 것만큼 잘 되는가?

이걸 재려면 같은 질문을 두 곳에서 묻고 비교하면 됩니다. 그래서 이번 편은 그 비교 실험의 자를 만드는 이야기입니다.

진행 방법

어떤 도구를 사용했고, 어떻게 활용하셨나요?

도구: Claude Cowork(로컬 폴더 연결) · AKM 저장소 · openpyxl(결과 기록지)

① 배경 — 프로젝트를 AKM에 붙이기

먼저 track-me를 AKM에 편입시켰습니다.

앞으로 이 프로젝트의 지식관리는 다음 폴더에서 진행하도록 지침에 명시해줘.
자료 조사, 보고서 작성 등의 지식관리체계를 'akm-week1' 폴더의 지침을 참고하여
'akm-week1' 폴더 하위에 이 프로젝트를 구분지을 수 있도록 구성하도록 한다.
나중에 'akm-week1' 폴더를 참조하는 다른 프로젝트에서도 지식을 공유할 수 있다.
다만, 소스코드나 실제 구현 작업은 이 프로젝트의 root 폴더에서 하게 된다.

여기서 첫 설계 결정이 나왔습니다. 프로젝트별로 폴더를 가르지 않기로 했습니다.

레이어

처리

이유

20-knowledge 50-procedures 등 공유 레이어

평평하게 유지 + frontmatter usedBy: [track-me]

다른 프로젝트가 track-me/ 폴더를 뒤지지 않고도 찾아야 함

00-inbox 60-actions/runs 80-outputs

track-me/ 하위폴더

재사용할 일이 없음

실제로 이 결정이 맞는지도 나중에 평가 문항으로 넣었습니다. (캡처 1: 하이브리드 스코핑 구조)

② 지식이 실제로 승격되는지 먼저 확인

track-me 작업(모바일 백그라운드 위치추적 조사, 체류지점 압축 알고리즘 설계)에서 나온 지식을 공유 레이어로 올렸습니다.

지식관리로 넘어가야 할 지식이 있는지 점검하자.

ROUTER 트리를 타고 4건이 승격됐습니다.

  • 20-knowledge/techniques/stay-point-detection — 위치 시계열 압축 기법

  • 50-procedures/platform-ceiling-spike — 플랫폼 제약 측정 절차

  • 40-memory/verification-rules에 2줄 추가

  • 30-context/projects/track-me에 설계 결정 9건

그리고 이 과정에서 인박스 7일 기한을 4일 넘긴 노트 2건을 발견했습니다. 2편에서 "같은 패턴이 반복될 가능성이 높다"고 스스로 적어둔 병목이 13일 만에 재발한 겁니다. 70-evaluation/failure-patterns/에 기록하고, 주간 트리아지 스케줄 작업을 걸었습니다. (제안까지만 자동, 승격은 사람이 — 2편의 열린 질문에서 내린 판단을 유지)

③ 질문 설계 — "거리" 축으로 5 카테고리

현재까지 진행된 내용을 점검하고 AKM 지식관리와 관련하여 어느 정도 품질이 나올지
가늠하기 위한 질문 목록을 5 가지 카테고리로 구분하여 작성해줘.
동일한 질문을 AKM 지식관리 프로젝트 내부에서 질문하고 또, 지금 이 프로젝트 내부에서
질문하여 비교하며 보려한다. 이 프로젝트에 특화된 질문과 범용적인 질문 그리고,
이 프로젝트와는 상관없는 질문 영역별로 5가지 카테고리를 만드는 방법을 고민하여 작성해보자.
모호하거나 확인이 필요한 사항은 먼저 문의해줘.

"특화 / 범용 / 무관"이라는 3점을 5단계로 벌리되, 각 카테고리가 서로 다른 실패 모드를 겨냥하도록 배치했습니다.

카테고리

거리

겨냥하는 실패

C1

프로젝트 고유 사실

최근접

프로젝트 노트가 부실해 AKM만으론 답 못함

C2

승격된 범용 지식

중간

어댑터가 공유 레이어에 도달 못함

C3

도메인 범용

원거리

지식이 프로젝트 문맥 없이는 안 읽힘

C4

AKM 시스템 자체

직교

지침이 규칙 문서까지 연결 안 됨

C5

완전 무관

최원거리

오염 — 무관한 데 track-me를 끌어옴

여기가 이 설계의 핵심입니다. 그냥 거리순으로 늘어놓으면 답변 두 뭉치를 놓고도 뭐가 문제인지 알 수 없습니다. 그래서 "같아야 정상인 구간"과 "달라야 정상인 구간"을 미리 갈라뒀습니다.

  • C1 — track-me 세션이 더 상세한 게 정상(코드 스펙까지 봄)

  • C2 — 차이가 나면 안 됨. 벌어지면 그게 곧 어댑터 고장

  • C5 — track-me가 한 글자라도 나오면 오염

④ 첫 번째 실패 — 지시어

문항을 만들고 나서 이런 지적을 받았습니다.

질문 내용에 보니 'C1-1. 이 앱에서 보호자와 피보호자의 인증 방식이 서로 다릅니다.
각각 어떻게 되어 있고, 왜 그렇게 정했나요?'의 문항이 있다.
이 문항을 akm과 이 프로젝트에서 물어볼 때, '이 앱'이 무엇인지 알 수 있는가?
질문이 잘못 만들어진 것이 아닌지 점검해보자.

맞았습니다. track-me 폴더에서 물으면 "이 앱"이 자동으로 해소되지만, AKM 폴더에서 물으면 가리킬 대상이 없습니다. AKM은 앱이 아니니까요.

그러면 같은 질문이 두 조건에서 서로 다른 것을 측정하게 되어 비교가 깨집니다. 게다가 지시 대상이 모호할 때 되묻는 것이 올바른 행동인데, 채점표에서는 도달 0점이 되어 정상 행동에 벌을 주게 됩니다.

이어서 이런 질문이 왔습니다.

아니면 오히려 이렇게 물어보아 '이 앱'이 무엇인지 찾아가는 경로까지 검증이 될 수 있을까?

좋은 직관이지만 한 문항에 섞으면 안 된다고 판단했습니다. 낮은 점수가 나왔을 때 "지시어를 못 푼 건지, 결정을 못 꺼낸 건지" 구분할 수 없고, 고칠 곳이 서로 다르기 때문입니다. 그리고 조건 B에는 애초에 모호함이 없어서 구조적으로 조건 A 전용이 됩니다.

그래서 탐색 문항 P로 따로 뗐습니다. 15문항 밖, 조건 A 전용, 별도 세션. 채점 기준에서 가장 중요한 건 "되묻기 = 만점"입니다.

⑤ 두 번째 실패 — 한쪽이 구조적으로 감점되는 채점표

최종으로 'AKM 지식관리 품질 평가'문서를 점검해줘.

이 점검에서 더 큰 결함이 나왔습니다. 필수 요소로 적어둔 항목 중 일부가 코드 저장소에만 있었습니다.

문항

필수로 적은 요소

실제 위치

조건 A

C1-1

"피보호자 토큰은 조회 권한 없음"

docs/specs/api.md

도달 불가

C1-3

"1년치 약 10MB"

docs/specs/history.md

도달 불가

조건 A가 아무리 잘해도 만점이 불가능한 채점표였습니다. 가점으로 옮겼습니다.

이어서 결함 두 개를 더 찾았습니다.

가점이 무의미했습니다. "축2에 +0.5, 상한 3"인데 필수 요소를 다 채우면 이미 3점이라 가점이 흡수됩니다. → 점수에서 빼고 ✚ 개수로 따로 셉니다.

경계 축이 변별력을 깎고 있었습니다. C2·C3에선 경계 위반이 거의 안 일어나 대부분 만점입니다. 총점 135 중 45점이 상수처럼 붙고, 정작 C5에서 터진 오염이 3점 차이로 묻힙니다. 오염은 "몇 점"이 아니라 "있었나 없었나"입니다. → 점수에서 빼고 플래그로. 총점 135 → 90.

⑥ 결과 기록지를 엑셀로

결과지를 기록할 xlsx 파일을 만들어주세요.

수식으로 자동 집계되고 입력 검증이 걸린 워크북을 만들었습니다. (캡처 2: 집계 시트 — 카테고리별 점수·차이·플래그·위험신호)

여기서 또 빠진 게 드러났습니다.

질문에 대한 A, B의 응답도 적어야 하는지 점검하고 필요하다면 엑셀시트에 추가해줘.

프로토콜 문서에는 "답변 전문과 읽은 파일 목록을 기록하라"고 적어놓고 정작 엑셀에는 적을 곳이 없었습니다. 응답 시트(31행)를 추가했습니다.

그리고 열 이름이 안 통한다는 지적도 받았습니다.

'읽은 파일 (도구 로그)', '웹검색','채점 메모'는 무엇을 이야기하는지 잘 모르겠다.
'A 도달','A 정확','A ✚','A 경계'도 무엇인지 잘 모르겠다.

→ 헤더 아래에 설명 행과 예시 행을 넣고, 측정방법 시트를 맨 앞에 새로 만들었습니다. 특히 "도구 로그 보는 법"을 화면 조작 단위로 적었습니다 — 답변 위쪽 접힌 줄을 펼치면 실제로 연 파일 경로가 보이고, 그게 도달 점수의 유일한 근거입니다.

⑦ 덤으로 잡은 버그

설명 문구 중에 = 도달 + 정확 (자동 계산)이 있었는데, openpyxl은 =로 시작하는 문자열을 무조건 수식으로 저장합니다. Excel이 파일 손상 경고를 띄우는 경로입니다. 출고 전 전수 스캔에서 잡혔습니다.

python

bad = [(ws.title, c.coordinate, c.value)
       for ws in wb.worksheets for row in ws.iter_rows() for c in row
       if c.data_type == "f"]
# 의도한 수식 목록과 대조 — 예상 밖 항목이 있으면 출고 금지

그리고 수식이 에러 없이 계산되는 것과 맞는 값을 끌어오는 것은 다르므로, 샘플 데이터를 넣고 기대값과 대조했습니다.

C1을 A=(2,2) B=(3,3)으로 채움 → 기대: A=12 B=18 차이=6
오염 플래그 1건, 위험신호 3종이 각각 잡히는지
빈 양식에서 소계가 0이 아니라 '빈칸'으로 보이는지

전부 일치했습니다.

결과와 배운 점

배운 점과 나만의 꿀팁을 알려주세요.

이번 편에서 만든 것

산출물

내용

질문지 + 채점기준 (md)

5 카테고리 15문항 + 탐색 문항 P, 정답 근거·필수 요소·해석표

결과 기록지 (xlsx)

6개 시트 — 측정방법 / 기록 / 응답 / 집계 / 문항 / 채점기준

채점 체계

도달 + 정확 (90점) · 가점은 개수 · 경계는 플래그

꿀팁 ①: 질문지는 반드시 제3자가 읽어야 한다

이번에 나온 결함 7개 중 2개는 만든 쪽이 아니라 읽는 쪽에서 나왔습니다. "이 앱이 뭔지 알 수 있나"와 "열 이름이 무슨 뜻인지 모르겠다" 둘 다 그렇습니다. 만든 사람은 문맥을 알고 있어서 절대 안 보이는 종류입니다.

꿀팁 ②: "같아야 정상"과 "달라야 정상"을 미리 갈라둘 것

A/B 비교를 설계할 때 가장 쉬운 실수가 그냥 두 결과를 나란히 놓는 것입니다. 그러면 차이가 나도 좋은 건지 나쁜 건지 판단할 수 없습니다. 카테고리마다 예상 방향을 먼저 적어두면, 결과표가 그대로 진단표가 됩니다.

꿀팁 ③: 정답지를 저장소 안에 두지 말 것

이 질문지를 AKM 안에 넣으면 평가받는 에이전트가 정답을 발견할 수 있고, 더 나쁘게는 자기가 테스트받는 중임을 알게 되어 행동이 바뀝니다. 그래서 질문지와 기록지는 저장소 밖에 두고, 결과 요약만 70-evaluation/에 남깁니다. (이 사례글도 그래서 15문항을 나열하지 않았습니다)

시행착오

측정 조건을 착각할 뻔했습니다. 처음에는 작업하던 대화창에서 그냥 물어보려 했는데, 그 대화에는 답이 이미 전부 들어 있습니다. 반드시 새 세션이어야 하고, "AKM 참고해서" 같은 힌트도 금지입니다 — 지침이 스스로 작동하는지가 측정 대상이니까요.

한 문항씩 새 대화라는 제약도 뒤늦게 넣었습니다. 특히 같은 노트를 쓰는 문항 쌍 (C2-1↔C2-2, C3-1↔C3-2)을 연달아 물으면 두 번째의 도달 점수가 자동으로 만점이 됩니다.

도움이 필요한 부분

채점자 편향을 어디까지 통제해야 할지 아직 자신이 없습니다. 지금은 "응답 시트의 조건 열을 숨기고 채점"까지만 넣었는데, 완전한 블라인드(순서 무작위화)까지 가면 실행 부담이 커집니다. 가족 규모의 개인 프로젝트에서 어느 선이 적절한지 의견을 듣고 싶습니다.

본질적 한계도 있습니다. 한 번 측정하면 채점자가 답을 알게 되고 노트도 그에 맞춰 개선됩니다. 2회차부터는 "저장소가 좋아진 것"과 "이 15문항에 최적화된 것"이 섞입니다. 문항 일부를 교체하는 것 말고 더 나은 방법이 있을지 궁금합니다.

앞으로의 계획

[사례 5편]에서 실제로 돌립니다.

  • 조건 A(akm-week1 단독 세션)와 조건 B(track-me 단독 세션)에서 각 15문항 + P 1문항

  • 총 31개 응답 수집 → 블라인드 채점 → 집계

  • 가장 궁금한 것: C2에서 두 조건이 갈리는가. 갈리면 어댑터가 작동하지 않는다는 뜻이고, "포인터만 심으면 지식이 공유된다"는 이번 주 설계 전체가 흔들립니다

  • 그리고 도달 0점인데 정확 3점이 몇 건 나오는가. 이게 많으면 저장소 자체의 필요성을 다시 봐야 합니다

결과가 좋든 나쁘든 그대로 공유하겠습니다. 나쁘게 나오면 그게 곧 Learn Back 재료입니다.

도움 받은 글 (옵션)

  • deck6ix님의 AKM(Agent Knowledge Management) — 이 시리즈 전체의 바탕

  • [사례 1편] AKM으로 리서치 → 검증 → 학습 루프 돌려보기

  • [사례 2편] 온톨로지 5부작을 AKM에 인테이크하기

  • [사례 3편] 밀린 계획 청산, 그리고 설치 프로젝트로 AKM 전 레이어 돌리기

  • Karpathy의 LLM Wiki 패턴 — AKM이 지식 레이어로 채택한 원형

1
3개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만