목표관리
목표는 Myrm을(를) 채팅 도우미에서 자율적인 작업자로 변화시키는 것입니다. 목표를 정의하고 제약 조건을 설정하고 에이전트가 여러 차례에 걸쳐 독립적으로 작업하도록 하세요.목표 만들기
GUI에서
- 메시지 입력 영역에서 골 모드를 토글합니다. (오른쪽 하단 토글 버튼)
- 구성 패널은 다음 섹션으로 확장됩니다.
- 예산 —
max_tokens,max_usd,max_time_seconds및max_turns의 조합을 설정합니다. - 수락 기준 — 에이전트가 통과해야 하는 셸 명령 및 의미 검사를 정의합니다.
- 제약조건 — 에이전트가 실행 중에 따라야 하는 규칙
- 보호된 경로 — 에이전트가 수정해서는 안 되는 파일의 Glob 패턴(예:
*.env,migrations/**) - 고급 —
loop_on_pause,convergence_window, 각 단계 후 일시 중지(todo별 체크포인트)
- 예산 —
- 메시지 상자에 목표를 입력하고 전송합니다. 에이전트가 계획 및 실행을 시작합니다.
채팅에서
복잡한 작업을 자연어로 간단히 설명하세요. 에이전트는 지속적인 노력이 필요함을 감지하고 목표를 만들겠다고 제안합니다.목표 수명주기
예산 통제
모든 목표에는 4가지 예산 차원이 있습니다.
예산 소진으로 인해 진행 상황을 체계적으로 요약하여 목표를 일시 중지합니다. 언제든지 추가 예산을 사용하여 목표를 재개할 수 있습니다.
승인 기준
“완료”가 어떻게 보이는지 정의하십시오.- 셸 확인 — 테스트 명령(예:
pytest,npm test)을 실행하고 결과를 확인합니다. - 의미론적 검증 — 승인 기준에 대한 LLM 기반 평가
고급: 논리적 일관성 검증
긴 문서 작업의 경우 의미론적 검증을 통해 전체 출력이 논리적으로 일관되는지 확인합니다.제약
상담원이 따라야 하는 엄격한 규칙은 다음과 같습니다.14층 데드루프 실드
매 턴이 끝날 때마다 14레이어 가드 체인이 에이전트를 계속할지 여부를 결정하여 폭주 실행, 비용 초과, 토큰 낭비, 목표 드리프트 및 샌드박스 조사를 방지합니다.
또한 동적 잔여 USD 주입 및 4계층 컨텍스트 창 오버플로 보호를 갖춘 점진적 예산 저하(경고 → 마무리)는 미들웨어 수준에서 작동하여 엣지 케이스가 가드 체인에 도달하기 전에 이를 포착합니다.
판사 피드백 루프
의미론적 판단에서 목표가 아직 완료되지 않았습니다라고 판단하면 구체적인 이유를 제공합니다(예: “5개 차트 중 3개만 생성됨”). 이 이유는 다음 차례의 프롬프트에 자동으로 삽입되므로 에이전트는 해결해야 할 공백이 무엇인지 정확히 알 수 있으므로 중복된 재분석을 제거하고 불필요한 차례가 줄어듭니다.Todo별 체크포인트
할 일별 체크포인트 모드를 활성화하려면 고급 설정에서 **“각 단계 후 일시 중지”**를 활성화하세요. 활성화되면 에이전트는 각 작업 항목을 완료한 후 자동으로 일시 중지하고 계속하기 전에 사용자의 확인을 기다립니다. 작동 방식:- 에이전트는
todo_write을 통해 할 일 항목이 완료된 것으로 보고합니다. - 가드 체인은 새로운 완료를 감지하고 목표를 일시 중지합니다.
- GoalStatusCard에는 계속 버튼을 사용하여 방금 완료된 단계가 표시됩니다.
- 결과를 검토한 후 계속을 클릭하여 다음 단계로 진행합니다.
- 프로덕션 배포 — 진행하기 전에 각 마이그레이션 단계를 확인하세요.
- 데이터 파이프라인 — 각 단계에서 데이터 무결성을 확인합니다.
- 복잡한 리팩터링 — 코드 변경 사항을 단계별로 검토합니다.
- 학습 — 에이전트가 각 단계에서 수행하는 작업을 이해합니다.
칸반 목표 모드
목표는 채팅에만 국한되지 않습니다. 자율적인 다중 턴 실행을 위해 모든 Kanban 작업 카드에서 목표 모드를 활성화할 수 있습니다.목표 모드 활성화
- 새 Kanban 작업을 생성할 때 작업 생성 양식에서 목표 모드를 전환합니다.
- 선택적으로 최대 회전수를 설정합니다(지정되지 않은 경우 시스템 목표 예산이 기본값으로 설정됨).
- 작업 설명이 목표 목표가 됩니다. 에이전트는 여러 차례에 걸쳐 해당 작업을 수행합니다.
작동 방식
목표 모드 작업이 전달되면:KanbanTaskRunner은 전체 목표 엔진을 재사용하여GoalRegistry를 통해GoalProvider을 생성합니다(채팅 목표와 동일한 인프라).StreamExecutor은 자율 루프(의미론적 판단, 14계층 가드 체인, 예산 제어, 수렴 감지)를 구동합니다. 모두 적용됩니다.- 완료 시:
GoalStatus.COMPLETE→COMPLETED로 표시된 작업; 예산 소진 → 구조화된 요약으로FAILED로 표시된 작업
왜 사용해야 할까요?
시각적 표시기
- 작업 카드 — 목표 모드가 활성화된 카드에는 “목표 모드” 배지가 나타납니다(설정된 경우 최대 회전 수 표시).
- 작업 서랍 — 세부정보 섹션에 목표 모드 상태가 표시됩니다.
예산 및 안전
4가지 예산 차원(토큰, USD, 시간, 턴)이 모두 적용됩니다. 14층 데드 루프 실드는 매 턴마다 실행되어 폭주 실행, 비용 초과 및 목표 드리프트를 방지합니다. 이는 채팅 목표와 동일한 보호 기능입니다.우선순위 대기열
여러 목표를 만들면 자동으로 대기열에 추가됩니다.- 첫 번째 골은 즉시 실행됩니다.
- 후속 목표는
QUEUED상태가 됩니다. - 활성 목표가 완료되면 대기 중인 다음 목표가 자동으로 시작됩니다.
- GUI에서 드래그 앤 드롭 재정렬
auto_approve: true을 설정하면 목표 체인의 완전 무인 실행이 가능해집니다.
Saved Agent 프로필 연속성
목표가 자동 재개(큐 dequeue, 백그라운드 WAIT resume, loop restart)될 때 Myrm은 chat에 바인딩된 Saved Agent profile을 로드합니다:agent_id, user_instructions(Team Leader protocol + locale suffix), subagent_ids, agent_skill_ids, 도구 마운트 및 보안 설정. 긴 Goal에서도 한국어 합니다체 등 격식이 turn 2+에서 유지됩니다. 구현: goal_stream_trigger.py.
검증(2026-08): Goal Chrome E2E 2/2 통과(실 WebUI + MCP + 라이브 LLM, pytest 본문 ~3분).
적응형 컨버전스 및 Loop-on-Pause
목표는 에이전트가 작업을 완료한 시기를 자동으로 감지하고 사람의 개입 없이 지속적인 실행을 처리할 수 있습니다.수렴 감지
에이전트가 도구 호출 없이convergence_window 연속 턴을 진행하면 목표는 자동으로 수렴(완료)으로 표시됩니다. 이렇게 하면 에이전트가 더 이상 할 일이 없을 때 토큰을 유휴 상태로 낭비하는 것을 방지할 수 있습니다.
일시 정지 시 루프
활성화되면 수렴으로 인해 일시 중지된 목표가 구성 가능한 최대 다시 시작 횟수까지 새로운 컨텍스트로 자동으로 다시 시작됩니다. 이는 장기 실행 모니터링 또는 반복적인 개선 작업에 이상적입니다.이력서 안전
일시 중지된 목표를 수동으로 재개하면 모든 런타임 카운터(no_progress_streak, loop_restarts, consecutive_judge_parse_failures)가 자동으로 0으로 재설정됩니다. 이를 통해 에이전트는 즉각적인 재수렴이나 잘못된 자동 일시 중지를 트리거하지 않고 새로운 기회를 얻을 수 있습니다.
판사 실패 회로 차단기
의미론적 판단 모델이 구문 분석할 수 없는 출력(유효하지 않은 JSON)을 3회 연속 반환하는 경우 잘못 구성된 판단에서 토큰 소각을 방지하기 위해 목표가 자동으로 일시 중지됩니다. 이는 다음으로부터 보호합니다.- JSON 응답 계약을 따를 수 없는 약한 모델 사용
- 임시 모델 성능 저하로 인해 쓰레기 출력이 발생함
- 무한 재시도 루프로 인한 토큰 예산 낭비
서버 재시작 복구
목표가 활성화된 동안 서버가 다시 시작(업그레이드, 충돌 또는 컨테이너 일정 변경)되면 고아 목표가 자동으로 감지되고 명확한 이유와 함께 일시 중지됩니다.- 시작 시 서버는 목표를 구동하는 실행 엔진 없이 여전히 ACTIVE로 표시된 목표를 검색합니다.
- 각각의 분리된 목표는 “서버가 다시 시작되었습니다. 준비되면 재개”라는 이유로 일시중지됨으로 전환됩니다.
- 목표가 일시 중지되었음을 알리는 시스템 알림
- 영향을 받은 채팅을 열어 일시 중지된 상태를 확인하고 준비되면 원클릭 재개
프런트엔드 상태
목표 상태 카드에는 다음과 같은 다양한 상태가 표시됩니다.- 수렴 — 수렴 감지를 통해 목표 완료
- 다시 시작 중(#N) — 목표는 일시정지 루프를 통해 다시 시작됩니다(다시 시작 횟수 표시).
글로벌 목표 추적
컨텍스트를 전환하지 않고도 모든 페이지에서 모든 활성 목표를 모니터링할 수 있습니다.- NavBar 배지 — 실시간 배지는 활성 목표 수를 표시합니다. 목표가 완료되거나 대기열에서 제외되면 서버 전송 이벤트를 통해 즉시 업데이트됩니다.
- 백그라운드 작업 팝오버 — 배지를 클릭하면 모든 세션의 모든 활성 목표(목표, 상태, 소비된 토큰 및 경과 시간)를 볼 수 있습니다.
- 빠른 작업 — 팝오버에서 직접 목표를 일시 중지, 재개 또는 취소할 수 있습니다. 건배는 행동을 확인합니다.
- 탐색 — “세션으로 이동” 버튼을 누르면 자세한 내용을 볼 수 있는 목표 채팅으로 바로 이동합니다.
- OS 알림 — 목표가 완료되면(완료, 실패 또는 일시 중지) 브라우저 탭이 백그라운드에 있어도 시스템 알림을 받습니다.
동적 하위 목표
실행 중에 에이전트를 중단하지 않고 새 목표를 추가할 수 있습니다.- 활성 목표의 세부정보 패널을 엽니다.
- 하위 목표를 추가합니다(예: “새 모듈에 대한 단위 테스트도 추가”)
- 하위 목표는 가장 높은 우선순위로 에이전트의 컨텍스트에 주입됩니다.
IM 슬래시 명령
모든 IM 채널(Slack, Feishu, Telegram, WhatsApp 등)에서 목표를 완전히 관리하세요.
IM을 통해 추가된 제약 조건은 “제약 사항(반드시 위반하지 않아야 함)“으로 에이전트의 프롬프트에 주입되고 완료 확인 중에 의미론적 판단에 의해 시행됩니다. 이는 GUI 정의 제약 조건과 동일한 동작입니다.
객관적인 핫 편집
실행 도중 목표 방향을 변경합니다.- 활성 목표의 세부정보 패널을 엽니다.
- 목표 텍스트 편집
- 변경 사항은 조정 메시지로 주입됩니다. 에이전트는 진행 상황을 잃지 않고 과정을 조정합니다.
실행 요약
완료 후 모든 목표는 다음과 같은GoalExecutionSummary을 생성합니다.
- 수정된 파일(diff 링크 포함)
- 토큰 사용 내역
- 모델별 비용 분석
- 경과된 시간
- 턴 카운트
- 완료 이유
IM 완료 알림
IM 채널(/goal set을 통해)에서 목표가 시작되면 완료 결과가 자동으로 원래 대화 스레드로 푸시되며 폴링이 필요하지 않습니다.
예
Feishu에서 목표를 시작하세요:제공 가능한 번들
목표가 완료되고 2개 이상의 아티팩트(문서, 스프레드시트, 프리젠테이션 등)가 생성되면 Myrm은(는) 자동으로 이를 제공 가능한 번들 카드에 집계합니다.- 자동 수집 — 목표 세션 중에 생성된 모든 아티팩트는 수동 조치 없이 수집됩니다.
- 원클릭 ZIP 다운로드 — 전체 번들을 단일 ZIP 아카이브로 다운로드
- 파일별 미리보기 — 개별 결과물을 클릭하면 형식 인식 렌더링을 통해 Artifact Portal에서 열 수 있습니다.
- 파일 이름 중복 제거 — 여러 아티팩트가 동일한 이름을 공유하는 경우 고유 식별자가 자동으로 추가됩니다.
채팅에서 클릭 가능한 전달 경로
번들 카드 외에도 상담원이 응답에 인라인 코드가 포함된 결과물을 인용하면 WebUI는 해당 결과물을 클릭 가능한 링크로 렌더링합니다.`workspace/reports/brief.md`— 작업공간 상대 경로; 탭 한 번으로 Artifact Portal 미리보기가 열립니다.`@file_001`— 짧은 파일 ID를 활용합니다(에이전트가 내부적으로 사용하는 것과 동일한 별칭). 아티팩트 SSE이 동기화되면 클릭 가능
[Title](artifact:path) 마크다운과 별도의 Right Rail을 기대합니다. Myrm은 기존 포털을 재사용합니다. 채팅에서 경로를 클릭하세요.
참고: 고정된deliverable_discipline프롬프트 블록은 에이전트에게 파일을 작성하고 경로를 인용하도록 가르칩니다. 파일 생성은 아티팩트를 자동 등록하며 SSE에는short_file_id이 포함될 수 있습니다.
사용 사례: 풀체인 오피스 딜리버리
사전 구축된 “Office Full-Chain Delivery” 에이전트 템플릿을 사용하여 한 번의 대화로 완전한 문서 세트를 생성하세요.- 에이전트 선택기에서 “Office Full-Chain Delivery” 에이전트를 선택합니다.
- 결과물을 설명하세요(예: “분기별 보고서 준비: Excel 데이터 + PPT 프리젠테이션 + 단어 요약”)
- 에이전트는 목표 모드로 실행하여 모든 문서에서 데이터 일관성을 유지합니다.
- 완료되면 다운로드할 준비가 된 모든 파일과 함께 제공 가능한 번들 카드가 나타납니다.
API 액세스
REST API을 통해서도 결과물을 사용할 수 있습니다.GET /api/goals/{goal_id}/status— 아티팩트 ID 및 파일 이름이 포함된deliverables배열을 반환합니다.POST /api/files/download-bundle— 여러 아티팩트를 ZIP 아카이브로 다운로드합니다.
작업 흐름 예시
프로젝트 마일스톤(교차 세션 목표)
목표는 단일 세션 내에서 작동하지만 프로젝트 마일스톤은 여러 세션에 걸쳐 있습니다. 이를 통해 전체 프로젝트에 대한 전략적 목표를 정의할 수 있으며 에이전트는 모든 대화에서 이를 자동으로 인식합니다.작동 방식
- 사이드바 패널에서 마일스톤 생성(프로젝트 내)
- 에이전트 자동 삽입 —
ProjectRoadmapMiddleware은 해당 프로젝트의 모든 대화에 압축 로드맵 컨텍스트(최대 100개 토큰)를 삽입합니다. - 진행 상황 추적 — 자동 진행 상황 계산을 위해 마일스톤이 Kanban 보드에 연결됩니다.
마일스톤 만들기
사이드바에서 프로젝트로 이동하여 마일스톤 섹션을 찾으세요.- 새 마일스톤을 추가하려면
+버튼을 클릭하세요. - 각 마일스톤에는 제목, 선택적 설명 및 수락 기준이 있습니다.
- 인라인으로 이름을 바꾸려면 마일스톤 제목을 두 번 클릭하세요.
- 목표가 달성되면 이정표를 완료로 표시합니다.
실시간 진행 상황 시각화
각 마일스톤에는 연결된 Kanban 작업의 완료율을 보여주는 간단한 진행률 표시줄이 표시됩니다.- 마일스톤에 관련 작업이 있으면 제목 아래에 3px 진행률 표시줄이 나타납니다.
- 작업 개수가 표시됩니다(예: “6/8”) - 수동 계산이 필요하지 않습니다.
- 작업이 완료되면 진행 상황이 자동으로 업데이트됩니다.
batch-progressAPI은 단일 요청으로 모든 활성 마일스톤 완료율을 가져옵니다(N+1 쿼리 없음).
자동 컨텍스트 삽입
마일스톤이 있는 프로젝트 내에서 채팅하면 에이전트는 다음과 같은 컨텍스트를 받습니다.평가 가져오기(원클릭 보고서 → 작업)
에이전트가 평가 보고서 또는 검토 문서(아티팩트)를 생성하면 한 번의 클릭으로 이를 마일스톤 및 작업으로 변환할 수 있습니다.- 사이드바에서 마일스톤 패널 확장
- 최근 후보가 자동으로 나타납니다 — 시스템은 각 아티팩트를 조사하여 가져올 수 있는 작업이 포함되어 있는지 확인합니다(가져오기 엔진과 동일한 파서를 사용하는 의미론적 검증). 이미 가져온 아티팩트는 가져오기 원장을 통해 자동으로 감지되고 비활성화된 것으로 표시됩니다.
- 후보를 클릭하여 가져오거나 이슈 ID를 수동으로 입력하세요.
- 즉각적인 피드백 — 성공하면 영수증이 표시됩니다(이정표 + 생성된 작업). 실패는 명확한 이유를 보여줍니다(예: “이미 가져옴”, “실행 가능한 작업 없음”)
- 멱등성 — 동일한 아티팩트 버전을 동일한 프로젝트로 두 번 가져올 수 없습니다(불변 원장).
- 원자 — 가져오기가 중간에 실패하면 부분적으로 생성된 모든 마일스톤/작업이 롤백됩니다.
- 관찰 가능 — 제품 분석을 위해 가져오기 유입경로 지표(이유 및 트리거별 시도, 성공, 실패)를 추적합니다.
- 값 종료 — 패널에 가져온 후 작업 완료율이 표시되므로 가져온 작업의 실제 영향을 확인할 수 있습니다.