<p align="center">
<h1 align="center">Kōshō</h1>
<p align="center"><em>조용하고 효율적인 작업을 위해 훈련된 충실한 비서입니다.</em></em></p>
</p>
Kosho는 .kosho/ 디렉터리 내에서 git worktree를 생성하고 관리하여, 저장소를 클론하거나 컨텍스트를 전환하는 오버헤드 없이 여러 브랜치에서 동시에 작업하기 쉽게 만듭니다.
go install github.com/carlsverre/kosho@latest
Kosho를 사용해야 하는 이유?
Kosho는 Claude Code와 같은 여러 동시 AI 코딩 에이전트를 각각 다른 기능이나 브랜치에서 별도의 작업 공간으로 실행하는 데 적합합니다:
- 🤖 여러 AI 에이전트: Claude Code(또는 다른 AI 도구)를 여러 개의 작업 트리를 사용하여 동시에 실행할 수 있습니다.
- ⚡ 컨텍스트 전환 감소: 한 번에 여러 브랜치/기능에서 작업할 수 있습니다.
- 🔒 작업 공간 격리: 각 에이전트는 독립적인 작업 상태를 가진 자체 git worktree 내에서 작동합니다.
- 🚀 클론보다 효율적: 작업 트리는 동일한
.git 디렉터리를 공유하므로 중복된 저장소가 생기지 않습니다.
- 📋 쉬운 조정:
kosho list를 사용하여 각 에이전트가 무엇을 하고 있는지 확인할 수 있습니다.
- 🧹 쉬운 정리: 주 저장소에 영향을 주지 않으면서 완료된 작업 환경을 제거할 수 있습니다.
Claude Code를 사용한 예시 워크플로우:
kosho open feat/widget claude
...
기본 사용법
-
작업 트리에서 명령어 실행:
kosho run my-feature claude
-
모든 작업 트리를 나열:
-
깨끗한 작업 트리 정리 (Prune):
명령어
kosho run BRANCH [command...]
지정된 BRANCH에서 체크아웃된 작업 트리 내에서 제공된 명령어를 실행합니다. 만약 해당 작업 트리가 존재하지 않으면 생성됩니다.
인수:
BRANCH: git 브랜치 이름
command...: 작업 트리에서 실행하려는 모든 명령어. 예: claude
예시:
kosho run bugfix claude
...
kosho list
모든 kosho 작업 트리를 상태와 현재 git 참조와 함께 나열합니다.
출력:
NAME UPSTREAM REF STATUS
bugfix main bugfix ahead 1
hotfix main bug/1 ahead 2 (dirty)
...
kosho prune
깨끗한 작업 트리와 유기(dangling) 작업 트리 참조를 정리합니다. 이 명령어는 git 브랜치를 삭제하지 않습니다! 병합된 git 브랜치까지 정리하고 싶다면, 다음과 유사한 스크립트를 만드는 것을 권장합니다:
git-janitor:
#!/usr/bin/env bash
kosho prune
git fetch --prune
...
그런 다음 이 스크립트(만약 $PATH에 있다면)를 git janitor를 통해 실행할 수 있습니다.
훅 (Hooks)
Kosho는 작업 트리 작업 중 특정 시점에 실행되는 훅을 지원합니다. 훅은 .kosho/hooks/에 저장된 실행 가능한 스크립트이며, 해당 작업에 대한 컨텍스트를 담은 환경 변수를 받습니다.
사용 가능한 훅 (Available Hooks)
create: 새로운 작업 트리가 생성된 후, 이를 열기 전에 실행됩니다.
run: 작업 트리에서 명령을 실행하기 전에 실행됩니다.
훅 활성화 (Enabling Hooks)
Kosho는 .kosho/hooks/에 샘플 훅 파일(.sample 확장자)을 자동으로 생성합니다. 훅을 활성화하려면 다음 명령어를 사용하세요:
mv .kosho/hooks/create.sample .kosho/hooks/create
환경 변수 (Environment Variables)
훅은 다음과 같은 환경 변수를 받습니다:
$KOSHO_HOOK: 훅 유형 (create, run)
$KOSHO_WORKTREE: 작업 트리가 수행되는 이름
$KOSHO_REPO: 리포지토리 루트 경로
$PWD / $KOSHO_WORKTREE_PATH: 작업 트리 디렉터리의 전체 경로 (훅은 작업 트리 디렉터리 내에서도 실행됩니다)
$KOSHO_CMD: 작업 트리에서 실행되는 명령어의 이름. run 훅에서만 존재합니다.
예시 create 훅 (.kosho/hooks/create):
#!/bin/sh
echo
각 작업 트리(worktree)는 동일한 git 히스토리를 공유하지만, 서로 다른 브랜치가 체크아웃되고 다른 작업 상태를 가질 수 있는 완전한 작업 디렉토리입니다.
Kosho는 bash, zsh, fish, 그리고 PowerShell에 대한 탭 자동 완성을 지원합니다. 쉘에 대한 자동 완성을 설정하려면 다음을 수행하세요:
```bash
kosho completion <shell> --help
이 명령어는 사용자의 쉘에 맞는 자세한 설정 지침을 출력합니다.
팁 (Tips)
.kosho 디렉토리는 자동으로 .gitignore에 추가됩니다.
- 각 작업 트리는 자체적인 작업 상태와 커밋되지 않은 변경 사항을 유지합니다.
kosho list를 사용하여 모든 작업 트리의 상태를 한눈에 확인하세요.
- 주기적으로
kosho prune을 사용하여 오래된 작업 트리를 정리하는 것이 좋습니다.