Task queue for AI agent
- 2025-08-10 (modified: 2025-08-12)
- 별칭: AI 에이전트를 위한 테스크 큐
AI 에이전트에게 일을 시키기 위한 테스크 큐
동기
무료로 쓸 수 있는 LLM이 점점 많아지고 있는데 내가 게을러서 활용을 못하는 게 계속 아쉬웠다. 2025년 8월 9일에는 급기야 Qwen Code가 하루 2000회 요청을 토큰 제한 없이 보낼 수 있는 무료 플랜을 공개했다. 하루 종일 1분에 1개 요청을 보내도 560회가 남는 양이다.
이런 기회를 잘 활용하기 위한 시스템이 있으면 좋겠다는 생각을 했다.
- 언제나 쉽게 일을 시킬 수 있을 것
- 일의 진행 과정이나 결과를 쉽게 확인할 수 있을 것
- 내가 일의 우선 순위를 지정할 수 있을 것
- 내가 시킨 일이 다 떨어지면 나에게 유용한 무언가를 알아서 할 것
설계
깃헙 이슈를 이용하면 좋을 것 같다.
- 언제나 쉽게 일을 시킬 수 있을 것 → 모바일 앱도 있고
gh
CLI도 있으니 언제든 이슈를 등록할 수 있다. - 일의 진행 과정이나 결과를 쉽게 확인할 수 있을 것 → 에이전트가 이슈에 코멘트를 다는 형식으로 진행 상황을 중간 공유하도록 하면 되겠다.
- 내가 일의 우선 순위를 지정할 수 있을 것 → 우선순위에 따라 이슈에 적당한 레이블을 붙여주고 이걸 인식해서 다음 작업을 고르도록 하면 되겠다.
- 내가 시킨 일이 다 떨어지면 나에게 유용한 무언가를 알아서 할 것 → 영원히 끝나지 않고, 시간을 쓰면 쓸수록 좋아질 가능성이 있는 성격의 일들을 몇 개 등록해놓고, 다른 할 일이 없을 때 적당히 번갈아가며(일단은 단순하게 round-robin 방식) 하도록 만들면 되겠다.
다음 절차를 무한히 반복하는 쉘 스크립트를 만들면 될 것 같다.
- 우선순위가 가장 높은 깃헙 이슈를 하나 가져온다. 이슈가 없으면 1분 쉬었다가 다시 쿼리.
- 이슈 번호에 맞춰 작업 디렉토리를 만들고 작업 디렉토리로 설정
- Qwen Code에게 해당 이슈를 처리하라고 지시. 작업을 시작할 때와 마칠 때 이슈에 코멘트를 남기고 진행 상황이나 성공 여부에 따라 해당 이슈에 레이블을 적당히 붙여달라고 시킨다.
- Qwen Code가 종료되면 GOTO 1
구현
Qwen Code를 시켜서 대충 만들었다. 일단 잘 돌아간다. Qwen Code에게 일 시키는 프롬프트는 일단 이렇게 썼다:
Your job is to complete the issue nnn.
- Using “gh” CLI, read the issue and their comments to understand the context.
- The current working directory is your workspace and you may use it freely. Note that the directory is not connected to the repository.
- There could be files created by your co-workers. Read the files carefully.
- Before you start, leave a comment in the issue that you’re going to start working on it and describe your plan briefly.
- If you’ve spent more than 5 minutes on the issue, regularly check if there are any new comments from your co-workers. If there are, read them and update your plan accordingly. Write your updated plan as a comment.
- If you’ve finished the issue, write the summary of your work as a comment in the issue, and attach “ready” label. NEVER close the issue.
- If the main artifact of the issue is a text, or can be described in text, write it as a comment.
- All your comments MUST start with ”🤖“