claude code with zellij

최근 버전의 claude code 에서는 AGENT_TEAMS(팀모드)를 제공한다.
~/.claude/settings.json 에 아래 환경변수를 활성화 하면된다.
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  },

이게 기존 병렬 에이전트와 다른 점은 서브 에이전트들끼리 통신할 수 있고, tmux가 설치되어 있다면 각 에이전트들의 작업을 볼수 있어 좋다.

            팀모드 (TeamCreate + Agent)        병렬 에이전트 (Agent only)
실행 방식     별도 프로세스 (out-of-process)        인프로세스 (in-process)
tmux pane   각 teammate마다 별도 pane 생성        생성 안됨
UI 표시      각 pane에서 실시간 진행 확인 가능        메인 화면에서 결과만 반환
통신         SendMessage로 메시지 교환            결과를 직접 반환
작업 관리     TaskCreate/TaskUpdate로 추적        없음 (단발성)
teammate 간 가능 (서로 메시지 송수신)               불가 (독립 실행)
수명         idle 대기, 추가 작업 할당 가능          작업 완료 시 즉시 종료

그런데 multiplexer로는 tmux 만 공식 지원해서 zellij 에서 쓸수 없었는데
https://github.com/stanislc/zellij-claude-teams 에서 zellij 용 shim 을 제공한다.
zellij 환경의 claude code 에서 tmux 명령이 호출되면 shim이 이를 가로채 zellij pane으로 라우팅한다.

zellij-claude-teams 설치 후 zsh 환경 설정까지를 아래 스크립트로 만들어 뒀다.

zellij 세션에서 claude code 를 실행하고 팀모드로 작업 요청을 하면 다음과 같이 zellij pane 으로 에이전트들의 작업중인 내용을 볼수 있다. 작업이 끝다면 서비스에이전트 pane 들은 자동으로 닫힌다.

git filter repo

잘못된 커밋 내용(name, email 등)을 수정할때 git rebase 를 하나씩 pick 해서 수정했다.

그런데 git filter repo(https://github.com/newren/git-filter-repo)툴을 사용하면 편하다.

# 설치
uv pip install git-filter-repo --system

# 도움말
git filter-repo -h

# aaa.bbb 이름으로 커밋된 모든곳에 ysoftman 이름과 ysoftman@gmail.com 멜주소로 수정하기
git filter-repo --commit-callback '
if commit.author_name == b"aaa.bbb":
   commit.author_name = b"ysoftman"
   commit.author_email = b"ysoftman@gmail.com"
   commit.committer_name = b"ysoftman"
   commit.committer_email = b"ysoftman@gmail.com"
' --force

# git filter-repo가 안전을 위해 origin remote를 자동으로 제거한다.
# remote를 다시 추가하고 force push
git remote add origin https://github.com/ysoftman/ysoftman
git push --force origin main

# origin/main 을 로컬 main 브랜치로 다시 연결(트랙킹)
git branch --set-upstream-to=origin/main main

참고로 force push 후에도 gitHub에 이전 커밋 객체가 남아있어 이전 sha 해시로 직접 접근하면 여전히 보인다. 수주가 지나면 github 에서 자동으로 정리된다고 한다.

# 예시) 커밋 메시지에 Co-Authored-By: Claude 내용이 있는 라인 제거
git filter-repo --message-callback '
  import re
  return re.sub(rb"\n*Co-Authored-By:.*Claude.*\n*", b"\n", message).rstrip() + b"\n"
  ' --force

netflix - hot spot

요즘 netflix 는 보통 애니만 보는데 'hot spot' 이 드라마는 2배속하지 않고 야금야금 꼼꼼히 보게 된다.
예전에 본 영화 '고양이를 빌려드립니다(렌타네코)'가 재밌어서 주인공으로 나온 여배우(이치카와 미카코)를 좋아했는데, 넷플릭스 핫스팟 드라마에 이치카와 미카코가 나오는 썸네일을 보고 플레이하게 됐다.
처음에는 이쁜 여주인공 때문에 봤는데 1회부터 스토리가 재밌다. 일본 특유의 소소한 일상속에 녹아드는 코믹요소가 미소 수준의 웃음을 준다.
썸네일만 보고는 후지산에 UFO, 외계인등이 출현해 핫스팟이 되는 내용일거라고 예상했는데,
외계인은 있지만 내가 생각했던 그런 모습이 아닌 중년 아저씨고 이런저런 사건을 해결하는데 뭔가 애잔하다.
외계인,미래에서온 사람,초능력자,귀신(이래서 핫스 팟ㅋ)까지 나오는데 그냥 그렇구나하고 넘어가는게 코믹요소다. 나 같으면 꼬치꼬치 캐물어 진짜인지 확인하고 싶을텐데 주인공과 친구들은 놀라기는해도 금새 받아들이는 모습이 조금 비현실적으로 보이기도 했다. 그래도 이런게 이 드라마의 매력이다.
어떻게 보면 참 재미없는 작은 마을의 평범한 일상 같은데 은근 집중하고 본다.
주인공과 외계인 아저씨의 알콩알콩한 대화와 초인적인 능력 사용등을 보면 넷플릭스에서 소개한 특징대로 기발하고 유쾌 발랄하다.
화려한 CG도 아니고 배우들간의 열정적인 연기 대결이 펼쳐지지도 않고 뭔가 단편 영화스런 분위기도 나면서 약간의 병맛 느낌도 난다.
난 이런 류의 영화, 드라마를 좋아한다. 이 드라마를 보고 일드 '트릭(나카마유키에)'이 생각났다.
내가 좋아하는 여주인공 나카마유키에와 신비스러운 마술, 과학적인 트릭을 병맛스러운 느낌으로 풀어냈다.(이시절 일드가 참 좋았다.)
이 드라마를 보는 이유는 코믹도 있지만, 여배우가 주는 편안함이 크다.
이쁜 이목구비에 차가운 도시녀도 잘 어울릴것 같은데, 예전 영화 '렌타네코'에서도 느겼지만 소탈한 일상 연기가 자연스럽고 거부감이 없었다.(뭐 이건 좋아하는 연예인이라서 그런것도 같다.)
드라마의 배경이 되는 후지산 근처 이 마을에 가보고 싶은 생각이 들었다. 주인공 직장인 호텔과 마트, 거리를.. 주인공 친구들과 자주가는 카페에서 파르페도 먹어 보고 싶다.