(https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6s4zol1xb18cy7pg0vjq.jpg)
더 많이 하는 방법이 아닙니다. 더 많이 하는 것이 잘못된 움직임인지 아는 방법을 말합니다.
자율 에이전트, 작업 완료, 불필요한 행동, 그리고 일이 끝난 후에 무엇이 되어야 하는지에 대한 놀랍도록 어려운 질문에 관한 대화입니다.
약 22분 분량의 읽기 시간
파트 1: 기계가 아무도 시키지 않은 일을 계속하는 것을 본 적이 있는 모든 사람을 위해
멈출 때를 모르는 세탁기를 상상해 보세요.
세탁기에 옷을 넣고, 프로그램을 선택하고, 시작 버튼을 누른 다음 다른 일을 하러 갑니다.
어느 시점에서 기계는 작동을 멈춥니다. 옷은 깨끗합니다. 물은 빠지고, 프로그램은 완료됩니다.
만약 그 기계가 같은 옷을 6시간 동안 계속 세탁한다면 어떨까요?
당신은 그것을 자율적이라고 부르지 않을 것입니다.
수리 기술자를 부를 것입니다.
이제 반대되는 기계를 상상해 보세요. 세탁 주기를 완료하고, 스스로 전원을 끄며, 10분 후에 물이 새기 시작하는지 결코 확인하지 않습니다. 다음 빨래가 도착했다는 것도 알아차리지 못합니다. 내부 논리에 따르면 이미 작업이 끝났기 때문에 새로운 문제에 대응하지도 않습니다.
그 기계 역시 그다지 인상적이지 않습니다.
그리고 이 두 기계 사이 어딘가에, 제가 자율 AI 에이전트를 구축하면서 생각하고 있는 문제가 있습니다.
에이전트는 자신의 현재 작업이 끝났다는 것을 어떻게 알까요? 리소스를 사용하는 것을 언제 멈춰야 할까요? 그리고 다시 주의를 기울여야 하는 시점은 언제일까요?
단지 텍스트 생성을 멈추는 것만이 아닙니다.
도구를 호출하는 것을 멈추는 것만이 아닙니다.
저는 더 이상 작업이 필요하지 않은 문제에 대한 작업을 언제 중단해야 하는지를 의미합니다.
그리고 다음에 무슨 일이 일어날지 알아차리는 책임감을 포기하지 않고, 그것을 그대로 내버려 두어야 할 때를 말합니다.
이것은 사람이 옆에 서서 매번 이 결정을 내려야 하는 시스템을 구축하려고 할 때까지는 간단하게 들립니다.
그러면 세탁기가 놀라울 정도로 지능적으로 보이기 시작합니다.
우리는 AI에게 많은 것을 가르치는 데 시간을 쏟았습니다.
AI 에이전트에게 소프트웨어 버그를 조사해 달라고 요청해 보세요. 파일들을 읽고, 원인을 검색하고, 코드를 수정하고, 테스트를 실행하고, 실패를 검사하며, 다시 시도합니다.
주제에 대해 연구하도록 요청해 보세요. 웹을 검색하고, 출처들을 비교하고, 참고 문헌을 따라가며, 답변을 구성합니다.
시스템을 유지 관리하도록 요청해 보세요. 상태를 확인하고, 문제를 식별하며, 어쩌면 교정 조치를 취하기도 합니다.
이것들은 유용한 기능들입니다. 이 기능들을 신뢰성 있게 만드는 데는 많은 합법적인 엔지니어링이 포함되어 있습니다.
하지만 이 작업들이 공통적으로 무엇을 가지고 있는지 주목해 보세요.
우리는 에이전트가 무언가를 성취할 수 있는지 여부를 평가하는 경향이 있습니다.
버그를 수정했나요?
테스트가 통과했나요?
답변을 찾았나요?
요청된 작업을 성공적으로 수행했나요?
이것들은 합리적인 질문들입니다. 하지만, 이것들은 구석에 또 다른 질문을 남겨둡니다:
에이전트가 추가적인 행동이 더 이상 유용하지 않다는 것을 알았을까요?
코딩 에이전트가 버그를 수정하고, 테스트를 실행하며, 깨끗한 결과를 얻었다고 상상해 보세요.
다음에는 무슨 일이 일어날까요?
합리적인 시스템이라면 관련 수용 기준(acceptance criteria)을 검증하고, 실제로 확립된 것을 보고하며, 작업을 완료해야 합니다.
비합리적인 시스템은 오래되어 보이는 세 개의 근처 파일을 리팩터링하기로 결정하거나, 더 깔끔할 수 있다는 이유로 테스트 스위트를 재작성하거나, 완전히 관련 없는 경고를 조사할 수도 있습니다.
기술적으로는 여전히 작업을 수행하고 있는 것입니다.
하지만 그 작업과 원래 목표 사이의 관계가 사라져 버렸습니다.
축하합니다. 당신의 버그 수정은 작은 소프트웨어 마이그레이션이 되었고, 당신의 오후 시간은 건물 밖으로 나가버렸습니다.
문제는 반드시 에이전트가 좋은 코드를 작성할 능력이 없다는 것이 아닙니다. 문제는 그 행동을 취해야 할 이유보다 또 다른 행동을 생성하는 능력이 더 오래 지속된다는 것입니다.
계속할 수 있는 것과 계속해야 할 이유가 있는 것은 같지 않습니다.
사람들은 일을 멈춥니다. 기계는 다른 메커니즘이 필요합니다.
인간은 여러 가지 자연적인 제약 조건을 가지고 있습니다. 우리는 피곤해지고, 배고파지고, 산만해지며, 결국 잠을 자야 합니다. 우리는 활동 사이를 이동합니다. 새로운 정보를 받습니다. 마감일, 책임 등 해야 할 다른 일들이 있습니다.
이러한 메커니즘들은 결코 완벽하지 않습니다. 사람들은 중요한 작업을 하는 대신 바탕화면을 정리하는 데 네 시간을 쓸 수 있습니다. 논의가 무의미해진 후에도 계속 논쟁할 수 있습니다. 또한, 불편해지는 것이 생겼다고 해서 너무 일찍 멈출 수도 있습니다.
인간의 중단 행동은 우리가 단순히 복사할 수 있는 해결책이 아닙니다.
자율 소프트웨어 에이전트는 다른 제약 조건들을 가지고 있습니다.
그것은 밤새도록 계속 실행될 수 있습니다. 집에 갈 필요도 없고, 저녁을 차릴 필요도, 내일 회의 전에 잠을 잘 필요도 없습니다. 아키텍처에 따라서는 아무도 대시보드를 열지 않아도 며칠 동안 검사를 수행할 수도 있습니다.
이것은 초능력처럼 들립니다.
하지만 아무것도 달성하지 못하는 데 값비싼 방식이 될 수도 있습니다.
프로세스는 계속 깨어나고, 상태를 로드하고, 모델을 호출하고, 같은 정보를 다시 읽고, 같은 결론에 도달할 수 있습니다. 반복적으로 실패하는 작업을 계속 시도할 수 있습니다. 더 나쁜 것은, 이미 작동하던 것들을 변경하기 시작할 수도 있다는 것입니다.
기계가 지속적으로 작동할 수 있다는 사실이 그것이 지속적으로 새로운 작업을 수행해야 한다는 것을 의미하지는 않습니다.
스모크 감지기는 화재가 없을 때도 연기를 감지하는 책임이 있습니다. 존재를 정당화하기 위해 화재를 일으킬 필요는 없습니다.
그 구분이 중요합니다.
모니터링 시스템은 개입해야 할 지속적인 필요 없이 지속적인 책임을 가질 수 있습니다.
그리고 저는 이 지점에서 논의가 어떤 모델이 더 똑똑한지에 대한 또 다른 토론보다 더 흥미로워진다고 생각합니다.
'완료(done)'라는 단어 뒤에는 적어도 네 가지 다른 상황들이 숨겨져 있습니다.
예를 들어, 자율 에이전트가 소프트웨어 서비스를 유지하는 책임을 맡았다고 가정해 봅시다.
문제가 감지되면, 이를 조사하고, 허용된 변경을 수행하며, 관련 검사를 실행합니다.
테스트가 통과했을 때 무엇이 되어야 할까요?
몇 가지 가능성이 있습니다.
상황 1: 작업이 완료됨.
필요한 결과가 달성되었고, 사용 가능한 증거가 수용 기준을 충족합니다. 에이전트는 결과를 계속 수정하기보다는 해당 작업을 마쳐야 합니다.
상황 2: 작업이 합리적으로 지속될 수 없음.
에이전트가 필요한 권한을 갖지 못했거나, 서비스가 사용 불가능하거나, 두 지침이 충돌하거나, 사용 가능한 도구로 필수적인 사실을 확립할 수 없는 경우입니다.
현재 시도를 중단하고, 알고 있는 것을 보존하며, 장애 요소를 설명해야 합니다. 진행할 수 없음을 성공으로 위장해서는 안 됩니다.
상황 3: 지금 당장 변경할 것이 없음.
에이전트가 관련 상태를 확인하고 개입이 필요한 조건이 없다는 것을 발견합니다.
이는 반드시 미완료된 작업이 완료되었다는 의미는 아닙니다. 이 사이클에서 정당화될 수 있는 조치가 없다는 의미입니다.
상황 4: 변경할 것은 없지만, 나중에 무언가가 바뀔 수 있음.
에이전트는 현재 검사를 마쳤습니다. 상황이 바뀌면 관련 이벤트를 관찰하고 대응할 책임은 남아 있습니다.
이들은 서로 대체 가능한 결과가 아닙니다.
완료된 소프트웨어 감사와 유휴 모니터링 사이클은 다른 것입니다. 막힌 작업과 수리할 것이 없는 건강한 시스템 역시 다릅니다.
만약 에이전트가 이 모든 것을 '완료됨(DONE)'이라는 단일 내부 상태로 표현한다면, 우리는 아마도 몇 가지 불편한 질문을 던져야 할 것입니다.
정확히 무엇이 완료된 것인가요?
작업? 현재 실행? 모니터링 사이클? 아니면 에이전트의 전체 책임인가요?
이들은 네 가지 매우 다른 약속입니다.
중요한 구분점: 작업을 끝내는 것이 책임을 끝내는 것은 아니다.
이것은 제가 계속 되돌아오는 생각입니다.
에이전트는 작업과 관련하여 완료될 수 있지만, 그 작업을 존재하게 만든 책임까지 완료되는 것은 아닙니다.
예를 들어 에이전트가 저장소(repository)를 유지 관리한다고 가정해 봅시다.
저장소(repository)를 확인하고 새로운 이슈가 없다는 것을 발견합니다. 수정할 필요가 없습니다. 현재 검사는 완료되었습니다.
하지만 이것이 저장소에 대해 영구적으로 잊어도 된다는 의미는 아닙니다.
새로운 커밋(commit)이 도착할 수 있습니다. 의존성(dependency)이 변경될 수 있습니다. 이전에 정상이었던 프로세스가 실패할 수 있습니다. 보안 이벤트가 나타날 수도 있습니다.
올바른 대응은 아무 문제도 없는 시스템을 계속해서 수리하는 것이 아닙니다. 또한 시스템 전체가 영구적으로 끝났다고 선언하는 것도 아닙니다.
필요하지 않은 작업을 멈추는 동시에 관련 변화에 반응할 수 있는 능력을 보존하는 것입니다.
이것은 자율성(autonomy)에 대해 생각할 때 더 유용한 방식을 제공합니다:
- 작업은 결과를 가집니다.
- 시스템은 지속적인 책임(ongoing responsibility)을 가집니다.
- 현재 환경은 작업 완료 후에도 변경될 수 있습니다.
- 새로운 증거는 새로운 작업을 정당화할 수 있습니다.
일상 언어로 설명하면 당연하게 들립니다.
하지만 이것을 신뢰성 있게 구현하는 것은 또 다른 문제입니다.
예를 들어, 시스템은 어떻게 새로운 이벤트가 관련성이 있는지 알까요? 모든 변화가 모델 호출(model call)을 정당화할까요? 만약 이벤트가 중복이라면요? 이전 결론이 이제 변경된 파일에 의존했다면요? 시스템이 오래된 결론이 여전히 유효한지 판단할 수 없다면요?
우리는 단순한 질문인
2026년 6월, Han Luo, Bingbing Wen, 그리고 Lucy Lu Wang은 'Agentic Abstention: Do Agents Know When to Stop Instead of Act?'(https://arxiv.org/abs/2606.28733)라는 논문을 발표했습니다.
저자들은 웹 쇼핑, 터미널 환경, 질문 답변 등에서 도구를 사용하는 에이전트들을 연구했습니다. 그들의 평가는 13개의 에이전트 시스템과 두 가지 에이전트 스캐폴드(agent scaffolds)를 사용하여 28,000개 이상의 과제에 걸쳐 이루어졌습니다.
핵심적인 관찰 결과는 불가능한 과제를 인식하고 즉시 중단하는 것은 별개의 도전이라는 것입니다.
에이전트는 요청된 항목이 존재하지 않는다는 것을 결국 발견할 수 있습니다. 하지만 여러 번의 불필요한 검색과 상호작용을 거쳐야만 그 결론에 도달할 수도 있습니다.
다시 말해, 최종적인 판단은 정확하게 내릴 수 있지만, 그것에 도달하는 데는 여전히 너무 오랜 시간이 걸릴 수 있다는 것입니다.
이 논문은 또한 더 강력한 모델들이 적절한 중단(timely abstention) 측면에서 일관되게 더 나은 성능을 보이지 않았다고 보고합니다. 더 많은 역량이 자동으로 더 나은 절제력으로 이어지지는 않는다는 것입니다.
이는 AI 에이전트에 대한 논의에서 자주 나타나는 가정, 즉 '에이전트에게 더 유능한 모델을 제공하면 자연스럽게 언제 멈춰야 할지 아는 능력이 향상될 것'이라는 가정을 반박하기 때문에 흥미롭습니다.
분명히 그렇지 않은 것 같습니다.
'arXiv에서 논문 읽기'(https://arxiv.org/abs/2606.28733).
연구 2: 행동하지 않을 때를 아는 것
2026년 7월의 논문인 'AgentAbstain: Do LLM Agents Know When Not to Act?'(https://arxiv.org/abs/2607.10059)은 이 문제를 다른 방향에서 접근합니다.
저자들은 4가지 에이전트 프레임워크를 사용하여 17개의 최첨단 모델(frontier models)을 263쌍의 과제와 42개의 샌드박스 환경에 걸쳐 평가했습니다.
각 쌍은 두 개의 밀접하게 관련된 상황을 포함합니다. 한 상황에서는 에이전트가 행동해야 합니다. 다른 상황에서는 통제된 변화를 통해 중단(abstain)해야 합니다.
이 세부 사항이 중요합니다.
항상 행동하는 에이전트는 좋은 판단력을 보여주는 것이 아닙니다. 항상 아무것도 거부하는 것 역시 마찬가지입니다. 유용한 행동은 이 두 가지 상황을 구별해내는 것입니다.
벤치마크의 paired-accuracy 지표는 에이전트가 쌍을 이루는 두 측면 모두를 올바르게 처리하도록 요구합니다. 보고된 평가에서 가장 우수한 모델은 해당 지표에서 59.5%를 달성했지만, 17개 모델 중 13개가 50% 미만을 기록했습니다.
이 수치들은 특정 벤치마크에 대한 것입니다. 이것이 에이전트가 모든 실제 업무에서 단지 59.5%의 효율성을 가진다는 의미는 아닙니다.
하지만 이 결과는 중요한 것을 보여줍니다: 작업을 완료하는 능력과 자제력을 발휘하는 능력은 서로 다른 역량이라는 것입니다.