06/Documentation
휴대폰에서의 Durable agent
durable agent의 섹션, 대화, 질문 및 영수증이 어떻게 표시되는지 설명합니다
실험적 기능입니다. durable agent가 휴대폰에 표시하는 내용은 향후 마이너 릴리스에서 변경되거나 해당 기능이 제거될 수 있습니다. 유지 여부를 결정하는 기준은 Durable agent에 설명되어 있습니다.
이 페이지는 휴대폰에서 durable agent가 나타나는 모든 위치를 보여줍니다: 대시보드의 행, 대화 목록, 질문, 채팅, 스타터 및 푸시. Durable agent에서 durable agent를 먼저 연결합니다.
durable agent는 hello에서 수행할 수 있다고 밝힌 작업에 대해서만 컨트롤을 표시합니다. 컨트롤 이름을 명시한 아래 행은 durable agent가 이를 선언했다고 가정합니다.
대시보드의 Durable agents 섹션
각 durable agent는 스페이스와 별도로 Durable agents 섹션의 한 행으로 표시됩니다.

| 행의 일부 | 표시 내용 |
|---|---|
| 줄 1 | sources.json의 durable agent 이름과 Experimental 배지 |
| 줄 2 | 런타임, durable agent가 hello 메시지에서 스스로 부여한 이름, 없으면 durable. 그 뒤에 local 또는 remote |
| 오른쪽 가장자리, 준비됨 | 열려 있는 대화 수, 그리고 확인 필요 색상으로 표시되는 사용자 대기 대화 수. 두 번째 수는 0일 때 숨겨집니다. |
| 오른쪽 가장자리, 준비되지 않음 | Starting, Unreachable 또는 Version mismatch 단어가 표시되며, 수는 표시되지 않습니다. |
소켓 또는 http://127.0.0.1이나 http://localhost을 통해 연결된 durable agent는 local입니다. 그 외 모든 URL은 remote입니다.
이 섹션은 스페이스 아래에 위치합니다. 사용자 대기 대화가 있는 durable agent가 하나라도 있으면 스페이스 위로 이동하고, 마지막 대화에 응답하면 다시 아래로 이동합니다. 연결된 durable agent가 없으면 섹션이 전혀 그려지지 않습니다.
"확인이 필요한 창만 표시"를 켜면 섹션에 사용자를 대기 중인 durable agent만 나열됩니다. 어떤 상태에서든 행을 탭하면 해당 durable agent의 대화 목록이 열립니다.
대화 목록
durable agent의 홈은 메시징 앱이 채팅을 나열하는 것처럼 대화를 나열합니다.

사용자를 대기 중인 항목이 먼저 오고, 그 뒤에 다른 열린 대화가 최신순으로 옵니다. 닫힌 대화는 Closed 레이블 아래에 이어집니다. 각 행에는 제목, 상태 표시, 마지막 활동 시간, 그리고 그 아래 한 줄이 표시됩니다: 대기 중인 질문, 없으면 durable agent의 부제목. 대기 중인 행에는 미해결 질문 수도 표시됩니다. 제목이 없는 행에는 "Untitled conversation"이 표시됩니다.
열려 있는 행을 탭하면 Chat에서 열립니다. 닫힌 행을 탭하면 읽기 전용으로 읽을 수 있습니다. durable agent가 대화를 다시 열 수 있는 경우 닫힌 대화에 Reopen 버튼이 표시됩니다.
열려 있는 행은 대시보드 자체 데이터에서 가져오므로 즉시 그려집니다. 닫힌 행은 durable agent에서 가져오며, Collie는 방문당 한 번, 그리고 대화가 열리거나 닫힐 때 다시 요청하고, 폴링할 때마다 요청하지는 않습니다.
| 목록 하단 | 조건 |
|---|---|
| 더 불러오기 | durable agent에 100개 이상의 대화가 있습니다. 탭할 때마다 다음 100개를 읽습니다. |
| "이 durable agent는 대화 목록을 유지하지 않습니다." | durable agent가 목록을 유지하지 않는다고 응답했습니다. |
| "durable agent가 응답하지 않았습니다. 잠시 후 다시 시도하십시오." | durable agent가 읽기 요청에 응답하지 않았습니다. |
| "durable agent는 통신 v2를 사용하지만, 이 Collie는 v1을 사용합니다. Collie 또는 에이전트 SDK를 업데이트하십시오." | Collie가 통신 버전(영수증) 문제로 durable agent를 거부했습니다. |
| "대화를 불러올 수 없습니다. 다시 시도하십시오." | 전송 도중 읽기에 실패했습니다. |
기록을 보관하지 않는 durable agent는 닫힌 그룹이나 메모 없이 열린 대화만 단독으로 표시합니다. 이미 렌더링된 목록은 이후 읽기에 실패해도 그대로 유지됩니다.
휴대전화에서의 질문
durable agent의 질문은 채팅 내 해당 도구 호출 아래에 카드로 표시됩니다.

캡션에는 durable agent의 이름이 "Needs your answer · desk"와 같이 표시됩니다. durable agent가 만료 시간을 설정한 경우 제목 아래 줄에 카운트다운이 표시됩니다. "Expires in 4 min", 그 다음 "Expires in 40 s", 그리고 "Expired" 순입니다. 만료 시간이 지나도 버튼은 유지되며, 늦게 탭한 경우 durable agent가 직접 처리합니다.
| 종류 | 카드가 표시하는 내용 | 제한 사항 |
|---|---|---|
permission | 옵션당 버튼 하나가 제공되며, Collie의 표현으로는 Allow, Always allow, Deny, Cancel 중 하나입니다. durable agent 자체의 레이블은 눈에 띄지 않는 두 번째 줄에 표시됩니다 | 최대 6개 옵션 |
choice | 옵션당 한 행입니다. 한 번 탭하면 선택 항목이 전송됩니다. multiple의 경우 행이 "Pick any number" 아래에서 토글되며 Send를 누르면 설정 내용이 전송됩니다 | 최대 8개 옵션 |
text | 입력할 수 있는 한 줄, "12 of 500"과 같은 글자 수 카운트, 그리고 Send | 500자, 또는 최대 2000자까지 durable agent가 정한 한도 |
form | 하나의 Send 아래에 필드가 쌓입니다. 텍스트 한 줄, 선택할 목록 형태의 선택지, 또는 토글입니다. 필수 필드에는 Required가 표시됩니다 | 최대 6개 필드 |
"Always allow"는 두 번 탭해야 합니다. 첫 번째 탭에서는 버튼이 "Tap again to always allow"와 도구 이름으로 바뀝니다. 두 번째 탭에서 전송됩니다. 질문에 도구 이름이 명시되지 않은 경우 Collie는 이를 제공하지 않습니다.
Collie가 durable agent의 텍스트를 줄이거나 정리해야 했던 경우, 전체 텍스트가 표시되지 않았으므로 카드에 "Text shortened"가 표시되고 "Always allow"는 제공되지 않습니다.
현재 Collie가 인식하지 못하는 종류의 카드는 해당 텍스트를 표시하고 "This ask cannot be answered from the phone."이라고 안내합니다. 대화에서는 처음 5개의 질문이 카드로 렌더링되며, "Show N more" 행을 통해 나머지를 엽니다.
탭한 후 일어나는 작업
모든 탭은 하나의 요청 ID를 전달하며, 오직 탭을 통해서만 답변이 전송됩니다.
| 발생한 상황 | 카드가 표시하는 내용 | 수행할 작업 |
|---|---|---|
| durable agent가 답변을 수락했습니다 | 아무것도 하지 않음: 카드가 닫힙니다 | 아무것도 하지 않음 |
| durable agent가 먼저 결정했습니다 | "Decided in the durable agent." | 아무것도 하지 않음. 채팅에 해당 내역이 한 줄로 유지됩니다 |
| 질문이 먼저 만료되었습니다 | "답변하기 전에 만료되었습니다." | 아무것도 하지 않음. 채팅에 해당 내역이 한 줄로 유지됩니다 |
| 다른 답변이 먼저 도착했습니다 | "이미 답변했습니다. 이 카드는 다음 업데이트 시 사라집니다." | 아무것도 하지 않음 |
| 질문이 열려 있지 않았으며, durable agent가 이유를 알리지 않았습니다 | "처리되지 않았습니다. 잠시 후 질문이 다시 표시될 수 있습니다." | 기다립니다. 재시작된 durable agent가 다시 묻습니다 |
| 진행 중에 질문 내용이 바뀌었습니다 | "이 요청이 변경되었습니다. 다시 읽은 다음 답변을 탭하십시오." | 변경된 내용을 읽고 다시 탭합니다 |
| 답변이 도착하지 않았을 수 있습니다 | "답변이 도착했는지 확실하지 않습니다. 다시 시도하면 한 번 더 전송합니다." | 다시 시도를 탭합니다. 동일한 요청 ID를 전송하므로 durable agent에 한 번만 전달됩니다 |
| 다시 시도했을 때 질문이 닫혔거나 변경되었습니다 | "이미 적용되었을 수 있습니다. 채팅을 확인하십시오." | 채팅을 확인합니다 |
| Collie가 답변을 거부했습니다 | Collie가 제공한 이유, 없을 경우 "답변이 거부되었습니다." | 이유를 확인합니다 |
| durable agent의 머신에서 이전 버전의 Collie를 실행 중입니다 | "이 머신은 이전 버전의 Collie를 실행 중이므로 여기서 답변을 받을 수 없습니다. 머신을 업데이트하거나 durable agent에서 답변하십시오." | 해당 머신을 업데이트합니다 |
영수증
Collie는 사용자가 답변하지 않았을 때 질문이 어떻게 종료되었는지, 그리고 durable agent가 거부된 이유를 알립니다.

| 상황 | 표시되는 내용 |
|---|---|
| 질문에 만료 시간이 설정되어 있습니다 | 카드 제목 아래에 남은 시간이 표시됩니다 |
| durable agent가 결정한 후 또는 만료 시간 이후에 탭했습니다 | 카드가 고정되고 "durable agent에서 결정됨." 또는 "답변하기 전에 만료되었습니다."라고 표시됩니다 |
| 질문이 시간 초과되었거나 사용자가 탭하지 않아 durable agent가 대신 결정했습니다. | 채팅의 한 줄에 "Timed out before an answer:" 또는 "Decided in the durable agent:"가 표시된 뒤 질문 제목이 표시됩니다. |
| Collie가 통신 버전 문제로 durable agent를 거부했습니다. | durable agent 홈에 주의 상자가 표시되고 대시보드 행에 Version mismatch가 표시됩니다. |
휴대폰에서 답변한 질문이나 턴을 중단하여 끝난 질문에는 해당 줄이 남지 않습니다. 탭 동작 시 이미 카드가 표시되었습니다.

주의 상자에는 각 측이 사용하는 통신 버전이 표시됩니다(예: "Program speaks wire v2, this Collie speaks v1. Update Collie, or the durable agent's SDK."). 더 오래된 쪽을 업데이트하십시오. 버전에 규칙이 있습니다.
채팅
durable agent의 대화는 유일한 보기인 Chat에서 열립니다.
| durable agent의 항목 | Chat이 렌더링하는 내용 |
|---|---|
user | 직접 입력한 줄 |
reply | 에이전트의 답변 |
thinking | 에이전트의 생각 |
notice | 스레드의 짧은 메모 |
markdown | 렌더링된 마크다운: 제목, 목록, 강조, 코드, 링크입니다. 원시 HTML은 텍스트로 표시됩니다. |
code | 코드 블록이며 durable agent가 언어를 지정한 경우 해당 언어가 표시됩니다. |
link | 레이블이 있는 링크 줄이며 레이블이 없으면 주소입니다. https:// 링크만 지원합니다. |
tool | 도구 호출: 실행 중, 출력과 함께 완료됨, 실패함, 거부됨입니다. |
아직 생성 중인 reply, thinking, notice 또는 markdown 항목은 끝에 커서가 표시되고 시간이 표시되지 않습니다. 최종 텍스트가 도착하면 커서가 사라집니다. 직접 중단한 턴에는 "stopped" 메모가 남습니다.
직접 입력한 줄
Send를 탭하는 순간 작은 시계와 함께 스레드에 입력한 줄이 표시됩니다. durable agent 자체 사본이 도착하면 해당 줄을 대체합니다.
| 상태 | 해당 줄에 표시되는 내용 |
|---|---|
| 전송 중 또는 전송됨 | 시계입니다. durable agent가 수신하면 작성기에 "Sent"가 표시됩니다. |
| 답변이 오지 않았습니다. | "Sending, not confirmed"입니다. 다시 보내기를 누르면 동일한 요청 ID로 재시도합니다. |
| 거부되었거나 턴이 넘어갔습니다. | "Not sent"가 표시되고 작성했던 내용이 입력란으로 다시 돌아갑니다. |
요청 ID를 에코하지 않는 durable agent는 30초 이내에 동일한 텍스트로 매칭됩니다. durable agent가 다시 기록하지 않는 줄은 10분 후에 표시가 중단됩니다.
입력한 줄이 스레드에서 가장 최신 항목이고 durable agent가 아직 답변하지 않은 동안에는 점 세 개가 표시되어 작업 중임을 나타냅니다.
헤더
헤더는 두 줄입니다. 첫 번째 줄은 대화 제목과 Experimental 배지입니다.
| 두 번째 줄에 표시되는 항목 | 조건 |
|---|---|
| "3단계 중 2단계: 메모 저장" | durable agent가 단계를 보고하고 있으며 단계 하나가 실행 중인 경우 |
| "42%: 업로드 중" | durable agent가 퍼센트와 해당 레이블을 보고하는 경우 |
| durable agent 부제목 | 진행 상황이 없거나 모든 단계가 완료된 경우 |
| 작업공간 | durable agent가 이러한 항목을 아무것도 설정하지 않는 경우 |
진행률은 대화가 작업을 진행 중이거나 사용자를 기다리는 동안에만 표시됩니다.
벨트
벨트에는 Steer와 Stop이 있고, 그 뒤로 durable agent 자체 버튼이 최대 4개까지 표시됩니다.
Steer는 새 턴을 시작하는 대신 실행 중인 턴으로 텍스트를 보냅니다. Stop은 실행 중인 턴을 종료합니다. 현재 작동할 수 없는 버튼은 제자리에서 흐리게 표시되므로 아무것도 이동하지 않습니다.
| durable agent 버튼 | 규칙 |
|---|---|
| 레이블 | 최대 16자 |
| 아이콘 | 다음 12개 중 하나: play, pause, check, x, refresh, archive, flag, star, send, note, search, more. 다른 이름을 지정하면 아이콘이 표시되지 않습니다. |
| 작업 중 | 스피너가 표시되고 탭할 수 없습니다 |
| 비활성화됨 | 흐리게 표시되고 탭할 수 없습니다 |
버튼을 탭하면 휴대전화가 감지한 최신 턴이 지정됩니다. 대화가 이미 진행된 경우 아무것도 실행되지 않으며 휴대전화에 다음과 같이 표시됩니다. "대화가 진행되어 작업이 실행되지 않았습니다." 이를 확인한 뒤, 여전히 작업을 원하면 버튼을 다시 탭하십시오.
durable agent 창에 없는 항목
durable agent에는 화면이 없으므로 해당 창에는 Terminal 뷰, 탭 또는 창 스트립이 없으며 Keys, Type 또는 Quick 버튼도 없습니다. 메뉴에는 History, Pane settings, Pin to top row가 없습니다. 메뉴의 Close는 "Close conversation"으로 표시됩니다.
새 대화 및 스타터
durable agent의 New 페이지 제목은 New conversation이며, durable agent의 스타터 목록을 표시합니다.
스타터는 폴더나 텍스트를 받지 않으며, durable agent가 작업 위치를 결정합니다. 스타터를 탭하면 durable agent가 새 대화를 엽니다. 이 페이지는 머신의 agent, 셸 또는 명령을 제공하지 않습니다. 스타터가 없는 durable agent는 "이 머신의 durable agent는 아직 스타터를 제공하지 않습니다."라고 표시합니다.
푸시
질문은 각 durable agent의 상한선 내에서 휴대폰으로 푸시될 수 있습니다.
| 상한 | 제한 | 초과 시 |
|---|---|---|
| 단일 창 | 분당 푸시 3건 | 질문은 휴대폰에 표시되며 푸시를 보내지 않습니다 |
| 단일 머신의 단일 durable agent | 분당 푸시 10건 | 동일함 |
| 단일 머신의 단일 durable agent | 시간당 푸시 30건 | 푸시 1건("{host}의 durable agent가 다수의 요청을 생성하는 중입니다"), 이후 1시간 동안 해당 durable agent의 푸시 없음 |
푸시에는 "Permission needed in"과 창의 이름이 표시됩니다. durable agent는 최대 60자의 자체 제목과 최대 120자의 줄을 추가할 수 있습니다. Collie는 머신, durable agent, 도구 호출당 한 번씩 질문을 푸시하므로, 재시작 후 다시 질문된 내용은 표시만 되고 푸시되지는 않습니다. 자세한 내용은 durable agent의 푸시에 있습니다.
마스킹
시크릿 마스킹이 켜져 있으면(COLLIE_REDACT, 기본값으로 켜짐) Collie는 durable agent 대화 목록의 제목과 부제목에 있는 시크릿을 마스킹합니다.
crew 환경에서
lead의 대시보드에는 crew의 각 머신마다 하나의 Durable agents 섹션이 있습니다. member의 durable agent는 2번째 줄에 member 이름을 추가합니다(예: pi-durable, local, workshop). lead 자체의 durable agent는 머신 이름을 표시하지 않습니다. 머신에서 질문이 발생하면 해당 단일 섹션이 스페이스 위로 이동합니다. crew의 durable agent에 누가 무엇에 응답하는지 명시되어 있습니다.