EG228/Web · A03

AI 조력자 — 서비스 아키텍처

에이전트가 시험을 돌리고, 데이터를 분석하고, 문서와 리포트를 쓴다. 다만 제어 루프 안에는 들어가지 않는다 — 그 선을 어디에 긋는지가 이 설계의 전부다.

범위 AI조력자 메뉴 · 에이전트 계층 상위 A01 메뉴 트리 작성 2026-09-02
01

계층 — 에이전트는 위에 얹는다

구조

에이전트를 장비 옆에 두지 않는다. 서비스 계층 위에 두고, 아래로는 도구 호출로만 닿게 한다. 그래야 에이전트가 느리거나 죽어도 시험이 계속된다.

사람 — 브라우저 지시 · 승인 · 최종 판단. 통전 버튼은 사람이 누른다 AI 에이전트 ① 운전 감시·판단 ② 문서·리포트 작성 ③ 시험 데이터 분석 세상과의 접촉은 전부 도구(tool) 호출 — 직접 CAN·브로커를 만지지 않는다 서비스 — Node 웹 서버 인증 · 권한 · 감사 로그 · 수집기 · PostgreSQL · 문서 🔴 도구는 여기의 API 를 부른다. 사람이 쓰는 것과 같은 문을 쓴다 전송 — MQTT step/set · step/done · live · status (A13 계약) 장비 — EG228 보드 · cycler_main · CAN 단위 작업 자율 수행 · cutoff 판정 · hold_ms 워치독 🔴 안전의 최종 관문 — limits 클램프는 여기서만 확정된다 제어 루프 AI 가 없어도 그대로 돈다 여기가 멈춰도 시험은 계속된다 — 화면과 분석만 멈춘다
다섯 계층. 에이전트는 서비스 위에 얹히고 아래로는 API 로만 닿는다. 붉은 괄호 구간이 제어 루프다 — 에이전트가 죽어도, 웹이 죽어도 이 구간은 자기 힘으로 돈다.
🔴 이 선을 넘기지 말 것

에이전트를 보드에 올리거나, 브로커에 직접 붙이거나, cutoff 판정을 맡기고 싶어지는 순간이 온다. 전부 거절한다. 판정을 위로 올리는 순간 네트워크·추론 지연이 안전에 들어온다. 에이전트는 "무엇을 할지 정하는" 쪽이고, 보드는 "안전하게 멈추는" 쪽이다.

02

에이전트 내부 — 컨텍스트 · 도구 · 승인 게이트

핵심

에이전트가 할 수 있는 일은 도구 목록이 전부다. 도구를 안 주면 못 한다. 그래서 설계는 "무엇을 시킬까"가 아니라 "어떤 도구를 줄까"로 한다.

컨텍스트 (읽기) 문서설계·매뉴얼·리포트 검색 시험 이력PostgreSQL · 과거 시험 실시간 상태채널 · 알람 · 진행 시나리오 · 배터리스펙 · 보호 한계 AI 에이전트 근거를 모으고 판단하고 도구를 고른다 🔴 숫자를 지어내지 않는다 — 리포트의 모든 수치는 도구 출력을 인용한다 모든 호출은 감사 로그에 agent 계정으로 도구 (쓰기) 📊 분석집계 · 비교 · 이상 탐지 📄 문서 · 리포트초안 생성 · 저장 ⚡ 제어시나리오 하달 · 정지 바로 실행 초안 상태로 저장 🔴 승인 게이트 사람이 누른다 서비스 API 장비
도구가 곧 권한이다. 분석과 문서는 바로 나가고, 제어만 승인 게이트를 지난다. 게이트를 도구 안이 아니라 서비스 쪽에 두는 것이 요점이다 — 에이전트가 자기 게이트를 우회할 수 없다.
도구 묶음승인실패해도
읽기채널 상태 · 이력 조회 · 문서 검색불필요답이 부실해진다
분석용량 추이 · SoH 추정 · 이상 구간 탐지불필요다시 돌리면 된다
문서 · 리포트초안 작성 · 저장발행 시초안이 남는다
제어 — 정지채널 정지 · 전체 정지🔴 불필요사람이 누른다
제어 — 기동 · 하달시나리오 시작 · 스텝 변경🔴 필수대기 상태로 남는다
🔴 권한을 비대칭으로 준다

정지는 승인 없이, 기동은 승인 있어야. 에이전트의 자율은 안전한 방향으로만 열어 둔다. 이상을 감지하고도 사람을 기다리느라 못 멈추면 에이전트를 둔 의미가 없고, 반대로 사람 없이 통전을 시작할 수 있으면 그것은 무인 운전이지 조력자가 아니다.

03

세 가지 일 — 언제 깨어나나

기동

조력자는 챗봇이 아니다. 부를 때만 오는 것스스로 도는 것이 함께 있어야 "장비를 관리한다"가 성립한다.

① 대화형 사람이 묻는다 — 화면 어디서든 ② 이벤트 구동 알람 · step/done · 이상값 ③ 정기 야간 배치 · 일일/주간 리포트 "3번 채널 왜 멈췄나" 이력·알람·문서를 훑어 근거와 함께 답한다 원인 분석 → 초안 비슷한 과거 사례 대조 필요하면 🔴 정지 제안 리포트 초안 · 데이터 정리 진행 중 시험 요약 SoH 추이 · 이상 후보 🔴 사람이 확인하고 발행 · 승인한다
세 갈래가 한 곳으로 모인다. 무엇으로 깨어났든 결과물은 초안 또는 제안이고, 사람의 확인을 거쳐 문서가 되거나 명령이 된다.
① 대화형② 이벤트③ 정기
깨우는 것사람의 질문알람 · 스텝 완료 · 임계 초과스케줄
산출답변 · 근거 링크원인 분석 · 정지 제안리포트 초안
사람 개입대화 중제안 승인발행 전 검토
없으면사람이 직접 찾는다🔴 알람을 놓친다리포트를 손으로 쓴다
②가 이 설계의 값이다

①과 ③은 편의다. ②만이 "AI 가 장비를 관리한다"에 해당한다 — 사람이 안 보고 있을 때 이상을 잡아내는 것. 만들 때 ②를 뒤로 미루면 조력자가 그냥 문서 도우미가 된다.

04

자율 등급

단계

한 번에 자율을 주지 않는다. 등급을 올려 가며 신뢰를 쌓는다. 등급은 기관·장비별로 따로 매긴다 — 한 곳에서 잘 됐다고 전부 올리지 않는다.

등급할 수 있는 것올리는 조건
L0 관찰읽기 · 분석 · 답변만. 아무것도 바꾸지 않는다시작은 여기서
L1 제안+ 문서·리포트 초안, 제어 제안 (사람이 승인)L0 에서 분석이 실제로 맞았다는 확인
L2 제한 자율+ 정지는 스스로. 기동은 여전히 승인🔴 오탐률 확인 후. 잦은 오정지는 시험을 망친다
L3 완전 자율🔴 채택하지 않는다. 통전은 사람 책임으로 남긴다
05

지켜야 할 것

규칙

🔴 제어 루프에 넣지 않는다

cutoff 판정·limits 클램프는 보드가 한다. 에이전트는 그 위에서 "무엇을 할지"만 정한다.

🔴 숫자를 지어내지 않는다

리포트의 모든 수치는 도구 출력 인용. 근거 쿼리를 함께 남겨 사람이 되짚을 수 있게 한다.

🔴 agent 계정으로 남긴다

에이전트의 조작을 사람 이름으로 기록하지 않는다. 감사 로그에서 사람과 AI 를 구분할 수 있어야 한다.

🔴 승인 게이트는 서비스에

게이트를 에이전트 안에 두면 프롬프트로 뚫린다. 서버가 "승인된 요청인가"를 판정한다.

기관 경계를 넘지 않는다

사용자 권한과 같은 규칙을 적용한다. UNIST 사용자의 질문에 KAIST 데이터를 쓰지 않는다.

모른다고 말한다

근거를 못 찾으면 추정하지 말고 "이력이 없다"고 답한다. 시험 데이터에서 그럴듯한 오답이 가장 위험하다.

초안은 항상 초안으로

AI 가 쓴 문서는 작성자 = AI 로 표시하고 사람이 발행해야 확정된다.

없어도 돌아간다

모델·API 가 끊겨도 웹과 장비는 그대로 동작해야 한다. 조력자는 부가 기능이다.

06

정해지지 않은 것

결정 대기
#질문왜 지금
1모델을 어디서 돌리나 — 외부 API / 사내 서버 / 온프레미스시험 데이터가 밖으로 나가도 되는지가 먼저다. 고객 데이터면 계약 문제가 된다
2조력자를 메뉴로 둘까 떠 있는 버튼으로 둘까①대화형은 어느 화면에서든 부르는 성격이다
3②이벤트 구동을 어느 알람부터 켜나전부 켜면 소음이 된다. 한두 개로 시작해 오탐률을 본다
4리포트 서식이 정해져 있나기존 30KW 리포트 양식이 있으면 그것을 따른다
5시작 등급 — L0 인가 L1 인가L1 은 문서 초안까지 준다. 초기 효용이 크지만 검토 부담이 생긴다

근거 — A01 메뉴 트리(AI조력자) · A13 단위 작업 MQTT 계약(step/set · hold_ms 워치독) · A05 전체 아키텍처 불변식 4(보드가 최종 클램프) · A12 §03(브로커가 제어 경로에 들어올 때의 대가) · 04-계정·그룹·권한 모델(기관 경계)
관련 — A01 메뉴 트리 · A02 화면 설계(기관·사용자)