← 목록
기타 2026-06-09 10KB 읽기 10분

오푸스4.8 Workflow vs 크라우니코드 오케스트레이션 — 비교·개선·Alt 1,2,3

개요

오푸스4.8에는 외부 JS를 작성해 컨텍스트를 저장하고 서브에이전트가 최적으로 사용하는 기능이 있다 (Workflow 도구). 현재 크라우니코드(agent.sh 5단 파이프라인 + 플랫파일 DB + ~/.claude/knowledge/ 다세션 메시)와 비교해 장단점을 정리하고, 두 시스템의 장점을 합친 단일 매니페스트 → 다중 런타임 백엔드 개선안을 정의한다. 클로드가 아니거나(타 LLM), 다른 사람의 클로드 계정이거나, LLM이 전혀 없는 경우를 위해 Alt 1·2·3 백엔드도 설계한다.


1. 오푸스4.8 Workflow 기능의 실체

Workflow 도구 = 결정적 멀티에이전트 오케스트레이션.

  • agent(prompt, {schema}) — 서브에이전트 생성. schema 지정 시 구조화 출력이 도구 계층에서 검증되어 객체로 반환 (파싱 불필요)
  • pipeline(items, stage1, stage2…) / parallel(thunks) — fan-out. stage 간 컨텍스트가 반환값으로 프로그래밍적 전달 (배리어 없는 파이프라인이 기본)
  • 저널 + resumeFromRunId — 동일 prefix는 캐시 결과 즉시 반환, 편집된 지점부터 라이브 재실행 (정확한 재개)
  • budget — 토큰 예산 인식 → 에이전트 수/깊이 동적 스케일
  • 스크립트는 파일로 영속, 백그라운드 실행, 완료 시 알림
핵심 가치: 제어흐름이 모델 변덕이 아니라 JS 코드로 결정적, 컨텍스트 핸드오프가 schema로 보장, 자동 저널/재개, 토큰 예산.


2. 현재 크라우니코드 오케스트레이션의 실체

구성내용
컨텍스트 저장플랫파일 .dat(pipe구분: keywords 586KB, 학습 64K줄), SQLite gigafactory.db(909KB)
다세션 컨텍스트~/.claude/knowledge/ (PLAN.md·LIVE_STATUS.md·sessions.json·plan.json·cells.json)
동기화훅(PreToolUse heartbeat / Stop deregister) + LaunchAgent harvest 5분 주기
오케스트레이션agent.sh 5단계(의도→검색→조립→검증→학습), run_multi로 "A 하고 B" 분해
에이전트간 전달stdout 파이프 문자열 + 임시파일 /tmp/의미어_multi_$$.han
통합 브리지claude-integration.sh (ask=규칙우선 / teach=학습 / status)
핵심 가치: 영속·다세션 공유(19+ 세션이 같은 파일 메시 공유), 플랫폼 독립(순수 POSIX bash, 클로드 없어도 동작), 한선씨 정합(규칙엔진·.한선).


3. 비교 — 장단점

크라우니코드 (현재)오푸스4.8 Workflow우위
컨텍스트 저장플랫파일+SQLite+knowledge/ (영속)runId 저널 (세션내)크라우니 (영속성)
컨텍스트 전달stdout 문자열/임시파일 (비정형)schema 검증 객체 (정형)Workflow
오케스트레이션bash 루프 + 모델 판단 (비결정적)JS 결정적 제어흐름Workflow
재개/저널없음 (수동 재실행)resumeFromRunId 캐시 재생Workflow
토큰 예산인식 안 함budget 동적 스케일Workflow
병렬성순차 위주parallel/pipeline 동시(최대16)Workflow
플랫폼 의존없음 (영구·POSIX)클로드 Opus 4.8 전용 (계정·과금 종속)크라우니
한선씨 정합정통 (.한선/규칙엔진)외부 의존성 (JS)크라우니
다세션 메시19+ 세션 공유단일 런 격리크라우니
자립도(LLM 0%)규칙엔진 직접매칭 가능LLM 필수크라우니
결론: 보완적. Workflow는 세션 내 결정적 오케스트레이션·구조화 핸드오프·저널 재개·예산에서 우월. 크라우니코드는 영속·다세션 공유·플랫폼 독립·한선씨 자립에서 우월. → 둘을 합친다.


4. 개선된 방법 — 단일 매니페스트(SSOT) → 다중 런타임 백엔드

워크플로우를 한 번만 선언형 매니페스트(.flow.json + .한선 동반)로 기술하고, 실행 환경에 따라 백엔드를 자동 선택한다. → Workflow의 장점(결정적 fan-out·구조화 핸드오프·저널·예산)을 도입하면서 플랫폼 독립·한선씨 정합 유지.

매니페스트가 표현하는 것

jsonc{
  "name": "...", "budget": 500000, "resume": "auto",
  "stages": [
    { "id": "find",   "intent": "버그 찾기", "schema": {...}, "phase": "Find" },
    { "id": "verify", "intent": "검증",     "schema": {...}, "after": "find", "mode": "parallel" }
  ]
}
stage = (id, intent, schema, agentType, phase) / edge = after + mode(pipeline|parallel) / budget·resume.

백엔드 4종

경로환경실행 방식resume/저널/예산
Native클로드 Opus 4.8 (본인 계정)매니페스트 → Workflow JS 컴파일 → native Workflow 도구플랫폼이 무료 제공
Alt 1클로드지만 다른 사람 계정 / Workflow 미가용매니페스트 → agent.sh/claude-integration.sh 오케스트레이터가 5단계로 순차/병렬 실행. schema는 stdout JSON으로 강제우리가 ~/.crownycode/runs/<id>.jsonl에 기록
Alt 2클로드 아님 (타 LLM: GPT/Gemini/로컬)LLM-agnostic 어댑터. schema를 프롬프트에 명시 강제(structured-output 흉내)우리 런너가 관리
Alt 3LLM 전혀 없음 (순수 규칙엔진)agent() 호출을 패턴DB 직접매칭 + 셀코어 규칙으로 치환. LLM 윤활유 0%우리 런너가 관리
→ "외부 JS 의존"을 Native 경로에만 한정. 나머지는 한선씨/규칙으로 자립.

역수출 (크라우니 강점을 Native에도)

Native Workflow 실행 결과를 종료 시 harvest~/.claude/knowledge/에 흡수 → 단일 런 격리를 깨고 다세션 메시에 합류. (Workflow의 약점인 영속·공유를 우리 강점으로 보강)


5. 관련 파일

  • 매니페스트 스펙: ~/Downloads/CrownyTVM/crownycode-flow/manifest.schema.json
  • 예제: ~/Downloads/CrownyTVM/crownycode-flow/example.flow.json
  • 포터블 런너(디스패처): ~/Downloads/CrownyTVM/crownycode-flow/cc-flow
  • 한선씨 동반(매니페스트 모델 + Alt3 규칙실행): ~/Downloads/CrownyTVM/crownycode-flow/흐름실행.한선
  • Native JS 이미터: ~/Downloads/CrownyTVM/crownycode-flow/native-emit.sh
  • 기존 통합 브리지: ~/Downloads/CrownyTVM/crownycode-agent/claude-integration.sh

6. 진행 현황 (2026-06-09 갱신)

항목상태
Native 이미트 (한선씨)기본 경로 흐름이미터.한선 — schema 직렬화+fanout/parallel+budget 완비. cc-flow가 구동, python판과 byte-identical 출력 (2개 매니페스트 검증)
Native 이미트 (py)✅ 폴백 전용 (crowny 바이너리 미발견 시). done-convert 처리됨
Alt 1 (클로드 타계정)✅ agent.sh 오케스트레이션 + 저널
Alt 2 (타 LLM)실호출 + 준수율 튜닝 — OpenAI/Gemini/Anthropic 라우팅, 펜스/산문 제거+required 키 검증(extract_validate)+불일치 시 재시도(기본 2회, CC_FLOW_RETRY), 키 없으면 Alt3 폴백
Alt 3 (LLM 0%)✅ 패턴DB 직접매칭, 2/2 stage 규칙매칭
환경 탐지✅ native/alt1/alt2/alt3 자동
harvest 역수출완료 — 모든 백엔드 종료 시 자동(harvest:true) → crowny-knowledge.sh add crownyflow/... 셀 메시 + FLOW_RUNS.md. Native는 cc-flow harvest <이름> < results.json으로 Workflow 반환값 흡수 → 단일런 격리 해소. Stop 훅에 cc-flow harvest-all(멱등) 연결 — 세션 종료 시 미역수출분 자동 흡수
resume 정규화완료 — stage 콘텐츠 해시(sha1{id,intent,schema,after,mode,fanout}[:12])=캐시 키. 최장 불변 prefix 재사용, 첫 변경 stage부터 그 이후 전부 재실행(선행 입력 변경=후행 무효, Workflow resumeFromRunId와 동일 의미). --no-resume로 전체 강제 재실행. 검증: 무변경=전부 캐시 / verify만 변경=review 캐시·verify 재실행 / no-resume=전부 재실행

잔여 이슈

  • 한선씨판 schema 직렬화 → 완료. native-emit.py 폴백 강등, done-convert
  • Alt 2 모델별 JSON 준수율 튜닝 → 완료 (extract_validate 검증 + 재시도 + 프롬프트 강화)
  • harvest 역수출 → 완료 (셀 메시 crownyflow/* + FLOW_RUNS.md, Native 결과 흡수 포함)
  • cc-flow는 bash 글루(env탐지/curl/메시) — convert 대기열 유지. 핵심 로직(이미트·규칙실행)은 한선씨 자립
  • 한선씨 JSON 파서 함정(맵 2종, \r) → 매니페스트 파싱은 python 마샬링 경유 (한선씨 직접 파싱은 차기)
  • resume 키 정규화 규약 → 완료 (최장 불변 prefix 캐시, --no-resume)
  • harvest Stop 훅 연결 → 완료 (~/.claude/settings.json Stop 체인에 cc-flow harvest-all 추가, 멱등)
  • Native↔Alt 교차 재개완료. 단일 저널 스키마 {stage,status,payload,key,backend} 통일, resume 포인터를 백엔드별→흐름별(<flow>.last.jsonl)로 변경, Native harvest가 매니페스트로 stage 키 부착. 어느 백엔드로 실행하든 직전 실행을 교차 재개. 검증: Native 결과 harvest → Alt3가 2/2 캐시 재사용
  • 안정화: test.sh 회귀 15건 전부 PASS (격리 RUNS, 메시 부작용 차단). set -u 버그(동일 local 문 내 자기참조) 수정. JSON 포맷 compact 통일. CC_FLOW_RUNS 격리 변수 도입. README.md 추가