harvil1/codeagent는 터미널에서 돌아가는 오픈소스 코딩 에이전트다. 저장소를 읽고, 여러 단계에 걸친 변경을 계획하고, 파일을 고치며, 명령과 테스트를 실행하는 일을 하나의 도구 루프 안에서 반복한다. 2026년 10월 14일 커밋 e48780be는 그 루프를 다듬는 작업이다. 커밋 메시지는 "chore: 清一批卫生死角 + 几个误伤点"로, 죽은 자리와 오탐 몇 개를 정리했다는 뜻이고, 변경 통계는 추가 165줄, 삭제 88줄이다.
정리 대상은 두 갈래다. 하나는 쓰이지 않는 코드다. agent/fork_messages.py에서는 부모 에이전트의 system prompt를 넘기던 죽은 파라미터를, agent/scratchpad.py에서는 아무도 부르지 않던 설명 블록 생성 함수를 지웠다. agent/cache_monitor.py는 모듈 변수를 읽는 줄을 굳이 try/except로 감싸던 방어 코드를 걷어냈다. 다른 하나는 오탐이다. agent/team/hallucination_check.py는 검사 전에 URL을 통째로 벗겨내, 예전에는 example.com/docs/x.html에서 "com/docs/x.html"를 잘라내 오탐으로 보고하던 것을 막았다. e.g나 i.e 같은 한 글자 약어도 경로로 취급하지 않는다.
외부에서 들어온 값을 받는 자리에는 방어막이 하나씩 더해졌다. agent/skill_bundle.py는 설정 파일에서 dict 모양이 아닌 항목을 버리고, 구분자가 섞인 이름은 읽지 않는다. agent/mcp_client.py는 MCP 알림을 보낼 때 잠금을 잡고 stdin에 써서 두 프레임이 서로 섞이지 않게 했다. 깨진 inbox 파일은 .bad로 격리되고(agent/channel_inbox.py), 필드를 잃은 체크포인트 항목은 건너뛰어 복구가 중간에 멈추지 않는다(agent/checkpoint.py). 진행률 스레드는 중복으로 뜨지 않고, goal_start의 기본 예산은 CLI와 같은 설정에서 읽는다.
다만 기능 추가가 아니라 위생 작업이다. 변경 통계에 테스트 결과나 성능 수치는 없다. URL을 통째로 빼는 방식은 URL 안에 섞인 실제 경로까지 검사 대상에서 지우기 때문에, 진짜 검출이 얼마나 줄어드는지는 커밋 자료만으로 알 수 없다. 조용히 감춰진 경고가 늘어난 것인지 줄어난 것인지는 아직 판단하기 이르다. 다만 이 에이전트는 자신이 만든 파일과 설정을 다시 읽는 경로가 대부분인 만큼, 방어 코드가 늘면 운영 중 조용히 실패하는 지점이 함께 줄어든다고 보인다.