agy-cli-patch v0.2.2

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

Antigravity CLI(agy) 바이너리의 타자기 딜레이와 한글 마크다운 결함을 고치고 자동 컴팩션 임계값을 원하는 수치로 바꾸는 Rust 패처입니다. 스위치가 하나씩 켜지며 같은 응답이 달라지는 걸 보세요. 직접 눌러도 됩니다.

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

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

--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
compact
내장 자동 컴팩션(CHECKPOINT) 발동 기준(기본 256k)을 --compact 180k처럼 원하는 토큰 수(32k~1000k)로 바꿉니다.x86_64 전용기본 꺼짐
utils.GetCheckpointConfig · config.applyFeatureProviderCheckpointOverrideConfig
banner
상단 Antigravity CLI 1.5.7 옆에 (patch v0.2.2) 형태로 패치 버전을 표시합니다.x86_64 전용
render.BannerWithInfo
release-notes
로고 아래에 패치 기능 요약과 저장소 정보를 표시합니다. -p all,release-notes처럼 명시해야 적용됩니다.x86_64 전용기본 꺼짐
render.BuildHeader
주소가 아니라 이름으로

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

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

매핑

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

심볼 찾기

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

시그니처 검증

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

쓰기

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

헤더텍스트 섹션.gopclntab…
antigravity 바이너리 (구획 크기와 위치는 실제 비율이 아닌 그림)

.gopclntab 에서 이름으로 찾기

찾은 자리의 첫 바이트

Linux · FICLONE reflinkmacOS · codesign -f -s -

바이트 값은 src/main.rs의 시그니처 그대로이고, 0xa4720c0은 agy 1.5.7(Linux x86_64)에서 패처가 실제로 찾은 위치입니다. 버전이 바뀌면 이 숫자도 바뀝니다. 외부 크레이트 의존성 0 — Rust 툴체인만 있으면 인터넷 없이 빌드됩니다.

인자 없이 실행

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

아래 화면은 실제로 조작됩니다. 화면을 누른 뒤 ↑↓ space a enter esc를 쓰거나, 줄과 아래 키를 직접 누르세요. compact 줄에서는 - + e로 토큰 수를 조절할 수 있고, batch를 켜면 nodrip도 함께 켜집니다.

agy-cli-patch눌러서 키보드로 조작

실제 화면의 문구·키·연동 규칙을 옮긴 따라 하기 화면이며, 아무것도 패치하지 않습니다. 마지막 출력의 오프셋은 agy 1.5.7(Linux x86_64)에 실제로 실행해 얻은 값이고, 경로는 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

# 기본 패치 + 자동 컴팩션 180k 임계값 적용 (32k~1000k)
agy-cli-patch -p all --compact 180k -o agy-batch

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

설치 출력은 Linux x86_64에서 실제로 찍힌 줄이며 홈 경로만 예시로 바꿨습니다. 전체 옵션은 README의 사용법을 보세요.