컨텐츠로 건너뛰기
↑↓이동 ↵열기 esc닫기

변경 워크스루

diff는 파일 경로순으로 정렬되지만, 그 순서가 변경을 이해하기 좋은 순서인 경우는 거의 없습니다. 워크스루는 이를 다시 배열합니다. 관련된 수정들을 단계로 묶고, 각 단계는 코드가 이제 무엇을 다르게 하는지 설명하며, 앞 단계 위에 다음 단계가 쌓이도록 순서를 정합니다.

설명하고 순서를 부여할 뿐, 코드를 심사하거나 판정을 내리지 않습니다. 그건 Review의 역할입니다.

오른쪽 레일의 워크스루 아이콘이나, 변경 패널과 풀 리퀘스트 패널의 AI 워크스루 버튼으로 엽니다. 둘 다 패널을 열기만 하며, 워크스루 생성을 누르기 전에는 아무것도 생성되지 않습니다.

관찰

일부 단계에는 관찰이 붙습니다. 변경을 받아들이면서 동의하게 되는 것으로, 설명만 읽어서는 놓치기 쉬운 내용입니다. 대부분의 단계에는 없습니다.

종류가리키는 것
결정다르게 갈 수도 있었던 제품·설계 결정
비용다른 언어로 된 코드나 새 의존성처럼 이제부터 프로젝트가 유지해야 하는 것
제한변경 후에도 사용자가 할 수 없거나 실패로 보게 되는 것
차이같은 것의 두 구현이 서로 다르게 동작하는 것. 예를 들어 두 플랫폼에서
테스트 없음변경의 핵심 약속을 확인하는 테스트가 없는 것

관찰은 변경에 관한 사실을 말할 뿐, 코드가 옳은지에 대해서는 아무것도 말하지 않습니다. 버그를 찾는 것은 Review의 몫입니다. 변경이 왜 필요한지는 코드 자체, 즉 문구와 문서, 테스트에서 읽어 내므로 오래된 풀 리퀘스트 설명에 휘둘리지 않습니다.

다룰 수 있는 범위

범위포함되는 것
커밋되지 않은 전체아직 커밋되지 않은 모든 것: 스테이지됨, 스테이지 안 됨, 새 파일
스테이지됨지금 커밋하면 들어갈 것만
스테이지 안 됨작업 트리와 새 파일
이 브랜치베이스에 없는 이 브랜치의 모든 커밋
풀 리퀘스트호스트에 존재하는 형태의 변경 (GitHub, GitLab, Gitea, Forgejo 또는 Gerrit의 최신 패치셋)

이 브랜치는 “푸시하지 않은 커밋”이 아니라, 푸시 여부와 무관하게 브랜치가 베이스에 더한 전부입니다. 그래서 커밋한 뒤 푸시하기 전에는 이것과 풀 리퀘스트가 의도적으로 달라집니다. 하나는 당신이 한 일을, 다른 하나는 리뷰어가 지금 보는 것을 보여줍니다.

범위마다 따로 저장되므로 전환해도 잃는 것이 없습니다.

모델 선택

워크스루는 기본적으로 스몰 모델을 사용합니다. 설정 → 세션 → 변경 워크스루 모델에서 다른 모델을 고르거나, 한 번만 쓸 모델은 패널 헤더에서 고를 수 있습니다. 변경이 충분히 위험해서 더 강한 모델에 맡기고 싶을 때 유용합니다.

선택 목록에는 구조화된 출력을 반환할 수 있는 모델만 나옵니다. 그것 없이는 워크스루를 구성할 수 없기 때문입니다. 모델이 diff에 비해 작으면 입력을 조용히 잘라내는 대신 이유를 설명하며 생성을 거부합니다. diff의 절반만 보고 쓴 워크스루는 자신 있게 틀리기 때문입니다.

패널을 다시 열면 지금 보고 있는 결과를 만든 모델이 표시되므로, 바꾸지 않는 한 다시 생성은 같은 모델로 반복합니다.

언어 선택

워크스루는 기본적으로 인터페이스 언어로 작성됩니다. 패널 헤더의 언어 선택기가 그 언어에서 시작하며, 한 번의 리뷰에 한해 OpenChamber가 번역된 다른 언어를 고를 수 있습니다. 안내는 편하게 읽을 수 있는 언어여야 쓸모가 있습니다.

번역되는 것은 서술뿐입니다. 식별자, 파일 경로, API 이름은 코드에 있는 그대로 남으므로, 각 지점이 가리키는 이름을 그대로 검색할 수 있습니다.

선택한 언어로 아직 생성된 것이 없으면 패널은 비워지지 않고, 가지고 있는 워크스루를 계속 보여주면서 그 사실을 알립니다. 워크스루 생성을 누르면 새 언어로 만들어집니다.

비용과 캐시

저절로 생성되는 것은 없습니다. 생성은 요청할 때만 시작되고, 재생성도 수동입니다.

결과는 diff의 정확한 내용을 기준으로 캐시됩니다. 작업 트리를 이전 상태로 되돌리면 그때의 워크스루가 모델 호출 없이 그대로 돌아옵니다. 언어와 모델도 이 키의 일부라서 조합마다 따로 보관됩니다. 한 diff에 두 언어의 워크스루가 생기면 그 사이를 오가는 것은 즉시 이루어지고 비용도 들지 않습니다.

생성은 브라우저 탭이 아니라 OpenChamber 서버에서 실행됩니다. 페이지를 새로 고치거나 패널을 닫아도 작업은 계속되고, 돌아오면 결과가 기다립니다. 멈추는 것은 취소뿐입니다.

오래됨을 정직하게 알리기

각 단계는 설명 대상 코드의 정확한 내용에 묶여 있어서, 그 코드가 변했을 때 패널이 알려줄 수 있습니다.

  • 오래된 단계 — 단계가 설명하던 코드가 바뀌었거나 사라졌습니다. 워크스루는 표시된 채로 계속 보이며, 다시 생성할지는 당신이 정합니다.
  • 미포함 — 현재 diff에서 어떤 단계도 설명하지 않는 변경입니다. 생성 이후에 한 수정, 워크스루가 일상적이라고 판단한 변경, 그리고 의도적으로 모델에 넘기지 않는 잠금 파일 등 생성물이 여기에 들어갑니다. 모두 끝에 나열되므로 조용히 사라지는 것은 없습니다. 워크스루가 다루지 않은 파일에는 그곳에서 무엇이 바뀌었는지 알려 주는 한 줄 메모가 붙습니다. 예를 들어 “새 문구 번역”입니다.

재생성은 기우는 것이 아니라 다시 쓰는 것입니다. 이전 워크스루가 맥락으로 모델에 전달되어 여전히 맞는 부분은 살아남고, 전체가 현재 코드에 다시 묶입니다. 다른 모델이나 다른 언어로 다시 생성하면 처음부터 새로 쓰므로 그 모델만의 해석을 얻게 됩니다.

참고

  • diff 보기와 똑같이 아무 줄에나 코멘트할 수 있고, 코멘트는 채팅 입력창에 첨부됩니다. 파일 전체에 댓글을 달려면 파일 머리글의 댓글 아이콘을 사용하세요. 댓글에는 가져온 풀 리퀘스트, 커밋 또는 브랜치가 표시됩니다.
  • 데스크톱, 태블릿, 휴대폰에서 사용할 수 있습니다. 휴대폰에서는 변경 패널 상단의 워크스루 아이콘을 탭하면 목록에 보이는 변경을 설명합니다. VS Code 확장에서는 제공되지 않습니다.
  • 풀 리퀘스트 워크스루에는 저장소 호스트에 연결된 계정이 필요합니다. Git 호스트를 참고하세요.
  • 어조와 강조점에 대한 선호는 설정 → Magic Prompts → 변경 워크스루에서 추가하세요.

관련 문서