대부분의 코딩용 AI 도구는 프롬프트를 중심으로 돌아갑니다. 원하는 것을 적으면 에이전트가 답하고, 그 대화는 끝납니다. 그 방식은 가치 있는 것이 한 번의 좋은 답인 동안에만 통합니다. 어느 순간 가치는 같은 일이 매번 확실하게, 아무도 부탁하는 것을 기억하지 않아도 일어나는 것으로 옮겨 갑니다.
TaskGoblin은 대신 루프를 중심으로 만들어졌습니다.
루프는 트리거와 지시문입니다
기본 단위는 이게 전부입니다.
- 트리거는 고블린이 언제 깨어날지를 정합니다. 이벤트(풀 리퀘스트가 열림, 이슈가 고블린에게 배정됨)이거나 일정(평일 07:00 등)입니다.
- 지시문은 깨어나면 무엇을 할지 평범한 문장으로 적은 것입니다. "이 머지 리퀘스트를 정확성과 보안 관점에서 리뷰해 줘. 린터가 잡을 스타일 지적이 아니라 진짜 문제를 짚어 줘." 또는 "
acme/web에서 안전한 의존성 업그레이드를 확인하고, 테스트를 돌리고, 머지 리퀘스트를 열어 줘."
이 둘을 합치는 순간 그것은 더 이상 요청이 아니라 상시 능력이 됩니다. 아무도 키보드 앞에 있을 필요가 없고, 아무도 기억할 필요가 없습니다.
모든 것이 루프입니다
이것은 제품 옆에 붙은 기능이 아니라 제품 그 자체입니다. 내장된 마법이라고 여길 만한 동작들이 전부 평범한 루프입니다.
| 밖에서 보이는 모습 | 그 아래의 루프 |
|---|---|
| 모든 풀 리퀘스트가 리뷰된다 | 풀 리퀘스트 열림 이벤트 루프 |
| 이슈를 배정하면 머지 리퀘스트가 돌아온다 | 이슈 배정 이벤트 루프 |
| 티켓 없이도 의존성이 최신으로 유지된다 | 매주 월요일 08:00 일정 루프 |
| 문서가 코드에서 멀어지지 않는다 | 매주 수요일 일정 루프 |
| 매일 아침 Slack에 요약이 도착한다 | 09:00 일정 루프 |
GitLab이나 GitHub을 연결하면 TaskGoblin이 시작용 한 세트를 설치합니다. 아무것도 설정하지 않았는데 코드 리뷰가 동작하는 이유가 이것입니다. 특별하지 않습니다. 열어서 지시문을 읽고, 자기 말로 고쳐 쓰고, 일시정지하거나 지우면 됩니다.
루프의 한 차례
모든 차례는 같은 방식으로 돕니다. 트리거가 웹훅이든 시계든, 첫 번째든 오백 번째든 같습니다.
- 실행. 트리거가 맞습니다. TaskGoblin이 그 작업의 스레드를 열거나 재사용합니다.
- 맥락. 고블린은 무언가를 건드리기 전에 이슈, 스레드, 디프, 조직의 관례, 그리고 앞선 고블린들이 남긴 기록을 읽습니다.
- 작업. 저장소 체크아웃이 담긴 격리 클라우드 샌드박스 안에서 돕니다. 파일을 읽고 고치고, 명령과 테스트를 실행합니다.
- 전달. 머지 리퀘스트를 열거나, 인라인 리뷰 코멘트를 남기거나, 스레드에 답합니다 — 그 작업이 속한 곳으로.
- 인계. 배운 것과 아직 열려 있는 것을 적어 두어, 다음 차례가 0이 아니라 거기서 시작하게 합니다.
5단계가 루프와 크론을 가릅니다. 각 차례는 앞선 차례들의 영향을 받으므로, 1년 동안 매주 돈 루프는 같은 루프를 백 번 돌린 것이 아니라 계속 주의를 기울여 온 하나의 루프입니다.
루프가 프롬프트를 이기는 이유
- 여러분 없이도 돕니다. 들여다볼 때쯤엔 이미 끝나 있습니다. 누군가 필요성을 알아채기를 기다리지 않습니다.
- 리뷰할 수 있습니다. 모든 차례가 브랜치와 머지 리퀘스트로 끝나고, 동료의 것과 똑같이 리뷰합니다. 저절로 머지되는 것은 없습니다.
- 쌓입니다. 고블린을 한 번 교정하면 그 교정이 이후 모든 고블린을 위해 기록됩니다.
- 끄는 스위치가 있습니다. 루프는 여러분의 것인 한 줄입니다. 일시정지하면 동작이 즉시 멈춥니다.
루프는 어디에 있나
조직의 Loops 영역(/{organisation}/loops)에서 관리합니다. 루프마다 자기 페이지가 있어 지시문, 트리거, 활성 토글, 최근 실행 기록을 볼 수 있습니다. 실행됐겠거니 믿는 대신 실제로 무엇을 했는지 확인할 수 있습니다.
고블린이 실행 도중 스스로 루프를 만들 수도 있습니다. 매주 금요일 같은 부탁을 받고 있다는 걸 알아챈 고블린은, 그 부탁 자체를 없애는 루프를 제안할 수 있습니다.
다음에 볼 것
- 이벤트 루프 — 풀 리퀘스트, 배정된 이슈, 라벨로 실행되는 루프와 이미 가진 것들.
- 일정 루프 — 주기로 실행되는 루프와 시작점이 되는 템플릿.
- 일회성 실행 — 루프가 아닌 직접 요청, 그리고 어느 것이 루프가 되고 싶어 하는지 알아보는 법.
- 실행은 어떻게 도는가 — 한 차례 안에서 벌어지는 일.