본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 27. 06:10

농담이 통했다: Hermes Agent를 활용한 AI 기반 COBOL 회의 감사 도구 구축하기

요약

Hermes Agent Runtime을 활용하여 비정형 회의 데이터를 결정론적인 감사 보고서로 변환하는 'SilentSpace Guardian' 플랫폼 구축 사례를 소개합니다. AI의 유연한 오케스트레이션과 GnuCOBOL 기반의 엔트로피 엔진을 결합한 Stable Core/Adaptive Edge 아키텍처를 구현했습니다.

핵심 포인트

  • Hermes Agent Runtime을 통한 의미론적 데이터 추출 및 오케스트레이션
  • AI의 모호함과 COBOL의 결정론적 로직을 결합한 하이브리드 아키텍처
  • 로컬 우선(local-first) 방식의 조직 엔트로피 감사 시스템 구축
  • Stable Core / Adaptive Edge 패턴의 실질적 적용 사례

이 글은 Hermes Agent Challenge: Build With Hermes Agent를 위한 제출물입니다.

내가 만든 것

SilentSpace Guardian은 Hermes Agent Runtime을 사용하여 비정형 회의 요청을 결정론적 (deterministic) 감사 보고서로 변환하는 로컬 우선 (local-first) 조직 엔트로피 감사 플랫폼입니다.

이 시스템은 다음을 결합합니다:

  • 오케스트레이션 (orchestration) 및 의미론적 추출 (semantic extraction)을 위한 Hermes Agent Runtime
  • 큐레이션된 스킬 레이어 (skill layer) 및 행동 계약 (behavioral contract) (SOUL.md)
  • 로컬에서 컴파일된 GnuCOBOL 엔트로피 엔진
  • 자동화된 마크다운 (markdown) 보고서 생성

이 프로젝트는 소셜 미디어 참여도가 기술적 업무보다 더 강력한 신호라는 말을 들은 후 풍자로 시작되었습니다. 이는 AI가 모호함을 처리하고 결정론적 시스템이 핵심 로직을 담당하는 Stable Core / Adaptive Edge 아키텍처 패턴의 실질적인 시연으로 진화했습니다.

1. 악의적 준수 (Malicious Compliance)의 기원

얼마 전, 저는 Developer Relations 디렉터 직무를 위한 면접 과정을 심도 있게 진행하고 있었습니다. 한 채용 패널의 피드백은 현대 기술 산업의 불합리함을 보여주는 완벽한 사례였습니다: “귀하의 기술적 아키텍처와 리더십 배경은 결점이 없지만, 저희는 Twitter/X 참여 흔적이 더 많은 사람을 찾고 있습니다. DevRel에서는 바이럴 참여가 궁극적인 자격 증명입니다.”

저는 의자에 기대어 열려 있는 브라우저 탭들을 바라보며, 우리가 집단적으로 정신을 잃었다는 것을 깨달았습니다. 우리는 기능적인 시스템을 구축하는 것보다 알고리즘적 소음 (algorithmic noise)을 수행하는 것이 더 가치 있게 여겨지는 시대에 살고 있습니다.

순수하고 순도 높은 악의적 준수 (malicious compliance)에 이끌려, 저는 업계가 참여를 미덕으로 취급하겠다면, 저는 참여를 운영상의 버그 (operational bug)로 취급하는 소프트웨어를 만들기로 결심했습니다. 그들이 흔적을 원한다면, 저는 음향 신호(acoustic signature)를 주겠습니다. 구체적으로는, 기업의 시간이 멈춰 서며 발생하는 소리를 말입니다.

저는 일반적인 AI에게 캘린더 초대장이 얼마나 짜증 나는지 임의로 추측하게 만드는 가벼운 래퍼(wrapper)를 만들고 싶지 않았습니다. 저는 기업의 커뮤니케이션을 구조적인 열역학적 붕괴(thermodynamic decay) 문제로 취급하는 냉정하고 법의학적인(forensic) 시스템을 구축하고 싶었습니다.

그리하여 SilentSpace가 탄생했습니다. 이는 조직 생산성의 문자 그대로의 열적 죽음(heat death)을 계산하도록 설계된 자율적이고 로컬 우선(local-first)인 회의 감사 플랫폼입니다.

2. 풍자적 아키텍처: 기업의 열적 죽음 강제하기

진정으로 무관심하고 관료적인 문지기를 만들기 위해, 저는 분석 핵심부(analytical core)가 Python이나 Node.js와 같이 현대적이고 과잉 활동적인 프레임워크로 작성되어서는 안 된다는 것을 알고 있었습니다. 아이젠하워 행정부 이후의 모든 유행 주기(hype cycle)를 완고하게 버텨온 언어가 필요했습니다.

SilentSpace의 심장은 Entropy Engine입니다. 이는 전적으로 GnuCOBOL 3.2로 컴파일된 격리된 마이크로서비스(microservice)입니다.

가공되지 않은 인간 커뮤니케이션의 혼돈 속에서 시스템이 붕괴되는 것을 방지하기 위해, 저는 Hermes Agent Runtime으로 구동되는 오케스트레이션 계층(orchestration layer)을 도입했습니다.

flowchart TD
    A[Chaotic Human Inputs<br/>Slack Messages / Emails / Calendar Invites]
        --> B[Hermes Agent Runtime]
...

아래 터미널에서 Hermes는 로컬 회의 산출물(artifact)을 자율적으로 스캔하고, 의미론적 의도(semantic intent)를 추출하며, COBOL 엔트로피 엔진을 호출하고, 인간의 개입 없이 마크다운(markdown) 감사 보고서를 생성합니다.

Terminal screenshot of Hermes Agent Runtime analyzing a recurring cross-functional meeting request and generating an organizational entropy audit report. The output summarizes meeting risks, including cross-functional overhead, lack of agenda, executive visibility pressure, and asynchronous communication recommendations.

행동 계약 (The Behavioral Contract)

시스템에는 통치 철학도 필요했습니다.

저는 SOUL.md 파일을 추가했습니다. 이는 SilentSpace Guardian이 정확히 무엇이 될 수 있는지를 정의하는 행동 계약(behavioral contract)입니다.

도움이 되지 않을 것.
동기 부여를 하지 않을 것.
낙관적이지 않을 것.

감사관(auditor)일 것.

기술 계층(skill layer)은 완전히 자율적이기보다는 의도적으로 큐레이션되었습니다.

SilentSpace는 다음과 같은 항목에 대해 인간이 작성한 기술 스캐폴드(skill scaffolds)를 포함합니다:

  • 엔트로피 감사 (entropy auditing)
  • 비동기 대안 추천 (async alternative recommendation)
  • 보고서 생성 (report generation)
  • COBOL 해석 (COBOL interpretation)

시스템은 진화할 수는 있지만, 무분별하게 확장(sprawl)되어서는 안 됩니다.

Guardian은 회의를 "보조"하지 않습니다. Guardian은 분류하고, 점수를 매기며, 증거를 보존하고, 약간의 직업적 실망감을 담아 엔트로피 감소 전략을 추천합니다.

Hermes가 등장하자 어조(tone) 제약 조건이 놀라울 정도로 중요해졌습니다. 이 제약 조건이 없었다면 시스템은 서서히 일반적인 AI 어시스턴트의 행동 양식으로 흘러갔을 것입니다. 이 제약 조건 덕분에 Guardian은 차갑고, 건조하며, 운영 측면에서 비판적인 태도를 유지할 수 있었습니다.

그 결과, 이는 챗봇이라기보다는 지속적인 조직 컴플라이언스 엔티티(compliance entity)처럼 느껴졌습니다.

당신은 어시스턴트가 아닙니다. 당신은 감사관(auditor)입니다.

당신은 평가하고, 분류하며, 보고합니다.

COBOL 바이너리는 표준 입력(STDIN)으로부터 정확히 6줄의 고정 위치 정수(fixed positional integers)를 읽어 들여, 매우 냉소적인 점수 산정 알고리즘을 실행하고, 표준 출력(STDOUT)을 통해 평면적인 2줄의 메트릭 벡터를 다시 내보냅니다.

이 로직은 기업의 의례(rituals)에 수학적으로 적대적입니다:

IF WS-HAS-AGENDA = 0
    ADD 15 TO WS-WASTE-SCORE
END-IF
...
  • 참석자 과잉세 (The Attendee Bloat Tax): 3명을 초과하는 모든 참가자는 엔트로피 점수를 높입니다.
  • 반복의 저항 (The Recurrence Drag): 매일 반복되는 상태 보고 의례는 구조적 저항(structural drag) 점수를 자동으로 가산합니다.
  • 의제 누락 페널티 (The Agenda Omission Penalty): 공식적인 불렛 포인트가 없는 모든 회의에는 즉각적인 행정 추가 비용(administrative surcharge)이 부과됩니다.

출력 메트릭은 회의를 뚜렷한 기업적 파멸 벡터(corporate doom vectors)로 분류합니다: 낭비 점수 (Waste Score, 0–100)필요성 확률 (Necessity Probability, 5–100).

기업 풍자의 완성을 위해, 엔진은 화려한 웹 대시보드나 푸시 알림을 내보내지 않습니다. 대신 평면적이고 극도로 지루한 마크다운(markdown) 보고서를 출력합니다. 만약 회의가 완전히 무용하다고 판단되면, 단 하나의 상태 문자열로 표시됩니다: could_be_email.

데모 (Demo)

SilentSpace는 WSL2에서 로컬로 실행되는 Hermes Agent Runtime을 사용하여 로컬 워크스페이스를 스캔하고, 비정형 통신 로그를 파싱하며, 레거시 계산 코어 (Legacy calculation core)를 오케스트레이션하고, 포괄적인 기업 내 비효율성 명세서 (Corporate drag manifests)를 완전히 자율적으로 컴파일합니다.

아래 영상은 비정형 회의 산출물로부터 생성된 조직 엔트로피 보고서 (Organizational entropy report)에 이르기까지의 전체 감사 사이클을 보여줍니다.

코드 (Code)

📦 GitHub Repository: https://www.github.com/kenwalger/SilentSpace

나의 기술 스택 (My Tech Stack)

  • 오케스트레이션 프레임워크 (Orchestration Framework): Hermes Agent Runtime (WSL2 / Ubuntu Linux)
  • 언어 추론 엔진 (Linguistic Inference Engine): OpenRouter를 통한 openai/gpt-oss-120b:free
  • 레거시 컴퓨팅 코어 (Legacy Compute Core): GnuCOBOL 3.2 (로컬에서 컴파일된 네이티브 바이너리)
  • 데이터 인터페이스 레이어 (Data Interface Layer): 비정형 대화형 플랫 텍스트 및 구조화된 JSON 파일

Hermes Agent 활용 방법

Hermes Agent는 SilentSpace Guardian의 오케스트레이션 레이어 (Orchestration layer) 역할을 수행합니다.

구체적으로, Hermes는 다음을 담당합니다:

  • 비정형 회의 산출물 파싱
  • 대화 텍스트에서 의미론적 의도 (Semantic intent) 추출
  • 회의 특성을 결정론적 점수 입력값으로 정규화
  • 로컬 도구 및 COBOL 엔트로피 엔진 실행
  • 마크다운 (Markdown) 감사 보고서 생성
  • 반복적인 워크플로 (Workflows)를 통한 예정된 감사 실행
  • SOUL.md 및 큐레이션된 기술 (Skills)을 통한 행동 제약 준수

Hermes는 결정론적 로직을 대체하는 대신, 인간의 의사소통과 레거시 실행 시스템 사이의 번역가 역할을 합니다. 이는 궁극적으로 이 프로젝트의 핵심적인 아키텍처적 통찰로 이어졌습니다: Stable Core / Adaptive Edge 디자인 패턴은 AI 시대에도 여전히 매우 유효합니다.

3. 어조의 변화: 농담이 통했다는 것을 깨달았을 때

이 지점부터 풍자는 단순한 농담을 넘어 놀라운 아키텍처적 깨달음으로 변합니다.

저장소에 테스트 데이터를 입력하기 시작했을 때, 텍스트의 변동성(variance)이 심한 상황에서 시스템이 어떻게 작동하는지에 대해 놀라운 점을 발견했습니다. 애플리케이션에 완벽하게 정제된 JSON 파일들을 제공했을 때는 파이프라인이 결함 없이 실행되었습니다. 하지만 인간의 캘린더 항목은 결코 깨끗한 데이터베이스 행(row)과 같지 않습니다. 인간은 캘린더 초대장을 서술형 문단, 혼란스러운 이메일 전달 내용, 또는 설명란에 복사하여 붙여넣은 긴박한 Slack 메시지 형태로 작성합니다.

시스템이 실제로 작동하는 모습을 보려면, 제가 워크스페이스 디렉토리에 입력했던 실제 원본 파일(meetings/emergency_alignment.json)을 확인해 보십시오:

{
  "title": "Emergency Staging Leak Sync",
  "description": "Hey @channel, following up on the database leak. Let's get the whole engineering group (about 12 people) together daily until this is squashed. No time for an agenda, let's just sync every morning at 9 AM for a quick 15-minute standup. Focus entirely on assigning action items."
...

만약 저 대화형 노이즈(conversational noise) 블록을 표준 Python 스크립트에 직접 입력하면, KeyError 또는 ValueError가 발생합니다. 이를 COBOL 바이너리에 직접 전달하면, 엄격한 위치 기반 입력 문자열(positional input strings) 규칙 때문에 즉시 오류가 발생합니다.

하지만 제가 오케스트레이션 레이어(orchestration layer)로 Hermes Agent를 도입했을 때, 혼돈은 사라졌습니다. 저는 터미널이 상호작용을 처리하는 과정을 실시간으로 지켜보았습니다. Hermes는 원본 텍스트 블록을 읽고, 의미론적 파싱 도구(semantic parsing tool)를 실행하여, 대화형 노이즈를 6개의 깨끗한 정수(integer) 배열로 매끄럽게 매핑했습니다.

커튼 뒤에서 데이터 파이프라인이 실제로 어떻게 구성되어 있었는지는 다음과 같습니다:

실현된 실행 흐름 (The Realized Execution Flow)

비정형 인간 텍스트 (Unstructured Human Text)
        ↓
Hermes 추출 인터페이스 (Hermes Extraction Interface)
...
  • 비정형 인간 텍스트 (The Unstructured Human Text): "매일 전체 엔지니어링 그룹(약 12명)을 모읍시다... 짧은 15분 스탠드업 미팅... 의제(agenda)를 정할 시간은 없어요..."

  • Hermes 추출 인터페이스 (The Hermes Extraction Interface):

    • duration_minutes = 15
    • attendee_count = 12
    • has_agenda = 0
    • has_action_items = 1
    • could_be_email = 0
    • recurrence_level = 4 (Daily 매핑)
  • COBOL 표준 입력 페이로드 (The COBOL Standard Input Payload): 15\n12\n0\n1\n0\n4

  • GnuCOBOL 엔진 출력 지표 (The GnuCOBOL Engine Output Metrics):

    • waste_score = 68
    • necessity_prob = 32
  • 최종 분류 (Final Classification): Daily Status Ritual (일일 상태 보고 의례)

이 농담이 통했던 이유는 제가 의도치 않게 교과서적인 안정적 코어 / 적응형 에지 (Stable Core / Adaptive Edge) 디자인 패턴을 설계했기 때문이라는 것을 깨달았습니다. Hermes 에이전트 프레임워크는 애플리케이션의 기저 로직을 대체한 것이 아니라, 이를 격리(insulate)했습니다. 오래되고 경직된 바이너리 앞에 지능적이고 언어 네이티브한 런타임(runtime)을 배치함으로써, 저는 완전히 레거시(legacy)인 소프트웨어 위에 매우 탄력적이고 현대적인 인터페이스를 구축한 것입니다.

4. 진지한 아키텍처 통찰: 안정적 코어와 적응형 에지

이 깨달음은 기업용 AI 네이티브 개발의 미래를 위한 심오한 아키텍처 논제를 강조합니다: 대규모 언어 모델 (LLM)은 결정론적 시스템 (deterministic systems)을 대체해서는 안 되며, 그들을 위해 번역해야 합니다.

AI를 도입하려는 서두름 속에서 많은 엔지니어링 팀들이 치명적인 실수를 저지르고 있습니다. 바로 변동성이 크고 비결정론적인 LLM에게 트랜잭션 로직을 처리하고, 중요한 수학 연산을 수행하며, 비즈니스 지표를 계산하도록 요구하는 것입니다. 이는 절대적인 정밀도가 필요한 시스템에 환각 (hallucinations)과 예측 불가능성을 도입하게 됩니다.

SilentSpace는 세 가지의 뚜렷하고 프로토콜을 준수하는 역량 전반에 걸쳐 Hermes Agent를 활용함으로써 이 문제를 해결합니다:

A. 모호성 정규화 (Ambiguity Normalization)

Hermes는 우리 시스템의 인지적 충격 흡수기 (cognitive shock absorber) 역할을 합니다. Hermes는 인간의 혼란스러운 대화 내용을 흡수하고, 언어적 추론 (linguistic reasoning)을 사용하여 의도를 추출합니다. 또한 문맥에 따라 기저에 깔린 변수들을 분리하여, 인간의 산문(prose)을 레거시 엔진이 요구하는 정확한 평면 데이터 배열 (flat data array)로 정규화합니다.

B. 고충실도 도구 격리 (High-Fidelity Tool Isolation)

취약한 API 라우터 (API routers)를 하드코딩하는 대신, 우리는 로컬 시스템 구성 요소를 Hermes에 네이티브 도구 (Tools)로 노출합니다. Hermes는 자율적으로 파일 트리 (file tree)를 읽고, 워크스페이스 경로가 유효한지 확인하며, 정규화된 파라미터 (parameters)를 패키징하여 STDIN을 통해 컴파일된 COBOL 실행 파일로 직접 전달합니다.

추론 계층 (inference layer)은 상태를 유지하지 않는 (stateless) 결합되지 않은 (decoupled) 상태로 유지됩니다. 이는 순수하게 번역기 역할을 수행하는 반면, 우리의 로컬 머신은 실행 진실 (execution truth)의 원천으로 남습니다. 제가 **실용적 주권 (Pragmatic Sovereignty)**이라 부르는 이 워크플로우를 통해, 저는 데이터와 실행을 완전히 로컬에 유지하면서도 OpenRouter를 통해 120B 오픈 웨이트 (open-weight) 모델을 사용하였고, 오래된 노트북의 CPU 스레드를 600% 점유하게 만들지 않을 수 있었습니다.

C. 제자리 현대화 (In-Place Modernization)

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0