
AI에게 일자리를 빼앗길 불안으로부터 시작하는 하네스(Harness) 작성 입문 제16회: Slack 승정을 상정한 하네스 처리 플로우 그리기
요약
AI 에이전트의 안전한 실행을 위한 하네스(Harness) 설계 중, Slack을 활용한 Human-in-the-loop(HITL) 승인 플로우를 다룹니다. Mermaid 시퀀스 다이어그램을 통해 태스크 접수부터 리스크 판정, Slack 알림, 승인 대기 및 결과 피드백까지의 5단계 과정을 시각화하고 구현 가이드를 제공합니다.
핵심 포인트
- Slack의 API와 인터랙티브 버튼을 활용한 효율적인 승인 인터페이스 구축
- 리스크 레벨(영향 범위, 비용, 보안, 가역성)에 따른 자동 판정 로직 필요
- 승인 대기 시 타임아웃 설정 및 '안전한 거절' 원칙 준수
- 태스크 접수부터 결과 피드백까지의 5단계 워크플로우 설계
연재: AI에게 일자리를 빼앗길 불안으로부터 시작하는 하네스 (Harness) 작성 입문
제16회: Slack 승정을 상정한 하네스 처리 플로우 그리기
제1~15회: ✅ 공개 완료 | 해당 기사: 📖 | 다음 회: 제17회
지난 회(제15회)에서는 Human-in-the-loop (HITL)의 승인 포인트 목록을 작성했습니다. "어디에 승인을 넣을 것인가"에 대한 설계는 완료되었지만, 구체적으로 어떻게 구현할지는 아직 보이지 않습니다.
이번에는 Slack을 승인 채널로 사용하는 플로우를 Mermaid 시퀀스 다이어그램 (Sequence Diagram)으로 시각화합니다. "그림으로 보임"으로써 구현 이미지를 잡기 쉬워집니다.
승인 채널의 선택지는 다양하지만, 개인 개발이나 소규모 팀에서 Slack을 선택하는 이유는 명확합니다.
이미 사용 중: 많은 엔지니어가 일상적으로 이용 -
API가 충실함: Bot, Interactive Message, Webhook이 갖춰져 있음 -
인터랙티브 버튼: 승인·거절을 원클릭으로 실현 가능 -
알림이 도착함: 모바일에서도 대응 가능
물론 Slack 이외(Teams, 메일, Web UI 등)에서도 동일한 패턴을 적용할 수 있습니다. 이번에는 Slack을 예로 들지만, 사고방식은 범용적입니다.
하네스의 Slack 승인 플로우는 크게 5가지 페이즈 (Phase)로 나뉩니다.
태스크 접수: 사용자로부터 태스크를 받음 -
리스크 판정: 태스크의 리스크 레벨을 자동 판정 -
Slack 알림: 고리스크인 경우, Slack으로 승인 요청을 전송 -
승인 대기·실행: 승인 후 툴을 실행 -
결과 알림: 실행 결과를 Slack에 피드백
다음은 Slack 승인을 포함한 하네스의 시퀀스 다이어그램입니다.
태스크를 받으면 먼저 "이 태스크를 처리해도 좋은가"를 판정합니다.
def receive_task(task: dict) -> dict:
"""태스크 접수 및 초기 유효성 검사 (Validation)"""
# 화이트리스트 체크
...
태스크 내용에 따라 리스크 레벨을 판정합니다. 판정 기준은 지난번의 4축(영향 범위·비용·보안·가역성)을 사용합니다.
def assess_risk(task: dict) -> str:
"""태스크의 리스크 레벨을 판정"""
score = 0
...
고리스크인 경우, Slack에 인터랙티브 메시지 (Interactive Message)를 전송합니다.
def send_approval_request(task_id: str, task_summary: str, risk_level: str):
"""승인 요청을 Slack에 전송"""
message = {
...
승인 대기에는 타임아웃 (Timeout)을 설정하는 것이 중요합니다. 응답이 없는 경우에는 "안전한 쪽으로 기울기 (기본 거절)"가 기본입니다.
import asyncio
async def wait_for_approval(task_id: str, timeout: int = 300) -> str:
"""승인을 기다림 (타임아웃 포함)"""
...
처리 완료 후, Slack에 결과를 피드백합니다. 이를 통해 승인자는 "자신의 승인이 어떻게 되었는지"를 확인할 수 있습니다.
승인뿐만 아니라, 거절된 경우나 타임아웃인 경우의 플로우도 설계해 둡시다.
실제로 구현할 때 고려해야 할 포인트를 정리합니다.
| 관점 | 내용 | 판단 기준 |
|---|---|---|
| 타임아웃 값 | 몇 분 기다릴 것인가 | 5분~30분이 현실적. 업무 긴급도에 따라 조정 |
| ... |
이 승인 플로우 설계는 업무 시스템에서의 경험이 그대로 활용됩니다.
워크플로우 엔진 (Workflow Engine) 설계 경험 → 시퀀스 다이어그램 작성에 활용됨 -
신청·승인 시스템 개발 경험 → 승인 상태 관리에 활용됨 -
장애 알림 설계 경험 → Slack 알림 메시지 설계에 활용됨
- Slack 승인 플로우는 5페이즈(접수→리스크 판정→Slack 알림→승인 대기→결과 알림)로 구성
- 리스크 레벨에 따라 자동 실행·알림만·승인 필수 를 전환
- 타임아웃은 "기본 거절"로 안전한 쪽으로 기울임
- Mermaid로 플로우를 시각화함으로써 구현 전에 설계를 확인 가능
- SE의 워크플로우 설계 경험이 그대로 활용 가능
제17회 「AI 시대에도 SE의 품질 보증 경험이 가치를 갖는 이유」에서는 품질 보증(QA) 및 테스트 설계 경험이 AI 시대에 어떻게 활용될 수 있는지를 정리합니다. AI 생성물의 품질을 어떻게 담보할 것인지, SE의 리뷰 관점을 QA 관점표(QA perspective table)로서 정리합니다. "AI에게 맡긴 결과, 어떻게 체크할 것인가?"라는 질문에 대한 답을 찾아봅니다.
📖 연재 목록: 제115회 ✅ 공개 완료 | 제16회 (본 기사) | 제17회 계속될 예정
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기