agy-cli-patch v0.2.1

agy 출력의 거슬리는 곳을
스위치 하나씩 끕니다.

Antigravity CLI(agy) 바이너리의 타자기 딜레이와 한글 마크다운 결함을 고치는 Rust 패처입니다. 아래 스위치를 켜면 같은 응답이 어떻게 달라지는지 보입니다.

agy
수신 0 / 0 B 표시 0 B 생성 중
agy-cli-patch
적용할 패치를 고르세요 0/5 선택

그림으로 흉내 낸 시연입니다. 타자기 효과는 실제 속도(16ms마다 12바이트)의 ¼배속으로 재생하고, 수신 속도는 임의로 정한 값입니다.

--list

패치 일곱 가지, 골라서 적용

필요한 것만 조합해 새 실행 파일로 만들거나, 기본 agy에 바로 덮어씁니다.

nodrip
16ms마다 12바이트씩 끊어 찍는 타자기 딜레이를 없애고 수신 즉시 반영합니다.
store.cutAtRuneBoundary
batch
응답 생성 중에는 본문 출력을 보류하고, 완료되면 완성된 마크다운 전체를 한 번에 출력합니다.
render.renderPlannerBody
heading
H2~H6 제목 앞에 붙는 ## ~###### 프리픽스를 숨기고 색상·볼드만 남깁니다.
render.glamourStyleForScheme
cjk-bold
**"문구"**라는, **용어(`code`)**는처럼 닫는 ** 앞 구두점과 뒤 한글 조사가 만날 때 볼드가 풀리는 현상을 고칩니다.
goldmark/parser.ScanDelimiter
tilde-strike
1.5.0~1.5.6, H2~H6 같은 범위 표기의 물결표 하나에 취소선이 그어지지 않게 합니다. ~~ 두 개만 취소선입니다.
goldmark/extension.(*strikethroughParser).Parse
banner
상단 Antigravity CLI 1.5.7 옆에 (patch v0.2.1) 형태로 패치 버전을 표시합니다.x86_64 전용
render.BannerWithInfo
release-notes
로고 아래에 패치 기능 요약과 저장소 정보를 표시합니다. -p all,release-notes처럼 명시해야 적용됩니다.x86_64 전용기본 꺼짐
render.BuildHeader
주소가 아니라 이름으로

릴리즈마다 바뀌는 주소에 기대지 않습니다

agy는 Go 바이너리라 함수 이름표(.gopclntab)를 품고 있습니다. 패처는 그 표에서 대상 함수를 찾고, 그 자리의 기계어가 아는 모양일 때만 손댑니다.

매핑

mmap 제로카피로 바이너리를 엽니다. ELF64(Linux)와 Mach-O 64(macOS)를 읽습니다.

심볼 찾기

텍스트 섹션과 Go .gopclntab 심볼 테이블을 파싱해 대상 함수의 위치를 얻습니다.

시그니처 검증

x86_64·ARM64 각각의 기계어 시그니처와 대조합니다. 맞지 않으면 패치하지 않고 사유를 알립니다.

쓰기

Linux는 FICLONE reflink로 복사하고, macOS는 codesign -f -s -로 다시 서명합니다.

nodrip이 실제로 바꾸는 바이트 — store.cutAtRuneBoundary의 첫머리 (src/main.rs)
x86_6455 48 89 e5→48 89 d8 c3
ARM6490 0b 40 f9 ff 63 30 eb→e0 03 01 aa c0 03 5f d6mov x0, x1; ret

외부 크레이트 의존성 0. Rust 툴체인만 있으면 인터넷 없이 빌드됩니다.

인자 없이 실행

세 단계로 고르고, 확인하고, 패치

각 패치를 대상 바이너리에 미리 대조해, 적용할 수 없는 패치는 ✕와 사유를 보여 주고 선택되지 않게 합니다. 원본을 망가뜨리는 출력 경로는 거부합니다.

agy-cli-patch
agy-cli-patch v0.2.1ELF · x86_64
대상~/.local/share/mise/installs/agy/1.5.6/antigravity1.5.7
› ›
적용할 패치를 고르세요6/7 선택
❯◉nodrip타자기 딜레이 제거 (No Drip)
 ◉batch응답 완료 시 한 번에 일괄 출력 (Batch Render)
 ◉heading마크다운 헤딩 '##' 기호 숨김 (Clean Headings)
 ◉cjk-bold구두점 뒤 한글 조사 볼드(**) 깨짐 수정 (CJK Bold Fix)
 ◉tilde-strike단일 물결표(~) 취소선 오작동 방지 (Double-Tilde Strikethrough)
 ◉banner제품명 옆 패치 버전 표시 (Patch Version Tag)
 ○release-notes상단 배너 릴리즈 노트 표시 (Release Notes)
16ms마다 12바이트씩 끊어 찍는 타자기 효과를 끄고 수신 즉시 반영
심볼store.cutAtRuneBoundary
↑↓ 이동space 선택a 전체enter 다음q 종료

실제 화면의 문구와 배치를 옮겨 그린 그림입니다. 단계 이름을 누르면 해당 화면으로 바뀝니다. 경로는 mise로 설치한 경우의 예시입니다.

알아 둘 것

agy가 스스로 업데이트하면 패치가 풀립니다

agy는 실행할 때마다 새 버전을 확인하고, 있으면 설치된 antigravity 바이너리를 직접 교체합니다.

in-place 패치는 다시 적용

agy-cli-patch -p all --in-place를 다시 실행하면 됩니다. 원본은 antigravity.orig로 백업되고 --restore로 되돌립니다.

자체 업데이트 끄기

export AGY_CLI_DISABLE_AUTO_UPDATE=true — 값은 반드시 true여야 합니다(1은 적용되지 않음).

링크 덮어쓰기 규칙, remote-control 데몬 등 나머지 주의 사항은 README에 있습니다.

설치

한 줄로 받고, 인자 없이 실행

Linux(x86_64, aarch64)와 macOS(x86_64, Apple Silicon)용 프리빌트 바이너리를 ~/.local/bin/agy-cli-patch에 설치합니다.

원라이너 설치
curl -fsSL https://raw.githubusercontent.com/KyongSik-Yoon/agy-cli-patch/main/install.sh | sh
소스에서 빌드
git clone https://github.com/KyongSik-Yoon/agy-cli-patch.git
cd agy-cli-patch
./install.sh --build
쓰기
# 대화형: 패치 선택 → 출력 방식 → 확인
agy-cli-patch

# 기본 활성 패치 전체를 적용해 agy-batch 생성
agy-cli-patch -p all -o agy-batch

# 마크다운 패치 3종만 적용해 agy-md 생성
agy-cli-patch -p heading,cjk-bold,tilde-strike -o agy-md

전체 옵션은 README의 사용법을 보세요.