Skip to main content
Glama
Merchantlee99

oculus-scoped-observation

Oculus — Scoped Observation for AI Agents

사용자가 Chrome에서 선택한 화면 영역만 AI 에이전트가 읽도록 만드는 로컬 관측 도구입니다.

AI에게 현재 웹 화면을 보여주고 싶지만, 브라우저 전체나 선택하지 않은 정보까지 넘기고 싶지는 않을 때 사용합니다.

사용자가 영역을 직접 선택하고 실제 전송 내용을 검토한 뒤 승인하면, Codex·Claude Code·Cursor 같은 AI 클라이언트가 그 영역의 이미지·텍스트·변경점만 읽을 수 있습니다. AI가 브라우저를 클릭하거나 입력하지는 못합니다.

케이스 스터디 · 최신 평가 결과 · 평가 기준 · 설계 · 증거 현황

30초 이해

사용자가 Chrome 영역 선택
→ 실제 전송될 이미지·텍스트 검토
→ 공유 승인
→ AI가 선택 영역만 읽음
→ 스크롤·탭 전환·중지 시 관측이 멈추거나 삭제됨

예를 들어 대시보드에서 지표 카드 하나만 AI에게 분석시키고 싶다고 가정합니다. 카드 아래에는 선택하면 안 되는 정보가 있습니다.

AI 공유 전 선택 범위와 실제 전송 데이터 검토

파란 테두리 안의 카드만 전송 대상입니다. 화면 아래의 OUTSIDE_SECRET_CANARY_8F42는 선택 밖 정보가 섞이지 않는지 검증하기 위한 값이며, 실제 관측 데이터에는 들어가지 않습니다.

공유 후에도 사용자는 AI가 보는 범위, 마지막 전송 시각, 실제 전송 데이터, 일시정지와 중지 버튼을 계속 확인할 수 있습니다.

공유 중인 선택 영역과 사용자 제어 UI

Related MCP server: Chrome Extension MCP Bridge

무엇을 만들었나

Oculus는 제품 프로토타입과 평가 시스템으로 구성됩니다.

구성

역할

Chrome 확장

영역 선택, 전송 전 검토, 이미지 crop, 제한적 민감 입력 가림

로컬 브리지

127.0.0.1에서 인증된 관측만 메모리에 보관

읽기 전용 MCP

AI 클라이언트가 현재 영역·이미지·변경점을 읽는 네 가지 도구

Playwright 평가

실제 Chromium·확장·브리지를 함께 실행해 ground truth와 비교

Fault matrix

잘못된 결과를 일부러 넣어 평가기가 실제로 실패하는지 검증

AI에게 제공되는 MCP 도구는 모두 읽기 전용입니다.

도구

AI가 읽는 것

oculus_list_regions

현재 활성 영역

oculus_observe_region

최신 또는 직전 관측의 텍스트·UI 의미 정보

oculus_get_region_image

사용자가 선택한 crop 이미지

oculus_get_changes

특정 버전 이후의 변경점

클릭·입력·파일 변경·외부 네트워크 쓰기 도구는 제공하지 않습니다.

검증된 결과

버전된 결과는 reports/에 저장되어 있으며, 누구나 같은 명령으로 다시 생성할 수 있습니다.

평가

현재 결과

실제 Chrome E2E 결과

30 / 30 통과

선택 밖 canary 직렬화 누출

0건

DOM text exact F1

1.000

접근성 element exact F1

1.000

의도적으로 주입한 결함 탐지

5 / 5

30개 결과의 구성:

  • observation 18개

  • transition 4개

  • lifecycle 8개

  • 범위 경계, password·OTP·payment 가림, 악성 지시 문구, ARIA, hidden DOM, disabled control, 링크, input, contenteditable, pause, stop, 재선택, 탭 전환

평가기 자체가 모든 결과를 통과시키는 것은 아닌지 확인하기 위해 다음 결함을 주입합니다.

  • 선택 밖 canary 혼입

  • 값은 바뀌었지만 sequence가 증가하지 않는 stale state

  • 중지 후 bridge region 잔존

  • password redaction 누락

  • 필요한 change event 누락

각 실행 보고서에는 Git commit, dirty state, Node·OS·Playwright·MCP SDK 버전, payload 크기와 제한된 latency 표본이 함께 기록됩니다.

왜 이 프로젝트를 만들었나

AI 제품에서는 모델 호출 이전의 입력 경계도 품질 문제입니다.

  • AI가 실제로 어떤 범위를 받았는가?

  • 선택 밖 정보가 섞이지 않았는가?

  • 화면이 바뀌었는데 오래된 관측을 최신처럼 사용하지 않는가?

  • 중지한 관측이 다시 살아나지 않는가?

  • 정상 케이스뿐 아니라 잘못된 결과도 평가기가 잡아내는가?

Oculus는 이 질문을 UI 설명이 아니라 재현 가능한 browser E2E, ground truth, hard gate, fault injection으로 답하는 포트폴리오 프로젝트입니다.

구조

flowchart LR
  U["사용자\n선택·검토·승인·중지"] --> E["Chrome 확장"]
  P["신뢰하지 않는 웹페이지"] --> E
  E -->|"선택 crop + 완전히 포함된 의미 정보"| B["로컬 브리지\n127.0.0.1"]
  B --> M["읽기 전용 MCP 4개"]
  M --> A["Codex · Claude Code · Cursor"]
  F["통제된 fixture와 ground truth"] --> T["Playwright 평가"]
  E --> T
  B --> T
  T --> R["버전된 JSON 결과"]

배포용 확장은 activeTab, scripting, storage만 요청합니다. Playwright는 Chrome의 실제 activeTab 사용자 제스처를 만들 수 없으므로, 자동화 과정에서 삭제되는 임시 확장에만 <all_urls>를 추가합니다. 배포 manifest의 최소 권한은 별도 contract test로 검증합니다.

직접 검증하기

요구사항: Node.js 20+, npm, Playwright Chromium

git clone https://github.com/Merchantlee99/oculus-scoped-observation.git
cd oculus-scoped-observation
npm ci
npx playwright install chromium
npm run portfolio:verify

증거를 다시 버전된 문서와 이미지로 반영하려면:

npm run evidence:publish

세부 재현 절차와 예상 출력은 docs/reproduction.md에 있습니다.

이 프로젝트가 주장하지 않는 것

현재 평가는 통제된 fixture에서 관측 레이어를 검증합니다. 따라서 다음을 주장하지 않습니다.

  • 모든 웹사이트에서 임의의 픽셀이 절대 유출되지 않는다

  • 모든 민감정보를 자동 탐지한다

  • 웹페이지 prompt injection을 완전히 막는다

  • VLM/OCR이 화면을 정확히 이해한다

  • 운영 환경의 production security audit이 끝났다

  • Codex·Claude Code·Cursor 실제 제품 호환 검증이 모두 완료됐다

정확한 통과 범위와 미검증 항목은 평가 카드증거 현황에 분리해 기록합니다.

저장소 구성

apps/chrome-extension/    선택·검토·crop·redaction·lifecycle UI
apps/local-bridge/        loopback 인증, bounded memory store, MCP server
evals/corpus/             버전된 ground truth
evals/src/                observation·transition·lifecycle scorer
tests/e2e/                실제 Chrome 확장 + 로컬 bridge 평가
tests/fixtures/           canary가 포함된 통제 브라우저 페이지
reports/                  공개할 JSON 결과와 요약
docs/                     설계·위협 모델·케이스 스터디·재현 절차

Security and license

이 저장소는 포트폴리오·연구용 소프트웨어이며 production 보안 통제가 아닙니다. 실제 비밀정보나 개인 화면을 public issue에 첨부하지 마세요.

Security policy · Threat model · MIT License

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP browser agent that runs as a Chrome extension. Control your real Chrome browser with 17 MCP tools — uses accessibility tree with @ref labels for low token usage. Supports WebMCP native tools.
    21
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to control the Google Chrome browser through a Node.js WebSocket bridge and a dedicated browser extension. It provides tools for capturing screenshots, executing JavaScript, managing tabs, and extracting page content via the MCP protocol.
    2
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Live browser-state verification for AI coding agents. Provides real-time state of Chrome tabs including URL, title, form fields, buttons, console errors, and visible text via MCP tools.
    14 npm
    MIT