프로젝트 소개

Adrastea는 자율적인 작업 오케스트레이션을 위한 "공생형 이중 엔진(symbiotic dual-engine)" 아키텍처를 제안하는 MIT 라이선스 기반의 Python 프로젝트(3.10+)입니다. 이 프로젝트의 핵심 아이디어는 예측 가능한 실행 레이어와 문제가 발생했을 때만 개입하는 추론 레이어 간에 작업을 분할하는 것입니다. **System Alpha — 결정론적 실행 엔진** Alpha는 가장 먼저 시작되는 호스트 프로세스로 설명됩니다. 수명 주기와 부트스트랩을 처리한 다음, Beta를 생성하기 전에 환경을 검증하고 안정화합니다. Alpha의 역할에는 로컬 스크립트, 바이너리 및 작업 정의를 디스패치하는 작업 스케줄러와 재현 가능한 실행에 중점을 두고 표준 I/O, 오류 로깅 및 프로세스 수명 주기를 관리하는 로컬 프로그램 러너가 포함됩니다. RL(강화 학습) 플래너는 대기 시간, 종료 코드, 리소스 사용률 및 출력 유효성과 같은 결과와 연계된 점수 함수를 사용하여 작업 시퀀스를 안내하고, 과거 및 조정된 가중치를 기반으로 실행 분기를 선택하기 위해 경로 탐색 휴리스틱을 사용합니다. 또한 Alpha는 파싱, 형식 추출 및 기본 텍스트 분석과 같은 오프라인 및 저비용 작업을 위해 로컬 추론 런타임(`http://127.0.0.1:11434`의 Ollama)에 연결됩니다. **System Beta — 확률적 의사결정 및 추론 엔진** Beta는 안정화 후 Alpha에 의해 생성되며 비결정론적 문제를 위한 의사결정 레이어 역할을 합니다. Alpha의 원격 측정(telemetry), 상태 메트릭 및 작업 진행 상황을 모니터링하고, Alpha가 처리되지 않은 예외, 환경 드리프트, 반복적인 실패 상태 또는 실행 루프에 직면했을 때 개입합니다. 또한 Beta는 Alpha의 RL 플래너가 사용하는 보상 및 패널티 가중치를 조정하여 실행을 더 생산적인 경로로 효과적으로 재지정하는 역할을 담당합니다. Beta는 유휴/관찰(idle/observe, 수동적 모니터링), 분류 및 해결(triage & unstick, 차단 조건 진단), 최적화(optimize, 완료된 실행 경로에서 중복 제거), 발견 및 혁신(discover & innovate, 새로운 작업 시퀀스 및 목표 가설 수립)의 네 가지 모드로 자율 루프를 실행합니다. 외부 도구 및 실시간 컨텍스트를 위해 Model Context Protocol(MCP) 서버와 통합되며, 심층 추론, 전략적 의사결정, 코드 생성 및 문제 해결을 위해 프론티어 또는 외부 LLM을 참조할 수 있습니다. **프로세스 간 통신** Alpha와 Beta는 도메인 소켓, 명명된 파이프(named pipes) 또는 메시지 버스와 같은 저지연 양방향 채널을 통해 통신하는 동시 프로세스로 실행되며, 구조화된 JSON 또는 Protocol Buffer 엔벨로프를 전달합니다. 문서화된 제어 신호에는 `SIG_SPAWN`, `SIG_HEARTBEAT`, `SIG_SLEEP`, `SIG_WAKE`, `SIG_TELEMETRY`, `SIG_STUCK`, `SIG_INTERRUPT`, `SIG_DISPATCH`, `SIG_MUTATE` 및 `SIG_TUNE_WEIGHTS`가 포함됩니다. 이 신호들은 프로세스 부트스트래핑, 활성 핑(liveness pings), 절전/깨우기 전환, 결과 보고, 고착 상태 알림, 작업 중단, 대기열 주입, 실행 중 매개변수 변경 및 RL 가중치 업데이트를 함께 처리합니다. **Keep-alive 및 장기 절전 모드** `KeepAliveProcess` 코디네이터는 시스템을 장기간 절전 상태로 유지하여 CPU, 메모리 및 토큰 사용량을 줄이는 동시에 `127.0.0.1:8765`에서 Alpha의 IPC TCP 서버, 클라이언트 채널 및 `DIRECTIVES.txt` 감시자를 활성 상태로 유지합니다. 하트비트, 깨우기, 절전 및 디스패치를 위한 신호 라우팅은 신속하게 응답하도록 설계되었으며, 백그라운드 Beta 하위 프로세스 및 작업 러너는 계속 감독되어 예기치 않게 종료될 경우 복구됩니다. 또한 들어오는 지시사항이나 디스패치 신호는 절전 타이머를 기다리지 않고 시스템을 즉시 깨웁니다. **CLI** README에는 `python -m adrastea.cli keepalive --sleep-interval 300`, `ping`, `sleep --duration 600` 및 `wake`와 같은 명령어가 문서화되어 있습니다. 명시된 필수 요구 사항은 로컬 Ollama 서버(`qwen3-coder:30b` 또는 더 가벼운 지시 모델 등), MCP 클라이언트 구성, PowerShell, Bash, Python 또는 Node와 같은 로컬 실행 런타임, 그리고 비동기 교차 프로세스 전송입니다. README는 아키텍처적 의도를 설명하고 "기본적인(rudimentary)" keep-alive 표현을 포함하고 있음에 유의하십시오. 벤치마크나 성능 수치는 제공되지 않으므로, 설명된 동작은 측정된 결과가 아닌 프로젝트의 설계 목표로 취급되어야 합니다. 기여는 `main` 브랜치에 대한 포크, 기능 브랜치 및 풀 리퀘스트를 통해 환영받습니다.