콘텐츠로 이동

에이전트와 채팅

이 가이드에서는 스페이스에서 에이전트와 함께 작업하는 방법을 설명합니다.

  1. 사이드바에서 스페이스로 이동합니다
  2. 스페이스 제목 옆의 + 버튼을 클릭합니다
  3. 이름을 입력합니다. 이 항목은 필수입니다. 빈 이름은 거부되며 대화 상자는 열린 상태로 유지됩니다
  4. 선택 사항으로 워크스페이스의 에이전트를 추가합니다
  5. 워크스페이스에 저장소가 하나라도 있으면 저장소 선택기가 나타납니다. 처음에는 모든 저장소가 선택된 상태로 시작합니다. 이 스페이스가 워크트리를 프로비저닝할 저장소로 범위를 좁힙니다(저장소 하나만 선택 해제하는 것도 포함).
  6. 확인합니다

Control Center는 스페이스를 열고 백그라운드에서 선택한 저장소마다 copy-on-write 워크트리 프로비저닝을 시작합니다.

작성기에 메시지를 입력하고 Enter를 누릅니다. 에이전트가 디스패치되어 응답 스트리밍을 시작합니다.

스페이스가 아직 프로비저닝 중이면 메시지는 유실되지 않고 보류됩니다. 작성기가 메시지를 보관하고, 워크트리가 준비되면 자동으로 전송합니다.

에이전트가 작업하는 동안 턴 스트림이 표시됩니다. 추론 세그먼트, 도구 호출 (파일 읽기, 쓰기, 셸 명령), 답변 텍스트가 모두 하나의 에이전트 턴 메시지 안에 들어 있습니다.

에이전트가 작업하는 동안 일반 대화 텍스트는 새 턴을 대기열에 넣지 않습니다. 그 텍스트는 작성기 위 스트립에 대기 중인 스티어링 카드로 표시되고, 다음 턴 경계에서 실행 중인 런에 주입됩니다. 토스트 알림은 없습니다. 카드 자체가 피드백입니다.

이 동작을 바꾸는 경우는 세 가지입니다:

  • @멘션이 포함된 메시지는 항상 메시지로 전송되며, 스티어링으로 처리되지 않습니다
  • 슬래시 명령으로 시작하는 메시지는 항상 해당 명령으로 처리됩니다
  • 첨부 파일이 있는 메시지는 항상 메시지로 전송됩니다. 스티어링 대기열은 텍스트만 지원합니다
  • 실행 중인 런이 모두 이미 끝났다면 텍스트는 그대로 전달되어 일반 메시지로 전송됩니다

에이전트가 가드레일이 가로막는 작업(파괴적인 명령, 권한이 필요한 도구)에 도달하면, 서버는 런을 차단하고 연결된 모든 클라이언트에 승인 요청을 게시합니다. 해당 대화를 열어 두었다면 요청은 채팅에, 작성기 위에, ask_user에 사용되는 것과 동일한 번호 선택지 카드로 나타납니다(거부, 승인, 선택적으로 8시간 동안 승인). 건너뛰기는 없습니다. 차단된 에이전트는 결정을 기다리고 있습니다.

앱의 다른 위치에 있더라도 셸의 항상 위에 표시되는 패널에 대기 중인 항목이 계속 나열되므로, 스페이스를 찾아 헤매지 않고도 에이전트를 차단 해제할 수 있습니다. 해당 스페이스의 대화가 화면에 표시되는 순간 오버레이에서 요청이 숨겨지므로, 같은 프롬프트에 두 번 답할 일이 없습니다.

타임아웃은 없습니다. 차단된 에이전트는 누군가 결정할 때까지 기다립니다. 같은 요청은 받은편지함의 주의 스트립과 휴대폰 클라이언트에도 나타납니다.

선호, 빠진 요구 사항, 또는 실제로 갈리는 선택이 필요한 에이전트는 반드시 ask_user를 호출해야 합니다. 질문을 채팅 메시지로 작성하면 턴이 끝나고 다시 프롬프트해야 합니다. 이 도구는 대화에 번호 카드(선택지, 선택적 자유 입력, 또는 둘 다)를 렌더링하고, 런은 답변을 기다립니다.

선택지를 하나 탭하면 전송됩니다(마우스를 올리면 뒤의 숫자가 화살표로 바뀝니다). 다중 선택과 직접 입력한 답변은 계속(⌘↵ / Ctrl↵)을 사용합니다. 건너뛰기는 에이전트에게 합리적인 기본값을 선택하고 다시 묻지 말라고 지시합니다.

이것은 위의 승인 카드와는 별개의 메커니즘입니다. 승인은 “이렇게 해도 될까요?“이고, 질문은 “이 중 어떤 것을 의미했나요?“입니다. 질문하기는 읽기 전용 모드를 포함한 모든 모드의 기본 제공 하네스에서 사용할 수 있으며(아무것도 변경하지 않습니다), 의도적으로 승인 프롬프트로 감싸지 않았습니다. 대화 상자 앞에 대화 상자를 두면 승인자가 연결되지 않은 상태에서 닫힌 채 실패하기 때문입니다. 렌더링할 대화가 없는 런은 이 도구를 받지 않습니다.

런이 살아 있는 동안 작성기의 전송 버튼이 중지 버튼이 됩니다. 작성기를 비우고 이 버튼을 누릅니다. 그러면 해당 대화에서 실행 중인 모든 에이전트가 중지됩니다.

스페이스 헤더에는 중지 컨트롤이 없고, 이를 위한 키보드 단축키도 없습니다. 여러 런이 살아 있을 때 하나만 중지하려면 해당 런의 활동 탭을 엽니다. 그 헤더에 런 범위의 일시 중지/재개와 중지가 있습니다(중지는 확인을 요청합니다). 옵저버빌리티 → 실시간에는 동일한 컨트롤과 함께 워크스페이스에서 실행 중인 모든 에이전트가 나열됩니다.

중지된 런은 중지됨으로 표시됩니다. 다시 디스패치하려면 새 메시지를 보냅니다.

작성기에서 /를 입력하면 명령 목록이 표시됩니다. 대화의 동작을 바꾸는 명령은 다음과 같습니다:

명령 하는 일
/plan 스페이스를 플랜 모드로 전환합니다. /plan만 입력하면 모드만 준비되고, /plan <request>는 모드를 준비하고 나머지를 메시지로 보냅니다
/goal <text> 대화의 작업 목표를 기록합니다
/loop <text> 작업이 완료될 때까지 반복합니다
/compact 오래된 기록을 고정된 요약으로 접고 압축된 컨텍스트에서 계속합니다
/todo … 이 대화의 영속 할 일 목록을 보고 편집합니다

스킬은 자체 skill: 네임스페이스 아래 같은 목록에 나타나므로 위 명령과 충돌하지 않습니다. plan 또는 compact라는 이름의 스킬도 계속 사용할 수 있습니다:

명령 실행하는 것
/skill:<name> 워크스페이스에 설치된 스킬, 또는 에이전트에 연결된 스킬
/skill:<repo>:<name> 이 스페이스에 체크아웃된 저장소 중 하나가 제공하는 스킬

저장소 스킬에는 출처 저장소가 배지로 표시됩니다. 이름만으로는 어떤 서비스의 관례를 담고 있는지 알 수 없고, 두 저장소가 각각 testing을 제공할 수도 있기 때문입니다. 스킬을 찾을 때 접두사를 입력할 필요는 없습니다. 스킬 이름만 입력해도 네임스페이스가 붙은 항목과 일치합니다.

에이전트는 현재 작업 중인 저장소의 스킬만 항상 보유합니다. 자세한 내용은 저장소 범위 스킬을 참고하세요. 작성기는 그런 식으로 범위가 제한되지 않습니다. 이름을 지정하면 어떤 저장소의 스킬이든 호출할 수 있습니다.

/compact와 /todo는 클라이언트에서 가로채며 메시지로 영속되지 않습니다. 대화 기록에 /compact 줄이 있으면 다음 압축의 기준점이 한 턴 뒤로 밀리기 때문입니다. /plan은 텍스트로 전달되지 않고 스페이스에 저장된 모드를 전환합니다. 따라서 이 세 가지는 “에이전트에게 보내는 메시지”가 아니며, 기록에 나타나리라고 기대하지 마세요.

복잡한 변경을 하기 전에 /plan, 작성기 도구 모음의 모드 드롭다운, 또는 Shift+Tab으로 스페이스를 플랜 모드로 전환합니다. 그러면 에이전트는 읽기 전용으로 조사하고, 작업이 시작되기 전에 승인할 수 있는 타입이 지정된 계획을 제공합니다. 플랜 모드 사용을 참고하세요.

전용 스페이스 없이 에이전트에게 접근하기

섹션 제목: “전용 스페이스 없이 에이전트에게 접근하기”

에이전트마다 스페이스를 둘 필요는 없습니다. 어느 스페이스에서든 다음과 같이 입력합니다:

@alice can you look at the failing tests in src/auth_test.dart?

멘션된 에이전트는 스페이스에 추가되고 해당 스페이스의 컨텍스트와 함께 디스패치됩니다. 이름이 어떻게 일치하는지는 에이전트 @멘션을 참고하세요.