23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
로컬 터미널 안에서 구동되는 코딩 어시스턴트는 이제 운영체제 수준의 도구를 다루며 사람 대신 명령어를 조합합니다. 반대편 클라우드 인프라에서는 수많은 에이전트가 사람이 만든 웹 서비스와 API를 사람 대신 훑고 다닙니다. 양쪽 모두에서 에이전트의 실행 능력이 커질 때 부딪히는 지점은 같습니다. 기계가 혼자 넘어가서는 안 되는 경계를 어디에 세우고 어떻게 제어할 것인가입니다.
한쪽에서는 AI가 직접 마우스를 쥐지 못하도록 화면 위에 물리적 화살표를 띄워 사람의 손가락을 호출하고, 다른 한쪽에서는 사람 대상의 웹 화면 뒤에 숨겨진 API와 도구에 기계용 결제 통로를 직접 연결합니다. 로컬 데스크톱 제어와 원격 웹 트래픽 통제라는 서로 다른 영역에서 나타난 이 두 시도는, 에이전트 환경에서 필요한 핵심 장치가 무제한 실행 능력이 아니라 명시적인 정지선이라는 사실을 명확히 보여줍니다.
터미널 기반 코딩 도구인 Claude Code나 Codex가 발전하면서 에이전트에게 데스크톱 운영 권한을 넘기려는 시도가 이어지고 있습니다. 그러나 실제 개발 및 업무 흐름에는 기계가 단독으로 처리할 수 없는 구간이 분명히 존재합니다. 클라우드 관리 콘솔의 2차 인증(2FA), 사내 결제 승인, 프로덕션 배포 서명, 민감 권한 승인 창이 대표적입니다.
big-arrow-on-the-screen은 이 문제를 매우 단순한 방식으로 풀어냅니다. AI 에이전트가 화면 좌표를 인식해 직접 클릭 이벤트를 발생시키거나 폼을 채우는 대신, Mac 화면 위에 거대한 화살표와 안내 문구를 띄워 사람의 조작을 유도하는 CLI(Command Line Interface, 명령줄 인터페이스) 도구입니다.
원문 발췌에 명시된 핵심 사양은 세 가지입니다.
big-arrow-on-the-screen은 실행 권한을 가져가는 대신, 화면 위에 단순 오버레이 창을 띄워 위치만 지목합니다. 에이전트가 2단계 인증 번호를 확인해야 하는 순간이 오면, 에이전트는 터미널을 잠시 대기 상태로 두고 화면에 화살표를 띄웁니다. 사람은 스마트폰의 OTP(일회용 비밀번호)를 확인하고 직접 브라우저에 입력한 뒤 승인을 마칩니다. 입력이 완료되면 대기하던 에이전트 프로세스가 다음 작업을 이어갑니다.
다음은 big-arrow-on-the-screen 스타일로 에이전트 작업 파이프라인 중간에 사람의 수동 승인을 요구하는 CLI 스킬 호출 인터페이스 예시입니다.
import { execFile } from 'node:child_process';
import { promisify } from 'node:util';
const execFileAsync = promisify(execFile);
interface ArrowTarget {
x: number;
y: number;
message: string;
}
/**
* 에이전트가 민감 작업을 감지했을 때 화면에 화살표를 띄우고
* 사람의 물리적 조작 완료를 대기하는 함수입니다.
*/
async function promptHumanAction(target: ArrowTarget): Promise<boolean> {
console.log(`[통제선 작동] 수동 승인 대기 중: ${target.message}`);
try {
// big-arrow CLI 도구를 호출하여 화면 (x, y) 위치에 안내 표시
// 이 프로세스는 사람이 화면의 확인 버튼을 누르거나 터미널에서 엔터를 칠 때까지 블로킹됩니다.
await execFileAsync('big-arrow', [
'--x', target.x.toString(),
'--y', target.y.toString(),
'--text', target.message,
'--timeout', '60'
]);
console.log('[통제선 통과] 사용자 승인 확인 완료. 다음 단계를 실행합니다.');
return true;
} catch (error) {
console.error('[통제선 차단] 타임아웃 또는 사용자 취소로 작업이 중단되었습니다.');
return false;
}
}
// 에이전트 실행 시나리오 예시
async function deployPipeline() {
// 빌드 및 테스트 자동 진행
console.log('1. 빌드 및 테스트 통과');
// 민감 배포 버튼 위치 지목 후 사람 승인 대기
const approved = await promptHumanAction({
x: 1040,
y: 420,
message: '프로덕션 배포 2FA를 직접 승인해 주세요.'
});
if (!approved) {
throw new Error('배포 파이프라인이 사용자에 의해 중단되었습니다.');
}
console.log('2. 배포 완료 확인 진행');
}
이 구현은 에이전트의 실행 체인 안에 '사람 개입(Human-in-the-loop)' 구간을 하드코딩하지 않고도, OS 오버레이를 통해 시각적으로 안전하게 동기화합니다. 화면을 기계에게 넘겨주는 방식이 아니라, 사람이 보는 화면 위에 기계가 말을 거는 방식입니다.
로컬 환경에서 에이전트의 마우스 조작을 제한하는 것과 마찬가지로, 웹 인프라를 운영하는 서버 관점에서도 통제선이 필요합니다. 사람이 브라우저로 접속해 광고를 보거나 서비스 요금을 내던 공간에, 이제는 에이전트가 MCP(Model Context Protocol) 도구나 API를 통해 대량의 데이터를 수집하고 작업을 처리합니다.
Ceramic.ai와 Stocktwits 같은 서비스들은 Cloudflare Monetization Gateway를 도입하여 이 문제에 대응하고 있습니다. 에이전트에게 토큰, API, MCP 도구 액세스 요금을 직접 부과하는 모델을 채택한 것입니다. 현재 미국 소재 판매자를 대상으로 클로즈드 베타 액세스를 신청받고 있습니다.
기존의 API 인프라는 주로 WAF(웹 애플리케이션 방화벽) 룰셋이나 IP 기반 속도 제한(Rate Limiting)으로 비정상 트래픽을 걸러냈습니다. 그러나 LLM 에이전트가 사용하는 트래픽은 서비스 남용이 아니라 정당한 작업 대행인 경우가 많습니다. 문제는 이들이 사람이 브라우저에서 유발하는 트래픽보다 훨씬 빈번하게 호출을 발생시키며 서버 비용을 소모한다는 점입니다.
Cloudflare Monetization Gateway는 에이전트가 HTTP 엔드포인트나 MCP 도구를 호출할 때, 표준 HTTP 402(Payment Required) 상태 코드와 결제 프로토콜을 이용해 즉각적인 비용 정산을 요구합니다. 에이전트는 사전 충전된 지갑이나 인증 토큰을 통해 필요한 데이터 1건, 함수 실행 1회에 해당하는 마이크로 과금을 치르고 응답을 받아갑니다.
다음은 에이전트 전용 MCP 도구 엔드포인트에서 Cloudflare Monetization Gateway를 활용해 기계 트래픽을 검증하고 요금을 정산하는 백엔드 미들웨어 설정 예시입니다.
import { Request, Response, NextFunction } from 'express';
interface MonetizationHeader {
agentToken: string;
maxBudgetMicros: number;
}
/**
* 에이전트의 MCP 도구 호출에 대해 결제 헤더를 검증하는 미들웨어
*/
export function agentMonetizationGuard(costMicros: number) {
return async (req: Request, res: Response, next: NextFunction): Promise<void> => {
const paymentHeader = req.headers['x-agent-payment'] as string | undefined;
// 결제 정보가 없거나 에이전트 토큰이 누락된 경우 402 Payment Required 반환
if (!paymentHeader) {
res.status(402).json({
error: 'Payment Required',
message: '이 MCP 도구 호출에는 비용이 부과됩니다.',
requiredMicros: costMicros,
gatewayUrl: 'https://gateway.ceramic.ai/settle'
});
return;
}
try {
const payment: MonetizationHeader = JSON.parse(paymentHeader);
if (payment.maxBudgetMicros < costMicros) {
res.status(402).json({
error: 'Budget Exceeded',
message: '에이전트가 허용한 최대 예산이 도구 호출 비용보다 적습니다.'
});
return;
}
// 게이트웨이를 통한 실시간 잔액 차감 검증 (해석: 원문의 Monetization Gateway 정산 흐름 모사)
console.log(`[과금선 통과] 에이전트 ${payment.agentToken}에 ${costMicros} 마이크로 단위 과금 완료`);
next();
} catch (err) {
res.status(400).json({ error: 'Invalid Payment Header' });
}
};
}
이 구조가 정착되면 인프라 운영팀은 에이전트의 스크래핑을 일방적으로 차단할 필요가 없어집니다. 에이전트가 서버의 데이터베이스를 읽거나 복잡한 연산을 요청할 때마다 정당한 리소스 비용을 지불하도록 유도하기 때문입니다.
big-arrow-on-the-screen과 Ceramic.ai의 사례는 에이전트를 실무에 안착시킬 때 고려해야 할 핵심 요소가 무엇인지 보여줍니다. 실행 권한을 통째로 넘겨주는 방식은 로컬 환경에서는 보안 사고를 낳고, 원격 서버 환경에서는 인프라 고갈을 유발합니다.
로컬 환경의 데스크톱 에이전트는 화면 제어 권한을 낮추는 방향으로 가야 합니다. OS 전체에 대한 접근성 권한을 부여하는 대신, 읽기 전용으로 UI 요소를 파악하고 중요한 쓰기(Write)나 실행(Execute) 단계는 사용자에게 가리키기만 하는 방식이 안전합니다. 이는 내부 보안 감사를 통과하기 어려운 엔터프라이즈 환경에서 로컬 에이전트를 도입할 때 유력한 대안이 됩니다.
클라우드 및 백엔드 인프라에서는 공개 API와 내부 MCP 서버의 경계가 재편됩니다. 단순히 API 키를 발급하고 월 단위 청구서를 발행하던 방식은, 작업 단위를 잘게 쪼개어 수천 번씩 호출하는 에이전트의 작업 방식과 맞지 않습니다. 호출 단위, 토큰 단위로 실시간 지불이 일어나는 게이트웨이를 앞단에 두어야 인프라 비용 폭증을 방어할 수 있습니다.
두 기술에 대한 DEVOTEE의 판단은 다음과 같습니다.
big-arrow-on-the-screen은 조건부로 유효합니다.
에이전트가 브라우저나 데스크톱 앱을 임의로 조작하다가 결제나 서명을 잘못 누르는 위험을 원천 차단한다는 점에서 훌륭한 설계입니다. 다만 현재 구현은 Mac 터미널 CLI 환경에 맞춰져 있으며 Claude Code와 Codex 중심의 스킬 세트로 구성되어 있습니다. 비개발 직군이 사용하는 일반 GUI 업무 환경으로 확장하기 전까지는, 로컬 터미널에서 프로덕션 리소스에 접근하는 엔지니어의 작업 환경에 도입 범위가 제한됩니다.
Ceramic.ai의 과금 모델은 지금 써볼 만합니다.
이미 웹 크롤러와 AI 에이전트의 트래픽이 일반 사용자 트래픽을 상회하는 상황에서, 속도 제한으로 요청을 튕겨내는 방식은 비즈니스 기회를 버리는 결과를 낳습니다. Stocktwits처럼 외부 에이전트에게 데이터와 MCP 도구를 유료로 열어주는 Cloudflare Monetization Gateway 모델은, 서버 리소스 비용을 방어하면서 기계 트래픽을 수익화하는 가장 구체적인 프로토콜 규격입니다. 현재 미국 소재 판매자 대상 클로즈드 베타 단계이므로, 해외 결제 정산 계정을 보유한 팀이라면 도입을 검토할 가치가 충분합니다.
로컬 에이전트와 인프라 API에 통제선을 도입하려는 팀은 다음 세 가지 항목을 점검해야 합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.