왜 채팅만으로는 부족했나
처음에는 Discord thread만으로도 충분해 보였습니다.
- 사람과 봇을 빠르게 호출할 수 있고
- 짧은 질문과 즉석 조율이 쉽고
- 실행 속도도 빠릅니다
하지만 작업이 2개, 3개, 여러 프로젝트로 늘어나면 바로 문제가 생깁니다.
- 누가 맡았는지 헷갈림
- 지금 막힌 이유가 남지 않음
- 결과물이 thread 안에 묻힘
- 며칠 뒤 다시 보면 "뭐가 끝났고 뭐가 남았지?"가 반복됨
채팅은 실행 인터페이스로는 훌륭하지만, 지속 기억 계층으로는 약합니다.
왜 GitHub Issue만으로도 부족했나
반대로 모든 걸 GitHub Issue로만 시작하면 durable 하긴 합니다.
- 기록이 남고
- PR과 연결되고
- 상태 추적이 쉽습니다
그런데 봇 협업 초반에는 이 방식도 답답했습니다.
- 작은 탐색 질문까지 issue로 만들면 오버헤드가 큼
- 아직 owner가 안 정해진 아이디어도 많음
- 범위가 작은 실험은 채팅 한두 번으로 끝날 수 있음
즉, GitHub는 잠그는 곳으로 좋지만, 탐색 시작점으로는 무거울 수 있습니다.
그래서 나온 운영 모델: Discord + GitHub Kanban
제가 정리한 권장 모델은 이렇습니다.
1. Discord는 intake
Discord에서는 이런 일을 합니다.
- 사람의 요청 받기
- 봇 호출하기
- 짧은 질문/탐색
- 범위 줄이기
- 중간 진행 공유
즉, 빠른 대화와 조율은 Discord가 맡습니다.
2. GitHub Project는 control tower
GitHub Kanban에서는 이런 일을 합니다.
- 현재 상태 추적
- owner 지정
- 우선순위 정리
- blocker 기록
- PR / 문서 / issue 연결
- 여러 봇과 여러 프로젝트를 가로지르는 시야 확보
즉, 책임과 상태를 durable 하게 잠그는 곳이 GitHub입니다.
실제로 중요한 것은 "상태 컬럼"보다 "카드 계약"이다
처음엔 보드에 Ready, Review, Blocked 같은 상태를 많이 두고 싶어집니다.
그런데 봇 협업에서는 상태를 세분화하는 것보다 봇이 해석 가능한 최소 계약이 더 중요했습니다.
현재 제가 권장하는 최소 상태는 3개입니다.
TodoIn progressDone
그리고 봇이 실제로 카드를 집으려면 아래 정보가 꼭 있어야 합니다.
OwnerTypePriorityBlockerHuman requiredRelated threadRepository
핵심은 이겁니다.
Ready는 별도 컬럼이 아니라, issue-backed Todo + 필요한 정보가 다 채워진 상태입니다.
이 기준이 없으면 봇은 카드를 집지 못하거나, 반대로 잘못 집게 됩니다.
Draft 카드는 왜 위험한가
GitHub Project의 Draft item은 생각보다 편합니다.
빠르게 메모를 남기고, 나중에 정리할 수 있으니까요.
하지만 멀티봇 운영에서는 Draft가 오래 남아 있으면 문제가 됩니다.
- 실행 가능한 일인지 애매함
- 어느 repo 기준인지 불명확함
- 누가 집어야 하는지 모호함
- 봇 입장에서는 그냥 intake 메모인지 실제 backlog인지 구분이 안 됨
그래서 제 기준은 단순합니다.
- DraftIssue는 intake 전용
- 실행 대상으로 넘길 카드는 가능한 빨리 issue로 승격
이 규칙 하나만 있어도 보드가 훨씬 깔끔해집니다.
봇별로 같은 보드를 다 보게 하면 안 된다
여기서 또 중요한 점이 있습니다.
모든 봇이 모든 카드를 읽게 하면, 자동화가 아니라 충돌이 됩니다.
그래서 각 봇은 자기 lane만 보게 해야 합니다.
예를 들면:
- Neo: triage, 우선순위, owner 정리
- Morpheus: 구현, 버그 수정, infra
- Kusanagi: 문서, 리서치, release notes
- Batou: risk, approval boundary, security review
- Tachikoma: waiting, follow-up, monitoring
이렇게 하면 같은 보드를 공유하더라도 각 봇은 다른 역할로 움직입니다.
즉, 보드는 하나지만 행동 규칙은 owner/type 기준으로 분리됩니다.
봇이 카드를 집어도 되는 조건
아래 조건이 맞을 때만 봇이 자동으로 움직이게 하는 것이 좋습니다.
- owner가 자신으로 지정되어 있음
Status가Todo또는In progressOwner,Type,Blocker가 비어 있지 않음- 외부 승인이나 민감 권한이 필요하지 않음
- 작업 범위가 문서화 / 작은 구현 / 내부 정리에 해당함
반대로 아래 조건이면 멈춰야 합니다.
- owner가 다른 사람/봇임
- blocker가 아직 해소되지 않음
- 배포, 공개, 결제, secret 변경이 걸려 있음
- 카드 설명이 너무 모호함
- 아직 Draft item 상태임
이 멈춤 규칙이 없으면, 봇은 열심히 일하지만 팀은 더 혼란스러워집니다.
이 방식의 가장 큰 장점
이 모델의 장점은 단순히 "칸반을 쓴다"가 아닙니다.
1. 사람이 매번 직접 호출하지 않아도 된다
봇은 자기 lane의 pickup-ready 카드를 보고 움직일 수 있습니다.
2. 중간 상태가 남는다
"왜 아직 안 했는지"가 blocker로 남습니다.
3. 결과물이 흩어지지 않는다
PR, issue, 문서, thread가 한 카드에 다시 연결됩니다.
4. 멀티프로젝트 운영이 가능해진다
하나의 control tower에서 cross-project 시야를 확보할 수 있습니다.
5. 봇의 실수를 줄인다
카드 계약이 없으면 봇은 추정합니다.
계약이 있으면 추정 대신 확인하고, 부족하면 되돌립니다.
시작은 작게 하는 게 맞다
처음부터 모든 봇, 모든 프로젝트, 모든 상태를 한 번에 넣을 필요는 없습니다.
오히려 이렇게 시작하는 편이 좋습니다.
Phase 1
- GitHub Project 하나 생성
- 상태는
Todo / In progress / Done세 개만 사용 - Neo + 구현 봇(Morpheus)만 먼저 연결
Phase 2
- 문서/리서치 봇 추가
- blocker / approval 경계 정리
- PR/문서 링크 연결 습관 만들기
Phase 3
- waiting/follow-up/monitoring bot 추가
- cron 기반 daily sweep 도입
- cross-project 운영으로 확장
핵심은 보드를 크게 만드는 게 아니라, 봇이 안전하게 해석할 수 있는 운영 계약부터 만드는 것입니다.
운영하면서 얻은 가장 큰 교훈
가장 중요한 건 툴이 아니라 계약이었습니다.
봇 협업에서 GitHub Kanban이 잘 작동하려면:
- status가 단순해야 하고
- owner가 명확해야 하고
- blocker가 글로 남아야 하고
- Draft와 ready를 구분해야 하고
- 완료 기준이 GitHub artifact와 연결되어야 합니다.
정리하면 이렇습니다.
채팅은 속도를 주고, GitHub Kanban은 기억과 책임을 준다.
멀티봇 협업은 그 둘을 연결할 때 가장 안정적으로 굴러갑니다.
마무리
저는 지금 봇 협업을 위해 GitHub Kanban을 단순한 todo board가 아니라,
여러 bot이 같은 현실을 공유하는 control surface로 보고 있습니다.
사람은 요청하고 조율하고,
봇은 자기 lane을 보고 움직이고,
GitHub는 그 결과를 durable 하게 남깁니다.
이 구조가 잡고, 봇 협업이 어떻게 성장하는지 보게 될 것 같습니다. 제 기대는 그때부터 "대화"에서 운영 시스템이 되는 것입니다.
'Agentic Coding' 카테고리의 다른 글
| Mac mini에서 OpenClaw 프로필별 Gateway 포트 설정 정리 (launchd 기준) (0) | 2026.05.20 |
|---|---|
| OpenClaw vs Hermes (0) | 2026.05.17 |
| AI 에이전트 둘이서 알아서 소통한다고?: Discord 협업 채널 운영 원칙 (0) | 2026.05.06 |
| OpenClaw 사용자 보안 가이드 (2) | 2026.04.08 |
| OpenClaw for Windows 설정 하며 (0) | 2026.02.27 |