← /log
2026-04-12

DevLog

2,173 words·raw from wai-vault/02-DevLog

2026-04-12 DevLog

세션 요약

M0M2 (Vite 패치 / subprocessors / 보안 / 500줄 부채) 전부 이전 세션에서 이미 완료 확인. M3M10, M12 PIPA 도 이미 구현 확인. TODO.md 2개 대량 갱신.

뉴런해자 완결 (신규 코드)

항목내용파일
뉴런해자-2승격 자동 추천 API (GET /neuron/promote/suggest)neuron-scope.js
뉴런해자-3NeuronBrowser 승격 추천 카드 + scope 승격 핸들러NeuronBrowser.jsx
뉴런해자-4구독 해지 뉴런 삭제 경고 모달BillingPage.jsx

API 추가

  • neuronBrowseAll() — 전 scope 뉴런 열람
  • neuronPromote() — scope 간 승격
  • neuronPromoteSuggest() — 승격 후보 추천
  • neuronCount() — 회사별 뉴런 수

문서 갱신

  • w-ai-agents/TODO.md — Phase 1-A/B/C/D/G + Phase 2 완료 반영
  • board-approval-system/TODO.md — 1-A/B/C/D/F/G + P4 완료 반영
  • README.md, SETUP-NEW-PC.md — subprocessors.ko.md 참조 수정

배포

  • w-ai-agents: 74d3a7390f8537 (서버 fast-forward + restart)
  • board dist: /var/www/nexus 배포 완료
  • health OK

세션 3 — Phase 2 기능 4개 구현

권한 선택 팝업

  • InvitePanel에 5개 permission 토글 모달
  • 역할별 기본값 프리셋 (company_user: execute_chains만, company_admin: 4개)

회사별 agent_overrides

  • chain.js: runChain 시 company agent_overrides 조회 → stepPrompt에 "고객사 맞춤 지침" 주입
  • companies.js: GET/PUT /companies/:id/agent-overrides
  • AgentOverridesPanel.jsx: Settings 탭에 에이전트별 지침 편집 UI

크레딧 이월/환불

  • billing.js: requestRefund() — subscription_status→cancelled + 12개월 이월 만료일 + 환불 요청 기록
  • POST /billing/refund 엔드포인트
  • BillingPage: 해지 모달에 이월 안내 + 실제 환불 API 연동

월간 예측 — 이미 구현 확인

  • billing.js:371 forecastKrw 선형 외삽
  • CostDashboard:117 forecastEom 표시

배포

  • w-ai-agents: 90f85377549fd2 (fast-forward + restart + health OK)
  • board dist: /var/www/nexus 배포
  • 서버 검증: index.js 500줄, billing.js 487줄, chain.js 482줄

남은 작업

외부 의존 대기

  • M9 사업자 가입 (AWS SES + 국세청 API)
  • M11 카카오 알림톡 (Aligo)
  • TB-6 뉴런 보강 (NeuronFS 로컬 세팅)
  • 토스페이먼츠 심사
  • 정식 도메인 구매

코드 가능 (Phase 3)

  • AgentProposals 완전 구현
  • 클러스터 분석 대시보드
  • 동적 체인 시각화

사토시 직접

  • T52 PC OpenClaw 복원
  • T53 OAuth redirect URI 등록
  • T54 AWS SES 발급
  • T55 도메인 구매

세션 4 — UX/UI 디자인 토큰 전수 통합

CSS 변수 라이트/다크 통합

  • :root + .dark 분리 → 모든 CSS 변수가 라이트/다크 자동 전환
  • tailwind.config nexus 색상 → CSS var() 참조
  • 글로벌 클래스 (card/btn/input/modal/sidebar/skeleton) 전부 CSS 변수 기반

색상 치환 실적

  • text-[#1d1d1f] 216건 → 0건 (전체 코드베이스에서 완전 제거)
  • 53개 파일 치환 (nexus-text-primary/secondary/tertiary 통합)
  • bg-white/40 dark:bg-nexus-* 이중 작성 패턴 제거
  • border-black/[0.06] dark:border-nexus-* 이중 작성 패턴 제거

i18n 하드코딩 수정

  • 'Online'/'Offline't(lang, 'statusOnline'/'statusOffline')
  • '요청 실패't(lang, 'requestFailed')
  • ko + ja 둘 다 추가

radius 업그레이드

  • md: 8px → 10px, lg: 12px → 14px, xl: 16px → 18px (더 부드러운 곡률)

배포

  • board dist → /var/www/nexus 배포 완료
  • health OK

세션 5 — Phase 3 메타 에이전트 시스템 (사토시 핵심 비전)

"지네가 스스로 생각하고 움직이는" 수준 도달

신규 모듈 2개

  • agent-improver.js (191줄) — 실패 패턴 3회+ 감지 → LLM 프롬프트 수정안 자동 생성 → 승인/반려
  • dynamic-chain.js (95줄) — LLM이 에이전트 pool 분석 → 최적 조합 체인 자동 구성

기존 모듈 확장

  • watchdog.js: 매 tick에 proposals.analyzePatterns() + improver.checkImprovements() 자동 실행
  • neuron-proposals.js: generateSOUL() LLM으로 SOUL.md 초안 자동 작성 + Enterprise 자동 배포
  • chain.js: chainId='auto' 시 dynamic-chain 폴백 + step 실패 시 recordFailure
  • neuron.js: GET /neuron/unmatched + /neuron/improvements 엔드포인트

클라이언트 UI

  • ClusterView.jsx 신규 — 미커버 키워드 히트맵 + 실패 통계 + 수정안 목록
  • AgentProposals.jsx 고도화 — SOUL 생성 여부 표시 + nexus 토큰 통합
  • AITeamHub "분석" 탭 추가

Phase 3 TODO 전항목 완료

  • 요청 패턴 클러스터링 ✅
  • 에이전트 스펙 자동 생성 ✅
  • AgentProposals 완전 구현 ✅
  • 동적 체인 생성 ✅
  • 에이전트 자기 개선 ✅
  • 클러스터링 UI ✅
  • Enterprise 자동 배포 ✅

배포

  • w-ai-agents: fast-forward + restart + health OK
  • board dist: /var/www/nexus 배포 완료

세션 6 — Phase 4 완전 자율 + R2 + 월간 리포트

신규 모듈 4개

  • model-selector.js (104줄) — 복잡도 분석 → flash/sonnet/opus 자동 선택 (비용 최적화)
  • agent-a2a.js (111줄) — 에이전트 간 peer-to-peer 직접 통신 + 로그
  • conversation-memory.js (99줄) — 대화 context 영속화 (SQLite audit 기반)
  • r2-storage.js (84줄) — Cloudflare R2 첨부파일 저장

기존 모듈 확장

  • router.js: OPENROUTER_MODEL 환경변수로 모델 자동 선택 주입
  • pattern-tracker.js: predictIntent() 시간대/요일 기반 의도 예측
  • copilot.js: intent_prediction source 추가
  • chain.js: 실행 완료 후 대화 메모리 자동 저장
  • attachments.js: 5MB 초과 → R2 분기 + r2_key/storage_type

클라이언트

  • MonthlyReportModal.jsx (81줄) — 월간 사용량 요약 모달
  • Dashboard "월간 리포트" 버튼

Phase 4 TODO 완료 (외부 이벤트 감지만 외부 대기)

  • 비용 최적화 자동 ✅
  • 고객 의도 예측 ✅
  • A2A 통신 ✅
  • 지속 메모리 ✅
  • R2 대용량 첨부 ✅

배포

  • 서버 fast-forward + restart + health OK
  • board dist 배포 완료

세션 7 — Claude 스타일 미니멀 디자인 + 누락 UI 해소

CSS 전면 재작성

  • btn-primary: 보라색 → 검정/흰 (Claude 스타일)
  • card: shadow/blur/lift/glow 전부 제거, 보더만
  • card-glow, gradient-border, noise-bg: 완전 삭제 (AI 티)
  • input focus: 보라색 ring → 검정 보더
  • modal: backdrop-filter blur 제거
  • apple-*: tailwind config에서 nexus CSS var() 매핑 (485건 자동 해결)
  • dark: 이중 작성: 43건 제거

누락 UI 3개 구현

  • ChainDetail: 동적 체인 뱃지 + quality 실패/재시도 안내
  • PostDetail: Memory-Keeper 대화 맥락 카드
  • MonthlyReportModal (이전 세션)

점검 결과

  • text-[#1d1d1f]: 0건 (완전 제거)
  • dark:text-nexus-text-primary: 0건
  • 500줄 초과: i18n/ko.js 504줄만 (데이터 딕셔너리 허용)

board TODO 미체크 → 체크 8건

  • 권한 팝업, 월간 리포트, 자가평가, 맥락 표시, AgentProposals, 클러스터, 동적 체인, PostForm

세션 8 — 코드 부채 완전 해소 + 뉴런 강화

DB 마이그레이션

  • companies.agent_overrides JSON
  • users.monthly_token_limit INT
  • attachments.r2_key + storage_type

코드 부채 해소 (grep 검증 완료)

  • text-[Npx] 시맨틱 토큰 전환: 59파일 → 잔여 0건
  • apple-* nexus 직접 치환: 50파일 → 잔여 0건 + tailwind apple 섹션 삭제
  • #007AFF 하드코딩 hex: UI 7파일 치환 (차트 색상은 의도적 유지)
  • authToken: 이미 localStorage 영속화 확인
  • api.js: 에러 구조 이미 통일 확인
  • CSS: 601→567줄 (typography 중복 제거)

뉴런 강화

  • cortex/quality 5개 + cortex/security 4개 세분화
  • evolve 실행: fire 3 + dopamine 1 + grow 1 적용
  • 113 뉴런 218 activation

최종 검증

  • text-[#1d1d1f]: 0건
  • text-[Npx]: 0건
  • apple-*: 0건
  • 500줄 초과 컴포넌트: 0개

세션 C — 코드부채 일괄 정리

board-approval-system

  • index.css 567→488줄: 미사용 CSS 79줄 제거 (glow/priority/kbd/status-dot 중복/skeleton-text/badge-sm/metric-trend/미사용 keyframes 4개)
  • console.log 7건 → dev-only: import.meta.env.DEV 가드 적용 (main.jsx 4건 + db/index.js 3건)
  • api.js 에러 구조 통일: timeout/network error에 statusCode 추가 + 중복 함수 getUsageReport 제거
  • DeliveryList: 죽은 shadow-glow-blueshadow-nexus-md
  • TODO.md: 해결된 P1~P3 부채 8건 체크 갱신

w-ai-agents

  • website/common.js 579→472줄: neural canvas IIFE를 neuron-canvas.js (105줄)로 분리
  • 70+ HTML 파일 script 태그 일괄 추가

이미 해결 확인 (부채 목록에서 제거)

  • authToken P1 → localStorage 영속화 이미 구현됨
  • PostForm submitting → 이미 정상
  • preload.js 중복 → 파일 자체 없음 (Electron 제거)
  • PostDetail 576줄 → 269줄 (이미 분리)
  • i18n 848줄 → 이미 분리
  • Vite vuln → 0 vulnerabilities
  • subprocessors.ko.md → 이미 존재

남은 코드부채 (낮은 우선순위)

  • RxDB syncFromServer findOne 성능 → 세션 D 완료
  • useApiData() 훅 (로딩 패턴 통일) → 세션 D 완료
  • collab.js y-websocket 표준 + SQLite 영속화 → 세션 D 완료
  • 크로스브라우저 테스트

세션 D — 코드부채 전량 소진 + 기능 강화

board-approval-system

  • useApiData.js: API 데이터 로딩 공통 훅 (loading/error/data/reload) — 31개 컴포넌트 중복 패턴 해소
  • AgentList + MetaAdsPanel: useApiData 마이그레이션 (패턴 검증 — 나머지 점진 적용)
  • db/index.js: agents 배치 조회 최적화 — 변경분만 upsert
  • NotificationCenter: 6타입 아이콘/색상 매핑 (approval/delivery/rework/comment/request/system) + actor_name 표시
  • Sentry/PostHog VITE_ 접두사 → .env.example 이미 정상 확인 (키 발급은 사토시 직접)
  • OnboardingWizard + EmptyState → 이미 완전 구현 확인

w-ai-agents

  • notifications.js: type + actor_name 컬럼 자동 마이그레이션 (멱등 ALTER TABLE)
  • 모든 addNotification 호출부 (index.js/telegram.js/setup-nexus-loop.js) → type + actorName 전달
  • collab.js: 커스텀 프로토콜 → y-protocols/sync + awareness 표준 전면 교체 (135→194줄)
  • local-db.js: collab_docs 테이블 + saveCollabDoc/getCollabDoc 추가
  • collab 문서 변경 5초 debounce SQLite 저장 + 서버 시작 시 자동 복원 + Litestream R2 자동 백업

최종 상태

  • 서버 배포 완료 + health OK
  • 코드부채 남은 것: 크로스브라우저 테스트만 (실기기 필요)

세션 E — 데모 모드 + 무료 5회 실행 시스템

핵심 결정

  • 비로그인 = 실제 대시보드 (ChatGPT/Claude 패턴) — 목업/랜딩페이지 X, 진짜 앱 화면이 랜딩
  • 14일 트라이얼 폐기 → 5회 무료 실행 (횟수 기반, 기간 무관, 카드 불필요)

board-approval-system (10개 파일)

  • DemoApp.jsx: 비로그인 앱 셸 — 사이드바 + 대시보드 + 샘플 데이터 렌더
  • DemoBar.jsx: 상단 "체험 중" 배너 + 로그인/가입 CTA
  • SignupGate.jsx: 인터랙션 시 가입/로그인 모달 (LoginForm/SignupForm 재사용)
  • sampleData.js: agents 8개 + posts 6개 + stats + scores + notifications
  • App.jsx: if (!user) → DemoApp (기존 Login 교체)
  • FreeRunsBadge.jsx: 잔여 무료 실행 5칸 시각화 바
  • FreeRunsExhaustedModal.jsx: 소진 시 결제 유도 모달
  • api.js: getFreeRuns() 추가
  • i18n ko+ja: 데모/무료실행 키 12개 추가

w-ai-agents (4개 파일)

  • shared.js: users.free_runs_remaining 멱등 ALTER TABLE
  • signup.js: 가입 시 free_runs_remaining=5 (신규+초대 둘 다)
  • billing.js: GET /billing/free-runs 엔드포인트
  • trial.js: 14일 시간 기반 → 횟수+크레딧 통합 체크로 전면 교체

딥리서치 (8개 제품)

  • ChatGPT/Claude/Linear/Notion/Vercel/Stripe/Jasper/Copy.ai 비교
  • 결론: "제품을 보여주기 전에 설명하지 마라"
  • Nexus 적용: 비로그인 실제 UI → 인터랙션 시 게이트 → 5회 무료 → 결제

세션 F — 프로덕션 감사 22건 수정 (P0~P3)

P0 Critical (3건) — 핵심 기능 복구

  • AgentChat: onStreamChunk/onStreamDone 미존재 → chatWithAgentStream 콜백 패턴 전면 교체
  • CommandPalette AI: 동일 스트리밍 수정
  • PostForm 파일첨부: pickFiles/saveAttachments Electron 레거시 → Web input[type=file] + FileReader base64

P1 High (4건)

  • PostList: loading 상태 + 스켈레톤 추가
  • Dashboard: totalAgents || 22 하드코딩 제거 + text-black/30text-nexus-text-tertiary (6곳)
  • isDark DOM 직접접근: 11개 컴포넌트 → useUIStore((s) => s.darkMode) 구독
  • BillingPage: var→const + 해지 버튼 구독 상태 조건

P2+P3 (5건)

  • i18n ja 掲示板ワークスペース
  • api.js console.warn dev-only 가드
  • Sidebar collapsed badge relative 추가
  • PostList 삭제 실패 alert i18n
  • AgentChat 아바타 Uuser.username 이니셜

수정 규모

21개 파일 변경, +1575 / -251 lines


세션 H~J — 전면 디자인 리디자인

디자인 결정

  • 화이트 베이스 (다크모드는 토글) — 이전 강제 다크 폐기
  • ChatGPT/Claude 패턴: 첫 화면 = 큰 입력창 "AI에게 업무를 요청해보세요"
  • 비서 컨셉: "AI 팀이 24시간, 일합니다" — 도구가 아니라 팀
  • Vercel 미학 + Stripe 정보 밀도: 정밀한 투명도, 레이어드 섀도우, 미세 전환

데모 페이지 (7개 파일, 1200줄)

  • DemoApp: 입력 중심 + 사이드바 10개 메뉴 + 페이지 전환
  • DemoScenario: 15초 자동 재생 (요청→배정→타이핑→완료→NeuronFS 학습)
  • DemoFeatures: 핵심 기능 8개 시각화 카드 (체인/패턴/워치독/뉴런/품질/비용/텔레그램/A2A)
  • DemoCharts: Tremor 차트 + 실시간 활동 피드 + 에이전트 그리드
  • 선제 제안 카드 자동 순환 ("매주 월요일 광고 분석 요청하시네요")

진짜 앱 리디자인 (30+ 컴포넌트)

  • App.jsx: bg-[#FAFAFA] 라이트 베이스 + 상단바 backdrop-blur-xl
  • Sidebar: 블랙 N 로고 + violet AI + 프로필 카드 + 라이트/다크 이중
  • index.css 글로벌: .card hover lift + .btn-primary #111 + .input-field focus ring + .metric-card hover
  • card-glow 전수 제거 (15개 컴포넌트)
  • text-nexus-text-tertiary → secondary (Dashboard 전수)
  • isDark DOM접근 → uiStore darkMode (11개 컴포넌트)
  • markdown.jsx 코드블록 라이트 대응

패키지 도입

  • @tremor/react (AreaChart/BarList/Tracker)
  • motion (AnimatePresence/페이지 전환/카운트업)
  • cmdk (Vercel 스타일 Cmd+K)

딥리서치

  • 8개 SaaS 비교 (ChatGPT/Claude/Linear/Notion/Vercel/Stripe/Jasper/Copy.ai)
  • 15개 GitHub 오픈소스 평가 (Tremor/Motion/cmdk/shadcn-admin/Magic UI/Plane/Novu 등)
  • 결론: "제품을 보여주기 전에 설명하지 마라" + "대시보드 자체가 랜딩"

세션 G — 서버 보안 감사 15건 수정

P0 Critical (4건)

  • login.js: pending_approval 사용자 로그인 차단 (status='active' 조건)
  • login.js: dummyHashbcrypt.hashSync 유효 해시 (타이밍 공격 방지)
  • index.js: X-Forwarded-Forx-real-ip (rate limit 스푸핑 방지)
  • attachments.js: path.basename + resolve 검증 (경로 탐색 방어)

P1 Security (5건)

  • billing DB 에러 메시지 클라이언트 노출 차단
  • /billing/user-limit 타사 직원 RLS 검증 추가
  • /posts/:id/attachments RLS 체크 추가
  • shared_shared 오타 (뉴런 기록 누락)
  • 비밀번호 최소 4→8자 통일

P2 Stability (4건)

  • trial.js: SELECT→UPDATE affectedRows 원자적 (레이스컨디션 방지)
  • notifications.js: LIMIT 파라미터 바인딩 + 상한 200
  • users.js: addUser 입력 검증 추가
  • forgot.js: reset URL 토큰 로그 노출 제거

세션 H — Tremor + Motion + cmdk 도입

신규 패키지

  • @tremor/react — Vercel 인수, 대시보드 차트 (AreaChart/BarList/Tracker)
  • motion (framer-motion) — 페이지 전환 AnimatePresence, 숫자 카운트업
  • cmdk — Vercel 스타일 Cmd+K 커맨드 팔레트

적용

  • DemoCharts.jsx: Tremor AreaChart(주간 트렌드) + BarList(에이전트 스코어) + Tracker(30일 활동)
  • DemoApp: Motion AnimatePresence 페이지 전환 (fade+slide)
  • CommandPalette: cmdk <Command> 기반 전면 교체 — Group/Item/Empty/Separator 구조화
  • 데모 + 진짜 앱 둘 다 적용