/tmp/maester_universal_summary_v2_report.md
Maester Universal 정리 Automation v2 Report
Summary
P0 구현 완료. 정리 command router가 Chrome CDP 현재 탭을 감지해서 Claude App, ChatGPT rendered transcript, 로컬 파일을 같은 Maester summary ingest 파이프라인으로 처리한다.
Changed Files
/home/tlswk/projects/maester-agent/tools/browser_cdp.py/home/tlswk/projects/maester-agent/tools/summary_ingest.py/home/tlswk/projects/maester-agent/scripts/summary_command_router.py/home/tlswk/projects/maester-agent/scripts/maester-summary/home/tlswk/projects/maester-agent/scripts/정리/home/tlswk/projects/maester-agent/scripts/maester_summary_watcher.sh/home/tlswk/projects/maester-agent/systemd/maester-summary-watcher.service/home/tlswk/projects/maester-agent/scripts/summary_comms_directive_worker.py/home/tlswk/projects/maester-agent/scripts/chatgpt_cdp_bridge.py/home/tlswk/projects/maester-agent/api.py/home/tlswk/projects/maester-agent/.env.example/home/tlswk/projects/maester-agent/HANDOFF_universal_summary_v2.md
Entry Points
python scripts/summary_command_router.py 정리
scripts/maester-summary
scripts/정리
python scripts/summary_command_router.py watch --watch --cdp-port 9444
python scripts/summary_comms_directive_worker.py --status sent
API Security
Added MAESTER_SUMMARY_INGEST_TOKEN.
- Allowed:
POST /api/maester/summary-ingest - Forbidden with summary token: doc delete, action status update, board command, revenue event
Verification Highlights
- Claude App current-tab route: passed with idempotent doc
idea_20260509_b5c700 - ChatGPT current-tab route: passed with doc
chat_log_20260509_4ff7e8 - Local file route: passed with doc
chat_log_20260509_5d86b5 - Document Bridge report:
msg_20260509_26731ce0 - Context Bridge append/update: passed
- active ActionItem count: 0 for tested summary docs
Known Limits
ChatGPT export uses currently rendered DOM messages. If ChatGPT virtualizes older turns, the adapter saves the rendered transcript, not a guaranteed full server export.
/tmp/maester_universal_summary_v2_eval.md
Maester Universal 정리 Automation v2 Eval
Commands
python3 -m compileall tools/summary_ingest.py tools/browser_cdp.py scripts/summary_command_router.py scripts/chatgpt_cdp_bridge.py scripts/summary_comms_directive_worker.py api.py
Result: pass.
python3 scripts/summary_command_router.py 정리 --source auto --project keeper-direct --doc-type idea --importance high --action-policy none --cdp-port 9444 --no-document-bridge --no-context-bridge
Result:
- source:
claude_app - doc_id:
idea_20260509_b5c700 - status:
idempotent_hit - recall_top5: true
- active_action_items: 0
python3 scripts/summary_command_router.py 정리 --source auto --project maester --doc-type chat_log --importance normal --action-policy none --cdp-port 9444 --no-document-bridge --no-context-bridge
Result:
- source:
chatgpt - doc_id:
chat_log_20260509_4ff7e8 - status:
created - recall_top5: true
- active_action_items: 0
python3 scripts/summary_command_router.py 정리 --source file --file HANDOFF_universal_summary_ingest.md --project maester --doc-type chat_log --no-document-bridge --no-context-bridge
Result:
- source:
file - doc_id:
chat_log_20260509_5d86b5 - recall_top5: true
- active_action_items: 0
python3 scripts/summary_command_router.py 정리 --source auto --project maester --doc-type chat_log --importance normal --action-policy none --cdp-port 9444 --bridge-ref msg_20260509_bc5605cb
Result:
- Document Bridge:
msg_20260509_26731ce0 - Context Bridge: daily append, session insert, master_context update
- recall_top5: true
- active_action_items: 0
Summary Token Eval
Environment used for TestClient only:
MAESTER_READ_TOKEN=read-test
MAESTER_WRITE_TOKEN=write-test
MAESTER_SUMMARY_INGEST_TOKEN=summary-test
Results:
| endpoint | token | status |
|---|---|---|
POST /api/maester/summary-ingest idempotent payload |
summary | 200 |
POST /api/maester/summary-ingest missing payload/url |
summary | 400 |
DELETE /api/maester/docs/dummy |
summary | 403 |
POST /api/maester/actions/a/status |
summary | 403 |
POST /api/maester/board/command |
summary | 403 |
POST /api/maester/revenue-events |
summary | 403 |
Notes
- Neo4j emitted non-fatal warnings about missing
deleted_aton some nodes during recall. - A smoke-test ChatGPT page was injected through CDP because no real supported ChatGPT conversation tab was active at the start of verification.
- No destructive commands were used.
/home/tlswk/projects/maester-agent/HANDOFF_universal_summary_v2.md
HANDOFF — Universal 정리 Summary Automation v2
작성: 2026-05-09 KST, Codex CLI 상태: P0 구현/검증 완료
BLUF
Universal 정리 v2는 URL 수동 입력 MVP에서 current-tab command router로 확장됐다. 이제 python scripts/summary_command_router.py 정리 또는 scripts/maester-summary가 Chrome CDP 현재 탭을 읽고, Claude App/ChatGPT/파일을 표준 Markdown으로 렌더링해 Maester에 적재한다.
구현
tools/browser_cdp.py- Chrome CDP
/json/listpage target 조회 document.visibilityState/document.hasFocus()기반 current tab 선택- Claude App URL 감지
- ChatGPT rendered DOM transcript export
- 마지막 user message가
정리인지 판단하는 watcher helper
- Chrome CDP
tools/summary_ingest.pyConversationPayload공통 ingest 경로 추가- Claude App / ChatGPT / file이 같은 표준 Markdown renderer 사용
payload_from_json,payload_to_json,run_payload_summary_ingest- source + conversation_id + updated_at idempotency 유지
scripts/summary_command_router.py- CLI:
python scripts/summary_command_router.py 정리 - source auto/current tab 감지
- project/doc_type auto 추론
- ingest 후 recall top5 + active ActionItem 0 검증
watch모드로 browser watcher daemon 동작 가능
- CLI:
scripts/maester-summary,scripts/정리- shell entrypoint wrapper
scripts/maester_summary_watcher.sh- browser watcher wrapper
systemd/maester-summary-watcher.service- user service template
scripts/summary_comms_directive_worker.py- AI Comms Hub inbox에서
@codex 정리/정리directive 처리
- AI Comms Hub inbox에서
api.py/api/maester/summary-ingest에MAESTER_SUMMARY_INGEST_TOKEN전용 권한 추가- summary token은 summary-ingest만 통과
- doc delete/action status/board command/revenue event는 summary token으로 403
scripts/chatgpt_cdp_bridge.pyexport-current명령 추가
사용법
python scripts/summary_command_router.py 정리
scripts/maester-summary --project auto --doc-type auto
scripts/정리 --source auto --cdp-port 9444
python scripts/summary_command_router.py watch --watch --cdp-port 9444 --poll-sec 3
python scripts/summary_comms_directive_worker.py --status sent
검증 결과
- Claude App current-tab:
- URL 인자 없이 CDP current tab에서
claude.ai/chat/bfd9eaf2-37d0-4981-903b-884394591cac감지 - result:
idempotent_hit - doc:
idea_20260509_b5c700 - recall top5: true
- active ActionItem: 0
- URL 인자 없이 CDP current tab에서
- ChatGPT current-tab:
- ChatGPT CDP rendered DOM transcript export smoke test
- doc:
chat_log_20260509_4ff7e8 - local Markdown:
/home/tlswk/projects/maester/context/chat-log/chatgpt_20260509_maester-summary-v2-smoke-test_c273ac0b_78af43.md - Document Bridge:
msg_20260509_26731ce0 - Context Bridge: daily append + session insert + master_context update
- recall top5: true
- active ActionItem: 0
- Local file:
- source=file ingest passed
- doc:
chat_log_20260509_5d86b5 - recall top5: true
- active ActionItem: 0
- Summary token:
/api/maester/summary-ingest: 200 with summary token on idempotent payload/api/maester/docs/{id}DELETE: 403/api/maester/actions/{id}/status: 403/api/maester/board/command: 403/api/maester/revenue-events: 403
운영 메모
- 기본 CDP 포트는
9444. - Maester venv에
websockets==16.0설치됨.requirements.txt에는 이미websockets>=10.4가 있다. - watcher service template은 설치만 제공한다. 실제 enable/start는 운영자가 선택한다.
- ChatGPT full transcript는 현재 DOM에 렌더링된 메시지 기준이다. 긴 대화에서 이전 메시지가 DOM에서 언로드되어 있으면 visible/rendered transcript만 저장될 수 있다.
- 데이터 삭제 없음.
- 기존
MAESTER_WRITE_TOKEN외부 노출 없음. - Tiro auto-ingest 변경 없음.