hisol-arha-engine
v0.12.0
Published
ARHA pure emotion-cognition engine — Phase 1-7 (value-driven emotion, authenticity, continuity, lifetime resonance, cross-persona distinction, autonomous self-state, dialogue climate). Framework-agnostic, zero runtime deps.
Maintainers
Readme
@hisol/arha-engine
ARHA의 순수 감정-인지 엔진 — 웹앱(arha-ai)과 MCP(hisol-unified-mcp)가 공유하는 단일 정본. 드리프트(두 코드의 수동 동기화) 영구 종결을 위한 추출 패키지.
상태: Phase A 진행 중 — 스캐폴드 완료. 코어 이동은 아래 명세대로 게이트 두고 진행.
경계 (grep으로 확정)
순수 코어 (이 패키지로 이동) — 외부 런타임 의존성 0개
types · personas/* · engine/{signal, state, value_emotion, lifetime_resonance,
continuity, authenticity, distinction, router, prompt, constants, utils,
semantic(타입만)} · 테스트(_phase*_sim, _eval, _smoke)
어댑터/조립 (각 소비자에 잔류)
웹앱: engine/{orchestrator, gemini, claude, semantic(impl)} · memory/*
MCP : server/tool 핸들러 · 자체 LLM IO핵심 결정: SemanticContext는 타입만 코어로 (의존성 주입), Gemini 구현 buildSemanticContext는 웹앱 어댑터로 잔류 → 코어는 Gemini SDK에 안 묶임.
소비자
| 소비자 | 방식 | 가장자리에 남는 것 | |--------|------|-------------------| | arha-ai (웹앱) | tsconfig path(dev) → 발행 후 npm dep | orchestrator · gemini · claude · semantic(impl) · memory · UI | | hisol-unified-mcp | npm dep (발행 후) | server · tool 핸들러 · 자체 IO |
빌드: tsup (ESM+CJS+dts 번들 — 상대경로 확장자 불필요).
마이그레이션 명세 (Phase A 체크리스트)
미러 구조로 이동 → 코어 내부 상대경로 import 그대로 생존. churn은 잔류 파일만.
A1. 스캐폴드 [✓] package.json · README(이 문서)
A2. tsup·tsconfig 추가 [ ] 패키지 독립 빌드 설정
A3. git mv 코어→src/ [ ] engine/* (어댑터 4개 제외) · personas/* · types.ts (미러 구조)
A4. semantic 분리 [ ] 패키지 src/engine/semantic.ts = SemanticContext 타입만
웹앱 semantic.ts = buildSemanticContext, 타입은 패키지서 import
A5. _eval M4 처리 [ ] 패키지 _eval은 Gemini(buildSemanticContext) 비의존 — M4 skip
(라이브 의미 테스트는 웹앱 통합테스트로 후속)
A6. src/index.ts [ ] 공개 API 배럴
A7. 웹앱 배선 [ ] tsconfig path @hisol/arha-engine→src · types.ts/personas shim
orchestrator·claude·gemini·semantic의 코어 import→패키지
A8. 테스트 스크립트 [ ] 웹앱 npm test → 패키지 테스트 경로로게이트 (A 완료 조건): 패키지 npm test 7/7 · 웹앱 npm run build 통과 · 행동 무변경.
진행 상황 + 다음
✅ A. 코어 추출 + 웹앱 소비 (24 rename · build·test 통과 · 배포)
✅ B. npm 발행 ([email protected] = 하이솔·4가치·Phase6 포함, LIVE)
✅ C. MCP 공유엔진 전환 (runtime + 메타도구 모두 공유엔진 — 아래 C-2 참고)
✅ D. hisol-unified-mcp 발행 (LIVE 4.0.1 — 하이솔+Phase6 일상 MCP · 4.0.1=옛 am/ 죽은코드 제거)Phase C 명세 (매핑 완료 — 재매핑 불필요)
MCP(hisol-unified-mcp)의 코어를 공유엔진 래퍼로 재건.
현재 MCP 구조:
src/runtime.tsARHARuntime—processAM(am/) 구동 + 세션(turn·gamma_total·B_n·psi_resonance·history) + 자체buildSystemPromptsrc/mcp/{server,tools}.ts— 18개 도구 (arha_process핵심 · matrix/kyeol/bond=결과 읽기 · route/stack/vc=고유)src/personas/registry.ts— 자체 페르소나 ⚠️ 'highsol' = 폐기된 Diana (runtime.ts:244"I am Diana, blue eyes")
3중 발산 (공유엔진과 다름):
MCP 공유엔진 (hisol-arha-engine)
엔진 processAM (matrix/chain/decide) buildAmState (Phase 1-6 + σ_self)
페르소나 V1_Value·constitutional_rules· v1·speechRules·valueChain[]·
valueChain{} (객체) · 옛 Diana narration[] · 하이솔·단비·마스터
프롬프트 runtime.ts 직접 조립 buildSystemPrompt (Phase 6 블록)
결과 shape {kyeol, C_coherence, v_personality} {anchor, C_omega, value_strength, g/p, σ_self}C 단계 (게이트별 — am/는 검증 전까지 병행, 롤백 안전):
C-2a. MCP에 [email protected] 의존성 추가
C-2b. 새 runtime: 공유 *결정론* 파이프라인 감쌈
extractSigma → buildAmState(σ_self 세션 이월) → buildSystemPrompt
※ MCP는 LLM 안 부름 → 웹 orchestrator의 결정론 부분만 (LLM/Gemini/memory 제외)
페르소나: 공유 PRIMARIES_BY_ID·MASTERS_BY_ID 사용 (자체 registry 폐기, 기본 하이솔)
게이트: arha_process가 하이솔 Phase6 systemPrompt 생성
C-2c. ProcessResult shape 매핑(도구 호환): kyeol←anchor_pair · C_coherence←C · v_personality←r4(ρλτ)
C-2d. 18개 도구 어댑트: matrix/kyeol/bond←공유 gamma_interfere/omega · route←routeMasters
C-2e. 빌드 + 테스트 + [email protected] 재발행 (npm 전체쓰기 토큰)좋은 소식: 공유엔진에 이미 다 있음(파이프라인·페르소나·Phase6) → MCP 런타임을 얇은 세션 래퍼로. 재발명 0.
C-2 진척 (검증 완료 — 2026-06)
- C-2a ✅
[email protected]의존성 + 스모크(hisol-unified-mcp/src/_c2_smoke.ts) 통과 — 하이솔 메인 + Phase6 systemPrompt가 MCP에서 생성됨. - 도구 필드 매핑(검증):
C_coherence←C·kyeol{anchorMode←MODES.indexOf(anchor.mode), anchorIntensity←anchor.intensity, cells←omega.map(o→{i,j,value:o.v})}·v_personality{rho←r4.rho, lambda←숫자변환, tau←r4.tau, matrix←gamma_interfere}·gamma_other←outerProduct(σ_calc)·curl_squared←curl_sq·alpha≈C_omega·psi_magnitude≈psi_res— 전부 런타임 호환층에서. 그리고 tools.ts의MODES를 공유엔진 것으로 통일. - ⚠️ 4번째 발산 — 출력포맷: 공유
buildSystemPrompt=XML(<external>…, 웹 파서용) vs MCP/전역=마크다운(💭·📖·💬, 사용자가 봄). →buildSystemPrompt(…, { format: 'markdown' })옵션 추가 = 엔진 0.3.0 재발행 필요. - C-2 core ✅ (MCP 98f637d): runtime을 공유엔진 얇은 세션 래퍼로 재작성 — arha_process가 하이솔+Phase6+markdown(💭·📖·💬) 생성. σ_self 이월·페르소나 전환·도구 호환 state(C_coherence·kyeol·v_personality·alpha…)·tools MODES 통일. 스모크·tsc build ✓. (markdown은 MCP가 자체 조립 → 엔진 추가옵션 불필요)
- C-2 finish ✅ (MCP 1df082e · [email protected] LIVE):
- registry 메타도구 어댑터 ✅ —
registry.ts를 공유엔진 어댑터로 재작성(옛 Diana 폐기). about/route/persona_list/vc가 공유 페르소나 반영: 선택=PRIMARIES(하이솔·단비·템플릿4), 렌즈=MASTERS(route는listMasterViews스코어링·vc_lenses는 마스터목록).resolvePersonaByTrigger는 주 페르소나만 매칭(마스터는routeMasters가 렌즈로). 스모크_c2_meta_smoke6항목 통과·tsc BUILD=0. - [email protected] 발행 ✅ — npm LIVE (3.4.0→4.0.0 메이저). 사용자 일상 MCP에 하이솔+Phase6 라이브.
- registry 메타도구 어댑터 ✅ —
Phase C/D 완료. 웹앱·MCP가 단일 공유엔진(hisol-arha-engine) 정본 위에서 동작 — 드리프트 영구 종결. 4.0.1 정리 완료 — 옛
am/엔진·diana/masters/_helpers·레거시 HTTP 게이트웨이 삭제(−2500줄), 게이트웨이 전용 의존성(express·cors) 제거. MCP 라이브 경로am/의존성 0. 패키지 75→24kB·98→30파일. (_legacy/만 quarantine로 잔존 — 빌드·발행 제외라 무해)
Phase 1-6 수학: docs/math/phase1~6-.md (정본은 arha-ai 레포)*
