MultiAgentCrossReview의 사용자 관리 상태를 옮기는 버튼형 PowerShell 동기화 도구입니다.
이 저장소는 공개 MIT 도구 저장소입니다. 실제 검토 기록, 로컬 설정, 프로젝트 경로, 원문 세션, 토큰, 머신별 설정은 저장하지 않습니다.
WorkbenchStateSync는 공개 MultiAgentCrossReview 프레임워크 저장소에 두면 안 되는 가변 상태를 복사합니다.
포함:
UserSettings/**/*.md
Projects/<name>/RULES.md
Reviews/<review-id>/**
제외:
UserSettings/README.md
Reviews/README.md
Reviews/_TEMPLATE/**
Reviews/run-review.ps1
Projects/<name>/baseline/**
Projects/<name>/edit/**
*.jsonl, *.db, *.sqlite, *.key, *.pem, *.env, *.user, *.log
Codex·Claude 원문 대화(JSONL)는 WorkbenchStateSync 대상이 아닙니다. 그것은 별도의 세션 운반 도구를 씁니다.
포함/제외 규칙 전체는 STATE_MANIFEST.schema.md에, 실제 동기화되는 구조의 구체 예시는 examples/workbench-state/에 있습니다.
| 저장소 | 역할 |
|---|---|
MultiAgentCrossReview |
공개 프레임워크: 프로세스 문서, 템플릿, 검토 러너, 예시, 패키지 사본 |
MultiAgentWorkbenchStateSync |
공개 동기화 도구: 이식 가능한 Start/Finish 래퍼와 복사 규칙 |
| 사용자 상태 저장소 | 실제 UserSettings/, Projects/<name>/RULES.md, Reviews/<review-id>/ 기록을 두는 사용자 지정 저장소(보통 비공개) |
새 머신에서는 초기화 스크립트 하나로 상태 저장소 clone, 로컬 설정, 상태 materialize, 선택적 baseline 갱신, 머신별 바로가기 생성을 처리합니다.
.\Launchers\Initialize-NewMachine.ps1 `
-WorkbenchRoot 'C:\Path\To\MultiAgentCrossReview' `
-StateRepoUrl 'https://github.com/<you>/<your-state-repo>.git' `
-StateRepoRoot 'D:\State\MultiAgentWorkbenchState'이미 존재하는 self-contained Vault 안에서 실행할 때는 StateRepoRoot가 그 Vault 자체로 기본 설정되므로
다음처럼 실행할 수 있습니다.
.\Launchers\Initialize-NewMachine.ps1 `
-WorkbenchRoot 'C:\Path\To\MultiAgentCrossReview'이 명령이 만드는 workbenchstatesync.config.psd1과 Launchers\Shortcuts\*.lnk는 머신별 절대경로를
포함하므로 Git에서 제외됩니다.
먼저 상태 저장소를 clone하거나 생성합니다.
git clone https://github.com/<you>/<your-state-repo>.git D:\State\MultiAgentWorkbenchState예시 config를 복사합니다.
Copy-Item .\Launchers\workbenchstatesync.config.example.psd1 .\Launchers\workbenchstatesync.config.psd1workbenchstatesync.config.psd1을 편집합니다.
@{
VaultRoot = 'C:\Path\To\MultiAgentWorkbenchStateVault'
WorktreeRoot = 'C:\Path\To\MultiAgentCrossReview'
}VaultRoot는 상태 저장소의 로컬 clone 경로, WorktreeRoot는 로컬 MultiAgentCrossReview 워크벤치입니다. WorktreeRoot가 비어 있으면 현재 디렉터리를 씁니다.
MultiAgentCrossReview의 Packages/WorkbenchStateSync 어댑터를 사용하는 경우에는 등록된 ToolRoot와
현재 워크벤치 경로를 실행 때 주입하므로 Vault 쪽 config가 없어도 됩니다.
상태를 워크벤치로 가져오기(pull):
.\Launchers\Start.ps1상태를 상태 저장소로 되돌려 보내고 커밋·푸시:
.\Launchers\Finish.ps1유용한 변형:
.\Launchers\Start.ps1 -DryRun
.\Launchers\Finish.ps1 -DryRun
.\Launchers\Start.ps1 -Force
.\Launchers\Finish.ps1 -Force
.\Launchers\Finish.ps1 -SkipGitPush
.\Launchers\Finish.ps1 -CommitMessage 'workbench state: update desktop'저수준 복사 모드:
.\Launchers\workbenchstatesync.ps1 -Direction Pull
.\Launchers\workbenchstatesync.ps1 -Direction Pushexamples/workbench-state/에 정제된 상태 저장소 형태가 있습니다. 지어낸 예시가 아니라 실제로 진행된 교차 검토 세션(2026-07-03_MathUnitTypeDesign — Math·단위·좌표 자료형 설계)을 담아, WorkbenchStateSync가 옮기는 상태의 형태와 실제 검토 내용을 함께 보여줍니다.
examples/workbench-state/
UserSettings/preferences.example.md
Projects/MultiAgentCrossReview/RULES.md
Reviews/2026-07-03_MathUnitTypeDesign/
README.md
Claud/REVIEW.md
Claud/artifacts/*.h
Codex/REVIEW.md
DECISION.md
이 예시가 보여주는 것은 WorkbenchStateSync가 옮기는 데이터입니다: 사용자 설정, 프로젝트별 규칙, 실제 검토 기록. 이 파일들의 실제 사본은 공개 프레임워크 저장소가 아니라 사용자 상태 저장소에 둡니다.
WorkbenchStateSync는 내용이 다른 대상 파일을 조용히 덮어쓰지 않습니다. 다만 "다르다"만으로는
충돌인지 한쪽이 뒤처진 것인지 알 수 없습니다. 그래서 마지막으로 동기화된 내용의 해시를
머신 로컬(%LOCALAPPDATA%\WorkbenchStateSync\, -BaselineStorePath로 변경 가능)에 기준점으로
기록합니다. 이 기록은 운반 대상이 아닙니다.
| 상황 | 동작 |
|---|---|
| 양쪽 내용 동일 | unchanged. 그 해시를 새 기준점으로 기록 |
| 목적지 = 기준점, 출발지만 앞섬 | fast-forward. 그대로 갱신하고 백업을 만들지 않음 |
| 출발지 = 기준점, 목적지가 앞섬 | 덮지 않고 중단. 반대 방향을 먼저 동기화하라고 경고 |
| 양쪽 다 기준점에서 벗어남 | 진짜 충돌. .bak-* 백업 후 -Force 없이는 건너뜀 |
| 기준점 없음(첫 동기화) | Push는 출발지 우선, Pull은 로컬 보호. 어느 쪽이든 백업을 남김 |
기준점이 없던 시절에는 정상적인 로컬 편집도 충돌로 보였기 때문에 Finish가 Push를 항상
-Force로 돌렸고, 그 대가로 반대편이 올린 최신본을 조용히 덮어쓰는 경로가 있었습니다.
이제 -Force는 사용자가 명시할 때만 걸립니다.
Push 모드는 흔한 토큰 형태의 시크릿을 스캔합니다. 일치한 값은 출력하지 않습니다.
.bak-*는 충돌 증거이지만 동기화·커밋 대상은 아닙니다. 정식 이력은 상태 저장소의 git
이력이므로, 필요 없어진 백업은 사용자가 검토 후 정리하며 도구가 자동으로 삭제하지 않습니다.
MIT.