본문으로 건너뛰기
커리큘럼

아카데미모듈 6 · Git·코드·지도·디자인 활용

터미널과 코드 그래프 활용

4개 레슨 중 2번째10분

이 레슨에서 배우는 것

  • 터미널 탭을 열고, 숨기고, 크기를 바꾸고, 종료할 수 있고, 숨기기가 왜 셸을 멈추지 않는지도 설명할 수 있습니다.
  • @멘션으로 터미널의 최근 출력을 AI에 건네고, 정확히 무엇이 캡처되는지 말할 수 있습니다.
  • 코드 인텔리전스가 심볼과 파일 간 관계를 트리플로, 전부 기기 안에서 매핑하는 방식을 설명할 수 있습니다.
  • 코드 인덱스를 만들고, 클라우드 임베딩 여부를 결정하고, 네 단계 빌드 과정을 읽을 수 있습니다.
  • 사이드바, 노트, 엔티티 페이지, 채팅까지 코드 인텔리전스가 닿는 모든 표면을 찾을 수 있습니다.

빌드 오류를 AI에게 물어볼 때 터미널 출력을 매번 복사할 필요는 없습니다. 또 코드 그래프를 사용하면 설계 노트와 구현 코드를 함께 살펴볼 수 있습니다.

이 레슨에서는 두 개발자 도구를 다룹니다. 터미널 독은 앱 안에서 셸을 실행하고 출력을 채팅에 첨부하는 도구입니다. 코드 인텔리전스는 소스 코드의 심볼과 관계를 그래프로 색인합니다.

하단 터미널에서 명령 실행

터미널 독은 VSCode식 하단 패널로, 진짜 셸을 PTY, 즉 운영체제가 제공하는 실제 터미널 채널에서 실행합니다. macOS에서는 zsh나 bash, Windows에서는 PowerShell이나 cmd가 뜹니다. 프롬프트, 색상, 알리아스, 잡 컨트롤, vim, less까지 전부 단독 터미널과 똑같이 동작합니다. 실제로 단독 터미널이기 때문입니다.

셸은 $SHELL 환경 변수에서 가져와 로그인 셸로 시작하므로 내 PATH와 알리아스가 그대로 로드됩니다. 새 셸은 활성 워크스페이스 폴더에서 시작해서 ls만 쳐도 내 노트가 바로 보입니다.

독을 열면 에디터가 세로로 갈라질 뿐 아무것도 가리지 않습니다. 독은 워크스페이스가 열려 있을 때만 나타납니다. 홈 화면에서는 버튼이 숨고 단축키도 동작하지 않습니다.

  • 타이틀바: 오른쪽 도구 묶음에 있는 사각 터미널 아이콘입니다. 툴팁은 "터미널"과 ⌘` 를 함께 보여주고, 독이 열려 있는 동안 눌린 상태로 보입니다.
  • 키보드: ⌘` (Windows/Linux는 Ctrl+`)로 독을 토글합니다. VSCode와 똑같습니다. 설정 ▸ "단축키"의 "터미널 토글"에서 다시 지정할 수 있습니다.
  • macOS 메뉴 바: View ▸ "Toggle Terminal".
  • "모두 검색" 팔레트(⌘⇧F): "터미널 토글" 항목을 실행합니다. 지금 지정된 단축키가 함께 표시됩니다.
  • GitHub 로그인: 자동 기기 인증을 쓸 수 없을 때, 대화상자가 gh auth login을 안내하며 "터미널 열기" 버튼을 내밉니다.

탭, 그리고 숨기기 vs 종료

컨트롤위치하는 일
+ ("새 터미널")독 헤더, 탭 옆워크스페이스 폴더에서 새 셸 탭을 열고 포커스합니다. 탭 이름은 만든 순서대로 "터미널 1", "터미널 2"…
탭 더블클릭탭 스트립이름 변경 대화상자가 열립니다. "dev server", "git"처럼 구분되는 이름을 붙이세요.
탭의 ✕ ("터미널 종료")호버 시와 활성 탭에 표시그 셸 프로세스를 실제로 끝냅니다. 마지막 탭을 종료하면 패널도 접힙니다.
셰브론 ("패널 닫기")독 헤더 오른쪽독을 숨깁니다. 모든 셸은 스크롤백째 계속 실행됩니다.
위쪽 가장자리 드래그독 위의 가는 선분할 크기를 조절합니다. 높이는 재시작 후에도 유지됩니다(기본 300px, 최소 120px, 에디터는 항상 120px 이상 남습니다).

패널을 접는 것은 종료가 아닙니다. 셰브론이나 ⌘ 로 닫으면 그냥 숨겨질 뿐, 셸은 계속 돌고 스크롤백도 살아 있습니다. 커서가 터미널 안에 있어도 ⌘ 는 동작하고, 프로세스를 끝내는 건 ✕("터미널 종료")뿐입니다.

exit를 치거나 크래시가 나서 셸이 스스로 종료되면 흐릿한 "[process exited]" 한 줄이 찍힙니다. 죽은 탭은 닫을 때까지 그대로 남습니다. 재시작 버튼은 없으니 그 탭을 종료하고 새로 여세요.

터미널에 이름을 붙이면 나중에 고르기 쉽습니다

셸 여러 개를 나란히 돌리세요. 하나는 개발 서버, 하나는 git, 하나는 잡다한 명령용. 탭 하나하나가 독립 세션이라 스크롤백과 프로세스를 따로 가집니다.

더블클릭으로 이름을 바꿔 두면, 나중에 채팅의 @멘션 픽커에서 "터미널 3"보다 "dev server"가 훨씬 빨리 눈에 들어옵니다.

터미널 출력을 채팅에 첨부

여기가 단독 터미널은 못 하는 부분입니다. 채팅 입력창에서 @를 치면 멘션 픽커에 "터미널" 카테고리가 있습니다. 터미널 하나를 고르면 @터미널 1 같은 칩이 메시지에 들어가고, 고른 순간의 최근 출력이 스냅샷으로 함께 실립니다.

"이 빌드 왜 실패했어?"라고 물으면 에이전트가 그 출력을 읽습니다. 복사해 붙일 일도, 스크린샷도 필요 없습니다.

셸은 둘, 다리는 하나

독은 터미널입니다. 에이전트는 채팅의 승인 카드로 확인하던 그 별도의 샌드박스 실행기에서 자기 명령을 돌리고, 그 명령은 독에 절대 나타나지 않습니다.

@멘션이 이 둘을 잇는 유일한 다리입니다. 에이전트가 내 셸에서 벌어진 일을 읽게 해줄 뿐, 내 셸에 입력하게 해주지는 않습니다.

코드 인텔리전스: 코드를 트리플로

두 번째 도구는 워크스페이스에 소스 코드가 있으면 곧바로 깨어납니다. 로컬 인덱서가 그 코드를 읽습니다. 빠른 로컬 파서라서 AI 모델도, 네트워크도 쓰지 않습니다.

이 인덱서는 모든 심볼과 파일 간 관계를 트리플로 워크스페이스별 코드 그래프 저장소에 기록합니다. 함수, 메서드, 클래스, 구조체, 열거형, 트레이트, 모듈, 타입 별칭, 상수까지 전부입니다. .gitignore를 지키고, 숨김 폴더를 건너뛰고, 파일당 약 8ms로 돌아서 빠르고 무료입니다.

이 결정론적 지도 위에 선택적 클라우드 패스가 얹힙니다. 먼저 동의를 받은 뒤, 짧은 코드 발췌를 임베딩해 코드를 의미로 검색할 수 있게 만듭니다. 그러면서 코드가 노트, 개념과 하나의 벡터 공간에서 만나는데, 이것이 교차 모달 브리지입니다.

심볼, 참조, 관련 파일을 따라가는 코드 인텔리전스 화면입니다.
코드 그래프의 생김새: 파일과 심볼을 네 종류의 엣지가 잇습니다
graph.ts      임포트 →   types.ts
buildGraph()  호출 →     parseNote()
NoteIndex     확장 →     BaseIndex
render.ts     참조 →     buildGraph()
PTY (의사 터미널)
운영체제 수준의 진짜 터미널 채널입니다. 그래서 독 안에서 프롬프트, 색상, vim, 잡 컨트롤이 전부 정상 동작합니다.
코드 그래프 / 코드 인덱스
소스 코드의 결정론적 로컬 지도입니다. 파일과 심볼이 노드이고, 호출, 임포트, 확장, 참조가 엣지이며, 워크스페이스별 트리플로 저장됩니다.
시맨틱 코드 임베딩
선택적 클라우드 패스입니다. 한 번만 동의하면 됩니다. 코드를 정확한 단어 대신 의미로 검색하게 해줍니다.
교차 모달 브리지
코드 심볼과 노트, 개념 라벨이 하나의 벡터 공간에 임베딩됩니다. 그래서 "이 개념에 가장 가까운 코드"와 그 반대를 매치 %로 순위 매길 수 있습니다.
LSP (언어 서버)
PATH에서 찾는 외부 언어별 서버로, 자동완성, 호버, 정의 이동을 제공합니다. 없으면 에디터는 코드 그래프 탐색으로 조용히 대신합니다.
언어코드 그래프 인덱싱IDE 기능 (언어 서버)
Rust (.rs)지원rust-analyzer
TypeScript / TSX지원typescript-language-server
JavaScript지원typescript-language-server
Python (.py)지원pyright
Go (.go)지원없음 (그래프 탐색만)

같은 규율, 노트와 코드

Consilience는 코드를 노트 다루듯 다룹니다. 대상을 찾고, 관계를 기록하고, 둘 다 트리플로 저장합니다. 지식 표현의 언어로 말하면 함수는 객체이고 호출은 링크입니다. 큰 분석 플랫폼들을 떠받치는 객체-링크-속성 모델 그대로입니다.

차이는 인식론에 있습니다. 노트 그래프는 LLM이 산문을 읽어 만들기에 확률적이고, 코드 그래프는 파서가 만들기에 결정론적입니다. 호출 엣지는 소스에 있거나 없거나 둘 중 하나입니다. 코드 인덱스가 무료로, 오프라인에서, 즉시 도는 이유, 그리고 확률적 층인 임베딩만 동의를 구하는 이유가 여기 있습니다.

인덱스 만들기

  1. 관리 패널 열기

    지식그래프 뷰의 왼쪽 메뉴에서 "코드 인텔리전스"를 고릅니다. 빌드 구역의 제목은 "코드 AI 검색"입니다. (마스터 스위치가 꺼져 있으면 "코드 인텔리전스가 꺼져 있습니다"와 함께 "설정 열기" 버튼이 보입니다. 토글은 설정 ▸ "코드 인텔리전스"에 있습니다.)

  2. "만들기" 누르기

    "코드 인덱스 만들기" 행이 .gitignore를 지키며 소스 파일을 스캔합니다. 단계별 체크리스트가 돕니다: "파일 스캔" → "코드 파싱" → "참조 연결" → "심볼 임베딩". 각 단계에 실시간 완료/전체 카운트가 붙고, "취소"로 언제든 멈출 수 있습니다.

  3. 클라우드 임베딩 결정하기

    첫 빌드에서 한 번짜리 대화상자가 묻습니다. "코드를 의미로 검색할 수 있게 할까요?" "의미 기반 검색 켜기"는 시맨틱 층을 켜고, "이 기기에만 두기"는 인덱스를 로컬 전용으로 둡니다. 어느 쪽이든 식별자와 그래프 검색은 계속 동작하고, 로컬 인덱스는 어떤 경우에도 만들어집니다.

  4. 판정 읽기

    끝나면 쉬운 말로 된 판정이 뜹니다. "코드 검색 준비 완료"입니다. 이후에는 파일 워처가 변경을 따라가며 인덱스를 최신으로 유지합니다. 인덱스가 낡거나 이상하면 "재구축"으로 처음부터 다시 만듭니다.

코드 인텔리전스가 나타나는 곳

  • 워크스페이스 사이드바에는 코드 탭이 활성일 때 "코드 컨텍스트" 그룹이 생깁니다. "코드 그래프" 섹션은 실시간 배지("색인됨" / "색인 안 됨" / "파싱 오류")를 달고 "정의된 심볼", "사용하는 곳", "사용하는 대상"을 나열합니다. 행 하나하나가 점프이고, 관계가 칩으로 붙습니다: 호출 / 임포트 / 확장 / 참조.
  • 같은 그룹의 "관련 지식"은 캐럿을 따라다닙니다. 함수 위에 커서를 두면 의미상 가장 가까운 노트와 개념이 나오고, "그래프로 보기"가 그 심볼을 중심에 둔 3D 별자리를 엽니다.
  • "관련 코드"는 노트의 문서 사이드바와 엔티티 페이지 양쪽에 붙습니다. 산문이나 360° 프로필에서 그것을 구현한 심볼로 바로 건너갑니다.
  • 코드 인텔리전스 패널의 "개념 ↔ 코드"에서는 개념을 검색하고, 펼치면 매치 %로 순위 매긴 심볼이 나옵니다. 클릭하면 파일이 열립니다.
  • 채팅에서는 인덱스가 완성되면 에이전트가 세 가지 능력을 얻습니다. 저장소의 지도를 그리고, 코드를 의미로 검색하고, 심볼의 이웃을 따라갑니다. 워크스페이스 검색 결과에도 "코드" 섹션이 생깁니다.
  • 3D 그래프"코드 표시" 토글은 코드 파일을 별도 노드 클래스로 그려줍니다. 파일 트리는 아직 처리되지 않은 코드 파일에 빨간 상태 점을, 파싱 오류에는 경고 삼각형을 표시합니다.

외부 언어 서버가 설치되어 있으면 고전적인 IDE 기능이 그 위에 얹힙니다. F12(또는 Cmd+클릭)로 정의 이동, Shift+F12로 참조 찾기, F2로 파일을 넘나드는 이름 변경, ⇧⌥F로 포맷, 타이핑 중 진단 밑줄까지. 서버 없이 코드 파일을 열면 설치 안내 토스트가 한 번 뜨고, 그때까지 에디터는 코드 그래프 탐색으로 조용히 대신합니다.

실행하고, 멘션하고, 물어보기

  1. (Windows/Linux는 Ctrl+)를 누릅니다. 독이 열리고 "터미널 1"이 워크스페이스 폴더에서 시작됩니다.
  2. 출력이 나오는 명령을 하나 실행합니다. ls -la, 워크스페이스가 저장소라면 git status.
  3. 채팅 입력창에서 @를 치고 "터미널" 카테고리에서 "터미널 1"을 고릅니다. 입력창에 칩이 나타납니다.
  4. "이 터미널에 뭐가 보여? 내 워크스페이스에 대해 뭘 알 수 있어?"라고 묻고 전송합니다.
  5. 선택 과제입니다. 워크스페이스에 소스 코드가 있다면 지식그래프 뷰 ▸ "코드 인텔리전스"에서 "만들기"를 누르고, "파일 스캔" → "코드 파싱" → "참조 연결" → "심볼 임베딩"이 도는 걸 지켜보세요.

에이전트가 캡처된 스크롤백을 읽고 답합니다. 복사해 붙일 필요가 없습니다. 인덱스를 만들었다면 판정이 "코드 검색 준비 완료"로 바뀌고, 코드 파일 사이드바에 "코드 그래프" 섹션이 생깁니다.

접으면 숨기기, 다시 멘션하면 최신 출력

독을 잠시 치워둘 때는 패널 접기가 안전합니다. 모든 셸이 스크롤백째 계속 돌고, ⌘` 를 다시 누르는 순간 그대로 돌아옵니다.

새 출력이 찍힌 직후 터미널을 다시 멘션하면, 에이전트는 셸의 가장 최신 스냅샷을 읽습니다.

이것이 개발자를 위한 한 쌍입니다. 키 하나 거리의 진짜 셸과 채팅으로 이어지는 칩 하나짜리 다리, 그리고 노트와 같은 트리플 규율로 매핑된 코드베이스. 아이디어와 구현이 드디어 서로를 찾아냅니다. 같은 트리플이 좌표를 품으면, 에이전트가 그것을 지도 위에 그려 줍니다.

터미널과 코드 그래프 활용