ONESHIM Rust 데스크톱 클라이언트
AI 기반 자율 사무 업무 지원 에이전트의 Rust 네이티브 데스크톱 클라이언트입니다.
최신 버전
v0.3.0 - macOS, Windows, Linux 지원 | gRPC 클라이언트 추가 | GitHub Releases
사용자 가이드
실제 사용 흐름과 화면을 보려면 고객 여정 가이드 를 참조하세요.
주요 기능
| 기능 | 설명 |
|---|---|
| 실시간 컨텍스트 모니터링 | 활성 창, 시스템 리소스, 사용자 활동 추적 |
| Edge 이미지 처리 | 스크린샷 캡처, 델타 인코딩, 썸네일, OCR |
| Edge Intelligence | 로컬 집중도 분석, 작업 세션 추적, 스마트 제안 생성 |
| 로컬 웹 대시보드 | 브라우저에서 실시간 모니터링 및 설정 (http://localhost:9090) |
| gRPC + REST 통신 | gRPC 우선, REST fallback 지원 (Server Streaming RPC) |
| 서버 SSE 연결 | 실시간 제안 수신 및 피드백 전송 (REST fallback) |
| 자율 UI 자동화 | 2-레이어 액션 모델, OCR/LLM 기반 UI 요소 탐색, 정책 기반 실행 |
| OS 네이티브 샌드박스 | Linux seccomp, macOS sandbox-exec, Windows Job Objects |
| 워크플로우 프리셋 | 내장 10개 + 사용자 정의 워크플로우 자동화 |
| 시스템 트레이 | 백그라운드 실행 및 빠른 접근 |
| 자동 업데이트 | GitHub Releases 기반 자동 업데이트 |
| 다국어 지원 | 한국어/영어 자동 감지 (i18n) |
| 크로스 플랫폼 | macOS, Windows, Linux 지원 |
아키텍처 개요
10개의 크레이트로 구성된 Cargo workspace이며, **Hexagonal Architecture (Ports & Adapters)**를 따릅니다.
Workspace 구조
client-rust/
├── Cargo.toml # Workspace 루트
├── .cargo/config.toml # 빌드 설정
└── crates/
├── oneshim-core/ # 도메인 모델 + 포트(11개) + 에러(23개) + 설정
├── oneshim-network/ # HTTP/SSE/WebSocket + 압축 + 인증 + AI OCR/LLM 클라이언트
├── oneshim-suggestion/ # 제안 수신 및 처리
├── oneshim-storage/ # SQLite 로컬 저장소
├── oneshim-monitor/ # 시스템 모니터링
├── oneshim-vision/ # 이미지 처리 (Edge) + Privacy Gateway
├── oneshim-ui/ # 데스크톱 UI + 자동화 토글
├── oneshim-web/ # 로컬 웹 대시보드 (Axum + React) + 자동화 API
├── oneshim-automation/ # 자동화 제어 (정책/감사/샌드박스/의도해석/프리셋)
└── oneshim-app/ # 바이너리 진입점
크레이트 상세 문서
| 크레이트 | 역할 | 문서 |
|---|---|---|
| oneshim-core | 도메인 모델, 포트 인터페이스(11개), 에러(23개), 설정 | 상세 |
| oneshim-network | gRPC/HTTP/SSE/WebSocket, 압축, 인증, AI OCR/LLM 클라이언트 | 상세 |
| oneshim-vision | 캡처, 델타 인코딩, OCR, PII 필터, Privacy Gateway | 상세 |
| oneshim-monitor | 시스템 메트릭, 활성 창, 유휴 감지, 입력 활동 | 상세 |
| oneshim-storage | SQLite, 마이그레이션(V7), 보존 정책, Edge Intelligence | 상세 |
| oneshim-suggestion | 제안 큐, 피드백, 이력 | 상세 |
| oneshim-ui | 시스템 트레이, 알림, 윈도우, 테마, 자동화 토글 | 상세 |
| oneshim-web | 로컬 웹 대시보드 (Axum REST API 60개+ + React 9페이지), E2E 테스트 | 상세 |
| oneshim-automation | 정책 기반 실행, 감사 로깅, OS 샌드박스, 의도 해석, 프리셋(10개) | 상세 |
| oneshim-app | DI, 9-루프 스케줄러, FocusAnalyzer, 자동 업데이트 | 상세 |
빠른 시작
요구 사항
- Rust 1.75 이상
- macOS 10.15+ / Windows 10+ / Linux (X11/Wayland)
빌드 및 실행
# 개발 빌드
cargo build -p oneshim-app
# 릴리즈 빌드
cargo build --release -p oneshim-app
# 환경 변수 설정 후 실행
export ONESHIM_EMAIL="your@email.com"
export ONESHIM_PASSWORD="your-password"
cargo run -p oneshim-app
테스트
# Rust 테스트 (620개+)
cargo test --workspace
# E2E 테스트 (72개) - 웹 대시보드
cd crates/oneshim-web/frontend && pnpm test:e2e
# 린트
cargo clippy --workspace
# 포맷 검사
cargo fmt --check
설치
바이너리 다운로드
Releases 페이지에서 플랫폼에 맞는 바이너리를 다운로드하세요.
| 플랫폼 | 파일 |
|---|---|
| macOS Universal | oneshim-macos-universal.tar.gz |
| macOS Apple Silicon | oneshim-macos-arm64.tar.gz |
| macOS Intel | oneshim-macos-x64.tar.gz |
| Windows x64 | oneshim-windows-x64.zip |
| Linux x64 | oneshim-linux-x64.tar.gz |
설정
환경 변수
| 변수 | 설명 | 기본값 |
|---|---|---|
ONESHIM_EMAIL | 로그인 이메일 | (필수) |
ONESHIM_PASSWORD | 로그인 비밀번호 | (필수) |
ONESHIM_TESSDATA | Tesseract 데이터 경로 | (선택) |
RUST_LOG | 로그 레벨 | info |
설정 파일
~/.config/oneshim/config.toml (Linux/macOS) 또는 %APPDATA%\oneshim\config.toml (Windows):
[server]
base_url = "https://api.oneshim.com"
request_timeout_ms = 30000
sse_max_retry_secs = 30
[monitor]
poll_interval_ms = 1000
sync_interval_ms = 10000
heartbeat_interval_ms = 30000
[storage]
retention_days = 30
max_storage_mb = 500
[vision]
capture_throttle_ms = 5000
thumbnail_width = 480
thumbnail_height = 270
ocr_enabled = false
[update]
enabled = true
repo_owner = "anthropics"
repo_name = "oneshim-agent"
check_interval_hours = 24
include_prerelease = false
데이터 흐름
자동화 실행 흐름
테스트 현황
Rust 테스트 (620개)
| 크레이트 | 테스트 수 | 커버리지 영역 |
|---|---|---|
| oneshim-core | 48 | 모델/에러/동의/자동화 모델/AiProviderType |
| oneshim-network | 86 | HTTP/압축/gRPC/재시도/AI 클라이언트 |
| oneshim-vision | 78 | 델타/인코더/PII 필터/Privacy Gateway |
| oneshim-monitor | 39 | 메트릭/입력활동/창레이아웃 |
| oneshim-storage | 41 | CRUD/태그/마이그레이션/Edge Intelligence |
| oneshim-suggestion | 17 | 큐/프레젠터 |
| oneshim-ui | 37 | 테마/차트/설정UI/자동화 토글 |
| oneshim-web | 68 | API/핸들러/태그/리포트/자동화 DTO |
| oneshim-automation | 104 | 정책/감사/샌드박스/리졸버/프리셋/의도해석 |
| oneshim-app | 102 | 통합/FocusAnalyzer/스케줄러 |
| Rust Total | 620 | - |
E2E 테스트 (72개)
| 파일 | 테스트 수 | 검증 영역 |
|---|---|---|
| navigation.spec.ts | 9 | 네비게이션, 키보드 단축키 |
| dashboard.spec.ts | 8 | 메트릭 카드, 차트, 연결 상태 |
| timeline.spec.ts | 8 | 필터링, 뷰 모드, 키보드 |
| settings.spec.ts | 13 | 설정 폼, 저장, 내보내기 |
| privacy.spec.ts | 13 | 데이터 삭제, 백업/복원 |
| search.spec.ts | 10 | 검색 폼, 태그 필터 |
| reports.spec.ts | 11 | 기간 선택, 차트, 통계 |
| E2E Total | 72 | - |
전체 테스트
| 유형 | 테스트 수 |
|---|---|
| Rust 단위/통합 테스트 | 620 |
| Playwright E2E 테스트 | 72 |
| 총계 | 692 |
관련 문서: