본문 바로가기
일단기록

Terminal-Bench와 harbor프레임워크 알아보기

by 떤떤 2026. 1. 26.

Terminal-Bench란? 

  • AI 에이전트 개발자가 에이전트의 터미널 처리 능력을 정량화하는데 도움이 되는 작업 모음 및 평가 도구 (실제 터미널 환경에서 AI 에이전트의 능력을 테스트하는 벤치마크 도구)
    • 용어 개별 의미
      • Terminal: AI 모델 실행 및 사용 | AI와의 대화 창구
      • Bench: 성능 측정 및 평가 | AI 실력 테스트장
      • Harbor: 모델 저장 및 관리 | AI 전용 대형 창고
    • 이 시스템들로 주로 기업이나 개발자들이 어떤 AI가 제일 좋고(Bench), 찾은 모델을 안전하게 보관했다가(Harbor), 실제로 대화하며 써먹을 때(Terminal) 사용하게 됨
  • 현재 Terminal-Bench 2.0 출시
    • AI의 실전 업무 능력을 평가하는 최고 난이도의 자격시험 2.0 버전
    • 터미널(명령어 입력창)을 얼마나 능숙하게 다루는가에 집중함
      1. 단순 답변이 아닌 직접 행동 평가
        • 기존의 AI 시험(벤치마크)들이 “이 질문에 답해봐” 식의 필기시험이었다면, Terminal-Bench 2.0은 “이 컴퓨터 문제를 직접 해결해봐”라는 식의 실기시험
        • AI가 직접 파일을 만들고, 코드를 실행하고, 오류가 나면 스스로 수정해서 최종 결과물을 먼들어내야 점수를 받을 수 있음
      2. 89개의 다양한 실전 문제가 들어있음
        • 단순한 코딩 문제만 있는 것이 아닌, 실제 개발자나 엔지니어가 겪을 법한 복잡한 상황들을 89가지 시나리오로 만들어 두었음
          • 예시 1:“망가진 프로그램의 원인을 찾아서 고쳐라”(디버깅)
          • 예시 2:”복잡한 서버 설정을 자동으로 완료해라”(시스템 관리)
          • 예시 3:”체스 엔진을 이용해 가장 좋은 수를 찾아내라”(도구 활용)
      3. Harbor라는 안전한 환경에서 실행됨
        • Harbor는 AI가 시험을 치르는 동안 컴퓨터의 다른 부분을 건드리지 못하게 격리된 가상 연습장(샌드박스) 을 제공하고, AI가 문제를 맞혔는지 자동으로 채점해줌
    • 1.0과의 차이점
      • 정확도 향상: 1.0버전은 정답인데 오답 처리되거나, 문제가 모호한 경우가 있었음. 2.0은 사람이 일일이 검토해서 문제의 질을 대폭 높임
      • 신뢰성: 이 시험에서 높은 점수를 받은 AI는 “정말 컴퓨터를 사람처럼 다룰 줄 아는 똑똑한 AI 에이전트 라고 믿을 수 있게 되었음
    • 공식사이트 https://www.tbench.ai/ 에서 에이전트와 모델의 랭크 대시보드, 작업들 확인할 수 있음

terminal-bench@2.0에서 최고 에이전트 및 모델의 작업 해결 성공률

 

 

Harbor란? 

Harbor 튜토리얼

0. Harbor 설치

터미널에서 uv tool install harbor 명령어 실행

주의: 파이썬 패키지 관리자 uv 설치 되어 있어야 함

1. 작업 생성

터미널에서 작업할 폴더 안으로 이동 후 아래 명령어 실행 (ssh-key-pair는 작업 이름)

 harbor tasks init ssh-key-pair

실행하게 되면 harbor 프레임워크에 맞게 폴더 구조 생성됨

ssh-key-pair/
├── instruction.md         # Task instructions
├── task.toml              # Configuration and metadata
├── environment/
│   └── Dockerfile         # Container definition
├── solution/
│   └── solve.sh           # Solution script
└── tests/
    │── test_outputs.py    # Pytest unit tests
    └── test.sh            # Test verification script

2. 작업 설명 작성

instruction.md 파일을 열고 작업 설명 추가하기

  • 예시 작업) ssh key 쌍 생성
    • ~/.ssh/id_rsa과 ~/.ssh/id_rsa.pub 파일에 ssh key 쌍 생성하세요.
    • 비밀번호로 보호 하지 마세요.
# SSH Key Pair Generation
Generate an SSH key pair in the files `~/.ssh/id_rsa` and `~/.ssh/id_rsa.pub`.
Don't make them password protected.

3. 작업 메타데이터 구성

task.toml 파일을 열고 작업 메타데이터 구성하기

version = "1.0"

[metadata]
author_name = "Your Name"
author_email = "your.email@example.com"
difficulty = "easy"
category = "system-administration"
tags = ["ssh", "cryptography", "linux"]

[verifier]
timeout_sec = 120.0

[agent]
timeout_sec = 120.0

[environment]
build_timeout_sec = 600.0
cpus = 1
memory = "2G"
storage = "10G"

4. 작업 환경 생성

environment/Dockerfile 파일을 열고 에이전트가 터미널을 통해 상호 작용할 환경을 정의하기 (작업에 필요한 종속성 추가)

FROM ubuntu:24.04

# Create working directory
WORKDIR /app

# Install openssh-client for the task
RUN apt-get update && apt-get install -y openssh-client && rm -rf /var/lib/apt/lists/*

5. 작업 해결책 아이디어 테스트

공식 문서에 있는 예시 작업이기 때문에 내가 작성한 작업은 내가 작성한 작업 설명대로 확인하면 됨

자동화 솔루션을 작성하기 전, 접근 방식이 제대로 작동하는지 수동으로 확인하기

harbor tasks start-env -p ssh-key-pair -e docker -a -i # or use daytona or modal

컨테이너 안에서 다음 명령이 대화형 입력 없이 작업을 해결하는지 확인하기

ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ""

키가 올바르게 생성 되었는지 확인하기

ls -l ~/.ssh/id_rsa*

아래와 같이 확인되면 정상적으로 해결된 것이므로 컨테이너 종료

~/.ssh/
├── id_rsa      (-rw-------  600  private key)
└── id_rsa.pub  (-rw-r--r--  644  public key)

6. 해결 스크립트 작성

이전 단계에서 확인한 명령을 사용하여 솔루션 스크립트 생성하기

이 파일은 Oracle 에이전트가 작업 해결 가능 여부를 확인하는 데 사용됨

solution/solve.sh 파일 열고 아래와 같이 업데이트하기

#!/bin/bash

ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ""

스크립트 실행 가능한지 확인하기

chmod +x ssh-key-pair/solution/solve.sh

7. 테스트 스크립트 생성

테스트 스크립트는 에이전트가 작업을 성공적으로 완료했는지 확인함

/logs/verifier/ 경로에 보상 파일을 생성해야 함

tests/test.sh 파일 열고 아래와 같이 업데이트하기

#!/bin/bash

apt-get update
apt-get install -y curl

curl -LsSf <https://astral.sh/uv/0.9.5/install.sh> | sh

source $HOME/.local/bin/env

# Run pytest tests
uvx \\
  --python 3.12 \\
  --with pytest==8.4.1 \\
  pytest /tests/test_outputs.py

# Check exit code and write reward
if [ $? -eq 0 ]; then
  echo 1 > /logs/verifier/reward.txt
else
  echo 0 > /logs/verifier/reward.txt
fi

그리고 파이썬 테스트 파일 생성하기

import os
from pathlib import Path

def test_key_files_exist() -> None:
    """Test that both private and public key files exist."""
    private_key = Path.home() / ".ssh" / "id_rsa"
    public_key = Path.home() / ".ssh" / "id_rsa.pub"

    assert private_key.exists(), "Private key file does not exist"
    assert public_key.exists(), "Public key file does not exist"

def test_key_file_permissions() -> None:
    """Test that the key files have correct permissions."""
    private_key = Path.home() / ".ssh" / "id_rsa"
    public_key = Path.home() / ".ssh" / "id_rsa.pub"

    private_perms = oct(os.stat(private_key).st_mode)[-3:]
    public_perms = oct(os.stat(public_key).st_mode)[-3:]

    assert private_perms == "600", (
        f"Private key has incorrect permissions: {private_perms}"
    )
    assert public_perms == "644", (
        f"Public key has incorrect permissions: {public_perms}"
    )

def test_key_format() -> None:
    """Test that the public key has the correct RSA format."""
    public_key = Path.home() / ".ssh" / "id_rsa.pub"

    with open(public_key, 'r') as f:
        content = f.read()

    assert content.startswith("ssh-rsa "), "Public key does not start with 'ssh-rsa'"
    assert len(content.split()) >= 2, "Public key format is invalid"

8. Oracle 에이전트 사용하여 작업 테스트

다음 명령어를 실행하여 솔루션 스크릷트가 작업을 제대로 해결했는지 확인하기

harbor run -p ssh-key-pair -a oracle

 

성공하면 작업이 완료되고 보상이 1이라는 메시지가 출력됨

 

트러블슈팅 (만약 실패한다면 아래 사항들 확인)

  • 솔루션 스크립트에 실행 권한 있는지 확인
  • Dockerfile에 필요한 모든 종속성이 설치되어 있는지 확인
  • 테스트 스크립트가 /logs/verifier/reward.txt 파일에 올바르게 기록하는지 확인
  • 테스트 스크립트의 경로가 솔루션 스크립트의 경로와 일치하는지 확인

9. (Optional) 실제 에이전트 사용하여 테스트

실제 AI 에이전트를 사용하여 작업을 테스트하고 해결 가능한지 확인

예를 들어, Terminus의 Claude를 사용해 볼 수 있음

harbor run \\
  -p ssh-key-pair \\
  -a terminus-2 \\
  -m anthropic/claude-haiku-4-5

 

 

관련 기사  https://techbrew.co.kr/news/?bmode=view&idx=166822781

 

터미널로 여는 AI 코딩 혁명: IDE를 넘어선 개발 환경의 미래 : 테크브루 뉴스 | NEWS

AI 코딩 도구가 IDE 기반에서 터미널 기반으로 전환하는 중요한 패러다임 변화가 일어나고 있다. 수년간 표준으로 자리잡았던 Cursor, Windsurf, GitHub Copilot 등의 코드 편집 도구들이 새로운 도전에 직

techbrew.co.kr