Skip to content

feat(routines): 자율 루프 — interval 루틴에 LOOP 판정·회차/예산 상한·막힘 결재 재개 - #293

Merged
beyondworks merged 3 commits into
mainfrom
feat/routine-loops
Aug 23, 2026
Merged

feat(routines): 자율 루프 — interval 루틴에 LOOP 판정·회차/예산 상한·막힘 결재 재개#293
beyondworks merged 3 commits into
mainfrom
feat/routine-loops

Conversation

@beyondworks

Copy link
Copy Markdown
Owner

무엇

interval 루틴(크루 Start-loop)을 자율 루프로 확장 — 새 파일 없이 루틴의 loop 필드로.

  • loop: { maxRuns(1~200, 기본 20), maxUsd|null, runs, spentUsd, lastVerdict, stoppedReason, missingVerdicts, stoppedDetail }normalizeLoop 순수 함수. interval이 아닌 루틴의 loop는 무시.
  • 실행 프로토콜: 프롬프트 끝에 회차/상한/지난 결과 문단(회사 lang ko/en) + 마지막 줄 LOOP: continue|done <이유>|blocked <결정> 요구. parseLoopVerdict(마커 없음=continue, 3회 연속 누락 → blocked).
  • 정지: done / blocked(→ 결재함 kind:'loop', 승인 시 resumeLoop, 거절 시 정지 유지) / maxRuns / maxUsd / 수동(manual). 정지 시 emitNotify(type:'routine')에 사유 문장.
  • chat() 반환값에 costUsd 추가(SDK 청구 턴만, 구독·openrouter·CLI는 null → 0 합산). 기존 소비자 무영향(필드 추가).
  • 생성 경로 3곳 기본 loop:{maxRuns:20}: 회의실 loop 지시어, SDK schedule_task(스키마 maxRuns·maxUsd 추가), CLI 지시 블록(maxRuns/maxUsd 수용) — 러너 패리티.
  • 화면: 루프 진행 3/20회 · 약 ₩588 + 상태 칩(진행 중/완료/막힘/한도/정지됨), 막힘 사유 + 결재함 링크(데크), 정지된 루프는 토글이 "지금 재개". 폼에 최대 반복·루프 예산(USD, ko는 ₩ 병기). i18n routines.loop.* ko/en.

검증

  • test/routine-loops.test.mjs 9건(정규화·판정 파싱·done/maxRuns/maxUsd/blocked→결재 1건·승인 재개·거절 유지·3회 누락·수동 정지·타입 전환) — chat은 runRoutine(..., { chatFn }) 주입.
  • npm test: 925 tests / 920 pass / 0 fail / 5 skipped, exit 0. npx next build 통과.
  • 격리 QA 서버(:3233, 임시 ARGO_ROOT) + Aside 스크린샷: 진행 중 / 막힘(파일 편집) / 폼 — artifacts/loops-running.png, loops-blocked.png, loops-form.png(워크트리, 미커밋).

미검증(정직 표기)

  • 실 러너로 도는 라이브 루프(LLM이 실제로 마커를 지키는지) — chatFn 주입 테스트만. CLI 러너(codex/gemini)의 마커 준수율은 3회 누락 안전망에 의존.
  • 텔레그램/슬랙으로의 정지 알림 표시·결재 카드 라이브.
  • 영어 모드·다크 테마 화면은 스크린샷 미촬영(문자열은 i18n 등록 완료).
  • 신규 interval 루틴은 기존 동작대로 생성 즉시 1회 발화(lastRun null=due) — 이번 변경 아님.

🤖 Generated with Claude Code

beyondworks and others added 3 commits August 23, 2026 11:44
…/blocked), maxRuns·maxUsd 상한 자동 정지, blocked는 결재(kind loop)로 재개, chat()이 costUsd 반환

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…에 loop 기본값(maxRuns 20) 주입, maxRuns/maxUsd 옵션

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…·루프 예산(₩ 병기) 입력, i18n routines.loop.* ko/en, 정지 상세(stoppedDetail) 저장

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@beyondworks
beyondworks merged commit 62c3fe3 into main Aug 23, 2026
2 checks passed
@beyondworks
beyondworks deleted the feat/routine-loops branch August 23, 2026 02:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant