needs_evidence 82건 해소 정책안 — 재제출(가)·재실행(나)·종결(다) 구분
needs_evidence 82건 해소 정책안 (CMD#42845, cowork)
- 조회: 2026-10-27 16:0x~16:3x KST. DB는 읽기 전용(
sqlite3 -readonly, Pythonmode=ro)으로만 열었다. 상태 변경·삭제·코드 수정 없음. 이 문서가 유일한 산출물이다. - 주제 제외: CF Industries, 질소비료, 호르무즈, 에너지는 다루지 않았다.
- 분류 기준 문서:
config/completion_evidence_policy.md(4697행),config/agent_completion_submission_standard.md(1162행).
1. [권고]
1순위: 82건 중 78건(95.1%)은 같은 일을 이후 done으로 끝낸 중복 건이므로 해리 확인 후 종결(다)로 처리한다. 재제출시키면 "반려를 분석하는 태스크"가 또 생겨 82건이 다시 늘어난다. 종결 대상 id 78개는 4절 표에 있다. 종결은 이 태스크가 하지 않는다 — 상태 변경은 해리 확인 후 별도 승인 건으로 한다. 기대효과: needs_evidence 82 → 4건(가 2, 나 2).
2순위: (가) 2건과 (나) 2건만 처리한다. (가) #42762, #42839는 산출물이 실제로 있어 4블록(근거파일 경로·줄번호)만 고쳐 재제출한다. (나) #42778은 소스 수정 태스크이므로 cowork가 아니라 codex로 재발행하고, #42781은 같은 목적의 기존 문서(261027_hermes_needs_evidence_prevention.md)가 이미 있어 재실행 대신 그 문서를 근거로 종결할지 해리가 정한다.
3순위: 재유입을 막는 핵심은 에이전트 프롬프트가 아니라 "자동 보강" 문구와 반려 분석 태스크 자체의 반복 발행이다. 5절에서 상위 3곳(guardian 58건, cowork 13건, analyst-macro 6건)의 수정점을 적는다. guardian은 프롬프트에 이미 4블록 규칙이 있는데도(scripts/agent_registry.py 337~349행) 58건이 쌓였다 — 프롬프트 문구를 더 늘려도 효과가 없다는 실측 근거다.
2. [현황] 집계 (실행 결과 그대로)
실행한 명령과 반환:
- sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db "SELECT status,COUNT(*) FROM bus_commands GROUP BY status;" → claimed 1, done 5, failed 1, needs_evidence 82 (4행).
- sqlite3 -readonly ... "SELECT claimed_by,COUNT(*) FROM bus_commands WHERE status='needs_evidence' GROUP BY claimed_by;" → guardian 58, cowork 13, analyst-macro 6, analyst-pm 4, ron 1 (5행, 합계 82).
- sqlite3 -readonly ... "SELECT id,claimed_by,title,result_note FROM bus_commands WHERE status='needs_evidence'" → 82행. id 범위 40276~42839, 생성 2026-09-28 13:07 ~ 2026-10-27 14:25.
- 후속 done 대조: bus_commands(done 5)와 bus_commands_archive(done 1345)를 합쳐 각 건보다 늦게 생성된 done 중 제목이 가장 비슷한 건을 찾았다.
에이전트 × 제목 유형:
| 에이전트 | 반려분석(반려·needs_evidence·failed 집계/방지안) | 미국 IG 판독 | 기타(점검·예열 등) | 합계 | 비율 |
|---|---|---|---|---|---|
| guardian | 54 | 0 | 4 | 58 | 70.7% |
| cowork | 12 | 0 | 1 | 13 | 15.9% |
| analyst-macro | 0 | 6 | 0 | 6 | 7.3% |
| analyst-pm | 0 | 4 | 0 | 4 | 4.9% |
| ron | 0 | 0 | 1 | 1 | 1.2% |
| 합계 | 66 | 10 | 6 | 82 | 100% |
제목 유형은 요청하신 run-cycle·헬스체크가 아니라 "반려 분석", "미국 IG 판독", "기타"로 나뉜다. 제목에 run-cycle/헬스체크가 들어간 needs_evidence 건은 0건이다(ron의 run-cycle·헬스체크는 오늘 #42841, #42843, #42844 모두 done). ron의 1건(#40297)은 ETF 데이터 예열이다.
원인 계열: 82건 전부 증거 게이트 반려이고 llm_infra_failure가 차단 사유인 건은 0건이다(guardian #42842 보고와 같고, 에이전트 원본 보고서 82건을 logs/agent-queue-*.log에서 다시 읽어 확인했다).
핵심 발견 — 에이전트가 4블록을 안 쓴 것이 아니다:
- 에이전트가 처음 제출한 원본 보고서 82건을 로그에서 복원해 라벨을 줄 시작 기준으로 셌다. 결론:·근거:·검증:·근거파일: 4라벨이 모두 있는 건이 81건이다(빠진 1건은 #41323, 결론: 라벨 없음).
- 그런데 DB의 result_note는 전부 "결론: 결과 확인 보류 … 차단 사유 …"로 덮여 있다. 즉 DB만 보면 4블록 미준수처럼 보이지만 실제 반려 원인은 라벨 부재가 아니라 라벨 안의 내용 결함이다.
- 내용 결함(원본 보고서 82건 기준 실측): 검증 줄에 exit code/통과 표기 없음 12건(guardian 11, cowork 1), 검증 줄에 재실행 가능한 명령 없음 33건(guardian 32, cowork 1), 근거파일에 줄번호 없음 55건(guardian 41, cowork 6, analyst-pm 4, analyst-macro 4), /tmp/ 임시 스크립트 인용 25건(guardian 17 외), 안내 문구 그대로 남은 자리표시 문장 10건(guardian 9, cowork 1).
3. 분류 기준 (가·나·다)
- (가) 산출물이 실존하고 4블록만 보완하면 되는 건: 산출 파일/스크립트가
ls로 확인되고, 반려 사유가 근거파일 경로·줄번호·검증 표기뿐인 건.config/agent_completion_submission_standard.md§0의 "근거파일 경로를 search_files/find로 직접 확인했는가"(3번) 기준. - (나) 산출물이 없어 재실행해야 하는 건: 결과 파일이 없고, 같은 목적의 후속 done도 없는 건. 코드 수정형 제목은
AGENTS.md2026-09-21 라우팅 규칙에 따라 codex로 보낸다. - (다) 이후 같은 작업이 done으로 끝난 중복 건: 이 건보다 늦게 생성된 done 중 같은 에이전트(또는 대행)가 같은 대상을 처리한 건이 있는 경우.
config/completion_evidence_policy.md가 다루는 "재제출" 대상이 아니라 종결 후보다.
(다) 판정의 한계: 제목 유사도(0.36~1.00)와 같은 날 이후 done 존재 여부로 짝을 지었다. 반려분석 54+12건은 "최신 done 집계(guardian #42842, cowork #42641)가 더 최신 숫자로 같은 일을 이미 끝냈다"는 근거로 묶었다. 개별 산출물 내용까지 1:1로 비교하지는 않았다 — 종결 전 해리가 표본 확인하길 권한다. 미국 IG 판독 10건은 매번 최신 파일을 다시 읽는 일이라 과거 판독을 재제출해도 쓸모가 없고, 같은 주제 후속 done이 있다.
분류 결과:
| 분류 | 건수 | 비율 |
|---|---|---|
| (가) 4블록만 보완 | 2 | 2.4% |
| (나) 재실행 | 2 | 2.4% |
| (다) 종결 후보(중복) | 78 | 95.1% |
| 합계 | 82 | 100% |
에이전트별 분류: guardian 가0/나0/다58, cowork 가2/나2/다9, analyst-macro 가0/나0/다6, analyst-pm 가0/나0/다4, ron 가0/나0/다1
(가)(나) 4건의 근거:
- #42762 (가): 산출물 /Users/ron/knowledge-agent/400-reports/261026_cowork_needs_evidence_76_resolution_policy.md가 실존한다(ls -la → 13337바이트, 10월 26일 19:16). 반려는 보고서가 /Users/ron/.hermes/workspace/261026_...md라는 틀린 경로를 인용했기 때문이다(execution_artifact_path_not_found). 경로를 바로잡아 재제출하면 된다.
- #42839 (가): scripts/pipeline/needs_evidence_reason_report.py(6417바이트)와 tests/test_needs_evidence_reason_report.py가 실존한다. python3 -m pytest tests/test_needs_evidence_reason_report.py -q → 6 passed. 근거파일에 경로:줄번호를 붙여 재제출하면 된다.
- #42778 (나): 소스 수정 태스크(제목 "…코드 경로 수정")를 cowork가 받았다. 같은 시각대 산출 파일이 없고 후속 done도 없다. AGENTS.md의 "scripts/*.py 직접 수정은 codex로만" 규칙 위반이므로 codex로 재발행한다.
- #42781 (나): 79건 재발 방지안 문서가 이 건 실행 시각(10-27 00:09~00:12)에 만들어지지 않았다. 다만 같은 목적의 261027_hermes_needs_evidence_prevention.md(11:46)가 이미 있다. 재실행하지 말고 그 문서로 대체·종결할지 해리가 정한다.
4. 건별 분류표 (82행)
| id | 에이전트 | 유형 | 분류 | 근거 | 제목 |
|---|---|---|---|---|---|
| 40276 | guardian | 기타 | 다 | 후속 done #40332 | agent_queue_worker.py 모델 타임아웃 패치가 실행 중인 워커에 반영됐는지 확인 |
| 40297 | ron | 기타 | 다 | 후속 done #41006 | ETF 데이터 예열 (etf_domestic_prewarming) |
| 40346 | guardian | 기타 | 다 | 후속 done #40356 | 옛 경로 mcp_health_server.py·stealth-browser 중복 기동 조회 전용 점검 |
| 40408 | analyst-macro | 미국IG판독 | 다 | 후속 done #41125 | 미국 IG 등급별 OAS(AAA/AA/A/BBB) 격차 산출 (us-ig-weekly-latest.j |
| 40518 | analyst-macro | 미국IG판독 | 다 | 후속 done #42541 | 미국 IG 회사채 OAS 최근 추이 정리 (주간 크레딧 리포트 입력용) |
| 40633 | guardian | 반려분석 | 다 | 후속 done #40690 | 지식사랑방 인사이트 생성 실패 원인 분류 (오늘 10월 2일 실패 건) |
| 40691 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | missing_next_action_section 반려 방지안 작성 (지식사랑방 인사이트 CMD#40 |
| 40825 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | 오늘 failed 4건·needs_evidence 7건 반려 사유 분류 (4블록 미비 vs 인프라 실 |
| 40842 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 8건 반려 사유별 분류와 에이전트별 집계 |
| 40854 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 9건·failed 3건 반려 사유 분류 |
| 40869 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | 최근 needs_evidence 반려 10건 원인 분류와 에이전트별 분포 집계 |
| 40874 | analyst-pm | 미국IG판독 | 다 | 후속 done #40875 | 미국 HY-IG OAS 격차 판단 (파일 기반 종합) |
| 40902 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 12건 반려 사유·에이전트별 분포 집계 |
| 40954 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | guardian 완료보고 반려(needs_evidence) 재발 방지안: 24시간 분류표 기반 보고 |
| 40960 | analyst-pm | 미국IG판독 | 다 | 후속 done #41301 | 미국 IG·HY 크레딧 스프레드 종합 포지션 판단 (macro-timeseries 파일 기반) |
| 40994 | guardian | 기타 | 다 | 후속 done #42383 | 지식사랑방 인사이트 생성 실패(#40990) 원인 분류 재수행 |
| 41035 | analyst-pm | 미국IG판독 | 다 | 후속 done #41848 | 미국 IG·HY 크레딧 스프레드 종합 판단 (macro 판독 결과 기반) |
| 41067 | analyst-pm | 미국IG판독 | 다 | 후속 done #42116 | 미국 IG 크레딧 스프레드 현황 종합 (BAMLC0A0CM.json 기반) |
| 41101 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | 최근 24시간 needs_evidence·failed 태스크 원인 분류 (SQL 집계) |
| 41151 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 19건 반려 사유 라벨별 집계 (ops_multiagent.db 실조회) |
| 41233 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 20건·failed 2건 원인 분류 (agent별·반려 라벨별) |
| 41274 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 21건·failed 6건 반려 사유별 집계 (bus_commands) |
| 41295 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence 22건·failed 7건 사유별 분류와 반복 원인 |
| 41316 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 23건 에이전트별·사유별 분류 집계 |
| 41323 | guardian | 기타 | 다 | 후속 done #41339 | 일요일 09:00 주간 크레딧 요약 크론(5c45c26045be) 사전 점검 재발행 |
| 41348 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | needs_evidence 25건 반려 라벨별 재발 방지안 정리 |
| 41377 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence 26건 반려사유·에이전트별 분류표 작성 (CMD#4 |
| 41385 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 27건 에이전트별·사유별 집계 (4블록 증거 포함 재발행) |
| 41387 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 28건·failed 3건 반려 사유 분류와 에이전트별 편중 확인 |
| 41420 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands 반려(needs_evidence/failed) 사유·에이전트별 분포 집계 |
| 41431 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | guardian 소유 반려 23건 제목·누락 라벨별 원인 분류 |
| 41435 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | guardian 소유 needs_evidence 반려 건의 사유 원인 분류와 failed 1건 원인 |
| 41485 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence 32건 반려 사유 집계 (읽기 전용, 범위 축소) |
| 41494 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 33건 반려 사유·담당 에이전트별 분류 |
| 41495 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | needs_evidence 34건 반려 패턴별 완료보고 개선안 작성 |
| 41498 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 35건 반려사유 분류표 작성 (SQL 실측 기반 재발행) |
| 41504 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 36건 반려 사유·에이전트별 분류 |
| 41623 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 상태 37건 원인 분류 및 에이전트별 집계 |
| 41627 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 적체 38건 반려 사유·에이전트별 집계표 파일 작성 |
| 41628 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 적체 39건 반려 사유별·에이전트별 집계 파일 작성 (4블록 보고 재발행) |
| 41640 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence·failed 건 에이전트별 반려 사유 분포 집계 ( |
| 41715 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | needs_evidence 41건 반복 사유별 완료보고 방지안 정리 |
| 41769 | analyst-macro | 미국IG판독 | 다 | 후속 done #42055 | 미국 IG·HY OAS 최신값 및 5영업일 변화 판독 (JSON 파일 기반) |
| 41780 | analyst-macro | 미국IG판독 | 다 | 후속 done #41816 | 미국 IG·HY OAS 최신값 확인 (macro-timeseries 파일 기준) |
| 41782 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | needs_evidence 44건 반려 사유별 분류와 태스크 본문 템플릿 개선안 작성 |
| 41897 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 45건 에이전트별·사유별 분류와 반복 패턴 집계 |
| 41900 | analyst-macro | 미국IG판독 | 다 | 후속 done #42055 | 미국 IG·HY 크레딧 OAS 최신값 및 5영업일 변화 파일기반 점검 |
| 41902 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 47건 원인별 분류 (읽기 전용 집계) |
| 41911 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence·failed 누적 건 반려 사유별 분류 집계 |
| 41917 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | 반려 55건 집계 결과 기반 완료보고 4블록 미준수 방지안 작성 |
| 41992 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 50건 반려 라벨별 분포 집계 |
| 42042 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 51건 원인 분류 및 llm_infra_failure 비중 집계 |
| 42062 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 52건 반려 사유·담당 에이전트별 분류 |
| 42083 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | needs_evidence 반복 반려 사유별 정책 개선안 작성 |
| 42111 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 54건 반려 사유별 분류와 에이전트별 편중 집계 |
| 42165 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 55건 반려 사유·에이전트별 분포 집계 (산출물 파일 저장형) |
| 42167 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 56건 agent별·반려 라벨별 분포 집계 |
| 42171 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 57건 에이전트별·사유별 분류 및 반복 반려 상위 원인 식별 |
| 42219 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 58건·failed 5건 반려 사유별 분류 |
| 42256 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 반려 건 사유·에이전트별 집계 (SQL 실측) |
| 42264 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 60건 반려 사유와 에이전트별 분포 집계 |
| 42278 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 61건 에이전트·사유별 분류와 반복 반려 상위 원인 특정 |
| 42293 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 반려 62건 에이전트·사유별 분류 |
| 42307 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 63건 반려 사유 라벨별·에이전트별 집계 |
| 42310 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 64건 적체 원인별 분류 및 상위 반려 사유 집계 |
| 42314 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence 65건·failed 3건 원인 분류 집계 |
| 42316 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence 반려 사유 라벨별 건수 집계 (읽기 전용, 건수 표 |
| 42332 | guardian | 반려분석 | 다 | 후속 done #42359 | bus_commands #42127 실패 원인 분류 (orchestrator 관련 codex 태스크) |
| 42412 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 68건 에이전트·반려사유별 분포 집계 |
| 42454 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 반려 사유별 분류표 작성(읽기 전용 DB 조회) |
| 42503 | cowork | 반려분석 | 다 | 후속 done #42641(cowork 4블록 강제 방안) | 최근 24시간 needs_evidence 70건 에이전트·사유별 분류와 재발 방지안 |
| 42640 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 71건 에이전트별·사유별 분류 집계 |
| 42671 | analyst-macro | 미국IG판독 | 다 | 후속 done #42676 | 미국 IG OAS 최신값 파일 기반 정리 (BAMLC0A0CM.json 직접 파싱) |
| 42680 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 73건 반려 사유·에이전트별 분포 집계 |
| 42684 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 74건 반려 사유·에이전트별 집계 (sqlite 직접 조회) |
| 42694 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 반려 75건 라벨·에이전트별 집계 재실행 (결과 파일 저장) |
| 42762 | cowork | 반려분석 | 가 | 산출물 실존 261026_cowork_needs_evidence_76_resolution_policy.md | needs_evidence 76건 누적 해소 정책안 (반려사유별 처리 기준) |
| 42768 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | needs_evidence 적체 77건 원인별 분류 및 상위 반복 패턴 보고 |
| 42778 | cowork | 기타 | 나 | 산출물·후속 done 없음 | 상태 메시지에 '근거 섹션 미기재' 자기지시 placeholder가 들어가는 코드 경로 수정 |
| 42781 | cowork | 반려분석 | 나 | 산출물·후속 done 없음 | needs_evidence 79건 중 4블록 미준수 74건 재발 방지안 (에이전트별 완료보고 템플릿 |
| 42798 | guardian | 반려분석 | 다 | 후속 done #42842(guardian 82건 분류) | bus_commands needs_evidence 80건 반려 사유별·에이전트별 분포 실측 분류 |
| 42839 | cowork | 반려분석 | 가 | 산출물 실존 needs_evidence_reason_report.py | needs_evidence 반려사유 집계 스크립트 구현 및 pytest 검증 |
5. 상위 3개 에이전트 지시문 수정 제안 (재유입 방지)
상위 3곳: guardian 58건(70.7%), cowork 13건(15.9%), analyst-macro 6건(7.3%). 합 77건(93.9%). analyst-pm 4건은 analyst-macro와 같은 유형이라 5.3절에 같이 적는다.
5.1 공통 원인 — 지시문이 아니라 "자동 보강 문구"가 자리표시를 심는다
scripts/shared/agent_task_quality.py1016행"결론:": "결론: 수행한 일과 현재 상태를 완료형 한 문장으로 적는다.", 1048행[자동 보강: 완료보고 4블록 설명형 라벨 보충],scripts/orchestrator.py1129행·1517행이 같은 문장을 태스크 본문에 붙인다. 본문에 이 예시 문장이 있으니 에이전트가 그대로 베낀다. 원본 보고서 82건 중 10건(guardian 9, cowork 1)에 이 문장이 남아 있었다(#40276 "결론: 수행한 일과 현재 상태를 완료형 한 문장으로 적는다." 등).- 지시문 수정: 본문 자동 보강의 "결론:" 줄을 설명형 문장 대신
<완료형 한 줄을 여기에 직접 쓸 것>처럼 명백한 빈칸 표기로 바꾸고, "근거:" 줄에는 이 태스크 본문에 나온 실제 경로만 넣는다. 코드 수정 필요:agent_task_quality.py의 4블록 보강 함수(1016행 부근defaults딕셔너리),orchestrator.py1129행·1517행 부근. 코드는 codex가 맡는다.
5.2 guardian (58건, 지시문은 이미 길다)
- 사실:
scripts/agent_registry.py337~349행에 4블록 규칙이 13줄 이상 있다. 그런데 원본 보고서 58건 중 검증 줄에 재실행 가능한 명령이 없는 건 32건, 근거파일에 줄번호가 없는 건 41건,/tmp/임시 스크립트 인용 17건이다. 규칙을 안 따르는 것이 아니라 규칙이 너무 많아 반영되지 못한다. 반려를 분석하는 태스크가 54건(93%)이라는 점이 더 큰 원인이다. - 본문 지시문 수정: (1) 반려 집계 태스크는 결과표를
400-reports/에 저장하고ls -l출력 한 줄을 근거에 붙이도록 한다(이미 337~349행에 있으나 본문에는 없음). (2)/tmp에서 만든 스크립트는workspace아래로 옮겨 쓰거나 인용하지 않는다. 사례: #42062ne_agg.py, #42314tmp_ne_agg.py. (3) "라벨명 바로 뒤에 숫자 금지" 규칙(334행)은 오히려 지시문을 복잡하게 만든다 — 라벨명 대신 한글 설명으로 쓰게 하는 한 줄로 줄인다. - 프롬프트 수정 대신 권하는 것: guardian의 반려 집계 작업은
scripts/pipeline/needs_evidence_reason_report.py(#42839가 만든 재실행 스크립트, 6 passed)를 한 번 실행하게 한다. LLM이 매번 임시 스크립트를 짜는 구조를 없앤다. - 코드 수정 필요(codex):
scripts/orchestrator.py_reissue_family_key,_is_needs_evidence_reissue_loop_tripped— 키워드(needs_evidence, 반려, 집계) 단위로 같은 계열을 묶어 72시간 내 미완료 건이 있으면 신규 발행 금지. 현재는 제목이 59가지로 갈려 한 번도 걸리지 않았다(261027_cowork_needs_evidence_81_routing_proposal.md1순위와 같은 결론).
5.3 cowork (13건)
- 사실: 12건이 반려분석이고 1건이 코드 수정형(#42778)이다. cowork 지시문(
agent_registry.py296~309행)은 이미 "비코딩 완료 보고 추가 규칙"을 갖고 있다. 반려 6건은 근거파일에 줄번호가 없고, 3건은 근거파일 경로 자체가 없다. - 본문 지시문 수정: (1) "근거파일에는 반드시
경로:줄번호형식을 쓴다. 줄번호는 저장 직후grep -n으로 얻는다." (2) "산출물은/Users/ron/knowledge-agent/400-reports/YYMMDD_hermes_*.md절대경로만 인용하고, 워크스페이스 상대경로를 쓰지 않는다." 사례: #42762가/Users/ron/.hermes/workspace/261026_...md를 인용했으나 실제 파일은knowledge-agent/400-reports/아래에 있었다. (3) 제목에 수정·구현·패치가 들어가면 즉시 blocked로 올려 codex로 넘기게 한다(#42778). - 코드 수정 필요(codex):
scripts/orchestrator.pycreate_task()의 CB 재라우팅 분기에서codex_task_has_code_change_anchor판정이 cowork 대상에도 적용되는지 확인(#42778 재발 방지).
5.4 analyst-macro 6건 + analyst-pm 4건 (미국 IG·HY OAS 판독)
- 사실: 10건 중 8건은 근거파일에 줄번호가 없고
memory/macro-timeseries/...json상대경로를 인용했다(8건 중 8건이 상대경로). 10건 모두 같은 주제의 후속 done이 있다(#41125, #42541, #41301, #41848, #42116, #42055, #41816, #42676 등, 오늘 #42825 포함). 같은 주제 통과 건은 결과 경로와 exit code를 함께 적은 건이다([추정] — #42825 원문과 대조하지 않았다). - 본문 지시문 수정: (1) "근거파일에는
/Users/ron/.hermes/workspace/memory/macro-timeseries/BAMLC0A0CM.json:<줄번호> \"<원문 한 줄>\"절대경로를 쓴다." (2) "md로 저장했다면ls -la <절대경로>출력 한 줄을 근거에 그대로 붙인다."(config/completion_evidence_policy.mdv34 조항 1·2와 같다). (3) 파싱은python3 -c로 하고 그 명령과 출력값을 검증 줄에 한 줄로 쓴다. - 이 태스크 유형은 해리의 주 관심사(미국 IG 회사채·주간 크레딧)와 직결되므로 위 3개 지시를
agent_registry.py의 analyst-macro(400행~)·analyst-pm(491행~) 프롬프트에 넣는 것이 가장 효과가 크다. 코드 수정 필요(codex):scripts/agent_registry.pyAGENT_ROLE_PROMPTS.
6. [리스크]
- 자기순환: 반려 분석 태스크가 66건(80.5%)이다. 같은 일이 10월 27일 하루에만 #42820~#42837 사이 10건 failed로 반복됐다. 종결 없이 재제출만 지시하면 82건이 다시 늘어난다.
- 단일 장애점: guardian 한 곳이 70.7%이다. guardian 프롬프트와 자동 보강 문구 두 곳이 대부분을 만든다.
- 판정의 한계(미확인): (다) 78건은 제목 유사도와 후속 done 존재로 짝지었다. 일부는 숫자(81건 vs 82건)가 달라 같은 결과물이 아닐 수 있다. 종결은 되돌리기 어려우므로 해리 확인을 거친다.
- 미확인: DB result_note가 "결과 확인 보류"로 덮이는 시점·코드 경로.
scripts/agent_queue_worker.py_completion_evidence_block_note를 codex가 재현해야 한다. 원본 보고서는logs/agent-queue-*.log에서만 복원됐다. - 로그 로테이션: 원본 복원은 로그 파일이 남아 있는 동안만 가능하다(
agent-queue-guardian.log32MB).
7. [검증방법]
- 합계 검증:
python3로 (가)+(나)+(다) 합산 → 2+2+78 = 82. 82건 id 집합과 분류표 id 집합이 같다. - 종결 후 기대값:
sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db "SELECT COUNT(*) FROM bus_commands WHERE status='needs_evidence'"→ 4 이하. - 재유입 KPI:
... WHERE status='needs_evidence' AND created_at>='2026-10-28'신규 건수가 1주 뒤 7건 이하, 반려분석 제목 신규 2건 이하. - 롤백 조건: 종결 처리 후 24시간 안에 (다)로 종결한 건의 후속 done 산출물이 없다고 확인되면 그 건만 재발행한다. 키워드 계열 차단이 해리 직접 요청 태스크를 24시간 이상 막으면 차단을 원복한다.
8. codex 위임 목록 (코드는 작성하지 않음)
scripts/shared/agent_task_quality.py4블록 보강 함수(1016행defaults, 1048행) — 설명형 라벨을 빈칸 표기로 교체.scripts/orchestrator.py1129행·1517행 부근 — 같은 설명형 문장 교체.scripts/orchestrator.py_reissue_family_key,_is_needs_evidence_reissue_loop_tripped— 반려분석 키워드 계열 차단.scripts/orchestrator.pycreate_task()CB 재라우팅 분기 — cowork로 가는 소스 수정형 태스크를 codex로.scripts/agent_registry.pyAGENT_ROLE_PROMPTS— guardian 규칙 압축, cowork·analyst-macro·analyst-pm에 5절 지시 삽입.scripts/agent_queue_worker.py_completion_evidence_block_note— 결과 확인 보류 고정 문구 재현·라벨 보존.