For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
기본 탐색 메뉴
Theme
Codex

Codex use case

Mac 앱에 텔레메트리 추가하기

Codex로 Mac 앱의 기능 하나에 Logger를 추가하세요. 앱을 실행한 뒤 해당 동작이 수행됐는지 통합 로그에서 확인하세요.

Difficulty Advanced
Time horizon 30m

Codex와 Build macOS Apps 플러그인을 사용해 윈도우, 사이드바, 명령어 또는 동기화 플로우의 주요 지점에 Logger 이벤트를 몇 개 추가하세요. 앱을 실행한 뒤 의도한 동작이 수행됐는지 콘솔이나 log stream에서 확인하세요.

Best for

  • Codex가 윈도우 열기, 사이드바 항목 선택, 메뉴 명령어 실행, 메뉴 막대 조작, 동기화의 주요 단계 또는 대체 경로 진입을 정확히 추적해야 하는 Mac 앱 기능
  • Codex가 코드를 수정하고 앱을 다시 실행한 뒤 로그를 근거로 다음 수정 사항을 결정하는 과정을 반복하는 에이전트 디버깅
  • 로컬에서 앱을 여러 번 실행하면서 사용자 동작과 앱 수명 주기 이벤트를 간략히 기록하고 세션별로 발생 순서를 비교하는 작업

Contents

    ← All use cases

    Mac 앱에 텔레메트리 추가하기

    Codex로 Mac 앱의 기능 하나에 Logger를 추가하세요. 앱을 실행한 뒤 해당 동작이 수행됐는지 통합 로그에서 확인하세요.

    Codex와 Build macOS Apps 플러그인을 사용해 윈도우, 사이드바, 명령어 또는 동기화 플로우의 주요 지점에 Logger 이벤트를 몇 개 추가하세요. 앱을 실행한 뒤 의도한 동작이 수행됐는지 콘솔이나 log stream에서 확인하세요.

    Advanced
    30m

    Codex와 Build macOS Apps 플러그인을 사용해 윈도우, 사이드바, 명령어 또는 동기화 플로우의 주요 지점에 Logger 이벤트를 몇 개 추가하세요. 앱을 실행한 뒤 의도한 동작이 수행됐는지 콘솔이나 log stream에서 확인하세요.

    Advanced
    30m

    Best for

    • Codex가 윈도우 열기, 사이드바 항목 선택, 메뉴 명령어 실행, 메뉴 막대 조작, 동기화의 주요 단계 또는 대체 경로 진입을 정확히 추적해야 하는 Mac 앱 기능
    • Codex가 코드를 수정하고 앱을 다시 실행한 뒤 로그를 근거로 다음 수정 사항을 결정하는 과정을 반복하는 에이전트 디버깅
    • 로컬에서 앱을 여러 번 실행하면서 사용자 동작과 앱 수명 주기 이벤트를 간략히 기록하고 세션별로 발생 순서를 비교하는 작업

    Skills & Plugins

    • macOS 텔레메트리 스킬과 빌드 및 실행 스킬로 구조화된 `OSLog` 로깅을 추가하세요. 앱을 실행해 UI에서 해당 기능을 직접 사용한 뒤 콘솔이나 `log stream`에서 기록된 이벤트를 확인하세요.
    Skill Why use it
    Build macOS Apps macOS 텔레메트리 스킬과 빌드 및 실행 스킬로 구조화된 `OSLog` 로깅을 추가하세요. 앱을 실행해 UI에서 해당 기능을 직접 사용한 뒤 콘솔이나 `log stream`에서 기록된 이벤트를 확인하세요.

    Starter prompt

    Build macOS Apps 플러그인으로 [name one Mac feature or action flow]에 간단한 통합 로깅을 추가해 주세요. 그런 다음 앱을 실행하고 로그에서 이벤트가 예상한 순서대로 발생하는지 확인해 주세요. 제약 조건 - `print`보다 `OSLog`의 `Logger`를 우선 사용해 주세요. 이 기능의 로그를 쉽게 필터링할 수 있도록 서브시스템과 카테고리를 명확하게 지정해 주세요. - 주요 동작이 시작되거나 끝날 때, 또는 상태가 바뀔 때마다 한 줄로 간결하게 기록해 주세요. 예를 들어 윈도우가 열릴 때, 사이드바 선택 항목이 바뀔 때, 메뉴 명령어가 호출될 때, 동기화가 시작될 때와 끝날 때, 대체 경로로 진입할 때가 있습니다. - 계속 사용할 `info` 로그에는 핵심 정보만 일관된 형식으로 기록해 주세요. `debug`는 로컬에서만 필요한 상세 정보가 자주 출력될 때만 사용해 주세요. 작업을 마치기 전에 임시 로깅 코드를 제거하거나 해당 로그의 수준을 낮춰 주세요. - 비밀 정보, 인증 토큰, 개인정보, 문서 원문은 기록하지 마세요. 식별자를 꼭 기록해야 한다면 개인정보를 가장 안전하게 보호할 수 있는 어노테이션을 선택하고 그 이유를 설명해 주세요. - 앱을 빌드하고 실행해 해당 기능을 직접 사용해 보세요. 콘솔에서 이벤트를 확인하거나 `log stream`에 필터 조건식을 적용해 관련 이벤트만 확인해 주세요. - 플로우가 길거나, 동작이 간헐적으로 발생하거나, 수동으로 재현하기가 더 쉽다면 필터링한 로그 스트림을 작은 로컬 세션 추적 파일에 저장해 주세요. 필요하면 제가 직접 앱을 조작할 수 있게 해 주세요. 그런 다음 파일을 다시 읽고 이벤트를 시간순으로 요약해 주세요. - 예상한 이벤트가 보이지 않으면 해당 동작을 처리하는 것으로 추정되는 코드 경로에 더 가깝게 로그 기록 위치를 옮기고 플로우를 다시 실행해 주세요. 로그로 실제 동작을 설명할 수 있을 때까지 반복해 주세요. 결과물 - 새 로거 설정과 추가한 이벤트의 정확한 목록 - 사용한 콘솔 필터 또는 `log stream` 필터 조건식 - 로깅 추가 전후를 비교해 새로 확인할 수 있는 동작을 정리한 짧은 요약 - 장시간 로그를 수집했다면 저장한 추적 파일과 시간순 이벤트 요약 - 플로우의 동작이 올바르게 기록됐음을 보여 주는 대표 로그 한두 줄
    Build macOS Apps 플러그인으로 [name one Mac feature or action flow]에 간단한 통합 로깅을 추가해 주세요. 그런 다음 앱을 실행하고 로그에서 이벤트가 예상한 순서대로 발생하는지 확인해 주세요. 제약 조건 - `print`보다 `OSLog`의 `Logger`를 우선 사용해 주세요. 이 기능의 로그를 쉽게 필터링할 수 있도록 서브시스템과 카테고리를 명확하게 지정해 주세요. - 주요 동작이 시작되거나 끝날 때, 또는 상태가 바뀔 때마다 한 줄로 간결하게 기록해 주세요. 예를 들어 윈도우가 열릴 때, 사이드바 선택 항목이 바뀔 때, 메뉴 명령어가 호출될 때, 동기화가 시작될 때와 끝날 때, 대체 경로로 진입할 때가 있습니다. - 계속 사용할 `info` 로그에는 핵심 정보만 일관된 형식으로 기록해 주세요. `debug`는 로컬에서만 필요한 상세 정보가 자주 출력될 때만 사용해 주세요. 작업을 마치기 전에 임시 로깅 코드를 제거하거나 해당 로그의 수준을 낮춰 주세요. - 비밀 정보, 인증 토큰, 개인정보, 문서 원문은 기록하지 마세요. 식별자를 꼭 기록해야 한다면 개인정보를 가장 안전하게 보호할 수 있는 어노테이션을 선택하고 그 이유를 설명해 주세요. - 앱을 빌드하고 실행해 해당 기능을 직접 사용해 보세요. 콘솔에서 이벤트를 확인하거나 `log stream`에 필터 조건식을 적용해 관련 이벤트만 확인해 주세요. - 플로우가 길거나, 동작이 간헐적으로 발생하거나, 수동으로 재현하기가 더 쉽다면 필터링한 로그 스트림을 작은 로컬 세션 추적 파일에 저장해 주세요. 필요하면 제가 직접 앱을 조작할 수 있게 해 주세요. 그런 다음 파일을 다시 읽고 이벤트를 시간순으로 요약해 주세요. - 예상한 이벤트가 보이지 않으면 해당 동작을 처리하는 것으로 추정되는 코드 경로에 더 가깝게 로그 기록 위치를 옮기고 플로우를 다시 실행해 주세요. 로그로 실제 동작을 설명할 수 있을 때까지 반복해 주세요. 결과물 - 새 로거 설정과 추가한 이벤트의 정확한 목록 - 사용한 콘솔 필터 또는 `log stream` 필터 조건식 - 로깅 추가 전후를 비교해 새로 확인할 수 있는 동작을 정리한 짧은 요약 - 장시간 로그를 수집했다면 저장한 추적 파일과 시간순 이벤트 요약 - 플로우의 동작이 올바르게 기록됐음을 보여 주는 대표 로그 한두 줄

    실행 경로가 불분명한 곳에 Logger 하나 추가하기

    Mac 앱에서 “뭔가 일어났다”는 것만 알고 코드 리뷰만으로는 실제 동작을 파악하기 어려울 때 이 방법을 사용하세요. Codex에 특정 동작을 파악하는 데 필요한 통합 로그를 몇 개 추가하고, 앱을 실행해 해당 동작을 재현한 뒤, 콘솔 앱이나 log stream에서 예상한 이벤트가 발생했는지 확인해 달라고 요청하세요.

    이 과정에는 Build macOS Apps 플러그인을 사용하세요. 이 플러그인의 macOS 텔레메트리 스킬은 간단한 절차에 집중합니다. Apple의 Logger를 사용하고, 어떤 기능의 로그인지 알아보기 쉽도록 서브시스템과 카테고리를 정하세요. 동작이 시작되거나 끝나는 지점과 상태 전환을 기록하되 민감한 데이터는 제외하세요. 앱을 로컬에서 빌드하고 실행한 뒤 실제 이벤트가 기록되는지 확인하세요.

    에이전트 기반 개발에 텔레메트리가 유용한 이유

    로그를 잘 남기면 Codex가 패치할 때마다 같은 절차로 결과를 확인할 수 있습니다. 사용자가 창과 메뉴 동작, 동기화 상태 전환을 일일이 확인할 필요 없이 에이전트가 앱을 실행해 해당 플로우를 재현하고, 필요한 로그만 추려 본 뒤 그 결과를 근거로 다음에 수정할 코드를 결정할 수 있습니다.

    특히 다음 세 가지 방식으로 에이전트와 작업할 때 유용합니다.

    • 자동 디버깅: Codex가 문제가 의심되는 플로우에 로그를 추가하고 앱을 실행해 사이드바를 클릭하거나 명령어를 실행합니다. 이어서 로그가 기록된 순서를 살펴보고 상태를 업데이트하는 코드 경로를 수정합니다. 로그와 UI 동작이 일치할 때까지 같은 플로우를 다시 실행합니다.
    • 앱 세션 기록: Codex가 앱 실행, 창 열기, 사이드바 항목 선택, 가져오기 시작, 가져오기 완료, 가져오기 실패에 각각 이벤트를 하나씩 추가합니다. 그런 다음 앱을 로컬에서 실행하고 세션의 이벤트를 시간순으로 정리해 누락되거나 순서가 뒤바뀐 상태 전환을 쉽게 찾을 수 있게 합니다.
    • 사용자가 직접 재현하는 세션 기록: Codex가 로깅을 켠 상태로 앱을 실행하고, 사용자가 까다로운 플로우를 직접 재현하는 동안 관련 로그만 계속 수집합니다. 세션이 끝나면 수집한 기록을 검토하고 이를 근거로 다음 패치를 제안합니다.

    로그는 꼭 필요한 곳에 추가하고 쉽게 필터링할 수 있도록 구성하기

    상태가 바뀔 때마다 로그를 남기는 코드를 영구적으로 두기보다는 Codex에 기능 영역별로 로거를 하나씩 추가해 달라고 요청하세요. Windowing, Commands, MenuBar, Sidebar, Sync, Import처럼 기능별로 카테고리를 나누면 다음에 디버깅할 때 필요한 로그만 훨씬 쉽게 골라낼 수 있습니다.

    import SwiftUI
    
    struct SidebarItem { let id: String }
    @MainActor private var selection: String?
    import OSLog
    
    private let logger = Logger(
      subsystem: Bundle.main.bundleIdentifier ?? "SampleApp",
      category: "Sidebar"
    )
    
    @MainActor
    func selectItem(_ item: SidebarItem) {
      logger.info("Selected sidebar item: \(item.id, privacy: .public)")
      selection = item.id
    }

    info는 나중에도 참고할 만한 동작이나 수명 주기 이벤트를 간결하게 기록할 때 사용하세요. debug는 로컬 상태를 자세히 살펴보기 위해 자주 남기는 로그에 사용하세요. 이런 로그는 작업을 마치기 전에 제거하거나 로그 수준을 낮춰도 됩니다. signpost는 특정 구간의 소요 시간을 측정할 때만 추가하세요.

    Codex에 로그로 이벤트 발생을 확인해 달라고 요청하기

    Logger 호출을 추가한 뒤에는 실제로 이벤트가 기록되는지 확인하세요. Codex에 앱을 실행해 로그를 추가한 플로우를 재현하고, 확인에 사용한 콘솔 앱의 필터나 log stream 조건식을 그대로 보여 달라고 요청하세요. 대표 로그 한두 줄도 함께 요청하세요.

    log stream --style compact --predicate 'subsystem == "com.example.app" && category == "Sidebar"'

    예상한 이벤트가 나타나지 않으면 Codex에 로그를 남기는 위치를 문제가 의심되는 실행 경로에 더 가깝게 옮긴 뒤 같은 플로우를 다시 실행해 달라고 요청하세요. 로그로 실제 동작을 설명할 수 있을 때까지 이 과정을 반복하세요. 앱 충돌이나 백트레이스를 분석해야 한다면 플러그인의 빌드 및 실행 디버깅 워크플로우로 전환하고, 텔레메트리는 동작의 시작과 종료 지점에 집중하세요.

    다음 Codex 실행에서 살펴볼 세션 추적 파일 저장하기

    오래 추적해야 하거나 간헐적으로 발생하는 버그라면 Codex에 관련 로그만 골라 작은 로컬 추적 파일에 저장하고, 이벤트를 시간순으로 요약한 뒤 파일을 워크스페이스에 남겨 달라고 요청하세요. 다음에 Codex를 실행할 때 기억에 의존해 전체 세션을 재현할 필요 없이 같은 기록을 살펴볼 수 있습니다. 한 번은 에이전트를 실행해 추적 기록을 수집하고 다음번에는 패치 전후의 동작을 비교하는 식으로 디버깅하기가 쉬워집니다.

    사용자가 세션의 일부를 직접 진행해야 할 때도 이 방법이 유용합니다. Codex에 로그를 수집할 수 있는 디버깅 환경에서 앱을 실행한 뒤 필요한 로그만 필터링해 기록하도록 요청하세요. 사용자가 문제를 직접 재현하는 동안에는 기다렸다가 재현이 끝나면 저장한 추적 파일을 읽어 달라고 하세요.

    실무 팁

    한 번에 한 기능에만 로그 추가하기

    로그가 기록되는 순서를 쉽게 파악할 수 있도록 사이드바, 창, 명령어, 동기화 경로 중 하나부터 시작하세요. 해당 경로가 안정적으로 동작하면 Codex가 같은 방식을 관련 플로우에도 적용할 수 있습니다.

    프롬프트에 개인정보 보호 지침 포함하기

    Codex에 로그에 남기는 각 식별자가 무엇인지 설명하고, 비밀 정보나 개인정보, 원본 콘텐츠를 통합 로그에 기록하지 말라고 요청하세요. 로컬 디버깅에는 대개 몇 가지 이벤트만으로 충분합니다.

    최종 요약에 출력 예시 포함하기

    “텔레메트리를 추가했습니다”라는 설명만 있을 때보다 실제 로그 몇 줄을 보면 변경 사항이 의도대로 동작하는지 판단하기가 훨씬 쉽습니다. 다음에 에이전트를 실행할 때도 같은 절차로 검증할 수 있도록 Codex에 필터 조건식과 동작 순서를 간단히 정리해 넣어 달라고 요청하세요.

    Tech stack

    Need

    앱 로깅

    Default options

    OSLog Logger

    Why it's needed

    구조화된 통합 로깅을 사용하면 코드 곳곳에 print 문을 넣을 필요 없이 Codex가 필요한 이벤트만 필터링해 동작을 확인할 수 있습니다.

    Need

    에이전트 워크플로우

    Why it's needed

    이 플러그인의 텔레메트리 스킬과 빌드 및 실행 스킬은 함께 사용하도록 설계됐습니다. 플로우 하나에 로깅을 추가하고 앱을 실행한 뒤, 로그를 살펴보면서 필요한 이벤트만 기록하도록 조정할 수 있습니다.

    Need

    런타임 검증

    Default options

    Console.app과 log stream --predicate ...

    Why it's needed

    사용한 로그 필터와 출력 예시를 함께 전달하면 에이전트가 앱을 다시 실행할 때마다 같은 절차로 새 로깅이 제대로 작동하는지 쉽게 검증할 수 있습니다.

    Need Default options Why it's needed
    앱 로깅 OSLog Logger 구조화된 통합 로깅을 사용하면 코드 곳곳에 print 문을 넣을 필요 없이 Codex가 필요한 이벤트만 필터링해 동작을 확인할 수 있습니다.
    에이전트 워크플로우 Build macOS Apps 플러그인 이 플러그인의 텔레메트리 스킬과 빌드 및 실행 스킬은 함께 사용하도록 설계됐습니다. 플로우 하나에 로깅을 추가하고 앱을 실행한 뒤, 로그를 살펴보면서 필요한 이벤트만 기록하도록 조정할 수 있습니다.
    런타임 검증 Console.app과 log stream --predicate ... 사용한 로그 필터와 출력 예시를 함께 전달하면 에이전트가 앱을 다시 실행할 때마다 같은 절차로 새 로깅이 제대로 작동하는지 쉽게 검증할 수 있습니다.

    Related use cases