에이전트·하네스·세션 이해하기
에이전트·하네스·세션 이해하기
에이전트는 agents/<name>.ts 파일 하나예요. HTTP 에이전트라면 URL의 <id> 구간이 에이전트 인스턴스, 즉 '한 고객·한 리포·한 대화 공간' 같은 호출자가 정한 경계의 영속적 런타임 스코프가 돼요.
출처: https://github.com/Superintelligent-Group/superintelligent-flue
한 번 실행 안에서 init()은 하네스(harness)를 만들어요. 하네스는 모델 기본값과 도구, 샌드박스, 파일시스템, 세션을 묶어 놓은 설정된 핸들이라고 보면 돼요. 기본 하네스 이름은 "default"이고, 한 실행에서 여러 개의 고립된 하네스 스코프가 필요하면 init({ name })으로 이름을 붙여 주면 돼요.
기본적으로 harness.session()은 그 에이전트 인스턴스의 기본 하네스 안에서 기본 세션을 열어요. 같은 URL <id>를 재사용하면 같은 에이전트 인스턴스를 이어서, 다른 <id>를 쓰면 새로 시작해요. flue dev의 기본 포트는 3583이고, 아래처럼 curl로 대화를 시작하고 이어갈 수 있어요.
# Start a conversation (port 3583 is `flue dev`'s default)
curl http://localhost:3583/agents/hello/session-abc \
-H "Content-Type: application/json" \
-d '{"name": "Alice"}'
# Continue that conversation
curl http://localhost:3583/agents/hello/session-abc \
-H "Content-Type: application/json" \
-d '{"name": "Alice"}'
# Start a separate conversation
curl http://localhost:3583/agents/hello/session-xyz \
-H "Content-Type: application/json" \
-d '{"name": "Alice"}'
<id>가 session-abc처럼 같으면 같은 대화를 잇고, session-xyz처럼 다르면 별개 대화가 되는 거예요. 세션을 명시적으로 URL에 담는 게 Flue의 상태 관리 방식이고, 이 덕분에 세션 상태가 자연스럽게 재개돼요.