페르소나

세션이 받는 것은 티켓만이 아닙니다. 프롬프트 맨 앞에 누가 이 일을 하는가가 먼저 붙고 그 자리에 들어가는 것이 페르소나입니다. 역할 하나를 적어 둔 마크다운 문서고, 앱에 전용 화면이 있어서 본문만 고치면 됩니다.

프롬프트의 첫 덩이는 큐 전체가 같이 받는 코어 프로토콜이고 페르소나는 그 바로 뒤에 섭니다. 어디에 무엇이 들어가는지는 아래 §프롬프트 조립 순서에서 다시 다룹니다.

persona: — 티켓이 정하는 역할

티켓의 persona: 값이 곧 프로필 이름입니다. 그 이름의 프로필 본문이 세션 프롬프트에 그대로 실립니다. 워커나 프로젝트가 정하는 것이 아니라 티켓 하나하나가 정합니다. 같은 프로젝트, 같은 워커라도 티켓마다 다른 페르소나로 돕니다.

프로젝트를 만들면 pm · developer · qa · designer · archive-manager 다섯이 같이 섭니다(첫 프로젝트 만들기). 앞의 넷은 티켓에 이름을 적어 부릅니다. archive-manager는 티켓을 끝낸 세션이 아카이브 티켓을 스스로 내면서 부르고 끝난 일에서 남길 사실만 골라 온톨로지에 옮깁니다(아카이빙과 온톨로지). 출발점일 뿐 고정 목록은 아닙니다. 복사된 순간부터 이 프로젝트의 것이니 화면에서 고치고 지우고 새로 만드시면 됩니다.

붙이는 기준은 하나입니다. 역할이 판단을 가르는 자리인가를 봅니다. 같은 "버튼이 안 눌린다"도 qa가 받으면 재현 절차와 증거가 남고 developer가 받으면 원인을 찾아 고칩니다. 그렇게 갈리는 티켓에만 이름을 적으세요.

비워도 됩니다. 그게 정상 경로입니다. 페르소나 없이 도는 세션은 프로토콜과 티켓 지시만 받습니다. 경고도 남지 않습니다.

이름은 적혀 있는데 그 프로필이 없으면 경고만 뜹니다. 페르소나 화면 맨 위에 프로필 파일이 없는 페르소나가 있습니다가 붙고 목록의 그 줄은 프로필 없음 배지를 답니다. 엔진은 막지 않습니다. 로그에 WARN 한 줄을 남기고 페르소나 없이 그냥 돌립니다. 티켓이 멈추지는 않되 그 세션은 역할도 권한도 모르는 채로 시작합니다.

페르소나 화면 — 왼쪽에서 고르고 오른쪽에서 고칩니다

왼쪽 내비의 페르소나. 화면은 두 칸입니다. 왼쪽이 이 프로젝트의 페르소나 목록, 오른쪽이 지금 고른 하나입니다. 창이 좁으면 목록이 위로 가고 편집이 그 아래로 내려옵니다.

목록 줄 하나가 그 페르소나의 전부를 말해 줍니다. 윗줄에 색 점과 이름, 아랫줄에 참조하는 티켓 · 스킬 n · 메모리 n · 상한 n · 자수. 값이 없는 종류는 아예 안 나옵니다.

고른 페르소나는 주소에 남습니다 — /p/<프로젝트>/personas/<이름>. 링크로 옮겨 두면 다음에 그 줄이 고른 채로 열리고 뒤로가기를 누르면 목록 선택과 오른쪽 칸이 같이 돌아갑니다.

오른쪽 칸 머리에 색 점 · 이름 · 삭제가 있습니다. 그 아래로 디스패치 정책 두 값(다음 절), 프로필 편집기와 저장, 스킬 절, 메모리 절이 차례로 섭니다. 편집기는 프로토콜 화면과 같은 두 모드입니다. 기본은 위지윅입니다. 손잡이를 누르면 PROFILE.md의 마크다운이 그대로 나옵니다. 어느 쪽에서 고치든 파일에서 갈리는 것은 고친 자리뿐입니다. 안 만진 줄은 그대로 남습니다.

  • 자수가 목록 줄에 있는 이유. 프로필 본문은 그 페르소나의 모든 디스패치 프롬프트에 실립니다. 길이가 곧 매 세션의 비용입니다. 목록이 "누가 프롬프트를 얼마나 먹는가"를 그대로 보여 줍니다.
  • 다른 줄을 골라도 앞에서 고치던 내용은 살아 있습니다. 저장은 고른 페르소나에만 보이므로, 저장 안 한 페르소나는 목록 줄에 저장 안 됨이 붙습니다.
  • 프로필이 없는 페르소나는 빈 편집기로 열립니다. 저장이 곧 생성입니다. 티켓이 부르는 이름을 그 자리에서 채우시면 됩니다.

색 점을 누르면 팔레트가 열립니다. 고르는 자리는 오른쪽 칸 머리 하나뿐이고 목록 줄의 점은 읽기 전용입니다. 고른 색은 보드 카드와 테이블, persona 필터, 발행 폼까지 따라다닙니다. 색은 이 컴퓨터에만 저장되고 프로젝트에는 안 들어갑니다. 다른 머신에서 열면 중립 점입니다. 색만으로 뜻을 전하지 않으므로 이름 텍스트는 어디서나 점과 같이 옵니다.

디스패치 정책 — 상한과 엔진

오른쪽 칸 머리 바로 아래 디스패치 정책 절에 값이 둘 있습니다. 프로필·스킬·메모리와 달리 이 둘은 프롬프트에 한 자도 안 실립니다. 엔진이 티켓을 고를 때 읽는 값입니다.

상한은 이 페르소나가 동시에 쥘 수 있는 진행중 티켓 수입니다. 기본은 없음입니다. 그때는 워커가 큐 머리부터 훑어 잡히는 대로 잡고 그래서 페르소나 하나가 워커 여럿을 한꺼번에 쥐는 창이 생깁니다 — 아카이빙이 여섯을 물면 그동안 나머지 일이 서 있습니다. 2를 넣으면 진행중이 둘일 때 그 페르소나의 티켓은 잡히지 않고 워커가 다음 후보로 넘어갑니다. 0은 디스패치 정지입니다. 잠시 세워 두고 싶은 페르소나에 쓰세요.

엔진은 이 페르소나의 세션을 무엇으로 돌릴지입니다. 기본은 지정 없음이고 그때는 그 티켓을 집은 워커 자신의 엔진이 돕니다(워커 늘리기). 값 아래 회색 한 줄이 지금 워커들이 무엇을 쓰는지 알려 줍니다. 여기서 고르면 어느 워커가 집든 이 페르소나는 그 엔진과 모델로 돕니다. 지정 해제를 누르면 다시 워커 쪽으로 돌아갑니다.

둘 다 저장하는 순간 파일이 바뀌지만, 걸리는 것은 다음 티켓 선정부터입니다.

프로필에 적는 것 — 역할 · 권한 · 판단 기준

무엇을 쓸지는 프로필 바로 앞줄에 이미 적혀 있습니다. 엔진은 세션에게 프로필을 넘기면서 아래 프로필이 당신의 역할·권한·판단 기준이고, 티켓을 수행하는 동안 이 페르소나로 일관되게 행동하세요라고 말합니다. 세션은 그 셋을 찾으면서 읽습니다. 그러니 그 셋을 적으면 됩니다.

  • 역할은 한 줄입니다. 기본 다섯은 전부 첫 문장이 역할입니다. qa는 "됐다"는 주장을 깨는 것, developer는 티켓 하나를 돌아가는 코드로 바꾸고 그게 돌아간다는 증거를 남기는 것, archive-manager는 온톨로지화 전담. 이 줄이 나머지를 다 정합니다. 여기가 흐리면 아래를 길게 적어도 방향이 안 잡힙니다.
  • 권한은 어디까지 손대도 되는지를 그립니다. qa 프로필은 버그를 찾아도 직접 고치지 말고 티켓을 만들어 넘기라고 적어 뒀습니다. 넘기는 방법까지 같이 적혀 있어야 세션이 경계 앞에서 멈추지 않습니다.
  • 판단 기준은 갈림길에서 어느 쪽인지를 미리 정해 둡니다. developer의 첫 번째로 통하는 방법이 정답이다, designer의 라이트/다크 둘 다 정의하지 않은 색은 정의된 게 아니다. 취향이 아니라 판정 문장이라 다음 세션도 같은 자리에서 같은 쪽을 고릅니다.
  • 하지 않는 것도 적습니다. qa 프로필의 마지막 절이 그것입니다. 못생긴 건 designer 소관이고 자기는 스펙과 다른 것만 본다고 못박아 뒀습니다. 페르소나가 여럿인 프로젝트에서 이 줄이 서로의 영역을 지킵니다.

다섯 다 1인칭입니다. 넷은 내 일은으로 열고 archive-manager 하나만 온톨로지화 전담이다로 시작합니다. 읽는 쪽이 사람이 아니라 세션이라, 그 문장이 그 자리에서 세션 자신의 말이 됩니다.

막히면 기본 다섯을 여세요. 제일 짧은 designer가 20줄, 제일 긴 pm이 91줄이고 나머지 셋은 그 사이입니다. 줄을 고르면 원문이 그대로 보이니, 새 페르소나는 그중 가까운 하나를 베껴 시작하는 편이 빠릅니다.

프로필에 적지 않는 것 — 프로토콜과 티켓의 몫

프로필은 그 페르소나의 모든 디스패치에 실리고 목록 줄의 n자가 매 세션 내는 값입니다(위 §페르소나 화면). 다 넣고 싶어지더라도, 다른 자리가 있는 문장은 그 자리로 보내세요.

  • 전원에게 참인 규약은 프로토콜입니다. 커밋과 보고 형식, 일을 넘기는 법, 막혔을 때 무엇을 남기나. 티켓이 고르지 않고 전원이 같은 것을 받는 자리라, 프로필에 또 적으면 한 프롬프트에 같은 말이 두 번 실립니다. 다음 장 프로토콜이 그 파일을 다룹니다.
  • 이번 한 번만 참인 지시는 티켓입니다. "이 파일의 이 절을 이렇게 고쳐 주세요"는 ## Goal## Done when의 자리입니다(티켓 직접 발행하기). 프로필에 넣으면 그 일이 끝난 뒤에도 모든 세션이 지난 티켓의 지시를 계속 받습니다.
  • 이 프로젝트에서 해 보고 알아낸 것은 메모리입니다. 아래 §메모리에서 다룹니다. 사람이 앉아서 채우는 자리가 아니라는 것만 여기서 말해 둡니다.

프로필과 티켓 지시가 어긋나면 티켓이 이깁니다. 엔진이 프로필 앞에 그렇게 적어 보냅니다 — 티켓을 따르고 충돌한 사실을 티켓 본문에 남기라고. 프로필에 예외를 미리 다 적어 두지 않아도 되는 이유입니다.

스킬 — 이 페르소나가 먼저 집는 도구

오른쪽 칸의 스킬 절입니다. 스킬 추가를 누르면 이 컴퓨터에 설치된 스킬을 검색해 여러 개를 고를 수 있습니다. 고른 목록은 personas/<이름>/skills.md에 저장되고 그 페르소나의 프롬프트에서 프로필 블록 바로 뒤에 실립니다.

세션은 설치된 스킬 목록을 이미 갖고 있습니다. 여기서 넣는 것은 도구가 아니라 지목입니다. "너는 이 일에 이걸 먼저 쓴다"는 뜻입니다.

  • 목록 줄의 n자는 프로필과 스킬을 합한 값입니다. 스킬 목록도 같이 실리기 때문입니다.
  • 0개가 되면 파일을 지웁니다. 빈 파일을 남기지 않습니다.
  • claude 엔진에서만 실립니다. 다른 엔진에는 스킬이라는 개념이 없어서, 그대로 실으면 없는 도구를 쓰라는 문장이 갑니다. 절 안에 그 사실이 한 줄로 적혀 있습니다.
  • 프로필이 없으면 스킬도 안 실립니다. 스킬 블록은 페르소나 프롬프트 안에 사는 것이라, 역할을 모르는 세션에 선택만 얹을 자리가 없습니다.
  • 다이얼로그의 후보 목록은 이 컴퓨터 기준입니다. 다른 머신에서 고른 스킬은 이 머신에 없음으로 남고 지워지지 않습니다. 고른 결과는 프로젝트에 있어서 프로젝트를 옮기면 따라갑니다.
  • 목록에 없으면 그 자리에서 설치할 수 있습니다. SKILL.md가 든 폴더를 다이얼로그에 끌어다 놓거나, 찾아보기.md.skill 파일 하나를 고르면 됩니다.

메모리 — 세션이 쓰고 사람은 지우는 파일

스킬 절 아래가 메모리 절입니다. 한 줄이 개념 하나입니다. 줄에는 파일명과 본문 첫 줄이 뜨고 누르면 그 자리에서 전문이 펼쳐집니다. 있는 것은 이게 전부입니다. 추가편집도 없고 삭제만 있습니다.

쓰는 쪽이 사람이 아니라 세션이라서 그렇습니다. 티켓을 끝낸 세션은 결과를 적기 직전에 자기 페르소나의 메모리를 들여다봅니다. 이번 일에서 알아낸 것 중 다음 세션이 미리 알았으면 시간을 아꼈을 것이 있으면 한 장 남기고 없으면 아무것도 하지 않습니다. 프로필이 "너는 누구다"라면 메모리는 "여기서 해 보니 이렇더라"입니다. 앉아서 쓰는 글이 아니니 사람이 채울 칸도 없습니다.

파일 하나에 개념 하나고 파일명이 곧 개념 이름입니다. 같은 것을 또 배우면 새 파일이 아니라 그 파일을 고쳐 씁니다. 메모리가 개념 수만큼만 자라는 이유입니다.

  • 목록 줄에 메모리 n이 붙습니다. 0장이면 그 메타는 안 나오고 절은 빈 채로 남아 누가 채우는 자리인지만 한 줄로 말합니다.
  • 프롬프트에 실리는 것은 본문이 아니라 자리입니다. 디렉터리 경로와 찾는 법 몇 줄이 전부고, 세션은 티켓의 낱말로 그 디렉터리를 grep해 필요한 파일만 엽니다. 장이 쌓여도 프롬프트는 그 자리에 그대로 있습니다.
  • 페르소나 단위이고 프로젝트 안에 있습니다. 워커가 바뀌어도 같은 페르소나면 같은 메모리를 받고 프로젝트를 옮기면 따라갑니다. 이 컴퓨터에만 남는 값이 아닙니다.
  • 엔진을 안 가립니다. 스킬과 갈리는 자리입니다. 스킬은 claude에만 있는 개념이지만 메모리는 이 프로젝트에서 알아낸 사실이라 어느 엔진에나 참입니다.
  • 프로필이 없으면 메모리도 안 실립니다. 스킬과 같은 이유입니다.

틀린 것은 지우시면 됩니다. 세션이 남긴 것을 아무도 검사하지 않습니다. 잘못 배운 한 줄도 그 디렉터리에 그대로 남아, 지울 때까지 다음 세션들이 계속 그걸 읽습니다. 줄 오른쪽 삭제를 누르면 지울 파일의 경로를 보여 주고 확인을 받습니다. 되돌릴 수는 없습니다. 이 화면에 추가가 없으니 지운 것을 다시 세울 자리도 없습니다. 지울지 말지 판단이 안 서면 본문 끝을 보세요. 세션은 그 개념을 배운 티켓 해시를 출처: 줄에 적게 되어 있습니다. 그 티켓을 열어 보면 어떤 일을 하다 나온 문장인지 되짚을 수 있습니다.

손으로 고치고 싶으면 큐의 personas/<이름>/memory/에서 파일을 직접 여시면 됩니다. 화면이 그 경로를 막지는 않습니다. 다만 이 절은 세션이 채우는 자리입니다. 직접 쓰는 문장은 프로필에 두세요.

프롬프트 조립 순서 — 프로필이 실리는 자리

티켓 하나가 디스패치될 때 프롬프트가 한 번 조립됩니다. 순서가 이렇습니다.

  1. 코어 프로토콜. 티켓의 생애와 큐의 불변식을 적어 둔 문서입니다. 페르소나도 프로젝트도 못 고르고, 프로젝트 문서와 어긋나면 이쪽이 이깁니다.
  2. 페르소나. 프로필 본문, 그 뒤에 스킬 목록, 그 뒤에 메모리가 사는 자리. persona:가 비어 있으면 이 덩이가 통째로 빠집니다.
  3. 온톨로지. 이 큐가 쌓아 둔 사실이 어디 있고 어떻게 찾는지 몇 줄. 메모리와 같은 방식이고, 페르소나와 달리 모든 세션이 받습니다(아카이빙과 온톨로지).
  4. 협업 프로토콜. AGENTS.md 전문이 그대로 들어갑니다. 티켓이 고르지 않고 전원이 같은 것을 받습니다.
  5. 티켓 지시. <해시> 티켓을 확인해 주세요로 시작하는 한 줄입니다. 티켓 본문은 프롬프트에 없습니다. 세션이 그 해시로 파일을 직접 엽니다. 그래서 티켓이 아무리 길어져도 프롬프트는 무거워지지 않고, 프로필이 길어지면 무거워집니다.
  6. 참조 컨텍스트. 워커가 정해 둔 문서 경로 목록이 꼬리에 붙습니다. 파일 내용이 아니라 경로와 한 줄 설명이고 없는 경로는 건너뜁니다(워커 환경변수TICKET_CONTEXT). 그 뒤에 어느 말로 답할지를 정하는 한 문단이 마지막으로 붙습니다.

전문이 통째로 실리는 것은 코어 프로토콜 · 프로필 · 스킬 목록 · AGENTS.md 넷뿐입니다. 나머지는 자리만 알려 주고 세션이 필요할 때 직접 엽니다. 프로필은 그 비싼 넷에 들어 있습니다. 목록 줄의 자수가 그래서 거기 있습니다.

고친 내용이 실리는 시점

프로필도 스킬도 저장을 누르면 파일이 바로 바뀝니다. 메모리를 지워도 그 파일은 그 자리에서 사라집니다. 그런데 지금 도는 세션은 이미 프롬프트를 받은 뒤입니다. 프롬프트는 디스패치 순간에 한 번 조립되고 그 뒤에 파일이 바뀌어도 돌고 있는 세션은 모릅니다. 바꾼 내용이 실리는 것은 다음에 디스패치되는 티켓부터입니다.

도는 세션에 지금 무언가를 말해야 한다면 그건 다른 자리입니다. 도는 세션에 말 걸기를 보세요.

다음은 프로토콜입니다.