
Raycast용 Clash를 만들었습니다
기존 클라이언트는 계속 충돌했고, 저는 시작, 시스템 프록시, 수동 노드 고정, 가장 빠른 노드 자동 선택 및 규칙 스케줄링만 필요했기 때문에 Clash의 일상적인 제어판을 Raycast로 옮겼습니다.
프로그래머에게 외부 네트워크에 연결할 수 없으면 작업할 수 없다는 것은 잘 알려진 사실입니다.
이 말은 농담처럼 들리지만, 많은 경우 사실입니다. GitHub를 열 수 없고, 문서를 열 수 없으며, AI 프로그래밍 도우미에 연결할 수 없고, 패키지 관리자 다운로드가 실패하여 작업 흐름이 즉시 중단됩니다.
그래서 저는 항상 안정적인 프록시 클라이언트가 필요했습니다.
하지만 언제부터인지 제가 사용하던 소프트웨어가 자주 충돌하기 시작했습니다. 충돌할 때마다 다시 열고, 시스템 프록시가 활성화되었는지 다시 확인하고, 노드가 여전히 작동하는지 다시 확인해야 했습니다. 가장 짜증나는 것은 특정 웹사이트를 열 수 없는 것이 아니라, 문제가 어느 계층에 있는지 알 수 없다는 것이었습니다.
클라이언트가 시작되지 않았나요? 시스템 프록시가 켜지지 않았나요? 노드가 다운되었나요? 규칙이 잘못되었나요? 아니면 브라우저가 프록시를 사용하지 않았나요?
제가 정말로 원했던 것은 기능이 완벽한 대형 클라이언트가 아니었습니다.
매일 로그를 볼 필요도 없고, 복잡한 설정도 필요 없으며, 상주 창도 필요 없습니다. 저는 몇 가지 자주 사용하는 동작만 필요합니다.
- 부팅 시 시작될 수 있어야 합니다.
- 시스템 프록시가 자동으로 켜질 수 있어야 합니다.
- 여러 구독을 통합 관리할 수 있어야 합니다.
- 자주 사용하는 노드를 수동으로 고정할 수 있고, 가장 빠른 노드를 자동으로 선택할 수 있어야 합니다.
- 규칙을 빠르게 조정할 수 있어야 합니다.
- 문제가 발생했을 때 어느 계층이 고장 났는지 알 수 있어야 합니다.
이러한 동작들이 모두 짧은데, 왜 Raycast에 직접 넣을 수 없을까요?
그래서 저는 Clash for Raycast라는 플러그인을 만들었습니다.

대형 클라이언트를 만들지 않음
이 프로젝트는 처음부터 완전한 Clash 클라이언트를 다시 작성하기 위한 것이 아니었습니다.
현재 이미 많은 성숙한 선택지가 있습니다. Clash Verge Rev는 완전한 GUI로, 크로스 플랫폼, TUN, 구성 강화, 노드 및 규칙 시각적 편집을 지원합니다. FlClash는 데스크톱 및 모바일 크로스 플랫폼 경로를 따릅니다. ClashX는 전통적인 macOS 메뉴바 클라이언트와 더 유사합니다.
이러한 제품들은 "완전한 프록시 클라이언트" 문제를 해결합니다.
저는 다른 문제를 해결하고 싶었습니다. 프록시가 개발 워크플로우의 인프라일 때, 제어판을 더 짧게 만들 수 없을까요?
저는 매일 Raycast에서 애플리케이션을 시작하고, 명령을 검색하고, 스크립트를 실행하고, 개발 도구를 관리합니다. 저에게 프록시 도구도 명령처럼 작동해야 하며, 연구해야 할 독립적인 창이 아니어야 합니다.
그래서 이 플러그인은 세 가지 진입점만 유지합니다.
| 명령 | 용도 |
|---|---|
Clash Setup | 코어 설치, 구성 생성, 백그라운드 서비스 시작, 상태 확인 |
Clash Dashboard | 상태 확인, 경로 전환, 구독 관리, 노드 테스트, 노드 모드 전환, 시스템 프록시 켜고 끄기 |
Clash Rules | 규칙 보기, 사용자 지정 규칙 추가, 규칙 순서 조정 |
이것은 기능이 더 많은 것이 아니라, 경로가 더 짧은 것입니다.
먼저 초기화 완료

플러그인을 설치한 후 첫 번째 진입점은 Clash Setup이어야 합니다.

이것은 인프라를 먼저 실행하는 역할을 합니다. 코어를 설치하고, 구성을 생성하고, 백그라운드 서비스를 시작하고, Core API 및 시스템 프록시를 확인합니다.
이 단계가 완료되면 일상적인 사용은 Clash Dashboard 및 Clash Rules로 돌아갑니다. 나중에 네트워크 문제가 다시 발생하면, 어느 계층이 준비되지 않았는지 확인하기 위해 먼저 여기로 돌아올 것입니다.
먼저 상태 확인
제가 가장 필요로 하는 것은 중앙 제어판입니다.
이전에는 네트워크 문제가 발생하면 먼저 추측해야 했습니다. 시스템 프록시가 꺼졌는지, 코어가 실행되지 않았는지, 포트 충돌이 있는지, 규칙이 잘못되었는지. 이제 Clash Dashboard를 열면 한눈에 주요 상태를 볼 수 있습니다.

이 페이지는 모든 정보를 제공하는 것을 목표로 하지 않고, 제가 즉시 현재 작업할 수 있는지 판단할 수 있도록 하는 것을 목표로 합니다.
시스템 프록시가 켜져 있는지, 현재 경로가 무엇인지, 코어가 실행 중인지, 현재 규칙 모드인지 다른 모드인지, 자주 사용하는 프록시 그룹에서 누가 선택되었는지, 이 정보면 충분합니다.
임시로 특정 경로로 전환하고 싶다면, 전체 클라이언트를 열 필요도 없습니다. Raycast에서 경로를 선택하고 엔터를 누르면 완료됩니다.
다음으로 노드 선택
제가 가장 원하는 기능은 사실 경로 고정입니다.
예를 들어, 저는 자주 싱가포르 노드를 사용하고 싶습니다. 하지만 "싱가포르 노드 사용"에는 두 가지 완전히 다른 시나리오가 있습니다.
하나는 어떤 노드가 안정적인지 이미 알고 있어서 먼저 고정하고 싶고, 클라이언트가 스스로 전환하지 않기를 바라는 경우입니다. 다른 하나는 이 그룹에서 어떤 노드가 가장 빠른지 관심이 있고, 지연 시간에 따라 자동으로 선택되기를 바라는 경우입니다.
그래서 저의 실제 요구 사항은 단순히 "자동 선택"이 아니라, 모든 구독의 싱가포르 노드를 하나의 그룹에 넣고, 그날의 작업 상태에 따라 수동으로 고정할지, 아니면 자동으로 가장 빠른 노드를 선택할지 결정하는 것입니다.
이것이 사용자 지정 프록시 그룹입니다.

사용자 지정 그룹은 두 가지 모드만 유지합니다.
| 전략 | 의미 |
|---|---|
Manual Select | 안정적인 고정 경로가 필요할 때 수동으로 노드를 선택합니다. |
Always Fastest | 선택된 노드 중에서 현재 가장 빠른 노드를 자동으로 선택합니다. 지연 시간에만 관심이 있을 때 적합합니다. |
이것은 모든 전략을 펼쳐 놓는 것보다 저의 사용 습관에 더 가깝습니다.
때로는 "오늘은 이 노드를 사용하고, 변경하지 마세요."라고 표현하고 싶을 때가 있습니다. 때로는 "오늘은 싱가포르를 사용하고, 어떤 노드를 사용할지는 당신이 선택해 주세요."라고 표현하고 싶을 때가 있습니다.
이 두 가지 동작은 모두 동일한 노드 페이지에서 완료되어야 하며, 구성 파일로 돌아가 프록시 그룹을 변경하도록 강요해서는 안 됩니다.
규칙 조정이 쉬워야 함
또 다른 자주 발생하는 문제는 규칙입니다.
많은 경우 노드가 고장난 것이 아니라, 규칙이 트래픽을 잘못된 방향으로 보낸 것입니다. 예를 들어, 특정 개발 도구, AI 서비스, 해외 문서 사이트가 규칙 집합에 포함되지 않아 결국 직접 연결되어 판단하기 어려운 실패가 발생할 수 있습니다.
그래서 저는 Clash Rules 페이지를 만들었습니다.

이것은 완전한 구성 편집기를 대체하기 위한 것이 아니라, 가장 자주 사용하는 몇 가지 동작을 Raycast에 넣기 위한 것입니다.
- 규칙 순서 보기.
- 이 규칙이
DIRECT,PROXY또는REJECT로 이동하는지 확인. - 사용자 지정 규칙 추가.
- 사용자 지정 규칙 위치 조정.
- 규칙 집합 소스 열기.
mihomo의 규칙은 위에서 아래로 일치하므로 규칙 순서 자체가 결과에 영향을 미칩니다. 이 페이지가 해결하려는 것은 "규칙을 다시 설계"하는 것이 아니라, 현재 이 트래픽이 왜 이렇게 이동하는지 빠르게 이해할 수 있도록 하는 것입니다.
규칙 자체는 새로 만들지 않았으며, 주로 성숙한 클라이언트에서 흔히 볼 수 있는 구성 아이디어를 따릅니다. 내장 규칙은 기본 분할을 담당하고, 사용자 지정 규칙은 임시 보충을 담당하며, 마지막으로 알 수 없는 트래픽은 기본적으로 PROXY로 이동합니다.
왜 Raycast인가
이 플러그인의 가장 중요한 디자인 절충은 사실 Clash가 아니라 Raycast입니다.

완전한 클라이언트를 만들었다면, 메뉴바, 설정 페이지, 트래픽 그래프, 구성 편집, TUN, 동기화, 로그 패널을 만들 수밖에 없었을 것입니다. 이 모든 것을 만들 수 있지만, 그것들은 저에게 가장 고통스러운 부분이 아니었습니다.
저의 고통스러운 점은 작업 경로가 너무 길다는 것이었습니다.
제가 원했던 것은 다음과 같습니다.
clash를 검색하면 진입점을 볼 수 있습니다.- 설치 후 코어, 구성 및 시스템 프록시를 먼저 확인합니다.
- Dashboard를 열면 현재 네트워크 상태를 알 수 있습니다.
- 경로 전환은 명령을 전환하는 것과 같습니다.
- 싱가포르 노드를 수동으로 고정할 수 있고, 자동으로 가장 빠른 노드를 선택할 수 있습니다.
- 규칙 문제를 빠르게 보충할 수 있습니다.
- 고장이 발생하면 먼저 상태 확인을 볼 수 있습니다.
이것이 Raycast가 이 작업에 적합한 이유입니다.
이것은 "더 완전한" Clash 클라이언트가 아니라, "내 작업 진입점에 더 가까운" Clash 제어판입니다.
완료 후의 느낌
이 프로젝트를 통해 저는 한 가지를 다시 확인했습니다. AI 시대에는 많은 개인 도구를 다시 만들어 볼 가치가 있습니다.
이전에는 이러한 요구 사항이 포기될 가능성이 높았습니다. 클라이언트가 가끔 충돌하면 참았고, 노드를 선택하기 어려우면 수동으로 전환했으며, 규칙을 조정하기 어려우면 구성 파일에서 변경했고, 시스템 프록시가 표류하면 클라이언트를 다시 시작했습니다.
왜냐하면 자신만을 위한 도구를 만드는 비용이 너무 높았기 때문입니다.
이제는 다릅니다.
기존 기능을 다시 조합할 수 있습니다. mihomo는 프록시 코어를 담당하고, Raycast는 진입점을 담당하며, launchd는 백그라운드 서비스를 담당하고, macOS 시스템 프록시는 시스템 연결을 담당하며, 플러그인은 이들을 편리한 워크플로우로 만듭니다.
Clash for Raycast는 저에게 그런 도구입니다.
이것은 더 큰 Clash가 아닙니다.
이것은 저만의 네트워크 스위치입니다.
프로젝트 주소
소스 코드는 GitHub에 공개되었습니다: wuyuxiangX/clash-for-raycast.
관련 글
Raycast: 제가 가장 좋아하는 Mac 앱
런처에서 생산성 허브로 진화한 Raycast. 2년간 사용한 헤비 유저가 추천하는 Raycast 확장 플러그인을 용도별로 소개합니다. 클립보드 관리, 윈도우 관리, 포트 관리, JSON 포맷팅 등 Mac 개발자와 일반 사용자 모두의 업무 효율을 극적으로 높여주는 확장 기능 총정리
Eclipse에서 Zed로: 한 개발자의 에디터 진화사
백엔드 개발에서 풀스택 개발로, 200개 이상의 플러그인을 가진 VS Code에서 터미널 우선 워크플로로. AI 시대와 함께 변화해 온 에디터 선택의 기록
Claude Code 모니터링을 위한 Raycast 확장을 만들었습니다
"필요하면 직접 만든다"에서 Claude Code Monitor까지 — AI 시대 인디 개발자의 도구 제작 여정을 기록합니다. Hooks와 JSONL 데이터를 활용한 세션 모니터링, 사용량 분석, 확장 관리까지.