§ 1 — WORK

증상에서 결정까지

모든 항목을 증상 → 원인 → 결정 → 결과 순서로 적고, 확인할 수 있는 링크를 붙였습니다.

W01 · 2026.01 – 2026.03

MIT — Meeting-based organizational knowledge

  • LangGraph
  • Function Calling
  • HITL
  • FastAPI
  • Neo4j
증상
회의록은 금방 현재 맥락과 어긋납니다. 회의와 결정 사항을 추적하는 에이전트가 필요했지만, 에이전트가 팀원 초대나 회의 삭제처럼 데이터를 바꾸는 일을 마음대로 하면 되돌리기 어렵습니다.
원인 · 판단
Planning/Executing 구조에 evaluator 게이트까지 두니 응답이 느려지고 컨텍스트가 복잡해졌습니다. 에이전트의 자율성은 모델보다, 도구를 어떤 단위로 열어 주고 언제 다시 판단하게 하느냐에 달려 있었습니다.
결정
ReAct 구조로 바꾸고, 데이터를 바꾸는 도구 호출에만 사람의 승인(HITL) 게이트를 뒀습니다. 매번 현재 시각을 묻던 도구 호출은 없애고, 시스템 프롬프트에 현재 시각을 넣었습니다. 팀에 도메인 용어집도 제안했습니다.
결과
에이전트 파트를 맡아 최종 발표까지 마쳤고, 프로젝트가 끝난 뒤에는 LLM-as-a-Judge로 프롬프트를 정량 평가했습니다.

W02 · 2026.07

One cache file, two different Codex products

  • Debugging
  • Rust
  • Caching
  • Open source
증상
같은 설정인데 Codex 서브에이전트 도구가 어떤 세션에서는 보이고 어떤 세션에서는 사라졌습니다.
원인 · 판단
같은 바이너리를 쓰는 두 프로세스가 originator 값 때문에 서로 다른 모델 카탈로그를 받고, 캐시 파일 하나를 번갈아 덮어쓰고 있었습니다. 캐시 키에 어느 쪽 요청인지 구분하는 값이 빠져 있었던 거예요.
결정
증상 보고(#33559)에서 멈추지 않고, 원인을 좁혀 별도 이슈(#33593)로 정리했습니다. 이 상태가 만들어지기까지의 PR 7개도 거슬러 올라가 확인했습니다.
결과
재현 방법, 원인, 수정 방향을 담은 이슈와 devlog 글.

W03 · 2023.03 – now

RPM — Rapid node Package Manager

  • Rust
  • CLI
  • Package resolution
  • Spec-driven
증상
Node 패키지 매니저가 실제로 무엇을 하는지, 직접 만들어 보지 않으면 알 수 없었습니다.
원인 · 판단
설치, 의존성 해석, 스크립트 실행을 Rust로 하나씩 구현하면서, 동작을 먼저 명세로 고정해 두지 않으면 변경이 쌓일수록 흔들린다는 걸 배웠습니다.
결정
워크스페이스 lockfile 같은 동작을 스펙 문서로 먼저 정의하고, 검증 게이트와 에이전트 기반 개발 흐름을 이 저장소에서 실험합니다.
결과
2023년부터 이어 온, 가장 오래된 개인 프로젝트.

W04 · 2022 – 2026

socket-store / react-socket-store

  • TypeScript
  • React
  • WebSocket
  • npm
증상
React에서 WebSocket 메시지를 상태로 다루는 코드가 컴포넌트마다 흩어져 있었습니다.
원인 · 판단
프레임워크와 무관한 메시지 처리와 React 연결부를 한 패키지에 섞으면 둘 다 바꾸기 어려워집니다.
결정
코어(socket-store)와 React 어댑터(react-socket-store)로 경계를 나누고, 구독은 useSyncExternalStore로 연결했습니다. 버전 호환성 문서도 따로 두었습니다.
결과
npm에 배포한 라이브러리 두 개와 문서 사이트.

오픈소스

실험과 팀 프로젝트