Repository navigation
대화형 세션에서 실행 파일을 등재하고 진행 상황을 보이게 했다 - #96
Merged
Merged
Conversation
대화형 REPL의 실행 파일 카탈로그는 PATH에서 찾은 개발 도구 25개로 고정이었고, 세션 중에 늘릴 방법이 없었다. `--allow-executable`은 `xgen run`에만 있어서, 카탈로그에 없는 프로그램이 필요해지면 나가서 다시 시작하는 수밖에 없었다. `/allow-executable ID=ABSOLUTE_PATH`를 추가한다. 경로는 받아들이기 전에 실제로 세션을 지어 보고 검증하므로, 쓸 수 없는 경로는 그 자리에서 거절되고 카탈로그는 그대로 남는다. 일시정지된 Run이 있으면 거절한다 — Run은 시작할 때의 카탈로그 digest에 고정돼 있어서, 바꾸면 /resume이 fail-closed 되기 때문이다. 표시도 두 가지 고쳤다. 라이브 한 줄은 progress 이벤트를 통째로 버리고 있어서 몇 분이 걸려도 Thinking만 떴다. 이제 driver가 알려 주는 경계를 그대로 보여 주고(Planning/Reading/Writing/Executing/Verifying) 커밋된 단계 수를 센다. 어휘는 --debug의 effect_label과 같다. 그리고 답변이 생 Markdown으로 찍히던 것을 제목·목록·강조·인라인 코드·펜스 블록까지 터미널 속성으로 렌더링한다. 모델 텍스트는 기존처럼 먼저 이스케이프한 뒤에 스타일을 입히므로, 모델이 ANSI를 뱉어도 커서를 움직이거나 화면을 다시 칠할 수 없다. 파이프 출력과 --debug는 바이트 그대로 둔다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
왜
대화형 REPL에서 카탈로그에 없는 프로그램이 필요해지면 막다른 길이었다. 모델은 자기가 무엇을 실행할 수 있는지 planning constraint로 정확히 알고 있고("Caller-catalogued process executable logical IDs: …"), 그래서 "그건 할 수 없다"고 정직하게 답한다. 그런데 사용자가 "그럼 이걸 써도 된다"고 허락할 방법이 세션 안에 없었다.
--allow-executable은xgen run에만 있다.같은 세션에서 긴 Run이 돌 때 화면에는
Thinking… · 12s만 떴다. driver는 이미 모든 경계를 알려 주고 있었는데 표시 쪽이 이벤트를 통째로 버리고 있었다(|_|). 답변도 생 Markdown이라 목록이 별표로 읽혔다.무엇을
/allow-executable ID=ABSOLUTE_PATH/resume이 fail-closed 된다. 그 Run을 좌초시키는 대신 기다리게 했다.executable_already_catalogued,executable_specification_invalid로 거절한다./allow-executable sh=/bin/sh로 세션 단위로 택한다.라이브 한 줄
phase는 atomic으로 넘긴다. driver가 네트워크나 도구에서 블록돼 있어도 표시 스레드가 자기 주기로 다시 그린다. 어휘는
--debug의effect_label과 같게 맞췄다(read/write/execute).답변 렌더링과 완료 줄
제목·
-목록·**강조**·`코드`·펜스 블록을 터미널 속성(bold/underline/dim)으로 렌더링한다. 색은 쓰지 않아서 밝은 테마에서도 읽힌다. 답변 아래에· 41s · 3 committed를 흐리게 한 줄 남긴다 — 라이브 라인은 끝나면 지워지므로 그 전에는 긴 Run의 흔적이 답변밖에 없었다.안전 경계: 모델 텍스트는 기존처럼
write_terminal_text로 먼저 이스케이프한 뒤에 스타일을 입힌다. 스타일 escape는 전부 우리가 쓴 것이고, 모델은 커서를 움직이거나 화면을 다시 칠할 수 없다. 파이프 출력과--debug는 바이트 그대로 둔다.검증
cargo clippy --all-targets경고 0,cargo fmt --check통과.catalogued_executables: 22 → 23,/help노출,sh=/bin/sh등재까지 확인했다.남은 것
스크롤백과 대체 화면은 포함하지 않았다. 화면 전체를 소유하는 구조라 입력·리사이즈·취소를 다시 짜야 하고 새 의존성이 필요해서,
THIRD_PARTY_LICENSES.txt와 릴리스 바이트 검증까지 걸린다. 별도 결정이 필요한 크기다.🤖 Generated with Claude Code