콘텐츠로 이동

릴리스 노트

Evo Docs 작성근거 · framework/evomind/cli/evo기준 · 릴리스 0.23.1커밋 · 7e210096파일 · site/authored/evo-cli/release-notes.md기준선 · 2026-11-12

Evo CLI가 태그로 배포한 모든 버전을 최신순으로 정리합니다. 각 절은 그 버전에서 사용자가 보거나 쓸 수 있게 달라진 점을 담습니다. 설치와 업데이트 방법은 시작하기에 있습니다.

개인용 빌드의 세션 간 작업 요청(dispatch) 연결을 여러 설치 환경에서도 맞추는 패치 릴리스입니다. 새 기능과 설정 항목은 없습니다.

  • dispatch 서버 주소 탐색: 개인용 빌드가 빌드에 넣은 주소가 없을 때 그룹 설정 값도 함께 읽어 연결합니다. 사내 여러 배포 환경에서 같은 빌드를 써도 세션 간 요청이 이어집니다.
  • 검사 안정화: 백그라운드 작업 완료를 기다리는 시험의 경합을 없앴습니다. 동작 변화는 없습니다.

업데이트 경로와 버그 신고 흐름을 정리하고, 조직 모드의 세션 간 연결을 키 파일로 설정할 수 있게 한 릴리스입니다.

  • 최신 버전 확인 경로: 최신 버전은 latest/VERSION을 먼저 읽고, 그 파일이 없으면 예전 latest 파일로 대체합니다. 사내 저장소 목록이 길어도 최신판을 놓치지 않습니다.
  • 조직 키 파일의 주소: 키 파일에 update.url이 있으면 그 주소에서, dispatch.url이 있으면 그 주소로 세션 간 작업 요청을 연결합니다. 조직마다 다른 서버를 쓸 수 있습니다.
  • 개발판 채널: 설치 스크립트의 --dev와 개발판 게시·정리 경로를 분리했습니다. 개발판은 evo update로도 개발판 최신 버전을 받습니다.
  • 신고 공간 기본 연결: 개인용 빌드가 버그 신고 공간에 기본으로 연결됩니다. 이전의 공용 요청 공간 연동과 /board 명령은 없어졌습니다.
  • 분류와 조건: 신고할 제품을 고르고, 비어 있으면 CLI로 보냅니다. 버전·운영체제 항목은 CLI 신고에만 붙습니다.
  • 화면 캡처 첨부: 파일 경로나 붙여넣은 이미지를 신고에 첨부하면 Evo가 이미지로 변환해 함께 보냅니다.

파일 참조와 여러 외부 CLI 연동, 화면 사용성, 안정성을 크게 손본 릴리스입니다.

  • @ 파일 참조: 입력창에서 @를 치면 파일·폴더 목록이 뜹니다. 고른 파일의 내용을 메시지와 함께 보내고, 한글 조사가 붙은 경로도 다시 찾습니다. 붙여넣은 글 안의 @는 파일 참조로 보지 않습니다.
  • 자리표시 삭제: 붙여넣기·이미지 자리표시를 Backspace나 Delete 한 번에 통째로 지웁니다.
  • ! 입력 구분: ! 바로 뒤가 숫자이면 셸 명령이 아니라 MR 번호로 보고 모델에 보냅니다.
  • claude·Copilot·codex wrapper: 로그인한 외부 CLI를 모델 역할만 하도록 감싸 모델로 고를 수 있습니다(claude-cli, copilot/<모델>, 시험용 codex). 기본은 꺼져 있고 개인용 빌드에서만 켤 수 있습니다.
  • 격리: 감싼 CLI에는 허용한 환경 변수만 넘기고 PATH를 제한하며 부가 기능을 끕니다. 프로젝트의 공유 설정에 적힌 wrapper 설정은 신뢰 여부와 관계없이 쓰지 않습니다.
  • 모델 목록: 켜 둔 wrapper 모델을 /model과 /provider 목록에 함께 보여 주고, claude 모델은 CLI가 알려 주는 이름과 계열별 최신 버전만 표시합니다.
  • 비용: -p 요약 줄의 예상 비용은 claude가 알려 준 값을 씁니다.
  • 권한 확인 창: 프로젝트에 항상 허용·사용자에게 항상 허용을 고를 수 있고, “아니요”를 맨 끝 번호로 옮겼습니다. 테두리와 빈 줄로 창을 띄웁니다.
  • 생각 설정: /config에서 생각 모드와 생각 수준(기본·low·medium·high)을 정해 Ollama·OpenAI 호환 모델과 wrapper에 넘깁니다. 서버가 필드를 거부하면 필드 없이 다시 보냅니다.
  • /status: evo 로그인 상태와 로그인한 사용자 이름을 보여 줍니다.
  • 긴 대화 이동: 위로 스크롤하면 아래에 ↓ jump to latest 단추가 뜨고, 접힌 도구 줄을 눌러 펼치면 누른 줄을 제자리에 둡니다.
  • Bash 반복 대기: 10초 넘는 고정 sleep을 막고, until(정규식)과 interval_s로 조건이 맞는 순간 끝나는 반복 대기를 제공합니다.
  • Bash 중지: 시간 초과·중지 때 명령이 띄운 프로세스까지 끝내고, 뒤로 띄운 프로세스는 기다리지 않습니다. 멈춘 실행은 /quit으로 바로 끌 수 있고 정리는 5초 안에 끝납니다.
  • 정리: MCP 서버와 래퍼 CLI의 자식 프로세스, 임시 폴더를 종료·신호 수신 때 정리합니다.
  • dispatch: rate limit(429) 응답의 대기 시간만큼 기다렸다가 다시 보냅니다.
  • 진단: evo --debug로 0.1초 넘는 화면 처리와 0.5초 넘게 멈춘 순간의 상태를 파일로 남깁니다.
  • 연결: IPv4가 막히면 300ms 뒤 IPv6도 시도하고, 자식 프로세스가 남지 않게 정리 범위를 넓혔습니다.

하위 에이전트의 진행 상황을 화면에서 실시간으로 볼 수 있게 한 릴리스입니다.

  • 하위 에이전트 현황 칸: 입력창 위에 실행 중인 하위 에이전트마다 하는 일, 지금 쓰는 도구, 토큰, 걸린 시간을 표시합니다.
  • 검사 안정화: 웹 검색 시험 서버 기록을 잠금으로 보호해 병렬 검사 실패를 없앴습니다.

여러 창에서 같은 세션을 여는 문제와 종료 지연, 자격 증명 전달 범위를 고친 패치 릴리스입니다.

  • 세션 잠금: 다른 Evo가 쓰는 세션은 열지 않고 /resume 목록에 사용 중으로 표시합니다. --resume에 id를 주지 않으면 세션 목록에서 골라 이어 합니다.
  • 입력 기록: 4MiB가 넘는 줄이 있어도 그 뒤 기록을 모두 읽습니다.
  • 전달 범위: MCP 서버 헤더를 다른 호스트나 https→http 리다이렉트로 보내지 않습니다. 로그인 토큰과 API 키도 같은 규칙을 따릅니다.
  • 종료: MCP 서버를 동시에 닫고 연결에 실패한 stdio 서버는 바로 끝내 종료 시간을 15초에서 5초로 줄였습니다.
  • 관측: 텔레메트리를 OTLP 형식으로 보내고 하위 에이전트 실행을 하위 트리로 남깁니다.

세션 간 작업 요청(dispatch)을 Evo 안에서 받고 보내는 기능이 들어온 릴리스입니다.

  • /inbox: dispatch로 받은 요청 목록에서 골라 사용자 지시로 진행합니다.
  • /dispatch name: 세션마다 작업 담당 이름을 정합니다. --dispatch-name 플래그와 같고, 상태줄에 이 세션 이름과 접속 상태를 항상 표시합니다.
  • /dispatch send·/dispatch list: 활성 세션 목록을 보고 골라 요청을 보냅니다. 이름과 작업 공간이 같으면 시작 시각으로 구분합니다.
  • /board: 공용 요청 공간의 요청 목록·취소·올리기를 합니다.
  • 안전: dispatch로 받은 글의 제어 문자를 걸러 보이고 요청 블록의 닫는 태그를 무력화합니다. 늦게 온 목록이 입력과 승인 창의 키를 가로채지 않습니다.
  • /resume: 세션 목록을 키보드로 골라 이어 합니다.
  • /model 기억: 고른 모델 ID를 저장해 다음 시작의 기본으로 씁니다. 저장 모델이 없으면 기본 모델로 시작합니다.
  • 자동 메모리: 첫 메시지에 색인 최근 20줄만 넣고, 기억할 거리가 없는 세션은 기록하지 않습니다.
  • 기본 지침: 바로 답하기와 도구 아껴 쓰기 지침을 기본 시스템 프롬프트에 넣고 첫 메시지에 환경 블록을 붙입니다.
  • 큰 세션: 세션 파일의 한 줄 4MiB 제한을 없애 큰 이미지를 붙인 세션도 다시 열립니다.
  • 시작: MCP 서버를 동시에 연결하고 로그인 모델 목록을 저장해 두었다가 먼저 씁니다. 입력을 시작하면 모델 서버 연결을 미리 엽니다.
  • 긴 대화: 도구 묶음 요약 줄을 캐시하고, 창 폭이 바뀔 때만 다시 그리고, 세션 파일은 추가된 줄만 읽습니다.
  • 스트리밍: 닫힌 문단·코드 블록의 렌더를 재사용하고 열린 끝만 다시 그립니다.
  • 설정 파일: 쓰기를 원자적으로 바꿔 잘린 설정 파일이 남지 않습니다.
  • 보안: 로그인 토큰을 싣는 요청이 리다이렉트로 다른 호스트나 http에 토큰을 보내지 않습니다. 토큰 갱신은 파일마다 잠금 하나로 묶습니다.

로그인을 거쳐야 Evo 모델을 쓸 수 있도록 정리하고 dispatch 연동의 기반을 넣은 릴리스입니다.

  • 로그인 게이트: 개인 사용자는 evo 로그인 전에 Evo를 쓸 수 없습니다. 넣어 둔 모델도 로그인 뒤에만 열립니다.
  • 로그인 의미: 로그인은 Evo CLI를 쓰기 위한 것이므로, Evo 모델이 없어도 인증되면 로그인 상태입니다.
  • dispatch 연동: 활성 신호, 세션 교체 보고, 안 읽은 요청 수, MCP 세션 헤더를 주고받는 기반을 넣었습니다.

다음 질문 제안과 개인 로그인 상태를 고친 패치 릴리스입니다.

  • 다음 질문 제안: 글자를 쳤다가 지우면 제안이 다시 보입니다. 입력 중에는 가리기만 합니다.
  • 로그인 반복: 개인 로그인 상태에서 Evo를 고를 때마다 로그인이 반복되던 문제를 고쳤습니다. 같은 이름의 사용자 모델과 합치거나 evo/이름으로 구분합니다.

마우스를 켠 채로 대화 글자를 선택·복사할 수 있게 하고, 한글 입력 직후 Enter 동작을 고친 릴리스입니다.

  • 마우스 선택·복사: 마우스가 켜진 채로 대화 영역을 드래그해 글자를 선택하고 복사합니다. OSC 52와 클립보드 명령을 씁니다.
  • 한글 Enter: 한글 입력 직후 Enter가 줄바꿈이 되지 않고 전송됩니다. 빠른 Enter는 30ms 기다려 뒤에 입력이 없으면 전송합니다.

마우스 잡기를 끄고 켜는 명령과 조직 로그인 토큰을 MCP 서버에 자동으로 붙이는 설정을 더한 릴리스입니다.

  • /mouse: 마우스 잡기를 켜고 끕니다. 끄면 터미널 드래그로 텍스트를 선택합니다.
  • MCP auth: "org": MCP HTTP 서버 설정에 이 값을 쓰면 로그인 토큰을 Authorization 헤더에 자동으로 붙입니다.

로그인 표시와 토큰 수 표기를 다듬은 패치 릴리스입니다.

  • /provider 표시: 로그인한 상태의 메뉴에서 Evo 항목과 키 출처를 signed in으로 표시합니다.
  • 기록: 선택 팝업의 목록과 안내를 대화 기록에 남기지 않습니다.
  • 토큰 수: 줄임 표기(15.7K·262K)를 쓰고, 종료 요약은 쉼표를 넣은 정확한 수로 보여 줍니다.

권한·샌드박스·훅 경계를 넓게 다지고, 긴 대화의 화면 성능과 설정 안정성을 크게 올린 릴리스입니다.

  • 경로 규칙: ..·./·중복 슬래시가 섞인 경로를 정리한 뒤 비교해 deny·ask 우회를 막습니다. **/가 디렉터리 0개에도 맞아 secrets/**/*.pem 같은 규칙이 바로 아래 파일도 막습니다.
  • 검색 규칙: Read deny 규칙을 Grep·Glob에도 적용합니다. 막은 폴더 검색은 거부하고 상위 검색 결과에서 제외합니다.
  • 리다이렉트: WebFetch가 다른 호스트로의 리다이렉트를 따라가지 않고 새 주소를 돌려줘 권한을 다시 판정합니다.
  • 보호 설정: trusted_folders.json과 .evo/agents를 보호 목록에 넣어 자동 허용으로 고칠 수 없게 했습니다.
  • 샌드박스: 샌드박스 Bash가 작업 폴더의 .evo 설정 파일을 쓸 수 없고, Bash의 directory 입력이 쓰기 범위를 넓히지 않습니다.
  • 신뢰: 신뢰하지 않은 폴더에서는 git에 커밋된 config.local.json의 hooks·LSP·MCP 설정도 무시합니다.
  • 훅: PreToolUse 훅의 allow가 deny·ask 규칙과 plan 모드를 넘지 못합니다. 훅 여러 개의 결정은 순서와 관계없이 deny > ask > allow로 합치고, ask는 게이트가 허용해도 항상 묻습니다. Claude Code 형식 훅 출력도 읽습니다.
  • MCP: 도구 이름이 겹치면 두 번째를 빼고 경고하며, 서버 이름의 __는 설정 오류로 처리합니다. 도구 결과는 5만 자에서 자르고 잘림 안내를 붙입니다.
  • 조직: allowManagedHooksOnly로 조직 훅만 실행할 수 있습니다.
  • 다시 그리기: 보이는 줄만 처리해 1000라운드 기준 69ms를 4ms로 줄였습니다.
  • 스트리밍: 긴 답변을 매번 처음부터 렌더하지 않고 렌더 시간에 맞춰 간격을 둡니다.
  • 프롬프트 캐시: Anthropic 요청에 캐시 지점을 붙여 라운드마다 같은 앞부분을 다시 처리하지 않습니다.
  • 토큰 계산: 대화 토큰 수를 메시지 내용별로 캐시합니다.
  • 백그라운드: /provider 확인과 Edit·Write 뒤 언어 서버 진단을 백그라운드로 돌려 화면이 멈추지 않습니다.
  • 병렬 호출: 한 응답에서 연달아 오는 읽기 전용 도구 호출을 함께 실행합니다.
  • 압축: 자동 압축 결과를 세션에 저장해 다음 질문마다 다시 요약하지 않습니다.
  • 설정 파일 내용이 null이면 빈 설정으로 보고 저장해 /provider·/config 저장 panic을 막습니다.
  • 긴 글을 바이트 단위로 잘라 한글이 깨지던 곳을 UTF-8 경계에서 자릅니다.
  • 샌드박스의 비대화형 실행, Linux의 빈 .evo 처리, goal 예산 복원, /vim 알림, 원자적 쓰기 등을 고쳤습니다.

슬래시 명령 목록의 Enter 동작을 바꾼 패치 릴리스입니다.

  • Enter: 목록에서 Enter를 누르면 Tab처럼 선택한 명령을 입력창에 채우고, 다시 Enter로 실행합니다.

슬래시 명령 목록의 스크롤을 고친 패치 릴리스입니다.

  • 목록 스크롤: 목록이 커서를 따라 한 줄씩 움직이고, 작은 터미널에서는 남는 높이만큼만 보입니다.

개인 로그인 상태의 판정을 엄격하게 바꾼 패치 릴리스입니다.

  • 로그인 상태: 저장된 로그인으로 실제 인증에 성공해야 로그인 상태로 봅니다. 옛 로그인 파일만으로 /provider가 열리지 않고, 로그인 상태에서 Evo를 고르면 모델 선택 창이 뜹니다.

이미지 첨부, 폴더 신뢰, 설치기 의존성 자동 설치, 조직 기록 전달을 담은 릴리스입니다.

  • 이미지 블록: OpenAI·LiteLLM·Anthropic·Ollama로 이미지를 보내고 세션 기록·재개에 남깁니다.
  • 지원 판단: 이미지를 받지 않는 모델이면 전송을 막고, 기록에 남은 이미지는 글자로 보여 줍니다.
  • 첨부 방법: @경로, 이미지 경로 붙여넣기, Ctrl+V 클립보드 이미지(macOS·Linux)를 씁니다. -p에서도 @경로를 씁니다.
  • 읽기: Read 도구가 이미지 파일을 모델에 이미지로 보여 줍니다.
  • 기본 모드: 대화형 Evo는 플래그·설정이 없으면 auto mode로 시작하고, -p는 default를 유지합니다.
  • /update: 새 버전을 설치하면 Evo를 새 버전으로 다시 시작해 대화를 이어 갑니다.
  • evo uninstall: 설치된 Evo와 PATH 설정을 지웁니다. ~/.evo는 따로 확인합니다.
  • 의존성: 설치기가 없는 Node.js(최신 LTS)·glab(Windows는 git도)을 사용자 영역에 자동 설치합니다. evo update도 같은 의존성 단계를 거칩니다.
  • 폴더 신뢰: 처음 여는 폴더에서 신뢰를 묻고, 신뢰하기 전에는 프로젝트의 hooks·MCP·LSP·agents를 무시합니다.
  • 여러 줄 붙여넣기: 줄바꿈을 유지하고, 큰 붙여넣기는 자리표시로 바꿉니다. 괄호형 붙여넣기가 없는 터미널에서는 첫 줄이 바로 전송되지 않게 합니다.
  • 대기열: 한 곳에만 표시하고 경계에서 쌓인 메시지를 모두 전달하며, ↑로 전부 되돌립니다.
  • 승인 창: 창이 열린 채 입력한 글자가 승인·거부로 처리되던 문제를 고쳤습니다.
  • 조직: Langfuse 기록을 evo-api를 거쳐 보내 명령 단위로 전체를 추적합니다. 세션 키가 401로 거부되면 새 키를 받아 한 번 다시 시도합니다.
  • 로그인 기본값: 일반 사용자의 기본 발급자를 일반용 Keycloak으로 분리했습니다.

조직 모드와 개인 로그인, 다음 질문 제안을 들여온 릴리스입니다.

  • 키 파일: 조직·일반 빌드를 키 파일로 구분하고, 조직 프로필로 모델 구성과 /provider를 잠급니다.
  • OIDC 로그인: 디바이스 코드 로그인, 토큰 저장·갱신, evo login·evo logout, 사용자 정보의 조직 프로필을 지원합니다.
  • 키 우선순위: 조직 프로필 키가 환경 변수보다 우선합니다.
  • 키 서명: 키 파일에 Ed25519 서명·키 ID·다중 신뢰 키를 넣고 install.sh --org-key로 설치합니다.
  • 세션: evo-api 세션을 연동하고 TUI의 /login·/logout으로 다룹니다. 로컬 데스크톱에서는 로그인 브라우저를 자동으로 엽니다.
  • Evo 로그인: evo-lite를 기본 프로바이더로 추가하고 다른 프로바이더로 바꿀 수 있습니다. 기본 모델 게이트웨이도 evo-lite로 옮겼습니다.
  • 모델 선택: 조직·Evo 모델 선택 창을 두고, 모델이 없는 Evo 세션에서도 시작은 유지합니다.
  • 다음 질문 제안: 답변 뒤 빈 입력창에 예상 질문을 보여 주고 Tab·→로 채웁니다. 기본 켜짐입니다.
  • 승인 선택지: 첫 글자를 대문자로 씁니다(Yes, once / Yes, for this session / No).
  • 압축: context window를 모르면 128K로 가정해 자동 압축합니다.

모드 순환과 턴 상한 설정을 다듬은 릴리스입니다.

  • 모드 순환: Shift+Tab 순환에 yolo mode를 넣었습니다. 진입 확인은 그대로입니다.
  • 턴 상한: 대화형 화면의 질문당 30턴 상한을 없애고 설정 maxTurns로 선택합니다.

대화 화면의 접기·스크롤과 도구 호출 표시를 정리한 릴리스입니다.

  • 진행 줄: 입력창 위에 진행 줄을 두고 생각 블록을 한 줄로 접습니다. Ctrl+O로 펼치면 화면 밖에 묻히지 않게 하고 생각 행 중복을 없앴습니다.
  • 도구 묶음: 끝난 연속 도구 호출을 요약 한 줄로 접습니다. Ctrl+O는 도구 묶음 시작으로 화면을 옮깁니다.
  • 승인: 승인 프롬프트를 방향키로 고르고 Enter로 확정합니다.
  • 시간: 경과 시간을 1h 2m 5s, 1m 5s처럼 표시합니다.
  • WebFetch: 리다이렉트를 5번까지만 따르고 호출 전체에 45초 상한을 둡니다.
  • provider: litellm 종류를 추가하고 WebSearch를 자동으로 중계합니다.
  • 검색: 도구 목록을 순차로 시도해 Tavily가 소진되면 다음 도구를 씁니다.

화면 용어와 샌드박스 판정을 다듬은 릴리스입니다.

  • 모드 이름: 권한 모드 화면 이름을 소문자 띄어쓰기 영문으로 바꾸고 <이름> mode 형식으로 표시합니다.
  • 상태줄: auto mode를 노란색으로 표시합니다.
  • 경고: 모드 전환 때 반복되던 경고 문구를 없앴습니다.
  • 샌드박스: bwrap이 namespace를 만들 수 없으면 sandbox를 쓸 수 없는 것으로 판단합니다.

auto 권한 모드와 대화형 설정, 권한 규칙 강화를 담은 릴리스입니다.

  • auto mode: 규칙이 정하지 못한 호출을 분류 모델이 판단합니다. 분류 결과와 승인율을 세션 로그에 남깁니다.
  • bypass 확인: bypassPermissions 시작·전환 때 확인 대화상자를 띄우고 관리형 설정에서는 금지 키로 막습니다.
  • 규칙 판정: allow 규칙의 Bash 매칭이 명령 치환·단일 &·리다이렉션을 걸러 내도록 fail-closed로 바꿨습니다. deny·ask Bash 규칙은 치환·백틱·프로세스 치환 안과 &·개행 뒤 명령도 검사합니다.
  • 설정 보호: .evo 설정 파일 쓰기는 acceptEdits·세션 허용·allow 규칙으로 자동 승인하지 않습니다.
  • 한글 IME: 입력창의 실제 터미널 커서를 캐럿에 맞춰 한글 조합 위치를 보정합니다.
  • /config: 키보드로 이동·변경하고 바로 저장하는 대화형 설정 목록을 둡니다.
  • 시작 모드: 설정 키 permissionMode로 시작 권한 모드를 정합니다.
  • 승인 프롬프트: 선택지를 줄마다 하나씩 표시합니다.
  • 기관 식별자: --version·/version·/status에 표시합니다.
  • evo update: 접속·TLS·응답 헤더 대기에 상한을 둬 응답 없는 서버에서 멈추지 않습니다.

대화 영역 스크롤바를 더한 릴리스입니다.

  • 스크롤바: 대화 영역에 클릭·드래그할 수 있는 스크롤바를 두고, 휠 속도를 설정합니다. 스크롤 중 새 출력이 오면 안내합니다.

업데이트 안내 문구를 고친 패치 릴리스입니다.

  • evo update 안내: 대체 안내 주소를 사내 저장소 기준으로 바꾸고, migrate 경고를 update 출력에 넣었습니다.

자동 압축 설정과 화면 표시, 업데이트 명령을 더한 릴리스입니다.

  • -y: --yolo의 짧은 플래그로 추가했습니다.
  • /update: TUI 안에서 evo update와 --check를 실행합니다.
  • 시작 화면: 로고를 그라데이션 ANSI Shadow EVO로 바꿨습니다.
  • 표시: 생각 미리보기와 도구 실행 내역을 보여 주고 Ctrl+O로 함께 펼칩니다. 터미널 제어 문자는 정제합니다.
  • /provider: URL 단계에 등록된 엔드포인트를 미리 채우고 ↑·↓로 고릅니다.
  • 자동 압축: 기준을 설정으로 정하고, 창 크기를 모르면 토큰 기준으로 압축합니다. 넘침 재시도, 끄기, 실패 보호를 갖췄습니다.
  • 화면 폭: TUI 프레임이 터미널 폭을 넘지 않게 입력 폭과 상태줄 우선순위를 조정했습니다.

대화 화면 사용성을 크게 넓히고 승인·권한 경계를 다진 릴리스입니다.

  • 생각 표시: 기본은 1줄 헤더로 접고 Ctrl+O로 펼칩니다. ui.thinking 설정으로 바꿉니다.
  • 대기열: 실행 중 큐를 미리 보여 주고 ↑로 회수·편집하며 Ctrl+X Ctrl+S로 즉시 보냅니다.
  • 이어 하기 안내: TUI를 끝낼 때 evo --resume <id> 안내를 출력합니다.
  • 입력: 입력 히스토리, Ctrl+R, 여러 줄 입력, Ctrl+G 외부 편집기, 유휴에서 Ctrl+C 두 번 종료를 지원합니다.
  • 시작 화면: EVO 로고와 테두리 정보 패널을 두고 ui.hideBanner·ui.hideTips로 숨깁니다.
  • 스크롤: 대체 화면에서 실행하고 마우스 휠로 대화 영역을 스크롤합니다.
  • 상태줄: 권한 모드, 천 단위 쉼표, context 사용률, 턴 수를 보여 줍니다.
  • 새 버전 알림: 시작할 때 백그라운드로 확인하고 24시간 캐시하며 끌 수 있습니다.
  • 승인 프롬프트: 이번만·세션 동안·거부를 고르는 대화형 창을 띄우고, headless에서는 거부 안내를 남깁니다.
  • Shift+Tab: 권한 모드를 순환하고 --yolo 별칭을 둡니다. bypass 경고를 강화하고 root에서는 거부합니다.
  • 세션 허용: fail-closed로 판정하고 승인 키 type-ahead를 막으며 프롬프트의 제어 문자를 정제합니다.
  • 범위 제한: Bash 세션 허용은 같은 명령으로 한정하고, Write 세션 허용 경로를 정규화·심볼릭 링크 해석으로 판정하며 끊어진 링크는 거부합니다.
  • 읽기 전용 판정: default·acceptEdits 자동 허용 우회를 막기 위해 셸 단어 분석으로 바꿨습니다. 따옴표·백슬래시·git 옵션 축약을 정규화하고 확장 구문과 비인용 glob은 거부합니다.
  • Ollama: 실제 context 크기를 감지하고 설정 시 num_ctx를 보냅니다. 사용률 분자는 응답 usage를 씁니다.
  • 입력: / 명령 Tab 완성 뒤 커서를 완성된 값의 끝으로 옮깁니다.
  • 모델 선택: /provider와 첫 실행 설정의 모델 선택을 /model과 같은 방향키 메뉴로 통일했습니다.

설정 화면을 다듬은 패치 릴리스입니다.

  • /provider 마법사: 첫 실행과 같은 provider 종류 선택 메뉴를 둡니다.
  • 입력창: 고정 커서와 위아래 구분선을 넣었습니다.

Ollama 연동을 넓힌 패치 릴리스입니다.

  • Ollama 네이티브 API: /api/chat과 /api/tags를 쓰는 provider를 지원합니다.

토큰 계산을 네트워크 없이 하도록 바꾼 패치 릴리스입니다.

  • 토큰 추정: o200k_base BPE를 gzip으로 바이너리에 넣어 네트워크 없이 동작하고, 인코더를 프로세스당 한 번만 만듭니다.
  • headless 오류: 결과 없는 engine 오류를 panic 없이 원래 오류로 보고합니다.

Windows ARM64를 지원한 패치 릴리스입니다.

  • Windows ARM64: CI 크로스컴파일과 npm @evomind/win32-arm64, install.ps1 아키텍처 분기를 더했습니다.
  • 배포: 릴리스 때 저장소 주소를 CI 환경 변수로 바이너리에 넣어 소스 기본값에 의존하지 않습니다.

관리형 설정 계층을 더한 패치 릴리스입니다.

  • 관리형 설정: 조직 정책을 최상위 설정 계층으로 두고 테넌트 registry provisioning을 지원합니다.

자동 메모리, 언어 서버 진단, Goal 루프, 관측을 한꺼번에 들여온 릴리스입니다.

  • 자동 메모리: 세션이 끝날 때 요약을 남기고 MEMORY.md 색인을 다음 세션의 지침 자리에 넣습니다.
  • 권한 추천: /permissions recommend가 도구 없이 규칙을 추천합니다. 추천만 하고 bypass는 추천하지 않으며, 판단이 어려우면 막습니다. allow·ask·deny 규칙은 로컬 계층에만 저장합니다.
  • LSP 진단: Go·TypeScript·Python·Rust·C++·Java 6개 언어를 기본으로 지원하고 PATH에서 늦게 시작합니다. 진단은 턴 경계에서 [lsp diagnostics]로 넣고 Write·Edit 뒤 갱신합니다. TUI는 ⚠ file:line 알림을 보여 주고, 프로젝트 .evo/config.json의 lsp로 바꿉니다.
  • Langfuse: opt-in 관측을 넣었습니다. 기본은 꺼짐입니다.
  • Goal 루프: 자율 루프 1단계(컨트롤러·매 턴 검증·예산·세션 영속·/goal)와 2단계(propose_goal 승인 필수, get_goal·update_goal, 증거 목록, 체크포인트 압축, blocked와 blocker 종류, 활동 시간 예산)를 넣었습니다.
  • agent CLI wrap: claude stream-json 이벤트를 provider 이벤트로 바꾸는 파서를 넣었습니다. 줄 상한 1MiB, 모르는 행 무시, 결과 없음은 오류로 처리합니다. 실행 연결은 아직 포함하지 않습니다.

웹 도구와 한 줄 설치를 더한 릴리스입니다.

  • WebFetch·WebSearch: 웹 페이지를 가져오고 검색하는 기본 도구를 넣었습니다. 검색은 Tavily provider와 세션 예산, 429 백오프, 오류 분류를 갖췄습니다.
  • 한 줄 설치: install.sh·install.ps1로 설치합니다. 버전별 파일 배치를 씁니다.
  • evo update: 익명 최신 버전 조회로 바꿔 GitLab token이 필요 없습니다.

자가 업데이트와 백그라운드 하위 에이전트를 더한 릴리스입니다.

  • evo update: npm·바이너리 채널을 감지해 최신 버전으로 갱신합니다. 버전별 payload와 원자적 포인터 교체를 씁니다.
  • 하위 에이전트: 백그라운드 실행과 세션 fork를 지원합니다.

권한 모드별 OS 샌드박스를 더한 릴리스입니다.

  • OS 샌드박스: 권한 모드에 따라 OS 수준 샌드박스를 적용합니다.
  • 경고 표시: 샌드박스 경고를 출력 앞이 아니라 뒤에 주석처럼 붙입니다.
  • Windows: Job Object로 Windows에서도 동작하게 하고 CI 크로스컴파일 검사를 넣었습니다.

첫 실행 설정과 편집 모드를 더한 릴리스입니다.

  • vim 모드: TUI에서 vim 편집 모드를 씁니다.
  • Bash pty: Bash 도구에 pty: true를 지원하고 !shell 입력을 넣었습니다.
  • 첫 실행: settings.json을 자동으로 만들고 모델이 없으면 안내합니다.
  • 설정 마법사: provider(anthropic·openai·openai 호환·ollama)를 고르고 주소·키를 넣은 뒤 실제 모델 목록을 받아 고릅니다.

Evo CLI의 첫 정식 릴리스입니다. 에이전트 엔진, 대화 화면, 도구, 확장 지점, headless 실행, npm 배포를 한 번에 갖췄습니다.

  • 엔진: 블록 기반 메시지와 도구 호출, 4단계 권한 모드와 deny > ask > mode > allow 규칙, JSONL 세션 기록, 이어 하기·재개를 지원합니다.
  • 도구: 기본 6개 도구를 넣었습니다.
  • 대화 화면: 스트리밍, Esc 중단, 대기열, 18개 명령, 상태줄을 갖춘 TUI를 넣었습니다.
  • 확장: MCP 클라이언트, 훅 8종, 하위 에이전트(동기·병렬 fan-out, Esc 전파)를 지원합니다.
  • headless: -p 실행에 출력 형식, 종료 코드 계약, 메모리, 비용을 넣었습니다.
  • 배포: npm 패키지와 사내 저장소 배포 파이프라인을 갖췄습니다.

첫 마일스톤 빌드입니다. 제품의 기본 골격과 배포 경로를 확인했습니다.

  • provider 계층: OpenAI SSE와 Anthropic 어댑터를 넣었습니다.
  • 대화: 기본 evo chat이 동작합니다.
  • 배포: 태그를 만들면 릴리스가 게시되는 파이프라인을 세웠습니다.