Community코딩 & 개발github.com

komilovsg/f-mode

코딩 에이전트를 위한 토큰 경제 작업 모드 — 원시 데이터는 절대 컨텍스트에 들어가지 않고 결과만 들어갑니다. 테스트 실행, 로그 읽기, 데이터베이스 쿼리, 대용량 파일이나 JSON 검사, 유사한 항목 다수 확인, 브라우저 검사 시, 또는 사용자가 'f-mode', 'filter first', 'save tokens', 'context is filling up', 'too much output'이라고 말할 때 사용하세요. 실패를 숨기지 않는 필터링, 간결한 요약, 요약 검증, 하위 에이전트에 위임할 시기를 다룹니다.

f-mode란 무엇인가요?

F-mode(필터 우선 모드)는 AI 코딩 에이전트가 컨텍스트 창을 효율적으로 사용하도록 설계된 작업 모드입니다. 핵심 원칙은 '원시 데이터는 절대 컨텍스트에 들어가지 않고 결과만 들어간다'는 것으로, 에이전트가 로그나 JSON 같은 대량의 원시 데이터를 직접 읽지 않고 셸 파이프라인, 짧은 스크립트, 또는 하위 에이전트를 통해 데이터를 필터링하고 집계한 후 간결한 요약만 컨텍스트로 가져옵니다. 이는 긴 노이즈가 많은 컨텍스트가 추론 능력을 저하시킨다는 관찰에 기반합니다. 주요 사용 사례로는 테스트 실행(--tb=short, --quiet 플래그 사용), 대용량 파일 검사(grep + tail 조합), 데이터베이스 쿼리(GROUP BY 및 COUNT 사용), 여러 엔드포인트 검사(루프와 테이블 출력), 브라우저 검사(JSON 평가, 전체 DOM 스냅샷 지양) 등이 있습니다. 또한 실패를 숨기지 않도록 파이프라인 종료 코드 유지, 요약의 의미론적 검증(예상 값과 비교), 하위 에이전트 위임 시 핵심 포인트 확인, 동일한 수정이 두 번 실패하면 중단하는 규칙 등 중요한 작업 규칙을 포함합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/komilovsg/f-mode/tree/HEAD/skills/f-mode

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

F-모드 — 필터 우선 모드

원칙: 원시 데이터는 절대 컨텍스트에 들어가지 않으며 결과만 들어갑니다. 로직을 데이터 쪽(셸 파이프라인, 짧은 스크립트, 하위 에이전트)으로 옮기고 간결한 요약을 가져오세요. 읽어들이는 로그 덤프의 모든 토큰은 추론에 사용할 수 없는 토큰이며, 길고 노이즈가 많은 컨텍스트는 추론을 더 비싸게 만들 뿐만 아니라 더 나쁘게 만듭니다.

1. 읽기 전에 필터링 및 집계

대신이렇게 하세요
cat app.loggrep -c ERROR app.log; `grep -E 'ERROR
5MB JSON 읽기jq '.items | length', jq -r '.items[] | [.id,.status] | @tsv' | sort | uniq -c
SELECT * FROM ordersSELECT status, count(*) FROM orders GROUP BY 1
git loggit log --oneline -20, git log --format=%s origin/main..HEAD
파일 스크롤grep -n 'def handle' file.py 한 다음 오프셋/제한으로 읽기

2. 필터링은 절대 실패를 숨기지 않아야 함

잘 보이지만 실제로는 실패를 감춘 요약은 보지 않는 것보다 더 나쁩니다.

  • 종료 코드 유지: set -o pipefail 사용하거나 cmd > out.txt 2>&1; echo "exit=$?"; tail -20 out.txt 사용. tail로 바로 파이핑하면 명령어의 종료 코드가 사라집니다.
  • tail 외에도 실패 마커를 grep: grep -cE 'FAIL|ERROR|Traceback|panic' out.txt
  • 분모와 함께 개수 출력: passed 41/42, 절대 "OK"만 출력하지 않음.
pytest -q --tb=short > /tmp/t.out 2>&1; echo "exit=$?"
grep -cE 'FAILED|ERROR' /tmp/t.out; tail -15 /tmp/t.out

3. 여러 유사한 검사 → 하나의 스크립트, 하나의 테이블

열 개의 엔드포인트, 스무 개의 파일, 서른 개의 행을 검증해야 한다면: 하나의 스크립트를 작성하여 루프를 돌고 간결한 테이블(name \| status \| detail)과 합계를 출력하세요. 열 번의 도구 호출과 열 개의 전체 출력을 사용하지 마세요.

for u in / /api/health /api/items; do
  printf "%-14s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' "localhost:8000$u")"
done

4. 요약을 형태가 아닌 의미로 확인

유효해 보이는 출력도 여전히 틀릴 수 있습니다. 예상 값이나 정상 합계와 비교하세요: 개수가 입력 크기와 일치하는지, 알려진 행이 존재하는지, 파일 수가 ls \| wc -l과 일치하는지. 요약을 교차 검증할 수 없으면 그렇게 말하세요.

5. 테스트

조용한 모드, 짧은 역추적, 실패 섹션의 꼬리:

  • pytest -q --tb=short
  • vitest run --reporter=dot, jest --silent
  • go test ./... 2>&1 | grep -E '^(FAIL|ok|---)'
  • cargo test -q

6. 브라우저 검사

전체 DOM 스냅샷 대신 간결한 JSON({title, errors: n, buttons: n, overflowX: bool})을 반환하는 스크립트를 평가하세요. DOM 구조 자체가 문제가 될 때만 스냅샷을 찍으세요. 스크린샷은 시각적 검사용이지 텍스트를 읽기 위한 것이 아닙니다.

7. 광범위한 조사 → 하위 에이전트

대규모 검색, 로그 포렌식, 데이터베이스 덤프: file:line 참조와 함께 결론을 반환하는 하위 에이전트에 위임하세요. 그 결과는 여전히 주장일 뿐이므로 — 핵심 포인트를 확인한 후에 조치를 취하세요.

8. 비밀 및 개인 데이터

요약이나 진단에 비밀번호나 실제 개인 식별 정보를 절대 출력하지 마세요. 마스킹(postgres://***)하거나 개수만 세세요(emails found: 12). 잡힌 예외 메시지 내의 연결 문자열과 키도 마스킹하세요.

9. 파일 읽기

  • 먼저 grep -n으로 검색한 다음 오프셋/제한으로 관련 범위만 읽으세요.
  • 편집하려는 소스 코드는 전체를 읽으세요. 부분 읽기는 편집을 망가뜨립니다.
  • 편집 직후에 파일을 "확인"하기 위해 다시 읽지 마세요. 편집 도구가 이미 실패 시 오류를 반환합니다.

10. 중단 규칙

동일한 수정이 두 번 실패하면 → 중단하세요. 정확한 오류 줄에서 근본 원인을 찾거나 물어보세요. 세 번째 무맹 재시도는 없습니다.

11. 컨텍스트 위생

  • 관련 없는 작업 사이에 컨텍스트를 지우고; 긴 세션은 압축하세요.
  • 이 프로젝트에서 사용하지 않는 플러그인, 스킬 및 MCP 서버를 비활성화하세요: 각각 모든 요청에서 프롬프트 토큰을 소모합니다.
  • 절감 효과는 주장된 백분율이 아니라 실제 사용량(예: /cost)으로 판단하세요.

관련 스킬