지식 검토하기
기계가 Project Knowledge에 쓰는 모든 것은 candidate로 도착해 기다립니다. 이 페이지는 그 대기열의 사람 쪽, 즉 프로젝트 Knowledge 탭과 오너가 거기서 할 수 있는 일입니다.
Knowledge 탭
모든 항목을 상태·종류·제목·본문·출처·시각과 함께 보여주고, 상태로 거르고 페이지를 넘길 수 있습니다.
각 행은 몇 개의 독립적인 이슈어가 그 항목을 지지하는지도 보여줍니다. 상태 라벨만 있으면 "이걸 믿어라"라고 말하면서 근거는 말하지 않는 셈인데, 이 숫자가 그 신뢰가 무엇에 기대고 있는지를 말합니다. 0인 candidate는 설명 없는 라벨이 아니라 "아직 아무것도 이것을 확인하지 않았다"로 읽힙니다. 이 숫자는 승격 트랜잭션이 세는 방식과 똑같이 계산되므로, 화면의 숫자가 곧 승격이 근거로 삼는 숫자입니다.
candidate 확인하기
확인 컨트롤은 candidate 행에만, 그리고 오너에게만 나타납니다. 나머지 상태는 결정을 기다리는 중이 아닙니다.
확인하면 지지를 기록하고, 항목을 승격시키고, 원장 행을 쓰는 것까지 한 트랜잭션에서 일어납니다. 대화상자는 이 동작이 되돌릴 수 없고 기록된다고 분명히 말합니다. 감사 행에 오너 override로 표시되므로, 나중에 원장을 보면 그 항목이 신호가 쌓여서가 아니라 사람이 결정해서 승격됐다는 게 드러납니다.
오너의 확인은 혼자서 승격시킵니다. 그것이 왜 K의 구멍이 아니라 예외인지는 지식이 신뢰를 얻는 법에 있습니다.
확인을 눌렀는데 아무 일도 안 일어난다면 그 항목에 반박이 붙어 있는지 확인하세요. 만료되지 않은 반박은 오너를 포함한 모든 경로에서 승격을 막으며, 반박을 지우는 UI는 없습니다. 창이 만료되면 풀립니다. 기본값 30일입니다.
candidate는 어디서 오나
두 곳이고, 둘 다 candidate 외에는 만들지 못합니다.
- 에이전트가 부른
learn. - 자동 추출. 스레드가
closed나answered에 도달하면 그 대화가 증류 대상이 되고, 주기적인 정리 작업이 거기서 candidate를 뽑습니다.
두 쓰기 경로 모두 프로젝트의 레닥션 denylist를 먼저 거칩니다. 설정된 비밀·개인정보 패턴에 걸린 구간은 마스킹이 아니라 제거됩니다. 마스킹은 비밀의 모양과 위치를 여전히 기록으로 남기고, 레닥션이 무손실인 것처럼 오해하게 만듭니다. denylist는 추출뿐 아니라 learn에도 적용됩니다. 사람이 교훈을 붙여넣으면서 비밀을 같이 붙여넣을 수 있기 때문입니다.
제안 큐
/knowledge/proposals에 reflection proposer가 작성한 초안이 모입니다. 에러 시그니처가 서로 다른 에이전트 2개 이상에서, 또는 3회 이상, 7일 창 안에서 재발하면 제안이 됩니다.
제안은 도장 찍을 수정안이 아니라 하나의 논증이고, 그렇게 보여집니다:
- 근거가 된 증거,
- 가설,
- 그것이 틀렸음을 보여줄 반증 조건,
- 그리고 제시하는 구체적인 변경안.
쓸 만한 시그니처가 없는 에러는 뭉치지 않고 버려집니다. "detail 없음"이 거짓 패턴으로 쌓이는 일이 없도록 하기 위해서입니다.
여기서 자동으로 적용되는 것은 하나도 없습니다. 제안이 노출되는 표면은 대시보드 큐 하나뿐이고, 그중 어느 것도 에이전트에게 전달되지 않습니다.
승인은 candidate를 등록하는 것이지 trusted가 아닙니다
버튼은 candidate로 채택이라고 적혀 있고, 확인 문구가 이것은 trusted가 아니라고 명시하며, 결과 배지는 채택됨 (candidate)로 표시됩니다.
의도된 것이고, 똑같아 보이는 두 클릭의 차이가 여기 있습니다:
- Knowledge 탭의 확인은 오너가 특정 항목 하나를 읽고 내리는 판단입니다. 이건 승격시킵니다.
- 제안 큐의 승인은 기계가 만든 초안 더미 중 하나에 대한 클릭입니다. 이것이 trusted를 만들어낸다면 "큐를 검토했다"가 실질적으로 자동 승인이 되고, 큐를 한 번 훑는 것만으로 신뢰 모델 전체를 K=1로 우회하게 됩니다.
같은 사람, 같은 모양의 버튼이지만 판단의 밀도가 다르고, 그래서 결과가 다릅니다. 채택된 제안도 승격은 정상 경로로 따로 얻어야 합니다.
playbook 버전과 롤백
프로젝트 playbook의 변경은 append-only 버전 이력으로 보관됩니다.
롤백은 아무것도 덮어쓰지 않습니다. 이전 버전과 내용이 같은 새 버전을 씁니다. 컨트롤은 어느 버전으로 돌아가는지, 현재와 대상의 diff, 그리고 대상이 실제로 다르기는 한지를 보여준 뒤 확인을 요구합니다. 서빙되는 본문은 언제나 가장 최신 버전의 내용이며, 아직 버전이 하나도 없으면 프로젝트에 저장된 RELAYROOM.md로 되돌아갑니다.
스레드에서 나온 지식 purge
스레드를 삭제해도 거기서 증류된 지식은 사라지지 않습니다. 그 지식은 별개의 사본입니다. /knowledge/settings에 오너 전용으로 그것을 명시적으로 지우는 동작이 있습니다.
확인 화면은 숫자를 두 개 보여줍니다. purge가 서로 다른 두 가지 일을 하기 때문입니다:
| 숫자 | 뜻 |
|---|---|
| 삭제 | 출처가 이 스레드뿐인 항목. 없어집니다. |
| 출처 제거 | 이 스레드와 다른 스레드를 함께 인용하는 항목. 남고, 출처에서 이 스레드만 빠집니다. |
이 둘을 하나로 합치면 되돌릴 수 없는 동작을 확인하는 사람을 오해하게 만듭니다. 미리보기는 같은 함수를 dry-run으로 돌리므로, 확인 화면의 숫자가 실제로 일어날 일과 정확히 같습니다.
스레드 선택기는 실제로 지식을 만들어낸 스레드만 나열하며, id를 붙여넣는 대신 제목으로 고릅니다.
만료
항목에는 만료 시각을 붙일 수 있습니다. 만료되는 순간 recall이 그 항목을 돌려주지 않고, 이어서 정리 작업이 retired로 옮기며 감사 행을 씁니다. 디스크의 상태가 에이전트가 듣고 있는 것과 일치하게 됩니다.
오래된 candidate를 정리하는 것은 별개 문제로, 보존 정책이 필요한데 아직 기본값이 없습니다. 그래서 현재는 아무것도 정리하지 않습니다.