Daeseon Yoo
Back to project
·Tech retro·5 min

Multi-Target Overlay — user-in-the-loop으로 95% effective accuracy (Vision LLM 천장 인정)

Vision LLM 정확도 ~80-90% 본질 천장 인정 후, top 2 distinct 박스 (빨강 + 회색 dashed + 번호 라벨)로 사용자가 1초만에 시각 선택. Operator/Computer Use의 자동 클릭 대비 결정적 차별 — guide 자동화 OK, action 자동화 X.

문제

사용자 dogfooding에서 발견 — "chrome 켜라고 했는데 다른 거 가리킨다". 같은 텍스트 "Chrome"이 화면 여러 위치에 있음:

LLM이 intent inference 못 함 (target_role 박아도 ~10-20% 빗나감). matcher가 ranked single result 박는데 틀림 가능.

결정 분기

3 옵션:

A. LLM 정확도 더 올림 — 더 큰 모델 / 더 정밀 prompt

B. 자동 클릭으로 시도 후 wrong이면 undo — Operator / Manus 식

C. ⭐ Top N 후보 박음 + 사용자 시각 선택

선택 C.

박힌 거

ElementMatcher.matchTop

static func matchTop(
    targetText: String,
    candidates: [MatchCandidate],
    llmHintRect: CGRect? = nil,
    proximityRadius: CGFloat = 100,
    preferredRole: String? = nil,
    threshold: Double = defaultThreshold,
    distinctDistance: CGFloat = 50,
    maxResults: Int = 2
) -> [MatchResult]

AnalyzeStage.done — matches: [MatchResult]

기존 matched: MatchResult? 단일 → matches: [MatchResult] 배열.

case done(result: AnalysisResult, geometry: DisplayGeometry, matches: [MatchResult])

빈 배열이면 caller가 LLM coords fallback. 1+ matches면 matches[0]이 primary.

HUDAnnotation.alternatives

struct HUDAnnotation: Sendable, Equatable {
    let rect: CGRect
    let nextAction: String
    let sourceTag: String
    let alternatives: [Alternative]
 
    struct Alternative: Sendable, Equatable {
        let rect: CGRect
        let sourceTag: String
        let number: Int   // 2, 3, ...
    }
}

HUDOverlayView:

결정 비용

차별 — 빅테크 비교

triggerwrong-casesenior fitcost/task
Claude Computer Use자동 perceive-act loop실 손해 (계정/지불)C− (무서움)$0.15+
Operatoriterative + 가끔 pause결제 confirm onlyC (approval fatigue)$200/월
Manusvisible plan + 자동 executecredit drain 사고B (live UI)$39/월
ScreenBridgeguide + user click손해 0A (선택권)$0.0005

결정적 분리: guide 자동화 OK, action 자동화 영원 X.

v0.5 active mode에서도 영원

5-stage Jarvis evolution (v0.5 active monitoring)까지 박을 때도 action 자동 X 유지. 화면 변화 detect + 자동 다음 안내 (Y/active) OK, 단 클릭은 user손해 0 보장.

다음

패턴

Commit

43a44ff015a733ff50f57dd105a3001b62f57f7f (2026-05-30 15:25 -0400)