[HAN-376] 멀티 에이전트 작업 배정/완료 모니터링 채널 파일럿
TL;DR
- 현재 Pantheon은 **승인 단계(Spec Gate)까지만 자동화**되어 있고, 승인 이후 "누가 / 언제 / 어떻게 / 끝났는지"가 사용자 사람-루프에 의존한다. 완수(wansu)는 read-only 검토 페르소나에 머물러 매니저 자동 배정·추적은 미구현.
- Anthropic Lead Researcher, Devin, SWE-agent, Copilot Workspace, Factory Droid의 1차 출처를 종합하면 동일 결론이 도출된다: **(1) 위임 패킷 표준화, (2) plan-as-checkpoint, (3) in-place 상태 마커, (4) 표준 종료 사유 enum, (5) autonomy tier**.
- 권고: **대안 A — 완수 v2 매니저 모드**. 새 채널
#pantheon-ops를 파일럿 채널로 개설, 완수가 위임 4-field 패킷을 발송하고 parent message in-place edit으로 상태를 가시화. Spec Gate는 enqueue 책임만, 완수는 dispatch/추적/회수 책임 분리. - 파일럿 2주 운영 후 5개 중단 트리거(in-place edit 실패율 > 5%, 종료 enum 무시 > 20%, 매니저 hallucinate 위임, 사용자 명시 피드백, 비용 임계) 평가.
---
1. 배경
HAN-376은 사용자의 다음 문제의식에서 출발:
> "현재 Slack 기반 업무 배정/AI 파이프라인이 안정적으로 이어지지 않아, 우선순위 높은 작업이 실제 담당자/페르소나에게 배정되고 완료까지 추적되는 루프가 약함."
(트리거 thread: hangmansplayground.slack.com/archives/C0B5KLB7DHR/p1779866314152439)
목표: 새 Slack 채널 파일럿으로 완수가 매니저 역할을 수행, 페르소나별 배정/상태/완료를 관리하는 운영안을 만들고 Claude Code로 즉시 구현 착수 가능한 수준까지 정리한다.
---
2. 현재 파이프라인 진단
2.1 내부 코드 조사 결과 (단정 사실)
| 항목 | 위치 | 현재 상태 |
|---|---|---|
| 완수 페르소나 정의 | `pantheon/personas/wansu.md`, `bridge.py:354` | v1 **read-only 검토** 페르소나. "Codex-backed engineering lead for northstar strategy, execution planning, implementation risk, tickets, PRs, and verification loops" — 검토자 정체성 |
| 완수 자동 응답 채널 | `WANSU_AUTO_CHANNELS` (`bridge.py:140-141`) | `#northstar`(`C0B5KLB7DHR`)가 기본. 트리거: untagged northstar-style prompt 또는 `!wansu` prefix |
| Spec Gate (승인 파이프라인) | `spec_gate.py:1-100`, `bridge.py:117` | Linear auto-discovery → `AGENT_APPROVALS_CHANNEL_ID` 브리핑 → 👍 반응 → `approved` 라벨까지 자동. **승인 이후는 사용자 사람-루프** |
| Jarvis 작업 인수 | `personas/jarvis.md:81-86` | Linear fetch → state 변경 + 댓글 "[Jarvis] 작업 인수". 인수 후 진행/완료는 자유 텍스트 |
| 위임 마커 | `pantheon/README.md:17` | `[DELEGATE: |
| Nano 구현 | `bridge.py:352` (prompt만) | "parallel task orchestration, batch processing" 정의는 있으나 **실제 orchestration 코드 미존재** |
| 완료 추적 | — | **찾지 못함**. 페르소나 완료 후 상태 회수·표시 로직 없음 |
| 모니터 채널 | `MONITOR_CHANNEL_ID` (`bridge.py:615,661,711`) | 선택적 채널, 자동 정기 알림 없음 — 수동 사용 |
2.2 6가지 갭
내부 fact를 외부 1차 출처(다음 섹션)와 대조하면 다음 갭이 보임:
1. 승인-실행 단절
Spec Gate가 approved 라벨까지만 만들고 다음 책임자가 자동 지정되지 않는다. 사용자가 사람-루프에서 매번 "이거 누가 한다"를 결정.
2. 위임 컨텍스트 비표준
[DELEGATE] 마커는 자유 문구. Anthropic Lead Researcher가 명시한 4-field 강제(objective / output_format / tools-sources / boundaries) 부재. Anthropic이 실제로 겪은 실패 패턴("research the semiconductor shortage" 식 모호 지시 = subagent 간 중복 작업)에 정면 노출.
3. 상태 비가시
진행/완료/blocked 상태가 채널에서 보이지 않음. Devin Slack 통합이 이모지 마커로 in-place 노출하는 패턴이 부재. 사용자가 매번 polling.
4. 완료 판정 부재
페르소나가 "끝났다" 자유 문장 한 줄을 남기는 수준. SWE-agent의 표준 종료 사유 5종(submit / context-exceeded / cost-exceeded / max-retries / timeout) 같은 enum이 없어 사용자가 다음 결정(승인/재시도/escalation)을 자동화할 신호가 없음.
5. 권한 boundary 미정의
Factory Droid의 autonomy tier(low/medium/high)가 부재. Nano/Raphael/Jarvis/완수가 어떤 액션까지 자율적으로 할 수 있는지 명문화 안 됨 → 사용자가 매번 권한 가드.
6. 매니저 역할 공백
완수는 검토자 정체성, Jarvis는 자기 작업 인수자, Spec Gate는 데몬 — 누가 "다음 작업을 누구에게 줄 것인가"를 결정하는 주체가 사람(사용자) 1인.
---
3. 외부 패턴 1차 출처 종합
3.1 매니저 패턴
| 패턴 | 핵심 1차 출처 인용 |
|---|---|
| AutoGen `GroupChatManager` | `speaker_selection_method`(auto/manual/random/round_robin) + `max_round`. 상태는 별도 enum 없이 message log = 상태 |
| Anthropic Lead Researcher | **위임 4-field 강제** (objective / output / tools / boundaries) + **External Memory 분리** + "현재 lead가 subagent를 **synchronous로 기다린다**" (한계 정면 인정) |
| LangGraph supervisor | `create_handoff_tool` — 위임을 명시적 tool call로. `output_mode` (full_history vs last_message) |
| OpenAI Swarm handoff | Agent function이 다른 Agent return → control 이전, history 유지 |
3.2 AI 코딩 에이전트 작업 큐
| 제품 | 핵심 1차 출처 인용 | ||
|---|---|---|---|
| Cognition Devin | **Interactive Planning** = plan-as-checkpoint. Slack 통합에서 **이모지로 run 완료/실패 마킹**. 2025 perf review: "작업 시작 후 mid-task 변경 = 성능 저하" → scope-up-front | ||
| SWE-agent | 5종 표준 종료: `submit / ContextWindowExceeded / CostLimitExceeded / max_requeries / max_consecutive_execution_timeouts` | ||
| Copilot Workspace | Task → Spec → Plan → Implementation 4단계, **파일 단위 queued→in-progress→completed** 우측 패널 | ||
| Factory Droid `droid exec` | `--auto low\ | medium\ | high` autonomy tier. exit code 0/non-zero. 권한 초과 시 즉시 halt |
3.3 합성된 5개 원칙
1. 위임 패킷 표준화 — 4-field 강제 (Anthropic)
2. Plan-as-checkpoint — execution 전 사용자 ack 차단 (Devin, Copilot Workspace)
3. 이모지/in-place 상태 마커 — 채널이 곧 큐 뷰 (Devin Slack, Copilot Workspace queued→in-progress→done)
4. 표준 종료 사유 enum — 다음 액션 자동화 신호 (SWE-agent)
5. Autonomy tier per persona — 권한 boundary 사전 정의 (Factory)
---
4. 대안 비교
대안 A: 완수 v2 — 매니저 풀스택 페르소나로 확장
- **변경 범위**:
pantheon/personas/wansu.mdv2 system prompt +bridge.py에 매니저 dispatch 핸들러 추가 + 새 채널#pantheon-ops개설 - **책임**: 완수가 spec_gate에서 enqueue된 작업을 받아 위임 4-field 패킷 생성 → DELEGATE 마커로 worker에게 발송 → in-thread parent message in-place edit으로 상태 노출 → 표준 종료 enum 회수
- **장점**: 기존 페르소나 인프라(Slack bot token, message handler, Codex 권한) 재사용. 완수 정체성과 정합(engineering lead → execution coordination은 자연 확장). 페르소나 수 증가 없음.
- **단점**: 완수 prompt 비대화 위험. 검토 모드(v1)와 매니저 모드(v2) 분리가 system prompt 차원에서 필요. 실패 시 검토 페르소나 손상 가능.
- **예상 구현량**: 핸들러 200-300 LOC + system prompt 확장 + 채널 셋업 자동화 스크립트
대안 B: 새 매니저 페르소나 "PM" 도입, 완수는 검토 유지
- **변경 범위**: 새 Slack 앱 + 토큰 + persona prompt + dispatch 핸들러
- **장점**: 책임 분리 명확. 완수 검토 정체성 보존. 실패 시 격리.
- **단점**: 페르소나 수 증가로 채널 노이즈 + OPS 부담. Slack 통합 앱 한도 임박(메모리:
project_slack_integration_limit)에 정면 충돌. 사용자가 페르소나 정체성을 추가 학습. - **예상 구현량**: 대안 A + Slack 앱 셋업 자동화(tools/create_*_app.py 패턴) + 토큰 관리
대안 C: 매니저를 페르소나가 아닌 백그라운드 데몬으로 (spec_gate v2)
- **변경 범위**:
spec_gate.py를 확장해 승인→배정→상태 추적까지 자동화. "매니저"는 spec_gate 봇으로 표현. - **장점**: 페르소나 비대 회피. 사용자 인지 부하 낮음. Anthropic synchronous 한계를 정면 피해 (데몬은 polling/event 양쪽 가능).
- **단점**: 매니저의 "대화" 능력 약함 — Slack에서 매니저와 협의(예: "이 작업 우선순위 바꿔줘") 어려움. 사용자 직관 — 멀티 LLM을 **팀처럼** 운영(메모리:
user_multi_llm_vision)과 결이 다름. 매니저 페르소나성 손실. - **예상 구현량**: spec_gate.py +300 LOC, Slack 통합 최소
비교 표
| 축 | A: 완수 v2 | B: 신규 PM | C: spec_gate 데몬 |
|---|---|---|---|
| Slack 앱 한도 부담 | 없음 | **큼** | 없음 |
| 페르소나 정체성 정합 | **높음** | 중간(신규 학습) | 낮음 |
| 사용자 비전 정합 (팀 운영) | **높음** | 높음 | 낮음 |
| 구현 복잡도 | 중간 | 큼 | 작음 |
| 실패 격리 | 중간 | **높음** | 높음 |
| 매니저와 대화 가능성 | 가능 | 가능 | 약함 |
---
5. 추천안: 대안 A (완수 v2 매니저 모드)
5.1 결정 근거
1. 사용자 비전과의 정합: user_multi_llm_vision 메모리 — "LLM을 팀처럼 운영, 페르소나/역할 배정". 매니저는 페르소나여야 자연.
2. 인프라 재사용: Slack 앱 한도 임박 상태(project_slack_integration_limit)에서 신규 앱 추가는 비용. 완수는 이미 토큰·핸들러·Codex 권한 보유.
3. 완수 정체성 자연 확장: 현 정의가 "engineering lead for execution planning" — execution coordination은 정체성 확장이지 변경이 아님.
4. 실패 격리 책임 분리: Spec Gate(enqueue) ↔ 완수(dispatch/추적/회수) 책임을 코드 차원에서 분리. spec_gate.py는 그대로, 완수에 새 핸들러 추가.
5.2 책임 분리 도식
```
[Linear auto-discovery]
↓
[Spec Gate 데몬] ─── 라벨 변환 + 채널 브리핑 + 👍 처리 ───┐
↓ │
[approved 라벨] │
↓ │
[완수 매니저] ── (1) 작업 카드 생성: #pantheon-ops 채널 │
│ (2) 4-field 위임 패킷 생성 │
│ (3) DELEGATE 마커로 worker 호출 │
│ (4) in-thread parent message in-place edit │
│ (5) 표준 종료 enum 수신·회수 │
↓ │
[Worker: Jarvis/Raphael/Nano] ── 실행 + 상태 이모지 + 종료 enum
↓
[완수] ── (6) 사용자 escalation 또는 다음 작업 dispatch
```
5.3 위임 4-field 표준 패킷
```
[DELEGATE:
OBJECTIVE: <한 줄 결과 기술>
OUTPUT: <산출물 형식 — 예: PR / Linear 코멘트 / Notion 페이지>
TOOLS: <허용 도구 — 예: gh, Linear MCP, WebSearch>
BOUNDARIES: <스코프 외 — 예: DB 마이그레이션 금지, prod 배포 금지>
RETURN_BY: <표준 종료 enum 중 하나로 응답>
]
```
기존 자유 문구 [DELEGATE: target CONTEXT: text] 마커는 v1 호환으로 유지하되, 매니저 모드에서 발송되는 패킷은 4-field 표준 강제.
5.4 표준 종료 사유 enum (SWE-agent 차용)
| 코드 | 의미 | 다음 액션 (완수 자동) |
|---|---|---|
| `submit` | 산출물 완성, PR/코멘트 첨부 | parent message ✅ 마킹 + 사용자 승인 대기 |
| `blocked-need-input` | 사용자 입력 필요 | parent message 🚫 + 사용자 멘션 + 작업 대기 큐 |
| `cost-exceeded` | 토큰/시간 임계 초과 | parent message ❌ + 종료 사유 첨부 + retry 옵션 제시 |
| `max-retries` | 자체 재시도 한계 | parent message ❌ + trajectory 요약 + 사용자 escalation |
| `scope-violation` | 위임 boundary 초과 | parent message ❌ + 위반 액션 첨부 + 사용자 escalation |
---
6. Slack 채널 운영 절차
6.1 새 채널 `#pantheon-ops`
- **목적**: 작업 큐 가시화 + 매니저 dispatch + worker 상태 회수
- **멤버**: 사용자, 완수, Jarvis, Raphael, Nano (모든 page persona)
- **분리 기준**:
- #pantheon-alerts (C0B5VDF3JTS): 에러·CRITICAL 로그 모니터링 — 유지
- #northstar (C0B5KLB7DHR): 완수 검토·전략 대화 — 유지 (v1 정체성 보존)
- #pantheon-ops (신규): 작업 dispatch·진행·완료 — 본 파일럿 채널
6.2 작업 카드 생애주기
1. enqueue (Spec Gate → 완수)
approved 라벨이 붙은 Linear 이슈 → 완수가 #pantheon-ops에 parent message로 작업 카드 포스팅:
```
📋 [LIN-XXX] <이슈 제목>
상태: queued
담당: (미배정)
우선순위:
추정:
```
2. dispatch (완수 → worker)
완수가 worker를 결정하고 in-thread에 4-field 위임 패킷 발송. parent message in-place edit:
```
📋 [LIN-XXX] <이슈 제목>
상태: in-progress ⏳
담당: @raphael
...
```
3. progress (worker → 채널)
Worker가 in-thread에 진행 메시지 + 이모지 (⏳, 🚫 blocked, 🔍 investigating). 30분 이상 idle 시 완수가 status check 멘션.
4. complete (worker → 완수 → 채널)
Worker가 in-thread에 표준 종료 enum + 산출물 링크. 완수가 parent message in-place edit:
```
📋 [LIN-XXX] <이슈 제목>
상태: ✅ submit
담당: @raphael
PR: github.com/.../pull/XXX
완료: 2026-MM-DD HH:MM
```
5. escalation (필요 시)
blocked-need-input / max-retries / scope-violation 시 완수가 사용자 멘션 + 트레이스 요약 첨부.
6.3 채널 노이즈 제어
- Parent message는
chat.update로 in-place 갱신 → 채널 스크롤이 작업 단위 1줄/카드. - Worker 진행 메시지는 in-thread만 → 채널 본문 노이즈 격리.
- 완수의 status check 멘션은 in-thread, 30분/60분/2시간 step-up.
---
7. 페르소나별 작업 배정·상태·완료 기준
7.1 Autonomy tier 정의 (Factory droid 차용)
| 페르소나 | Tier | 허용 액션 | 금지 액션 |
|---|---|---|---|
| Nano | **low** (read-only) | 조사·요약·분석, Linear 코멘트 read, WebSearch | 코드 수정, commit, PR, 상태 변경 |
| Raphael | **medium** (write) | 코드 수정, commit, 브랜치 push, Linear 코멘트 write | PR merge, prod 배포, secrets 변경 |
| Jarvis | **high** (merge) | PR 생성·merge, 자동 배포 trigger, Linear status 변경 | secrets 변경, DB 마이그레이션 (사용자 ack 필요) |
| 완수 (매니저 모드) | **meta** (coordination) | 작업 dispatch·재배정·escalation, parent message edit | 직접 코드 작업 (worker에 위임) |
| 완수 (검토 모드, `#northstar`) | **low** | 검토·전략 자문 | 코드 작업 |
7.2 작업 → 페르소나 배정 룰 (완수 dispatch 의사결정)
- **조사·분석·요약** (Linear 라벨
Research,Spike) → **Nano** - **코드 수정 + PR 생성** (라벨
Bug,Improvement,Feature+ S/M 추정) → **Raphael** - **복잡 작업 + 머지·배포** (라벨
High+ L 추정 또는 다중 PR) → **Jarvis** - **명확하지 않으면** → 완수가 사용자에 멘션해 배정 확인
7.3 상태 필드 정의 (완수 매니저가 추적)
| 필드 | 타입 | 출처 |
|---|---|---|
| `card_id` | Slack message_ts | 완수 생성 시 |
| `linear_id` | string (HAN-XXX) | enqueue |
| `assignee` | persona enum | dispatch |
| `state` | `queued`/`in-progress`/`blocked`/`complete`/`failed` | worker 신호 + 완수 갱신 |
| `tier_used` | `low/medium/high` | dispatch |
| `exit_code` | 표준 종료 enum | worker 회수 |
| `artifact_url` | URL (PR/코멘트/문서) | worker 회수 |
| `escalations` | int | 완수 카운트 |
영속 저장소: 우선 in-memory dict (페르소나 프로세스 메모리) + Linear 코멘트로 백업. 파일럿 안정화 후 SQLite 또는 별도 JSON 영속화 검토 (spec_gate_pending.json 패턴 참고).
7.4 완료 기준 (Definition of Done)
| 조건 | 검증 |
|---|---|
| Worker가 `submit` enum으로 회수 | exit_code = submit |
| 산출물 링크 첨부 | artifact_url != null |
| Linear 이슈 상태가 `In Review` 또는 `Done` | Linear API 조회 |
| 완수가 parent message ✅ in-place edit | Slack message 검증 |
| 사용자 명시 ack 또는 30분 무반응 (자동 close) | reaction 또는 timeout |
5개 모두 true일 때 카드 close. 하나라도 fail이면 매니저가 자동 재dispatch 또는 사용자 escalation.
---
8. 리스크와 중단 조건
8.1 식별된 리스크
| 리스크 | 영향 | 완화 |
|---|---|---|
| 완수 prompt 비대 (v1 검토 + v2 매니저) | 응답 품질 저하 | 매니저 모드는 `#pantheon-ops`에서만, system prompt 채널별 분기 |
| Anthropic synchronous 한계 (완수가 worker 대기로 병목) | dispatch 처리량 저하 | 완수는 polling 아닌 **이벤트 트리거** (worker 메시지 reaction/marker로 깨어남) |
| In-place edit 누락 (state 표시 불일치) | 사용자 신뢰 손실 | `chat.update` 실패 시 새 메시지 + 이전 메시지 strikethrough fallback |
| Worker가 종료 enum 무시 (free-form 회수) | 매니저 자동화 신호 손실 | worker system prompt에 enum 강제 + 미인입 시 완수가 한 번 재질의 |
| Dispatch hallucinate (없는 Linear ID에 위임) | 작업 손실 | enqueue 시 Linear API 사전 검증 + linear_id로 사후 조회 검증 |
| 페르소나 권한 boundary 초과 | scope 위반 | autonomy tier prompt 강제 + 완수가 `scope-violation` 인입 |
8.2 중단 트리거 (파일럿 2주 평가)
다음 중 하나라도 발생 시 파일럿 중단 + 회고:
1. In-place edit 실패율 > 5% (Slack chat.update 응답 카운트)
2. 종료 enum 미인입 비율 > 20% (worker 응답 중 free-form 회수 비율)
3. 매니저 hallucinate dispatch 발생 (Linear에 없는 이슈 ID로 위임)
4. 사용자 명시 피드백: "오히려 더 번거롭다" 또는 동등 의사
5. 비용 임계 초과: 완수 매니저 모드 일일 토큰이 v1 검토 모드 대비 5x 초과
평가 채널: #pantheon-ops thread + Linear HAN-376에 회고 코멘트.
8.3 롤백 절차
1. 완수 WANSU_MANAGER_MODE=false 환경변수로 v1 검토 모드 단독 동작 복귀
2. #pantheon-ops 채널 archive (메시지 보존)
3. 매니저 dispatch 핸들러 bridge.py import 해제 (코드는 보존, 환경변수로 dormant)
4. Linear HAN-376에 회고 + 잠재 대안 C(데몬화) 재검토 트리거
---
9. Claude Code 구현 지시문
> 본 섹션은 /spec HAN-XXX 또는 /implement 직행으로 변환 가능한 수준의 작업 분해. 각 작업은 독립 PR 가능.
9.1 작업 분해
#### W1: 채널 셋업 (Infra)
- **목표**:
#pantheon-ops채널 생성 + 완수·Jarvis·Raphael·Nano invite + 환경변수PANTHEON_OPS_CHANNEL_ID추가 - **파일**:
pantheon/tools/create_pantheon_ops_channel.py(tools/create_wansu_app.py패턴 참고) - **AC**:
- [ ] 채널 ID가 .env + bridge.py config에 반영
- [ ] 4개 bot이 멤버
- [ ] WANSU_AUTO_CHANNELS에 채널 ID 추가
- **추정**: S
#### W2: 완수 매니저 모드 prompt 분기
- **목표**: 완수 system prompt를 채널별로 분기.
#northstar= v1 검토,#pantheon-ops= v2 매니저 - **파일**:
pantheon/personas/wansu.mdv2 섹션 추가 +bridge.pychannel-aware prompt 조립 로직 - **AC**:
- [ ] #pantheon-ops 채널에서 완수가 매니저 모드 prompt를 로드
- [ ] 4-field 위임 패킷 발송 규칙이 prompt에 포함
- [ ] 표준 종료 enum 5종이 prompt에 명시
- [ ] #northstar에서는 기존 v1 검토 prompt 그대로
- **추정**: M
#### W3: 작업 카드 생애주기 핸들러
- **목표**:
bridge.py에_handle_ops_card_lifecycle추가 — enqueue/dispatch/progress/complete/escalation 5단계 처리 - **파일**:
pantheon/bridge.py(_handle_approval_briefing패턴 참고) - **AC**:
- [ ] spec_gate.py의 approved 라벨 인입 → 완수가 작업 카드 parent message 포스팅
- [ ] Worker의 종료 enum 인입 → 완수가 parent message in-place edit
- [ ] in-thread Worker 진행 이모지 / blocked 신호 인식
- [ ] in-place edit 실패 시 fallback (새 메시지 + strikethrough)
- **추정**: L
#### W4: 위임 4-field 패킷 발송기
- **목표**: 완수가 worker에 위임할 때 4-field 강제 + DELEGATE 마커 v2 발송
- **파일**:
pantheon/bridge.py또는pantheon/dispatch/packet.py(신규) - **AC**:
- [ ] 4-field(objective/output/tools/boundaries) 모두 채워진 경우만 발송
- [ ] 누락 시 완수가 사용자에 멘션해 보강 요청
- [ ] Worker 페르소나 system prompt에서 4-field 패킷 인식 룰 추가
- [ ] 기존 [DELEGATE: target CONTEXT: text] v1 마커는 호환 유지
- **추정**: M
#### W5: 표준 종료 enum 회수기
- **목표**: Worker 종료 메시지에서 5종 enum 파싱 + 완수가 다음 액션 자동
- **파일**:
pantheon/dispatch/exit_codes.py(신규) +bridge.py연결 - **AC**:
- [ ] 5종 enum (submit/blocked-need-input/cost-exceeded/max-retries/scope-violation) 정규식 파싱
- [ ] enum별 자동 액션 (✅ 마킹 / 🚫 사용자 멘션 / ❌ 트레이스 요약)
- [ ] enum 누락 시 한 번 재질의, 그래도 누락이면 free-form으로 처리하되 메트릭 카운트
- **추정**: M
#### W6: Autonomy tier 가드
- **목표**: 페르소나별 tier 정의 + scope-violation 자동 감지
- **파일**:
pantheon/dispatch/autonomy.py(신규) + 각 persona prompt에 tier 주입 - **AC**:
- [ ] Nano = low / Raphael = medium / Jarvis = high / 완수 = meta 정의
- [ ] Worker가 tier 초과 액션 시도 시 자체 scope-violation enum으로 종료
- [ ] 완수가 dispatch 시 작업 tier ≤ 페르소나 tier 검증
- **추정**: S
#### W7: 상태 영속화 (in-memory + Linear 코멘트 백업)
- **목표**: 작업 카드 state field들을 메모리 dict + Linear 코멘트로 이중 보관
- **파일**:
pantheon/dispatch/state.py(신규) - **AC**:
- [ ] 8개 필드 (card_id/linear_id/assignee/state/tier_used/exit_code/artifact_url/escalations) 관리
- [ ] 페르소나 프로세스 재시작 시 Linear 코멘트에서 복원
- [ ] 30분 idle worker 자동 status check
- **추정**: M
#### W8: 메트릭·중단 트리거 모니터링
- **목표**: in-place edit 실패율, enum 미인입 비율, hallucinate dispatch, 비용 임계 메트릭 수집 + 임계 초과 시
#pantheon-alerts알림 - **파일**:
pantheon/dispatch/metrics.py(신규) +log_monitor.py패턴 차용 - **AC**:
- [ ] 4개 메트릭 카운터 + 임계 비교
- [ ] 임계 초과 시 #pantheon-alerts에 CRITICAL 알림
- [ ] 일일 요약 (자동 daily brief)
- **추정**: M
9.2 작업 순서·의존
```
W1 (채널 셋업) ─┐
├─→ W2 (prompt 분기) ─→ W3 (생애주기 핸들러) ─→ W4 (위임 패킷)
│ │
W6 (autonomy) ──┴─→ W5 (종료 enum) ──────────────────────────────┤
│
W7 (영속화) ─────────────┤
↓
W8 (메트릭) ─────────→ 파일럿 운영
```
W1→W2→W3가 critical path. W4·W5·W6은 W3 진입 후 병렬 가능. W7·W8은 W5 완료 후 진입.
9.3 SDD 진입 권장
- W3·W4가 핵심 —
/spec HAN-XXX-w3/spec HAN-XXX-w4별도 진입 권장 - W1·W6·W7은 AC 명확하므로
/implement --skip-spec후보 - W2·W5·W8은 worker prompt 변경 영향이 있으므로
/spec거치는 게 안전
9.4 파일럿 운영 시작 조건
W1·W2·W3·W5만 완료되어도 최소 운영 가능. W4·W6·W7·W8은 운영 중 점진 추가 OK. 단 W3 in-place edit fallback 없이는 시작 금지 (사용자 신뢰 손실 리스크).
---
10. 참고 자료
1차 출처
- [How we built our multi-agent research system — Anthropic Engineering](https://www.anthropic.com/engineering/multi-agent-research-system)
- [AutoGen 0.2 GroupChatManager Reference](https://microsoft.github.io/autogen/0.2/docs/reference/agentchat/groupchat/)
- [LangGraph Multi-Agent Supervisor](https://reference.langchain.com/python/langgraph-supervisor)
- [Cognition Devin 2.0 — Interactive Planning](https://cognition.ai/blog/devin-2)
- [Cognition Devin 2025 Performance Review](https://cognition.ai/blog/devin-annual-performance-review-2025)
- [Devin Slack Integration Docs](https://docs.devin.ai/integrations/slack)
- [SWE-agent arXiv 2405.15793](https://arxiv.org/abs/2405.15793)
- [SWE-agent DefaultAgent Reference](https://swe-agent.com/latest/reference/agent/)
- [GitHub Next Copilot Workspace User Manual](https://github.com/githubnext/copilot-workspace-user-manual/blob/main/overview.md)
- [Factory Droid Exec Overview](https://docs.factory.ai/cli/droid-exec/overview)
내부 참조
pantheon/personas/wansu.md— 완수 v1 정의pantheon/personas/jarvis.md— Jarvis 위임 흐름pantheon/bridge.py— Slack handler + spec_gate 연결pantheon/spec_gate.py— 승인 파이프라인pantheon/README.md— 페르소나 운영 정책pantheon/AGENTS.md— 작업 workflow
관련 메모리
user_multi_llm_vision— 팀 운영 비전user_pantheon_operation_policy— Max 20x 자율 운영reference_agent_approvals_pipeline— spec_gate 흐름feedback_delegate_marker_slack_only— DELEGATE 마커 컨텍스트project_slack_integration_limit— Slack 앱 한도
트리거 thread
hangmansplayground.slack.com/archives/C0B5KLB7DHR/p1779866314152439