fix: 작업실 채팅의 scad→STL 변환을 끝까지 신뢰성 있게 만듦
하나의 요청("scad를 STL로 만들어줘")을 실제로 안정적으로 처리하기까지
여러 겹의 문제가 있었음 — 전부 실측(ws_ 세션 실제 호출)으로 확인하고 고침.
1. 진짜 원인: build-tools.ts에 stl_cad의 완전히 별개인 낡은 하드코딩
스키마 사본이 있어서, stl-cad.ts의 jsonSchema를 아무리 고쳐도 모델에게
전달 안 되고 있었음(registry.ts 등록과 별개로 이 파일도 갱신해야 함).
2. 액션 enum(stl_cad의 action="compile") 선택 자체가 경량모델에 어려운
것으로 3연속 실측 확인 — 전용 단일목적 도구 scad_to_stl 신설(scad_path/
output_path/part만 받음, 선택지 없앰). tool-scope.ts에 게이트 추가.
3. python_eval의 subprocess 차단 메시지에 대안 도구 힌트 추가 — 처음엔
워드바운더리(\b) 정규식이 pattern.source 문자열 자체와 안 맞는 버그로
한 번도 안 붙었던 것도 같이 고침.
4. hasStlCadKeyword가 짧은 재시도("다시 시도해봐")에서 원래 요청이 2턴
윈도우 밖으로 밀려나며 도구가 사라지는 문제 — 직전 어시스턴트 답변도
같이 보게 함(lastAssistantMsg를 tool-scope.ts까지 스레딩).
5. AUTO-RECOVER가 scad_to_stl의 정상 결과("200.0×110.0×277.5 mm", 방금
만든 파일 실측치)를 "검증 안 된 스펙 주장"으로 오판해 웹서치를 강제
재프롬프트하던 것 — retry-decisions.ts의 GROUNDING_TOOL_PATTERN에 추가.
이 패턴이 "검색결과 읽는 법" 안내 트리거와 공유돼있어서, CAD 결과에
그 안내가 붙어 모델이 엉뚱하게 답하는 부작용도 같이 분리해서 막음.
6. 워크숍 세션 컨텍스트(handle-chat.ts workshopProjectCtx) 확장: 활성
프로젝트 안 scad 파일이 하나뿐이면 되묻지 않고 자동 사용, STL
저장경로는 원본 scad 옆 print/ 서브폴더로 유도(CAD/print=인쇄용,
CAD/reference=참고용 관례 유지).
7. workshop-app.html: 채팅으로 새 파일이 생겨도 파일탭이 이미 열려있으면
자동 새로고침 안 되던 것 수정.
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -1100,6 +1100,9 @@ async function callChat(message){
|
||||
}finally{btn.disabled=false;btn.textContent='전송';}
|
||||
// 채팅으로 데이터가 바뀌었을 수 있으니(workshop_project 도구 호출) 대시보드를 새로고침한다.
|
||||
await loadWorkshopData();
|
||||
// 09-22: 채팅으로 scad_to_stl 등 파일도구를 불러 새 파일이 생겨도 파일탭이 이미 열려있으면
|
||||
// 안 새로고침되던 문제(사용자 신고: "저장되었는데 보이지 않네") — 탭 전환 없이도 갱신.
|
||||
if(document.getElementById('pane-files').classList.contains('active'))loadFiles();
|
||||
}
|
||||
|
||||
async function clearChat(){
|
||||
|
||||
Reference in New Issue
Block a user