Repository navigation
remote score 라벨 점수가 한국어 이슈에서 라벨을 거의 고르지 못한다 #561
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
요약
issueops remote score --judge none은 이슈를 발행하기 전에 라벨을 고르는 결정론적 점수기입니다. 이 저장소에서 라벨이 하나만 붙은 이슈 229개로 측정하니, 기본 threshold 0.70에서 224개가 라벨을 하나도 선택받지 못했고 정답 라벨이 선택된 이슈는 4개뿐이었습니다. 그래서 issueops-create-issue 단계는 매번 라벨 판단을 사람이나 별도 에이전트에게 넘기게 됩니다.
재현 절차
gh issue list --state all --limit 1000 --json number,title,body,labels로 이슈를 받고, 라벨이 정확히 하나인 이슈만 남깁니다.- 제목 앞의
[bug]같은 태그와 본문의#번호·이슈 URL을 지워 정답이 새지 않게 합니다. - 이슈마다
gh label list의 이름·설명을label_candidates로 넣은 요청 파일을 만들고issueops remote score --input <파일> --judge none --json을 실행합니다. selected_labels를 이슈의 실제 라벨과 비교합니다.
기대 동작과 실제 동작
- 기대 동작: 본문에 유형 근거가 뚜렷하면 해당 라벨 하나가 threshold를 넘어 선택됩니다. 근거가 약하거나 엇갈리면 아무 라벨도 고르지 않고 semantic judge로 판단을 넘깁니다.
- 실제 동작: 기본 threshold에서 229개 중 224개가 라벨 0개입니다. threshold를 낮춰 가장 높은 점수의 라벨을 고르게 해도 정답은 81개(35%)로, 모든 이슈를 bug로 찍는 경우(157개, 69%)보다 낮습니다. 94개 이슈는 세 라벨 점수가 같습니다.
원인은 internal/domain/issueopsremote/issueops_remote_score_tokens.go와 issueops_remote_score.go에 있는 세 가지 규칙입니다.
- 점수가
0.65 × 라벨 설명과 겹치는 토큰 비율 + 0.35 × 유형 키워드로 계산되어, 키워드만 맞으면 점수가 최대 0.35에 그칩니다. GitHub 기본 라벨 설명은 영어("Something isn't working")라서 한국어 본문과 겹치는 토큰이 거의 없습니다. - 토큰을 띄어쓰기 단위로만 자르기 때문에 "오류가", "문서를"처럼 조사가 붙은 낱말은 키워드 "오류", "문서"와 일치하지 않습니다.
- 키워드가 하나만 맞아도 그 라벨에 만점을 줍니다. 그래서
skill,prompt같은 흔한 낱말로 documentation이 켜지고, 한 이슈에서 여러 라벨이 같은 점수를 받습니다.
완료 기준
- 번호 232부터 560까지의 단일 라벨 이슈 115개(검증 집합)에서 기본 threshold로
--judge none을 실행하면, 라벨을 고른 이슈가 50개 이상이고 고른 라벨이 정답과 같은 비율이 85% 이상입니다. 키워드와 최소 근거 규칙은 번호 232 미만 개발 집합으로 정했습니다. 검증 집합은 규칙을 확정하기 전에 한 번 측정했고, 그 뒤로 규칙을 바꾸지 않습니다. - 키워드 규칙이 없는 라벨(예:
question,wontfix), 관련 이슈 점수, 입력에score를 명시한 후보의 동작은 바뀌지 않습니다. - 실제 이슈에서 뽑은 라벨 품질 표 테스트가 선택과 기권을 고정합니다.
- CLI/MCP 응답 필드와 기본 threshold 0.70은 그대로입니다.
범위 밖: 관련 이슈 점수 개선, 외부 모델 호출 추가, 라벨 이름·설명을 저장소별로 설정하는 기능.
검증
go test ./internal/domain/issueopsremote/... -count=1
go test ./... -count=1
go build -o bin/issueops ./cmd/issueops재현 절차의 측정을 새 바이너리로 다시 실행해 검증 집합과 개발 집합(번호 1-231)의 선택 수와 정답 비율을 함께 기록합니다.
계획 검토
계획 검토: 1차 수정 요청(지적 2건) → 계획 수정 → 2차 통과(지적 3건)
진행 결과
issueops remote score --judge none이 한국어 이슈에서도 bug·enhancement·documentation 라벨을 고르도록 점수 규칙을 바꿨고, PR #562가 squash로 머지됐습니다. 단일 라벨 이슈 230개 기준으로 정답 라벨을 고른 경우가 4개에서 90개(선택 99개)로 늘었습니다.
- 계획: 세 라벨의 점수를 이슈에서 찾은 유형 근거 중 그 라벨이 차지하는 비율로 바꾸고, 근거가 2개 미만이면 기권하기로 했습니다.
- 구현: [fix] remote score 라벨 점수가 한국어 이슈에서 라벨을 고르게 한다 #562 에서 한글은 앞부분 일치, 영어는 토큰 전체 일치로 키워드를 세고, 키워드 목록을 보강했으며, 실제 이슈 발췌로 선택·기권을 고정하는 테스트를 더했습니다.
- 재작업: 첫 완료 뒤 PR CI가 옛 main의 lint 부채로 멈춰 있었습니다. 그 부채를 #563에서 고친 뒤 새 main으로 base를 맞추고 사이클을 다시 열어 새 head에서 검증과 완료를 다시 받았습니다.
- 확인: 개발 구간 83.7%, 검증 구간 96.4% 정답률을 측정했고, self-verify 27단계와 PR CI의 push·pull_request 두 이벤트가 모두 통과했습니다.
- 남은 것: 개발 구간 정답률은 기준 85%에 조금 못 미치고, 영어 키워드에 조사가 붙은 경우는 근거로 세지 않습니다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
fix(remote): score rule labels by type-evidence share so Korean issue…
docs(issueops): add execution report for issue #561
[fix] remote score 라벨 점수가 한국어 이슈에서 라벨을 고르게 한다 (#562)