Falsify Paper Workbench 사용 안내

직접 편집, 선택적 로컬 AI, 외부 모델, BLUE, 사람 검수는 서로 독립입니다. 화면 문구가 이 안내와 다르면 화면을 따릅니다.

앱 열기

이 안내 파일은 오프라인으로 열어도 됩니다. 앱은 공개 페이지나, companion을 실행 중일 때의 로컬 주소(기본 http://127.0.0.1:7816/)로 엽니다. 내려받은 index.html을 파일로 직접 여는 방식은 완전히 지원하지 않습니다.

빠른 사용

  1. RED 논문 파일에 PDF를 넣습니다.
  2. 문단을 누르거나 글자를 선택하고 After를 수정한 뒤 편집 반영을 누릅니다.
  3. 현재 편집으로 생성으로 미리보고 현재 생성본 다운로드로 받습니다.

외부 모델 · 로컬 AI · BLUE · 사람 검수

자세한 안내

논문 작업대

논문 PDF는 RED 논문 파일로 올리면 텍스트 추출이나 AI 검토가 끝나기 전에 쪽 단위로 열립니다. 직접 고른 편집, PC 없이 붙이는 외부 모델 응답, 접힌 AI 검토 · 선택 사항의 로컬 AI는 서로 다른 경로입니다. BLUE 파일과 사람 검수는 그 경로와 따로 둡니다.

RED 논문 파일에 PDF를 올리면 원본 쪽 보기 · 직접 편집에서 문단을 눌러 전체 문단을 고칠 수 있습니다. 글자를 드래그하면 부분 편집도 가능합니다. Before를 확인하고 After를 적은 뒤 편집 반영합니다. 변경 전·후와 위치, 사람 작성 출처는 자동으로 기록되며 모델을 호출하지 않습니다.

문단 편집은 원래 글꼴과 크기를 활용해 줄을 다시 나누고 뒤따르는 본문을 밀어냅니다. 본문이 넘치면 원래 쪽 뒤에 이어지는 쪽이 생길 수 있습니다. 생성본의 이전·다음으로 이어지는 쪽까지 확인하세요. 현재는 한 단의 본문 흐름을 중심으로 지원하며, 임의 표·그림·수식의 일반적인 재배치는 보장하지 않습니다. 이어지는 쪽에는 원래 머리말·꼬리말 글자를 사용하지만 고정 출판사 로고는 반복하지 않습니다. 수정한 쪽을 재저장할 때 미세한 색상 변환이 있을 수 있습니다.

이전 쪽, 다음 쪽, 축소, 확대로 원본 한 쪽을 봅니다. 선택 상자는 편집 반영과 선택 취소가 있고, After는 4000자까지입니다. 편집 목록에서는 이동, 켜기/끄기, After 수정, 삭제를 할 수 있습니다. 실행 취소와 다시 실행은 그 목록의 조작입니다. 편집 코어가 없으면 쪽 보기와 원본 다운로드는 남고, 편집은 저장되지 않으며 성공으로 표시하지 않습니다.

외부 모델 (PC 없음)

PC의 companion 없이 외부 모델을 쓰려면 원문과 과제 프롬프트 복사 또는 프롬프트 TXT 내려받기로 과제를 복사해 그 모델에 직접 붙입니다. 응답은 붙여넣은 응답에 넣고 변경 찾기를 누릅니다. 한 곳만 이 변경을 가져오기로 고릅니다. 여러 곳이면 위치 하나를 고르고 고른 위치로 확정한 다음에만 가져옵니다. 선택한 변경 가져오기는 고른 변경만 편집 목록에 올립니다. 이 가져오기는 검증된 RED 실행이 아니며, 앱이 모델을 호출하거나 응답을 자동 적용하지 않습니다. 로컬 AI는 AI 검토 · 선택 사항을 연 뒤 전송 동의와 선택 harness로 전체 검토가 있을 때만 실행됩니다.

구역 이름은 외부 모델 응답 가져오기입니다. 복사한 과제를 외부 모델에 직접 붙여넣고, 응답을 가져온 뒤 위치를 확인합니다. 원문에 없는 변경과, 위치를 모두 표시할 수 없는 변경은 보내지 않습니다. 모델 이름 칸은 검증되지 않은 표시입니다. 고른 변경은 편집 목록에 오른 뒤에야 생성할 수 있습니다.

생성본, 오래된 마지막 파일, 경고

현재 편집으로 생성이 끝나면 After 칸과 현재 생성본 다운로드는 그 파일 바이트를 보여 줍니다. 원본 파일은 바뀌지 않고 원본 다운로드로 따로 받습니다. 생성 뒤에 편집이 바뀌면 라벨은 마지막 생성본 · 현재 편집과 다름, 버튼은 마지막 생성본 다운로드가 됩니다. 그 파일은 현재 편집의 결과가 아닙니다. 옆에 붙는 경고는 진단이며 레이아웃이 맞다는 인증이 아닙니다. 회전된 쪽은 볼 수 있으나 좌표 편집으로 넣지 않고, 스타일이 섞인 PDF를 두루 고치는 경로도 아닙니다. 브라우저 PDF 모듈이 없으면 생성하지 않았다고 표시하고 성공으로 적지 않습니다.

미리보기는 받은 PDF 바이트를 그립니다. 해시가 맞지 않거나 생성이 실패하면 이전의 실제 파일이 있으면 그대로 두고 성공으로 보고하지 않습니다. 편집이 바뀐 뒤의 파일은 마지막 생성본 · 현재 편집과 다름입니다. 경고 문구가 나와도 배치·줄바꿈·과학적 수치를 인증하지 않습니다. 회전된 쪽과 혼합 스타일 전체를 편집하는 범용 PDF 편집으로 쓰지 않습니다.

12시간 비공개 초안

초안은 기본으로 저장되지 않습니다. 이 브라우저에 12시간 초안 보관을 켜고 초안 저장할 때만 편집 기록을 남깁니다. 그 기록에는 원본 PDF와 토큰을 넣지 않습니다. 원본 PDF를 이 브라우저에 남기려면 별도 체크 원본 PDF도 이 브라우저에 12시간 보관이 필요하며, Blob 저장소에만 두고 서버로 올리지 않습니다. 초안 삭제로 지웁니다.

초안 체크를 끄면 편집 기록은 조용히 남지 않습니다. 저장은 초안 저장, 같은 파일 해시가 있을 때의 복구는 초안 복구, 삭제는 초안 삭제입니다. 페이지를 열었다고 초안이 자동으로 돌아오지는 않습니다. 원본 PDF 체크는 편집 초안과 별개이며, 업로드되지 않습니다. 파일 바이트·토큰·아주 긴 문자열이 들어 있는 초안 봉투는 받지 않습니다.

1. 준비물과 설치

무엇이 언제 필요한가
항목필요한 때
Python 3.10 이상companion 기본 기능(PDF 사전분석, PDF 한 줄 편집 내보내기, 모델 실행 중계). PATH에서 찾을 수 있어야 합니다.
Python 3.11 이상선택 기능 그림 한 곳 교체만. .venv가 3.11 이상으로 만들어져 있어야 합니다.
Node 24 이상긴 After 줄바꿈 재배치 엔진을 직접 설정한 경우에만. 기본 설치에는 필요 없습니다.
Codex CLI 또는 Claude Code앱의 기본 실행기로 모델을 부를 때만. 하나만 있어도 됩니다. PDF 사전분석·내보내기·그림 교체에는 필요 없습니다.

CLI 설치와 로그인

  • Codex CLI: 공식 Codex CLI 문서의 설치 방법을 따릅니다. codex login으로 ChatGPT 계정 로그인 후 codex login status로 확인합니다(인증 문서). 앱은 ChatGPT 로그인만 쓰며 API 키로 자동 전환하지 않습니다.
  • Claude Code: 공식 설치 문서의 Windows 네이티브(또는 winget) 설치를 따릅니다. claude --version으로 확인하고 claude를 실행해 브라우저 로그인으로 내 구독 계정에 연결합니다. 앱은 API 인증·외부 provider 경로를 거부합니다.

로그인이 되어 있어도 특정 모델이나 effort를 계정에서 쓸 수 있다는 보장은 없습니다. 지원되지 않으면 실행이 실패하며 다른 모델이나 유료 API로 자동 대체하지 않습니다. 이 안내는 모델을 추천하지 않습니다.

2. 소스 받기와 첫 실행

companion은 모델 실행, PDF 사전분석, PDF 편집·그림 교체 내보내기에만 필요합니다. 브라우저만으로 쓰는 수동 JSON 교환이나 검수만 한다면 이 장을 건너뜁니다. 팀 저장소의 main 브랜치에는 tools/workbench가 없으므로 새로 받을 때는 Workbench 브랜치를 지정합니다. 이미 설치해 쓰던 Workbench 폴더가 있으면 다시 받거나 git pull할 필요 없이 그 폴더를 그대로 쓰고, 원래 폴더를 지우거나 바꾸지 않습니다. 스크립트는 실행 전에 직접 읽어 보세요.

git clone https://github.com/Shinick-Han/falsify-workbench.git
cd falsify-workbench
powershell -NoProfile -ExecutionPolicy Bypass -File .\start-companion.ps1

이 안내의 다른 명령에 나오는 cd tools/workbench는 저장소 루트(Falsify) 기준이며, 이미 tools/workbench 안에 있다면 cd 줄은 건너뜁니다. Windows PowerShell 5.1과 PowerShell 7에서는 연결 · 터미널 열기가 브라우저의 열기 허용과 Yes/No 로컬 승인을 거친 뒤 companion을 백그라운드로 띄웁니다. 기본 버튼은 No입니다. macOS는 브라우저의 프로토콜 허용과, 승인 창이 실제로 뜰 때만 그 창의 승인을 사용합니다. 창이 없으면 승인으로 보지 않고 아래 수동 실행의 토큰을 붙입니다. 이 안내는 macOS 화면을 실행해 인증한 기록이 아닙니다.

  • 보이는 PowerShell 창에서 실행됩니다. 첫 실행은 이 폴더에 .venv를 만들고 고정 버전 의존성을 PyPI에서 설치합니다. 이후에는 요구사항이 바뀔 때만 다시 설치합니다.
  • 시작 전에 PATH에서 찾은 codex / claude를 알려 줍니다(실행하지는 않음). 이어서 페어링 토큰을 출력합니다.
  • 실행 정책 옵션은 이 프로세스에만 적용되며 전역 정책을 바꾸지 않습니다. -NoInstall은 pip를 건너뛰고, -NoPdf는 새 환경에서 PDF 편집 의존성 설치를 건너뜁니다.

선택: 한 번 등록하는 클릭 실행 링크

앱의 연결 · 터미널 열기 버튼은 이 등록이 있어야 동작합니다. 현재 사용자(HKCU)에만 falsify://를 등록하고 관리자 권한, 시작 프로그램, 서비스를 만들지 않습니다.

cd tools/workbench
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-connection.ps1 -WhatIf
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-connection.ps1

등록 후에는 이 폴더를 옮기거나 이름을 바꾸지 마세요. 옮겼다면 uninstall-connection.ps1로 지우고 새 위치에서 다시 등록합니다. 링크는 포트만 전달하며 토큰은 절대 링크에 담기지 않습니다.

macOS / Linux

cd tools/workbench
python3 -m venv .venv
.venv/bin/python -m pip install -r app/local/requirements.txt
.venv/bin/python app/local/server.py --web-origin https://shinick-han.github.io

3. 연결 방식 세 가지

공개 페이지 + 토큰 연결
공개 Workbench에서 로컬 실행 연결 패널을 엽니다. 터미널의 토큰 한 줄을 페어링 토큰에 붙여넣고 토큰으로 연결. 브라우저가 로컬 네트워크 접근을 물으면 이 사이트에만 허용합니다. 연결은 기능 확인만 하며 모델을 실행하지 않습니다. 포트를 바꿨다면 수동 실행 · 포트 변경 · 연결 문제에서 같은 번호로 맞춥니다.
로컬 작업대 (토큰 불필요)
한 번 start-companion.ps1로 의존성이 설치된 뒤, tools/workbench 폴더에서 .\.venv\Scripts\python.exe app/local/server.py를 --web-origin 없이 실행하고, 출력된 http://127.0.0.1:<포트>/를 엽니다. 같은 origin 세션이라 페어링이 필요 없습니다. 기록은 공개 페이지와 따로 저장됩니다.
수동 JSON 교환 (연결 없음)
RED와 BLUE의 수동 JSON 교환 (로컬 연결 없이)에서 요청 JSON을 저장해 다른 곳에서 처리하고, 응답 JSON을 붙여넣습니다. 앱은 인용·위치·리비전은 확인하지만 실제로 모델이 실행됐는지는 검증하지 않습니다.

Windows PowerShell 5.1·7과 macOS의 승인·다시 연결

공개 페이지의 연결 · 터미널 열기는 설치 여부를 브라우저가 알려주지 않습니다. Windows에서는 브라우저가 PowerShell을 열지 물은 뒤, 고정 출처 https://shinick-han.github.io에 대한 Yes/No 창이 이어집니다. Yes 다음에 companion이 Windows PowerShell 5.1 또는 PowerShell 7에서 백그라운드로 실행됩니다. macOS에서는 브라우저 프로토콜 허용과, 네이티브 승인 창이 있을 때의 승인이 둘 다 필요합니다. 승인 창이 없으면 스크립트는 멈추고 수동 토큰을 안내하며, 창이 없다는 사실을 승인으로 바꾸지 않습니다.

승인이 끝나면 같은 탭은 최대 12시간 동안 연결 상태만 다시 확인합니다. 새로고침은 모델을 실행하거나 동의를 기록하지 않습니다. 연결 해제는 그 다시 연결 자격을 취소합니다. 승인 창이 없거나 취소하면 start-companion.ps1(macOS·Linux는 수동 server.py)가 출력하는 프로세스 토큰을 페어링 토큰에 붙여 토큰으로 연결합니다. 그 토큰은 링크에 넣지 않고 탭 메모리에만 두며, 새로고침하면 다시 붙여넣습니다. 로컬 작업대 주소로 열었으면 토큰이 필요 없습니다.

4. RED 자세히

쪽 단위 직접 편집과 외부 응답 가져오기는 이 장의 harness를 실행하지 않습니다. 로컬 AI는 화면의 AI 검토 · 선택 사항을 열었을 때만 선택입니다. 전송 동의와 실험용 사본 동의가 화면에 함께 있으면 그 체크를 각각 따르고, 화면이 하나의 동의만 보여 주면 그 컨트롤만 사용합니다.

RED는 입력 문서에서 해석을 왜곡하는 변경 후보를 모델에게 제안받고, 사람이 고른 것만 실험용 사본에 반영합니다.

  1. 입력: RED 논문 파일에 PDF, DOCX, ODT, HTML, TXT/MD/LaTeX/CSV 등을 올립니다(최대 25MiB). 추출은 브라우저에서 합니다. 스캔 PDF는 먼저 OCR하고, DOC·HWP·RTF는 PDF/DOCX/TXT로 변환합니다. 추출 결과 확인의 미리보기 선택은 입력 범위를 줄이지 않습니다.
  2. 선택 사전분석: PDF라면 연결 후 PDF 사전분석을 누를 수 있습니다. 모델을 부르지 않고 쪽·객체 수와 텍스트 배치 상태만 참고용으로 보여 줍니다. 편집 허가나 품질 판정이 아닙니다.
  3. 설정: 공격 단계에서 L1 · 명시적 모순, L2 · 필요한 조건 누락, L3 · 근거 없는 해석 중 하나를 고릅니다. Harness 선택 아래 CLI(Harness 지정값, Codex CLI, Claude Code CLI), 모델 ID, effort(low/medium/high)를 고릅니다. 모델 목록은 입력 제안일 뿐입니다.
  4. 예산: 고급 설정 · 최대 모델 호출(1–32)과 harness의 호출 상한 중 작은 값이 실제 상한입니다. 긴 추출문은 여러 묶음으로 나뉘어 전달되며, 전체를 전달할 예산이 모자라면 모델을 부르기 전에 시작하지 않습니다.
  5. 실행: 전체 추출 텍스트 전송 동의를 체크하고 실행. 검토 취소는 결과를 버립니다. 이미 시작된 CLI 호출은 최대 180초까지 이어질 수 있습니다.
  6. 후보 선택: 결과 · 후보 선택과 사본에서 각 후보의 Before(원본 인용)와 After를 읽습니다. 처음에는 모두 미선택이며, After는 직접 고칠 수 있습니다. After를 바꾸면 이전 다운로드의 검증은 무효가 됩니다. 현재 기본 텍스트 경로에서는 Before에 있는 숫자 토큰, 대괄호 인용([12] 등), URL을 After에서 그대로 유지해야 하며, 바꾸면 "이번 범위에서는 수치·대괄호 인용·URL을 변경할 수 없습니다."로 거부됩니다.
  7. 저장: 실험용 사본 동의 후 보존 검사 후 완성본 다운로드. 검사에 실패하면 다운로드가 막힙니다. 변경 계획 JSON 저장은 변경 근거를 따로 남기며 BLUE에 넣지 않습니다. 계획은 검수에서만 대조합니다. PDF는 다운로드한 사본 미리보기로 받은 바이트를 다시 확인해 그려 볼 수 있습니다(화면 확인용).

유효한 모델 응답은 자동 기록됩니다. 고른 후보·편집 After는 완성본 다운로드나 RED 실행 결과 기록으로 저장됩니다. 근거 인용은 앱이 원문과 다시 대조합니다. 모델이 유보하거나 거절하면 후보를 강제로 만들거나 자동 재시도하지 않습니다.

이 제한은 숫자·대괄호·URL 문자열을 정규식으로 비교하는 좁은 검사입니다. 저자명이나 다른 서지 표기 변경을 의미적으로 막지 않으며, 팀의 과학적 변경 규칙은 이것과 별도로 정합니다. 공격 단계 지침은 해석 왜곡만 다루며 프로젝트 전체의 D1·D2 설계를 구현한 것이 아닙니다.

5. PDF·텍스트 내보내기

  • 기본(한 줄 보존 편집): 연결된 companion이 PyMuPDF로 처리합니다. 재사용 가능한 원본 글꼴로 된 한 줄 텍스트가 원래 공간에 들어갈 때만 바꾸고, 변경 영역 밖을 비교합니다. 글리프 누락·혼합 글꼴·줄바꿈이 필요한 After는 차단합니다.
  • 줄바꿈 재배치(선택): 별도 모듈 falsify-pdf-editor를 직접 빌드·설정한 companion에서만 긴 After의 줄바꿈과 이어지는 페이지 추가를 시도합니다. 대상은 1단·회전 없음·잘림 없음인 본문 텍스트뿐입니다. 이 엔진과 검증된 WASM은 Workbench에 포함되어 있지 않으며, 사설로 패치한 WASM을 공개 저장소나 페이지에 올리지 않습니다. 설정 방법은 PDF 편집기 설정.
  • TXT류: TXT/MD/LaTeX/CSV 등은 브라우저에서 인코딩·줄끝·변경 밖 바이트를 보존해 내보냅니다. 표시 앱의 자동 줄바꿈은 검증하지 않습니다.
  • DOCX/ODT/HTML: 원래 레이아웃을 검증할 렌더러가 없어 완성본 다운로드를 막고 변경 계획만 저장합니다.

현재 편집으로 생성은 브라우저 PDF 모듈이 있을 때의 별도 경로입니다. 모듈이 없으면 생성하지 않았다고 표시하며 성공으로 적지 않습니다. PDF가 아닌 파일로는 브라우저 PDF를 만들지 않습니다. 회전된 쪽은 볼 수 있으나 좌표 편집으로 넣지 않습니다. 긴 After의 재배치는 1단·회전 없음·잘림 없음인 최상위 본문으로 한정됩니다. 회전되었거나 스타일이 섞인 PDF를 두루 편집하는 기능으로 읽지 않습니다. 줄바꿈·페이지 수와 생성 경고는 그 출력에 대한 진단일 뿐이며 레이아웃 인증, 독립 렌더링, 사람 검수, 과학적 정확도를 대신하지 않습니다.

6. 그림 한 곳 교체 (선택, PDF)

모델과 무관한 수동 실험입니다. RED 모델 성능이나 과학적 타당성 판정이 아닙니다. 이미지 의존성은 자동 설치되지 않으므로 Python 3.11 이상 .venv에서 직접 설치한 뒤 다시 시작하고 새 토큰으로 연결합니다.

cd tools/workbench
.\.venv\Scripts\python.exe -m pip install -r app/local/requirements-images.txt
powershell -NoProfile -ExecutionPolicy Bypass -File .\start-companion.ps1 -NoInstall
  1. RED에서 PDF를 올리고 그림 한 곳 교체 · 선택 사항 (PDF)을 엽니다.
  2. 그림 위치 목록 불러오기로 명시적으로 목록을 받습니다. 각 항목은 공유 리소스가 아니라 쪽과 위치입니다. 여러 곳에서 재사용되는 그림도 선택한 한 곳만 바뀝니다.
  3. 교체할 그림 한 곳을 고르고 교체 PNG (4 MiB·400만 픽셀·한 변 8192 px 이하)에 8비트 RGB 또는 완전 불투명 RGBA PNG를 올립니다. 팔레트·흑백·16비트·투명 PNG는 지원하지 않습니다.
  4. Before/After를 확인합니다. 원래 배치 상자의 크기는 고정되므로 비율이 다르면 늘어나 보입니다. 원본 상자와 같은 비율로 준비하세요.
  5. 동의 후 선택한 한 곳만 교체한 사본 만들기 → 실험용 PDF 다운로드와 교체 보고서 JSON 다운로드. 보고서는 PDF에 넣지 않는 별도 파일이며, 원본과 텍스트 후보 다운로드는 덮어쓰지 않습니다.

지원 범위는 페이지에 직접 그려진 불투명 래스터 이미지입니다. Form XObject 안·인라인 이미지, 잘림·회전·투명 마스크, 벡터 그림과 표는 지원하지 않으며 우회하지 않습니다. 입력 PDF 25 MiB, 출력 64 MiB 상한입니다. 보고서의 렌더 검사는 같은 엔진의 자체 확인이며 독립 과학 검증이 아닙니다.

7. BLUE 자세히

BLUE는 BLUE 검토 파일에 시험 파일을 직접 올립니다. 이 생성본만 BLUE로는 생성 PDF만 넘기고 편집 근거는 넣지 않습니다. 사람 판정은 검수의 평가자, 전체 검수 메모, 검수 기록 추가이거나 수동 편집 쪽의 사람 검수 추가입니다. 원격 보관은 Confluence뿐이며 팀에 공개 버튼만으로는 업로드되지 않습니다. 이어지는 화면의 이 수동 기록을 팀원 모두에게 공개합니다를 체크한 뒤 공개하고 저장을 누르면 텍스트·편집·검수 메모 JSON만 올라갑니다. 원본 PDF 바이트와 비공개 초안은 올리지 않습니다. 동의 체크가 화면에 하나뿐이면 그 체크와 저장 버튼을 따릅니다.

  • 독립 입력: BLUE 검토 파일에 수정 사본, 원본, 대조군 등 어떤 시험 파일이든 직접 고릅니다(PDF, TXT, MD, DOCX, ODT, HTML). RED 없이 써도 됩니다. RED 계획·정답·검수 기록은 모델 입력에 넣지 않습니다.
  • 텍스트만 읽음: 현재 BLUE는 추출한 텍스트만 받습니다. 그림·도표 이미지와 수식 렌더링은 보지 않습니다. 그림을 바꾼 사본에서 BLUE가 아무것도 찾지 못해도 BLUE의 품질이나 회피 성공의 증거가 아닙니다.
  • 실행: BLUE용 harness와 CLI·모델 ID·effort를 고르고(RED와 별개), 전송 동의 후 실행. 문서에 제목·저자·출처가 남아 있을 수 있습니다.
  • 긴 문서: 한 묶음이면 원문 전체를 한 번에 보냅니다. 여러 묶음(N개)이면 묶음 읽기 N회 + 재확인 대상 선택 1회 + 최종 판단 1회, 총 N+2회가 필요하며 예산이 모자라면 시작하지 않습니다. 재확인은 모델이 고른 일부 원문 구간(최대 8곳)만 다시 읽는 것이지 PDF 전체를 다시 읽는 것이 아닙니다.
  • 결과: 결과 · BLUE 지적에 지적과 원문 인용이 나옵니다. "전체 추출 텍스트 전달 완료"는 텍스트를 다 보냈다는 뜻일 뿐 정확도나 결함 전수 탐지를 뜻하지 않습니다. 유보·거절은 그대로 표시하고 자동 재시도하지 않습니다. 저장은 자동이며, 실패하면 BLUE 실행 결과 기록으로 다시 시도합니다.

8. 검수

  1. 평가할 실행에서 저장된 RED 또는 BLUE 실행을 고릅니다. 모델 원출력과 사람이 최종 선택·편집한 After는 구분되어 보입니다.
  2. 평가자, 사례 / 실험 조건을 적습니다.
  3. 판정: 근거 있는 행동, 근거 부족 / 잘못된 행동, 일부 적절, 유보 / 판단 불가. 선택으로 전반적 품질 (1–5).
  4. BLUE 기록은 지적마다 이 지적은 타당한가요?와 이유를 남길 수 있습니다. RED 공격별로 찾았는지·놓쳤는지도 별도로 판정합니다. 모르면 확인필요를 고릅니다. 판정한 항목은 이유가 필요하며, 미판정으로 남겨도 됩니다.
  5. 전체 검수 메모는 필수입니다. 검수 기록 추가는 항목별 판정과 함께 이전 평가를 덮어쓰지 않고 검수 이력에 새로 쌓습니다. 이 내용은 브라우저 저장·전체 JSON 백업에 포함됩니다.

RED 변경을 추가해서 함께 보기: BLUE 입력 파일의 SHA-256이 RED 최종 출력 해시와 일치하면 왼쪽에 원래 문장·바꾼 문장·원래 공격 의도를 보여 줍니다. 달라진 표현을 표시하고, 오른쪽에는 인용이 겹친 BLUE 지적부터 보여 줍니다. 인용 일치만으로 탐지 성공을 정하지 않습니다. 일치 기록이 없으면 다운로드 때 받은 RED 변경 계획 JSON을 직접 추가할 수 있습니다. 계획만으로 알 수 없는 공격 의도는 미기록으로 표시합니다. RED 없이 BLUE만 검수해도 됩니다.

RED를 보면서 판정하면 RED 공개 대조 · 블라인드 아님이 기록됩니다. 항목별 판정·RED 대조문은 로컬 백업과 명시적으로 팀 공유한 실험 아카이브에 보존합니다. 검수 추가 후 다시 공유해야 최신 검수가 반영됩니다. 사람 검수는 과학적 gold·팀 승인·정량 탐지율을 자동 확정하지 않으며 모델 입력에도 들어가지 않습니다.

9. Harness 등록

Harness 화면에서 역할별 실행 계약을 등록합니다. harness JSON 가져오기로 파일을 불러오거나 RED 설정 예시, BLUE 설정 예시, 로컬 코드 예시, 외부 서버 예시로 편집기를 채운 뒤 새 harness 버전 등록. 등록은 실행이 아닙니다. RED/BLUE 선택 메뉴에서 버전을 고릅니다.

  • 내용은 정렬 JSON의 SHA-256으로 고정됩니다. 같은 ID·버전이라도 내용이 다르면 별도 해시로 공존하고, 과거 실행 기록은 바뀌지 않습니다. UI에서 CLI·모델·effort를 바꾸면 새 내용 해시로 기록됩니다.
  • 기록되는 모델 표기는 요청한 ID입니다. 계정에서 실제로 어떤 버전으로 해석됐는지는 별도로 확인해야 합니다.
  • 기본 CLI(codex/claude)는 settings의 temperature나 도구 관련 설정을 적용하지 않습니다.
  • stdio는 JSON stdin/stdout 계약을 지키는 신뢰한 wrapper의 절대 경로를 씁니다. 채팅 CLI 경로만 넣어서는 동작하지 않습니다. http는 공인 HTTPS 주소만 허용합니다. 실행 시 사용자 코드 실행 동의를 따로 받습니다.
  • 별도의 키 보관·등록 기능은 없습니다. 등록한 harness JSON은 settings 같은 임의 필드까지 그대로 이 브라우저 localStorage에 저장되고 전체 기록 JSON 백업에도 들어가므로, 실수로 붙여넣은 API 키·토큰·로그인 정보가 남을 수 있습니다. JSON 어디에도 비밀값을 넣지 마세요. 앱은 비밀값을 자동으로 가려 주지 않으며, 백업 파일은 비공개로 보관합니다.

최소 예시 (Claude Code 구독, BLUE)

이미 만든 프로그램은 기존 프로그램 연결 프로필 · wrapper에서 실행 경로·인자·입력 방식·출력 위치를 지정합니다. prompt/JSON/template/임시 추출 텍스트 파일 입력, JSON 또는 단일 JSON 코드 블록 출력과 필드 매핑을 지원합니다. 샘플로 매핑을 확인하고 편집기에 harness JSON 넣기 후 직접 등록하세요. 샘플 미리보기는 실제 실행 호환성이나 과학적 판정이 아닙니다. wrapper 지원 최신 companion이 필요하며 임의 설명문 Markdown·원본 PDF 전달·AI 자동 연결은 아직 지원하지 않습니다. 자세한 계약은 저장소의 docs/harness-wrapper.md를 보세요.

{
  "schema": "falsify.harness.v1",
  "id": "my-blue",
  "name": "내 BLUE",
  "version": "1",
  "role": "blue",
  "instructions": "내부 근거와 결론의 논리적 연결을 검토한다.",
  "maxCalls": 8,
  "adapter": {"type": "claude"}
}

로컬 코드 예시 (stdio)

포함된 stdio_harness.py는 항상 정직하게 abstain하는 프로토콜 예시이며 모델이 아닙니다. 경로는 내 PC의 실제 절대 경로로 바꿉니다.

{
  "schema": "falsify.harness.v1",
  "id": "my-stdio-blue",
  "name": "내 로컬 BLUE wrapper",
  "version": "1",
  "role": "blue",
  "instructions": "입력 문서의 내부 일관성을 검토한다.",
  "maxCalls": 4,
  "adapter": {"type": "stdio", "executable": "C:/Python311/python.exe", "args": ["D:/harness/stdio_harness.py"]}
}

필드 규칙과 호출 입출력은 Harness 계약을 따릅니다.

10. 결과 기록 읽는 법

결과 기록 표는 harness 내용 해시, 역할, 모델 표기, 입력 텍스트 해시, RED 단계, 호출 예산이 같은 것끼리 묶습니다. 품질 평균은 실행마다 가장 최근 사람 평가 1건의 주관적 점수 평균이며 유보는 뺍니다. accuracy나 탐지율이 아닙니다.

  • 저장된 유효 응답만 들어갑니다. 실패한 요청은 모두 기록되지 않으므로 전수 실행·실패율 지표가 아닙니다.
  • 수동 응답과 가져온 기록은 출처 미검증으로 표시됩니다.
  • 이 Workbench 실행기는 실험 진행을 돕는 제안 도구입니다. 공식 과학 벤치마크나 팀이 승인한 실험 범위가 아니며, 대조군·반복 실행 같은 비교 설계는 별도로 정해야 합니다.

공동 기록의 비교

Confluence에서 불러온 실험은 별도의 임시 검수로 확인합니다. 새 실행으로 세거나 로컬 결과표·Harness 선택·백업에 자동 병합하지 않습니다. ID가 같은 로컬 기록도 덮어쓰지 않습니다. 기존 로컬 기록과 임시 팀 기록의 판정은 구분됩니다.

입력 해시·역할·Harness 버전·모델·난이도·예산·평가 조건이 같은 기록끼리 비교하세요. 자체 평가는 독립 검수가 아니며 점수나 버전 차이가 인과적 성능 우열을 증명하지 않습니다. 팀 전체 순위나 정답을 자동 확정하는 기능은 아닙니다.

브라우저마다 원래 로컬 기록은 따로입니다. 팀 공유한 사례는 다른 브라우저에서도 임시로 열 수 있습니다. 그곳에서 추가한 검수도 Confluence에 다시 공유해야 남습니다. 저장·열람만으로 모델이나 CLI를 실행하지 않습니다.

11. 저장·백업·개인정보

  • 기본 로컬 기록은 이 브라우저의 origin별 localStorage에 있습니다. 공개 페이지와 로컬 작업대의 기록은 서로 다릅니다. 원격 저장은 Confluence만 사용하며 직접 골라 팀 공유한 사례만 저장합니다.
  • 연결에는 본인의 Atlassian 권한을 사용합니다. 인증 중계는 최대 12시간의 암호화 연결값을 사용하며 별도의 실험 DB·파일 저장소에 기록을 보관하지 않습니다. Confluence에서 불러온 사례와 새 검수는 메모리에만 있으며 최대 12시간, 새로고침·연결 해제·닫기까지만 유지됩니다. 기존 로컬 기록·백업은 별도로 보존합니다.
  • 실험 아카이브에는 관련 논문 추출문·모델 원응답·Harness 정의·항목별 검수와 필요한 RED 대조 기록이 포함됩니다. 모두 팀에 공개하므로 비밀·개인정보·로컬 경로·논문 권리를 확인하세요. 다른 로컬 사례와 PDF 바이트는 자동 업로드하지 않습니다. 이미 내려받은 사본을 회수할 수는 없습니다.
  • 저장 기록에는 논문 추출문이 들어갑니다. 공용 PC에서는 쓰지 마세요.
  • 새로고침하면 기록하지 않은 입력·결과와 페어링 토큰이 사라집니다. 토큰은 탭 메모리에만 있습니다.
  • 옮기거나 보관하려면 결과 기록의 전체 기록 JSON 백업, 다른 곳에서 백업 JSON 병합. 가져온 실행은 출처 미검증으로 표시됩니다. 백업 파일도 논문 텍스트를 담으므로 비공개로 보관합니다.
  • 상한: harness 100개, 실행 100건, 검수 1,000건, 가져오기 4.5MB. 앱에 일괄 삭제는 없으며 사이트 데이터 삭제는 브라우저 설정에서 합니다.

12. 보안 경계

  • companion은 127.0.0.1에만 열리고 LAN에는 열리지 않습니다. 공개 페이지는 토큰과 허용 origin으로만 호출합니다.
  • 브라우저 신뢰는 origin 전체(https://shinick-han.github.io) 단위입니다. 신뢰할 때만 연결하고, 토큰을 화면 캡처나 메시지로 공유하지 마세요. companion을 끄면 토큰이 무효가 됩니다.
  • 실행하면 추출문이 내 CLI를 통해 해당 모델 제공자에게 전송됩니다. 외부 HTTPS harness는 논문을 받습니다.
  • 사용자 harness 코드는 OS 샌드박스가 아닙니다. 최소 환경과 임시 폴더에서 실행할 뿐 PC 파일·네트워크에 접근할 수 있으므로 신뢰하는 코드만 씁니다. 기본 CLI의 도구 제한도 OS 수준 격리가 아닙니다.
  • RED와 BLUE는 독립이지만, custom harness가 상태를 공유하거나 지침에 정답을 넣으면 블라인드 조건이 깨집니다. 이 경계는 운영자가 지킵니다.

13. 문제 해결

버튼이 눌리지 않음
파일 미입력, 연결 없음, 동의 미체크, harness 해시 고정 중, 다른 작업 진행 중인지 확인합니다. 작업 중에는 연결 변경도 잠깁니다.
터미널이 안 열림 / 포트 사용 중
클릭 실행 링크가 등록되지 않았거나 브라우저가 막았을 수 있습니다. 직접 start-companion.ps1을 실행합니다. 다른 프로그램이 포트를 쓰면 launcher는 그 프로세스를 끄지 않습니다. -Port 7817처럼 빈 포트를 쓰고 앱의 로컬 포트 (주소는 http://127.0.0.1 고정)도 같은 값으로 맞춥니다.
인증 거부
companion을 다시 시작하면 이전 토큰은 무효입니다. 새 터미널의 토큰을 붙여넣습니다. 브라우저 기록은 지워지지 않습니다.
CLI·모델 오류, 예산 부족
CLI가 설치·로그인됐는지, 모델 ID와 effort를 계정이 지원하는지 확인합니다. 자동 대체는 없습니다. 예산 부족이면 최대 모델 호출 (1–32)을 늘리거나 harness 상한을 확인합니다.
응답 적용 차단 (원문 불일치)
후보의 Before나 인용이 추출 원문과 정확히 일치하지 않으면 적용하지 않습니다. 다시 실행합니다.
After 거부 (수치·인용·URL 변경)
현재 기본 텍스트 경로는 Before의 숫자 토큰, 대괄호 인용, URL을 After에서 바꾸는 것을 거부합니다. After의 그 부분을 Before와 같게 되돌립니다. 이 검사를 우회하는 방법은 없으며, 모델의 유보·거절도 재시도로 넘기지 않습니다.
PDF 다운로드 차단
글꼴·글리프 문제, 기본 편집기에서 After가 원래 줄 공간을 넘는 경우, 재배치 대상이 아닌 텍스트(다단·회전·잘림)인 경우입니다. After를 줄이거나 재배치 엔진을 설정합니다.
그림 교체 실패
Form 내부·인라인 그림은 목록에서 지원 불가입니다. 교체 결과가 원본과 같아 선택 영역이 바뀌지 않으면(no-op) 실패로 처리합니다.
저장 공간 부족
기존 기록은 덮어쓰지 않습니다. 전체 기록 JSON 백업 후 공간을 확보하고 다시 기록합니다.
유보·거절
모델의 유보나 거절은 그대로 결과입니다. 앱은 우회하거나 강제로 재시도하지 않습니다.

14. 형식과 한계

생성 경고, 같은 엔진의 자체검사, 모델 출력, 사람 메모는 레이아웃 인증이나 과학적 정확도·gold·도메인 승인이 아닙니다. 선택적 로컬 AI와 구형 PDF 내보내기·그림 교체만 내 PC companion이 필요합니다. Windows PowerShell 5.1·7과 macOS의 로컬 승인·다시 연결은 연결 안내에 있습니다.

입력 형식과 받을 수 있는 결과
입력RED 다운로드BLUE 입력
PDF실험용 PDF (companion 필요)가능 (텍스트만)
TXT · MD · LaTeX · CSV · TSV · RST바이트 보존 텍스트 파일TXT · MD 가능
DOCX · ODT · HTML차단, 변경 계획 JSON만가능 (텍스트만)
PNG (그림 교체용)교체 PDF + 별도 보고서 JSON해당 없음

Word 형식으로 내보내는 기능은 없습니다. 화면의 상태는 두 종류로 읽습니다. 경고·사용 불가(예: 사전분석 사용 불가, 독립 검사 미실행, 구버전 companion)는 그 기능만 쓸 수 없다는 뜻이고 다른 기능은 계속 쓸 수 있습니다. 확정 실패(보존 검사 실패, 해시 불일치, 원문 불일치)는 결과 파일을 내주지 않습니다.

15. 짧은 실습 예시

RED만 쓰기

  1. 직접 만든 짧은 시험용 TXT를 RED 논문 파일에 올립니다.
  2. L1 · 명시적 모순, Codex CLI를 고르고 동의 후 실행.
  3. 후보 하나만 체크하고 After를 다듬은 뒤 보존 검사 후 완성본 다운로드와 변경 계획 JSON 저장.

BLUE만 쓰기 (다른 harness)

  1. Harness에서 위 stdio 예시를 경로만 고쳐 등록합니다.
  2. BLUE에서 그 harness를 고르고 아무 시험 PDF를 BLUE 검토 파일에 올린 뒤, 코드 실행 동의와 함께 실행.
  3. 예시 wrapper는 abstain하므로 결과는 유보입니다. 이는 정상이며 탐지 실패가 아닙니다. 자기 모델 pipeline으로 바꿔 씁니다.

이어서 쓰기 (선택)

RED 사본을 내려받은 뒤 이 사본으로 BLUE 실행을 쓰거나 BLUE에 그 파일을 직접 올립니다. 이후 검수에서 BLUE 실행을 고르면 출력 해시 일치로 변경 위치를 대조할 수 있습니다. 판정은 사람이 합니다.

16. 기술 문서