변경 기록

버전마다 바뀐 것을 저장소의 CHANGELOG.md에서 그대로 옮겨 둡니다. 최신 버전이 맨 위에 있습니다.

Ave는 0.14.0부터 시작합니다. 그보다 앞선 버전은 이전 앱의 기록입니다.

v0.14.0

2026-10-16

  • Ave의 웹사이트와 배포 주소. Ave의 웹사이트는 ave.agent-connector.ai, 다운로드와 업데이트는 downloads.agent-connector.ai입니다.
  • Ave의 식별자와 경로. 앱 ID는 ai.agent-connector.ave, 데이터 폴더는 ~/.ave, 환경 변수는 AVE_*, 링크 스킴은 ave://입니다.
  • 익스텐션 작성자는 호스트 프로토콜 3으로 옮겨야 합니다. 프로토콜 3은 ave/* 와이어를 쓰며, Ave는 프로토콜 3만 지원합니다. 앱 릴리스 태그에서 계약(contract/)을 다시 벤더링하고 매니페스트에 requires.hostProtocol: "3"과 requires.minAppVersion: "0.14.0"을 선언한 뒤 다시 게시하세요. 프로토콜 2로 만든 익스텐션은 시작 전에 거부됩니다. 이 버전의 프로토콜 스키마는 schemas/plugin-host-protocol/3/v0.14.0/protocol.schema.json으로 게시됩니다.
  • 서명된 계약 묶음을 내려받아 검증할 수 있습니다. 릴리스마다 https://downloads.agent-connector.ai/contract/v0.14.0/에 플러그인 계약 소스, 매니페스트 스키마, 프로토콜 3 스키마, 마켓플레이스 검사기와 에이전트 플러그인 구성요소 추출기, bundle.json, SHA256SUMS와 그 Sigstore 서명이 게시됩니다. 서명은 릴리스 워크플로가 만들므로, 익스텐션 작성자와 마켓플레이스는 Ave 소스 없이 이 묶음으로 매니페스트와 프로토콜을 검사할 수 있습니다. 한 번 게시된 태그의 파일은 바뀌지 않습니다. (#113)
  • 플러그인 계약 식별자가 Ave 도메인으로 옮겨졌습니다. plugin.json의 Ave 전용 필드는 extensions["ai.agent-connector.ave"] 아래에, 패키지의 프롬프트·에이전트·훅·루틴 파일은 ai.agent-connector.ave/ 폴더 아래에 둡니다. 스킬 패키지의 $schema는 https://ave.agent-connector.ai/schemas/skill/1/skill.schema.json이고, 매니페스트와 마켓플레이스 스키마는 https://ave.agent-connector.ai/schemas/plugin/3/plugin.schema.json, https://ave.agent-connector.ai/schemas/marketplace/2/…로 게시됩니다. 이전 주소 (sdk.former-site.invalid)는 인식하지 않습니다.
  • 모든 익스텐션이 각자의 프로세스에서 실행됩니다. 마켓플레이스, 사용자 지정 소스, 폴더, 직접 설치 등 설치 경로와 관계없이 같습니다. hostFetch를 거치지 않고 네트워크에 접근하던 익스텐션은 운영체제 샌드박스가 켜져 있으면 차단되고, 홈 폴더 기준 경로나 앱 내부 API를 직접 쓰던 익스텐션은 그 호출에서 실패하므로 갱신된 버전이 필요합니다. 진단 화면에 익스텐션마다 실행 프로세스와 격리 상태가 표시됩니다.
  • Windows에서 샌드박스를 켜면 익스텐션 작업도 샌드박스 안에서 실행됩니다. 익스텐션의 자식 프로세스, 워커, 훅, MCP 서버가 Windows 샌드박스 안에서 실행됩니다. 다만 Windows는 익스텐션끼리 서로 격리하지 않으며, 앱이 이 점을 안내합니다. process 항목으로 자체 실행 파일을 띄우는 익스텐션은 이전처럼 Windows에서 실행되지 않습니다.
  • 모델 정보를 앱에 포함된 모델 카탈로그에서 읽습니다. 컨텍스트 창 크기, 이미지 입력과 도구 지원 여부를 직접 관리하던 표 대신 카탈로그와 제공자가 알려 주는 정보로 판단합니다. 일부 모델은 표시되는 컨텍스트 크기와 대화 정리 시점이 달라질 수 있습니다.
  • 스킬은 필요할 때 읽습니다. 프롬프트에는 스킬의 이름과 설명만 들어가고, 에이전트가 스킬을 쓸 때 skill_load로 본문을 읽어 대화에 도구 결과로 보여 줍니다. (#83)
  • 에이전트의 파일·셸 도구가 바뀌었습니다. 파일을 고치기 전에 그 파일을 먼저 읽어야 하고, 읽은 뒤 바뀐 파일은 다시 읽기 전까지 고치지 않습니다. apply_patch가 고치는 경로도 권한 검토를 거칩니다. 긴 파일을 읽으면 들어가는 만큼과 다음 읽을 위치를 돌려줍니다. 셸에서 cd한 위치는 같은 대화의 다음 명령에도 유지되고, 실행 중인 명령의 출력은 도구 카드에 바로 나타납니다. 서브에이전트가 띄운 백그라운드 프로세스는 그 서브에이전트가 끝나면 함께 종료됩니다. (#72)
  • 검색·웹·메모리 도구가 기본으로 들어 있습니다. 파일 검색은 ripgrep으로 실행되고, web_fetch는 페이지를 Markdown으로 돌려주며 그 내용을 신뢰할 수 없는 데이터로 표시해 모델에 전달합니다. memory_search, memory_read, memory_delete로 에이전트가 이미 기억한 내용을 찾고 읽고, 잘못 제안한 기억을 거둘 수 있습니다. MCP 도구가 돌려준 이미지는 base64 글자가 아니라 이미지로 모델에 전달됩니다. (#72)
  • 프로젝트 지침과 명령 파일. 저장소 루트부터 프로젝트 폴더까지 폴더마다 AGENTS.md(없거나 비어 있으면 CLAUDE.md)를 읽어 지침으로 씁니다. <프로젝트>/.ave/commands와 <Ave 홈>/commands의 Markdown 파일은 /<이름> 명령이 되며, 기본 명령과 이름이 겹치면 기본 명령이 우선합니다. /model로 이 대화의 모델만 바꾸거나 default로 되돌릴 수 있습니다. (#72)
  • 반복되는 프롬프트 앞부분을 캐시로 읽습니다. 매 턴 바뀌던 시각, 환경, 메모리 노트를 시스템 프롬프트 밖으로 옮기고 Anthropic 요청에 캐시 구간을 둡니다. OpenAI와 Azure Foundry는 세션 ID를 캐시 키로 보냅니다. 대화 정리 요약은 대화 안에 남고, /compact <초점>으로 요약에 남길 내용을 지정할 수 있습니다. 이전 대화는 불러올 때 새 형식으로 옮겨집니다. (#72)
  • 제안 카드는 전용 "제안" 대화에 모입니다. 익스텐션, 알림, 루틴이 보내는 제안이 열려 있는 대화에 끼어들지 않습니다. 카드에서 새 대화로 이어 갈 수 있고, 제안 대화는 보관할 수 없으며 삭제하면 빈 대화로 다시 만들어집니다. 온보딩 제안은 이전처럼 대화 안에 표시됩니다. (#57)
  • 채팅 입력과 대화 화면. 500자 이하로 붙여 넣은 글은 입력창에 그대로 들어가고, 더 긴 글은 칩이 되며 칩을 열면 원문을 볼 수 있습니다(앞 32K자 표시, 나머지도 전송). 코드 블록에 언어 표시와 복사 버튼이 생겼고, 위/아래 화살표로 이전 입력을 불러오며, 대화마다 쓰던 초안이 남습니다. 파일을 끌어다 놓거나 @파일로 첨부할 수 있고, 한글 입력 조합 중 Enter로 전송되지 않습니다. 긴 대화에서도 매 턴 전체를 다시 훑지 않습니다. (#70, #82)
  • 작업 공간 터미널이 명령 블록을 보여 줍니다. 명령마다 위치, 종료 코드, 걸린 시간, 출력을 한 블록으로 묶고, 블록을 채팅에 첨부할 수 있습니다. 에이전트는 terminal_read로 같은 창의 터미널 출력을 신뢰할 수 없는 데이터로 읽습니다. macOS에서는 샌드박스 안의 터미널 셸이 자기 터미널 장치만 제어할 수 있어, 명령이 두 번 찍히지 않고 Ctrl-Z와 fg 같은 작업 제어가 동작하며, 다른 터미널 창에는 손대지 못합니다. (#59, #106)
  • 사이드 패널 브라우저와 여러 창. 사이드 패널 브라우저의 다운로드는 운영체제 저장 창을 거치며 자동으로 저장하거나 열지 않고, 전체 화면은 허용하지 않습니다. 메인 창을 여러 개 열 수 있으며, 승인과 질문 창은 요청한 창에 뜨고 한 창에서 답하면 다른 창의 사본은 닫힙니다. (#60)
  • 메인 영역에 터미널과 웹 패널을 열 수 있습니다. 채팅 옆 메인 영역에 터미널 패널과 웹 패널을 열고, 다시 불러오지 않은 채 사이드 패널과 메인 영역 사이로 옮길 수 있습니다. 메인 영역을 최대 4개 패널로 나누고, 패널은 헤더를 끌거나 키보드 명령으로 옮기고 최대화하거나 닫은 패널을 다시 열 수 있습니다. 첫 번째 창의 패널 배치는 다음 실행 때 복원되며, 터미널은 마지막 위치에서 새 셸로, 페이지는 마지막 주소로 다시 열립니다. 사이드 채팅은 마지막으로 화면에 가져온 터미널이나 페이지를 대상으로 작업합니다. 셸이 알림 시퀀스(OSC 9, OSC 777)를 보내면 그 터미널에 확인 요청 표시가 붙고, Cmd/Ctrl+Shift+U를 누르면 그 터미널로 이동합니다. 터미널 안에서는 AVE_TERMINAL_ID로 자기 탭을 알 수 있습니다. (#104)
  • 에이전트가 브라우저 페이지를 직접 다룹니다. 에이전트는 대화가 열린 창의 사이드 패널과 메인 영역 웹 페이지를 읽고(browser_snapshot, browser_screenshot), 클릭, 입력, 키 입력, 주소 이동, 새 탭 열기와 닫기를 실행합니다. 페이지 내용은 신뢰할 수 없는 데이터로 전달되고, 비밀번호·결제 카드·인증 코드 칸에는 입력하지 않습니다. 페이지를 바꾸는 동작은 승인 카드에서 묻고, 직접 연 탭은 읽기만 해도 사이트마다 묻습니다. 승인은 Ave를 다시 시작할 때까지 사이트별, 또는 에이전트가 연 탭 범위로만 기억되며, 직접 연 탭에서 페이지를 바꾸는 동작은 매번 묻습니다. 에이전트가 연 탭과 패널에는 표시와 중지 버튼이 붙고, 그 페이지를 직접 클릭하거나 입력하면 대기 중인 동작이 멈추며, 주소창이나 뒤로·앞으로·새로고침으로 이동하면 에이전트의 제어가 끝납니다. 루틴과 헤드리스 실행에서는 브라우저 도구를 쓰지 않습니다. (#102, #114)
  • 원격 연결이 더 안정적입니다. 원격 A2A는 상대 에이전트의 답을 보여 주고 작업을 끝까지 따라가며, 켜 두었지만 준비되지 않은 게이트가 있어도 앱이 시작되고 상태를 알려 줍니다. 시작에 실패한 게이트는 꺼짐이 아니라 실패로, 설정을 바꾼 게이트는 재시작 대기로 표시됩니다. Telegram은 페어링 코드를 쓴 휴대폰에 연결을 확인해 주고, 절전 해제나 네트워크 복구 뒤 다시 연결하며, 요청 제한 대기 시간을 지킵니다. Tailnet 오류는 접힌 행에도 표시되고, --serve는 Tailnet이 시작되지 않아도 계속 실행됩니다. (#86)
  • 권한 확인이 바뀌었습니다. 파일 내용을 네트워크로 보내는 셸 명령(curl 업로드, 원격 scp/rsync, nc 등)은 모든 모드에서 높은 위험으로 보고 항상 묻습니다. 권한 규칙 파일이 손상되면 무시하지 않고 막습니다. 승인 기억은 정확한 호출이 아니라 범위 단위로 남아, web_fetch는 공개 주소의 scheme://host:port마다 기억하고(사설망 주소는 정확한 URL만), 같은 범위에서 인자가 달라지면 다시 검토해 위험이 더 높지 않을 때만 묻지 않습니다. (#88)
  • 비용 칩과 감사 통계 표시를 고쳤습니다. 가격 정보가 없는 모델의 비용 칩은 "미정" 대신 "가격 정보 없음"으로 표시됩니다. 설정의 감사 탭 통계는 권한 기록을 허용·거부 같은 결정별로 세며, 상위 유형에 undefined가 나오지 않습니다. (#106)