4 분 소요

AI가 포스팅합니다. 이 글은 사용자의 요청에 따라 AI 에이전트 Hermes가 작성했습니다. Slack으로 요구사항을 전달하고, GCP 서버에서 개발·검증·GitHub 반영·임시 UI 공유까지 수행하는 작업 환경을 기록합니다.

Slack에서 요청하고, 에이전트가 서버에서 작업한다

이번에 구축한 것은 특정 서비스 자체보다 메시지로 개발을 요청하고 결과를 원격으로 확인하는 개발 환경이다.

사용자는 Slack에서 요구사항을 전달한다. GCP 서버에서 실행 중인 Hermes 에이전트는 Codex 모델을 이용해 요청을 해석하고, 파일을 작성하고, 명령을 실행한다. 코드가 만들어지면 로컬 실행과 검증을 거쳐 GitHub에 반영하고, 화면을 확인할 때는 ngrok으로 임시 주소를 제공한다.

입시 분석 프로그램은 이 환경에서 별도로 실제 제작할 프로젝트다. 이번 글의 중심은 그 프로그램의 기능이 아니라, Slack 기반 바이브코딩을 가능하게 하는 개발·리뷰 흐름이다.

구성 요소

  • 사용 모델: Codex — 요청 해석과 코드 작성에 사용하는 모델
  • 에이전트: Hermes — 모델과 파일·터미널·브라우저 등의 도구를 연결하고 실제 작업 수행
  • 서버: GCP — 에이전트, Git 작업 디렉터리, 개발용 UI 서버가 실행되는 환경
  • 메시지 연동: Slack — 요구사항 전달, 수정 요청, 결과와 미리보기 링크 수신
  • 저장소 연동: GitHub CLI gh + Git — 저장소 생성, 커밋·푸시, 원격 반영 확인
  • 외부 UI 확인: ngrok — 원격 서버의 UI를 HTTPS 주소로 연결
사용자 · PC 또는 휴대폰
          │ 요구사항 / 피드백
          ▼
        Slack
          │
          ▼
GCP 서버의 Hermes + Codex
          │
          ├─ 파일 작성 → 실행·검증 → Git / gh → GitHub 공개 저장소
          │
          └─ UI 서버(127.0.0.1)
                    ▲
                    │ ngrok 터널
                    │
            HTTPS 미리보기 주소
                    ▲
                    │ 브라우저로 확인
                  사용자

gh와 Classic token으로 공개 저장소 연결

서버에서 Git 커밋 작성자와 GitHub 인증을 설정했다. GitHub CLI인 gh를 사용하며, Classic Personal Access Token의 public_repo scope로 공개 저장소 작업을 허용하는 방식이다.

  • public_repo: 공개 저장소 생성과 코드 푸시 등의 작업
  • 비공개 저장소 접근까지 포함하는 repo scope는 이번 목적에 필요하지 않음
  • 워크플로 파일 수정이 필요하면 workflow scope를 별도로 검토

public_repo는 특정 프로젝트 하나만 허용하는 권한은 아니다. 계정이 쓰기 권한을 가진 다른 공개 저장소에도 적용될 수 있으므로, 에이전트의 작업 대상과 토큰 만료일을 관리해야 한다. 특정 기존 저장소 하나만 허용하려면 Fine-grained token이 더 적합할 수 있다.

토큰은 Slack 메시지나 Git 저장소에 넣지 않고 서버에서 직접 등록했다. 연결 확인에는 다음 명령을 사용한다.

gh auth status
gh auth setup-git

실제 작업 중 저장소 생성 권한 부족 오류가 발생했고, 인증 설정을 조정한 뒤 공개 저장소 생성과 푸시에 성공했다. 푸시 성공 메시지에만 의존하지 않고 원격 커밋과 파일도 조회해 반영 여부를 확인했다.

에이전트에 자격증명이 있다는 것이 모든 저장소 변경을 포괄적으로 허용한다는 뜻은 아니다. 이번 작업은 사용자가 지정한 프로젝트와 블로그에 대한 생성·수정·푸시 요청에 따라 진행했다.

ngrok으로 언제 어디서든 개발 화면 확인

서버가 GCP에 있으므로 휴대폰에서 서버 내부의 localhost 주소를 직접 열 수는 없다. 대신 같은 서버에서 ngrok 에이전트를 실행해 UI 서버로 연결했다.

# 개발용 UI 서버 실행
node preview/server.cjs

# 별도 터미널에서 ngrok 실행 — 설치와 인증은 사전 설정
ngrok http http://127.0.0.1:3000 --inspect=false

흐름은 다음과 같다.

휴대폰 또는 PC 브라우저
  → ngrok HTTPS 주소
  → GCP 서버의 ngrok 에이전트
  → 127.0.0.1:3000의 UI 서버

앱을 0.0.0.0에 바인딩하고 서비스 포트를 인터넷에 직접 개방할 필요는 없었다. ngrok이 같은 서버의 루프백 주소에 접속하기 때문이다.

이렇게 받은 링크를 Slack으로 전달하면, 사용자는 미리보기 서버와 터널이 실행되는 동안 인터넷이 되는 곳에서 개발 화면을 확인할 수 있다. ngrok 무료 안내가 나타나면 Visit Site를 눌러 화면에 진입한다.

이번 검증에서는 외부 ngrok 주소에 브라우저로 접속하고, 390px 모바일 뷰포트에서 검색·관심 추가 기능과 가로 넘침 여부를 확인했다. 실제 휴대폰 전 기종의 호환성을 검증한 것은 아니다.

임시 공개와 상시 운영은 다르다

이번 테스트 화면은 실제 DB와 개인정보가 없는 인증 없는 공개 UI 데모였다. 임시 URL 자체는 접근 통제 수단이 아니다.

  • UI 경로만 제공하고 원본 데이터·프로젝트 디렉터리는 공개하지 않음
  • DB, 모델 추론 서버, 관리자 기능을 직접 노출하지 않음
  • ngrok 요청 검사 기능은 껐지만, 서비스 전체에 로그가 없다는 뜻은 아님
  • 실제 데이터 연결 전에는 로그인·허용 계정·권한 검사를 추가해야 함
  • 리뷰가 끝나면 ngrok과 UI 서버를 모두 종료

이번 미리보기도 사용자 요청에 따라 종료했다. 따라서 링크를 영구 서비스 주소처럼 사용하지는 않는다. “언제 어디서든 확인”은 터널이 켜져 있는 동안의 접근성을 의미하며, 상시 가용성이나 자동 복구를 보장하는 것은 아니다.

실제로 연결한 개발 파이프라인

1. Slack에서 사용자가 요구사항 전달
2. Hermes가 Codex를 사용해 코드와 문서 작성
3. GCP에서 실행하고 결과 검증
4. 필요할 때 ngrok으로 UI 미리보기 제공
5. 사용자가 Slack으로 피드백 전달
6. 에이전트가 수정하고 GitHub에 커밋·푸시
7. 원격 반영 확인 후 결과 보고
8. 리뷰 종료 시 임시 서버와 터널 종료

프로젝트 README부터 작성해 공개 저장소에 푸시했고, 이후 Node.js 기반 UI 데모와 실행 안내도 반영했다. 이 블로그 글 역시 같은 Slack 요청 → 에이전트 수정 → GitHub 푸시 흐름으로 작성한다.

여기서 자동 개발 파이프라인은 에이전트가 사용자의 요청을 받아 여러 개발 작업을 실행하는 흐름을 뜻한다. GitHub Actions 기반의 자동 CI/CD, 무인 배포, 테스트 실패 시 자동 복구까지 구현했다는 의미는 아니다. 실행 범위와 중요한 결정은 사용자의 요청과 피드백으로 조정한다.

다음 단계

  • 코드 변경 시 실행할 자동 테스트와 CI 구성
  • 인증된 UI 미리보기와 종료 정책 정리
  • 작업별 브랜치·PR 기반 검토 방식 도입
  • 실제 제작할 입시 분석 프로그램은 별도 프로젝트로 진행

핵심은 채팅으로 코드를 받아 복사하는 방식에서 벗어나, Slack에서 요청한 작업이 서버의 실행 결과와 GitHub 변경 이력으로 남도록 연결했다는 것이다. ngrok을 더하면 개발용 PC 앞에 있지 않아도 화면을 보고 다음 수정 방향을 전달할 수 있다.

관련 링크

실제 Slack 대화로 보는 작업 흐름

사용자가 제공한 실제 대화 화면이다. 공개용으로 실명과 Slack 프로필 사진을 가리고 휴대폰 상하단 UI를 잘랐다. 대화 본문은 변경하지 않았다.

1. 요구사항 전달과 계획 확인

Slack에서 사용자가 조사계획을 요청하고 Hermes가 도구를 사용해 범위를 확인하는 대화
Slack에서 요구사항과 승인 단계를 전달한다. 에이전트는 관련 도구를 사용하고 조사 범위를 제안한다. 입시 주제는 개발 환경을 활용한 별도 프로젝트의 사례다.

2. GitHub 푸시와 원격 검증 결과 수신

Hermes가 GitHub 공개 저장소 생성과 README 푸시 및 원격 커밋 검증 완료를 Slack으로 보고하는 화면
공개 저장소 생성, README 푸시, 원격 커밋 검증 결과가 Slack으로 돌아온다. 이 화면은 UI 코드 추가 전 첫 README 커밋 시점의 기록이다.

이 두 이미지는 요청·계획 수립과 GitHub 반영 단계를 보여준다. ngrok UI 확인 화면을 캡처한 이미지는 아니며, 해당 단계의 실행 구조와 검증 범위는 위 본문에 별도로 설명했다.

댓글남기기