[G1-Sync] Manual knowledge update
This commit is contained in:
+3
-3
@@ -2,7 +2,7 @@
|
||||
|
||||
Date: 2026-04-25 21:07:52 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -44,7 +44,7 @@ Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
실행한 검증:
|
||||
|
||||
```bash
|
||||
node --check scripts/mcp_bridge.mjs
|
||||
node --check [[Scripts]]/mcp_bridge.mjs
|
||||
npm run lint
|
||||
npm run build
|
||||
```
|
||||
@@ -55,7 +55,7 @@ npm run build
|
||||
- TypeScript 타입체크 통과
|
||||
- Vite 프로덕션 빌드 통과
|
||||
|
||||
## Operational Note
|
||||
## [[Opera]]tional Note
|
||||
|
||||
앞으로 앱은 아래 방식으로 실행해야 한다.
|
||||
|
||||
|
||||
+7
-7
@@ -1,8 +1,8 @@
|
||||
# Datacollector Codebase Structure Review and Initial Risk Assessment
|
||||
# Datacollector Codebase Structure Review and Initial Risk [[Assessment]]
|
||||
|
||||
Date: 2026-04-25 20:38:01 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
Knowledge Vault: `/Volumes/Data/project/Antigravity/Wiki/00_Raw`
|
||||
|
||||
## Summary
|
||||
@@ -12,11 +12,11 @@ Knowledge Vault: `/Volumes/Data/project/Antigravity/Wiki/00_Raw`
|
||||
|
||||
현재 프로젝트는 단순한 프런트엔드 앱이 아니라, React 기반 UI와 Zustand 상태 저장소, 자율 실행 엔진, 그리고 NotebookLM MCP 및 로컬 LM을 연결하는 Express 브리지 서버가 결합된 자동화 연구 도구 형태로 구성되어 있다.
|
||||
|
||||
## High-Level Architecture
|
||||
## High-Level [[Architecture]]
|
||||
|
||||
전체 흐름은 아래와 같다.
|
||||
|
||||
`React UI -> Zustand Store -> KnowledgeEngine -> Express Bridge -> NotebookLM MCP / Local LM / GitHub / Wiki Storage`
|
||||
`React UI -> Zustand Store -> KnowledgeEngine -> Express Bridge -> NotebookLM MCP / Local LM / GitHub / Wiki [[Storage]]`
|
||||
|
||||
핵심 책임 분리는 다음과 같이 이해했다.
|
||||
|
||||
@@ -30,7 +30,7 @@ Knowledge Vault: `/Volumes/Data/project/Antigravity/Wiki/00_Raw`
|
||||
NotebookLM 미연결 시 사용하는 로컬 LM 프롬프트 생성 및 응답 파싱
|
||||
- `src/lib/github.ts`
|
||||
결과 Markdown을 GitHub 저장소의 `00_Raw/` 경로로 업로드
|
||||
- `scripts/mcp_bridge.mjs`
|
||||
- `[[Scripts]]/mcp_bridge.mjs`
|
||||
NotebookLM MCP 서버와 통신하는 지속 프로세스형 브리지 서버
|
||||
|
||||
## Execution Flow
|
||||
@@ -58,7 +58,7 @@ Knowledge Vault: `/Volumes/Data/project/Antigravity/Wiki/00_Raw`
|
||||
|
||||
## Review Findings
|
||||
|
||||
### 1. Sensitive secrets are persisted in browser storage
|
||||
### 1. Sensitive secrets are persisted in [[Browser]] storage
|
||||
|
||||
`githubToken`과 `notebookLmCookies`가 Zustand persist 설정에 포함되어 있어 브라우저 localStorage에 평문으로 저장된다.
|
||||
이 방식은 세션 쿠키나 GitHub 토큰 같은 민감 정보의 저장 위치로는 안전하지 않다.
|
||||
@@ -99,7 +99,7 @@ MCP 실행 파일 경로와 위키 저장 경로가 절대경로로 하드코딩
|
||||
- 다른 개발자 머신, 다른 사용자 계정, 다른 운영체제에서 그대로 실행하기 어렵다.
|
||||
- 배포보다는 특정 개인 작업 환경에 강하게 종속된다.
|
||||
|
||||
### 4. Manual handoff state is not fully cleared
|
||||
### 4. Manual handoff [[State]] is not fully cleared
|
||||
|
||||
`resolveManualNext`가 store에 함수 형태로 저장되는데, `clearState()`에서 정리되지 않는다.
|
||||
수동 합성 대기 중 reset 또는 새 미션 시작이 발생하면 상태 꼬임 가능성이 있다.
|
||||
|
||||
+3
-3
@@ -2,14 +2,14 @@
|
||||
|
||||
Date: 2026-04-25 20:50:41 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
## Summary
|
||||
|
||||
Datacollector의 생성 결과 저장 방식을 GitHub 업로드 중심에서 로컬 Wiki 저장 전용으로 정리했다.
|
||||
앞으로 앱에서 생성되는 연구 문서는 `/Volumes/Data/project/Antigravity/Wiki/00_Raw`에 저장되고, Git 업로드는 사용자가 나중에 별도로 한 번에 처리하는 운영 방식으로 둔다.
|
||||
|
||||
## Previous Behavior
|
||||
## Previous [[Behavior]]
|
||||
|
||||
기존 흐름은 결과 생성 후 두 경로가 동시에 존재했다.
|
||||
|
||||
@@ -23,7 +23,7 @@ Datacollector의 생성 결과 저장 방식을 GitHub 업로드 중심에서
|
||||
새 흐름은 다음과 같다.
|
||||
|
||||
1. 연구 결과 Markdown 생성
|
||||
2. `savedReports`에 프리뷰용 로컬 캐시 저장
|
||||
2. `saved[[Reports]]`에 프리뷰용 로컬 캐시 저장
|
||||
3. 브리지 서버의 `/api/wiki/save`를 통해 `/Volumes/Data/project/Antigravity/Wiki/00_Raw`에 Markdown 파일 저장
|
||||
4. GitHub 업로드 버튼이나 토큰 설정 없이 완료
|
||||
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
# Datacollector Mac Windows Launcher Scripts
|
||||
# Datacollector Mac Windows Launcher [[Scripts]]
|
||||
|
||||
Date: 2026-04-25 21:09:42 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -44,7 +44,7 @@ npm run lint
|
||||
- macOS shell script 문법 통과
|
||||
- TypeScript 타입체크 통과
|
||||
|
||||
## Operational Note
|
||||
## [[Opera]]tional Note
|
||||
|
||||
앞으로 맥에서는 `run_mac.command`, 윈도우에서는 `run_win.bat`만 실행하면 된다.
|
||||
`npm run dev` 단독 실행은 프런트엔드만 켜므로 NotebookLM, Wiki save, 인증 복구 API가 동작하지 않는다.
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
- 작성 시각: 2026-04-25 21:31:00 KST
|
||||
- 프로젝트: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
- 관련 파일: `scripts/mcp_bridge.mjs`, `auth_mac.command`, `auth_win.bat`, `.env.example`
|
||||
- 관련 파일: `[[Scripts]]/mcp_bridge.mjs`, `auth_mac.command`, `auth_win.bat`, `.env.example`
|
||||
|
||||
## 상황
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
- `인증 자동 복구 실패. 브라우저 로그인이 필요한 상태일 수 있습니다.`
|
||||
- `MCP initialized: true, pending: 0`
|
||||
|
||||
사용자는 NotebookLM 인증 중 Chrome이 열렸다가 닫히는 점을 보고, 인증 브라우저를 유지해야 하는 것 아니냐고 질문했다.
|
||||
사용자는 NotebookLM 인증 중 [[Chrome]]이 열렸다가 닫히는 점을 보고, 인증 브라우저를 유지해야 하는 것 아니냐고 질문했다.
|
||||
|
||||
## 확인한 내용
|
||||
|
||||
|
||||
+4
-4
@@ -2,7 +2,7 @@
|
||||
|
||||
Date: 2026-04-25 20:47:05 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -12,7 +12,7 @@ Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
## Root Cause Hypothesis
|
||||
|
||||
기존 구조는 MCP 서버의 `refresh_auth` 도구 호출에만 의존했다.
|
||||
하지만 포맷 이후 로컬 토큰 저장 위치나 Chrome 세션 상태가 달라지면서 `refresh_auth`만으로 복구되지 않는 상황이 발생할 수 있다.
|
||||
하지만 포맷 이후 로컬 토큰 저장 위치나 [[Chrome]] 세션 상태가 달라지면서 `refresh_auth`만으로 복구되지 않는 상황이 발생할 수 있다.
|
||||
|
||||
사용자가 직접 실행하던 파일은 다음 명령의 래퍼였다.
|
||||
|
||||
@@ -26,7 +26,7 @@ Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
수정 파일:
|
||||
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_bridge.mjs`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/[[Scripts]]/mcp_bridge.mjs`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/.env.example`
|
||||
|
||||
@@ -41,7 +41,7 @@ Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
- 장시간 실행 중에는 15분 간격으로 요청이 없는 시점에 인증 상태를 사전 갱신한다.
|
||||
- UI 안내 문구를 수동 재인증 중심에서 자동 복구 중심으로 수정했다.
|
||||
|
||||
## Runtime Behavior
|
||||
## Runtime [[Behavior]]
|
||||
|
||||
새 인증 복구 순서:
|
||||
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
- 작성 시각: 2026-04-25 22:17:33 KST
|
||||
- 프로젝트: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
- 관련 파일: `scripts/mcp_bridge.mjs`
|
||||
- 관련 파일: `[[Scripts]]/mcp_bridge.mjs`
|
||||
|
||||
## 상황
|
||||
|
||||
@@ -57,4 +57,4 @@ curl -sS -X POST http://127.0.0.1:3002/api/check-connection
|
||||
4. 그래도 실패하면 `notebooklm-mcp-auth` CLI 실행
|
||||
5. 인증 캐시 정리 후 MCP 재시작 및 실제 호출 검증
|
||||
|
||||
NotebookLM 브라우저 세션이 완전히 로그아웃된 상태라면 자동 CLI도 브라우저 로그인을 요구할 수 있다. 이 경우 사용자가 열린 NotebookLM Chrome 창에서 로그인만 해두면 이후 자동 복구가 다시 이어질 수 있다.
|
||||
NotebookLM 브라우저 세션이 완전히 로그아웃된 상태라면 자동 CLI도 브라우저 로그인을 요구할 수 있다. 이 경우 사용자가 열린 NotebookLM [[Chrome]] 창에서 로그인만 해두면 이후 자동 복구가 다시 이어질 수 있다.
|
||||
|
||||
+3
-3
@@ -2,7 +2,7 @@
|
||||
|
||||
Date: 2026-04-25 21:02:35 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -38,7 +38,7 @@ ENGINE ERROR Local LM returned an empty or invalid response.
|
||||
|
||||
수정 파일:
|
||||
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_bridge.mjs`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/[[Scripts]]/mcp_bridge.mjs`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/index.html`
|
||||
|
||||
@@ -78,7 +78,7 @@ curl -s -X POST http://127.0.0.1:3002/api/restart
|
||||
- `/api/health` 응답 정상
|
||||
- `/api/restart` 후 `notebooklm-mcp` 프로세스가 하나만 남는 것 확인
|
||||
|
||||
## Operational Note
|
||||
## [[Opera]]tional Note
|
||||
|
||||
현재 실행 중이던 오래된 브리지와 누적된 MCP 하위 프로세스는 종료했다.
|
||||
앱은 다시 실행해야 새 브리지 로직이 적용된다.
|
||||
|
||||
+5
-5
@@ -2,14 +2,14 @@
|
||||
|
||||
Date: 2026-04-25 21:17:24 KST
|
||||
Project: Datacollector
|
||||
Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
[[Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
|
||||
## Summary
|
||||
|
||||
사용자가 UI에서 `NotebookLM 연결 상태 점검 중...` 로그만 반복되고 실제 진행 상황을 알 수 없다고 보고했다.
|
||||
확인 결과 앱이 프로젝트 생성 단계까지 가지 못하고 있었으며, 원인은 NotebookLM 연결 확인 단계에서 MCP 인증이 만료 상태로 판단되기 때문이었다.
|
||||
|
||||
## Observed State
|
||||
## Observed [[State]]
|
||||
|
||||
확인한 상태:
|
||||
|
||||
@@ -19,14 +19,14 @@ Repository: `/Volumes/Data/project/Antigravity/Datacollector`
|
||||
- `/api/health` 응답 가능
|
||||
- `/api/check-connection`은 NotebookLM 인증 만료 오류 반환
|
||||
|
||||
브리지 로그상 자동 인증 CLI는 Chrome을 열고 로그인 및 토큰 추출까지 수행했다.
|
||||
브리지 로그상 자동 인증 CLI는 [[Chrome]]을 열고 로그인 및 토큰 추출까지 수행했다.
|
||||
그러나 MCP 서버는 이후에도 `Authentication expired`로 판단하여 NotebookLM notebook list 호출에 실패했다.
|
||||
|
||||
## Changes Made
|
||||
|
||||
수정 파일:
|
||||
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_bridge.mjs`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/[[Scripts]]/mcp_bridge.mjs`
|
||||
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
|
||||
|
||||
핵심 변경:
|
||||
@@ -64,7 +64,7 @@ curl -sS --max-time 25 -X POST -H 'Content-Type: application/json' -d '{}' http:
|
||||
현재 문제는 앱 실행이나 Bridge 연결 문제가 아니라 NotebookLM MCP 인증 상태 문제다.
|
||||
자동 인증 CLI가 토큰을 저장해도 MCP 서버가 계속 만료로 판단하므로, 다음 단계에서는 NotebookLM MCP 패키지의 인증 저장 형식 또는 권장 인증 방식(`--file` 모드 등)을 확인해야 한다.
|
||||
|
||||
## Operational Note
|
||||
## [[Opera]]tional Note
|
||||
|
||||
확인용으로 실행했던 Bridge/Vite/MCP 프로세스는 종료했다.
|
||||
새 진행 상태 로그를 보려면 앱을 `run_mac.command`로 다시 실행해야 한다.
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
- [[Datacollector/2026-04-25-Datacollector_Engine_Processed_Count_and_Stalled_Loop_Guard]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_Local_Wiki_Save_Only_Output_Mode]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_Mac_Windows_Launcher_Scripts]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_NotebookLM_Auth_Browser_and_Stale_Env_Cookie_Fix]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_NotebookLM_Auth_[[Browser]]_and_Stale_Env_Cookie_Fix]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_NotebookLM_Automatic_Auth_Recovery]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_NotebookLM_Automatic_Reauth_Verification_and_Lock]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_NotebookLM_Connection_Guard_and_MCP_Restart_Fix]]
|
||||
- [[Datacollector/2026-04-25-Datacollector_NotebookLM_Progress_Visibility_and_Auth_Diagnosis]]
|
||||
- [[Frontend_Mastery/2026-04-25-Datacollector_Auto_Resume_After_Reauth_Fix]]
|
||||
- [[Frontend_[[Mastery]]/2026-04-25-Datacollector_Auto_Resume_After_Reauth_Fix]]
|
||||
- [[Frontend_Mastery/2026-04-25-Datacollector_Bridge_Connection_Refused_Run_Script_Fix]]
|
||||
- [[Frontend_Mastery/2026-04-25-Datacollector_Codebase_Structure_Review_and_Initial_Risk_Assessment]]
|
||||
- [[Frontend_Mastery/2026-04-25-Datacollector_Local_Wiki_Save_Only_Output_Mode]]
|
||||
|
||||
Reference in New Issue
Block a user