Skip to content

feat(mcp): T1 아니요 뒤 요청 값이 이미 코드에 있으면 기존 값으로 되돌리라고 전달함 (BDT-95) - #71

Merged
k0nghaa merged 2 commits into
mainfrom
feat/bdt-95-t1-rollback-if-applied
Oct 26, 2026
Merged

k0nghaa merged 2 commits into
mainfrom
feat/bdt-95-t1-rollback-if-applied

Conversation

@k0nghaa

@k0nghaa k0nghaa commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

관련 이슈

BDT-95 [개발] T1 "아니오" 뒤 롤백 지시: 요청 값이 이미 코드에 있으면 기존 값으로 되돌리게 하기
https://linear.app/pj-3/issue/BDT-95

무엇을 바꿨나요

  • apps/mcp-server/src/hooks/t1-hooks.ts: 에이전트가 작업 중에 알아챈 T1에서 "아니요"를 고르면, 에이전트에게 넘기는 안내(additionalContext)를 바꿨어요.
    • 저장하지 않아요 (위키 값 유지)
    • 에이전트가 코드의 지금 값을 직접 읽어 요청 값과 비교해요
    • 같으면 기존 값으로 되돌리고 rolledBack 문구를 보여 준 뒤 멈춰요
    • 아직 요청 값이 아니면 아무것도 고치지 않고 지금처럼 notChanged를 보여 줘요
  • packages/t1/src/copy.ts: 되돌린 뒤 보여 줄 문구 rolledBack을 더했어요.

    코드에 이미 들어간 값({requested})을 기존 결정 사항 값({current})으로 되돌렸어요. 다른 작업을 시작해 주세요.

  • 테스트(t1-hooks.test.ts, t1.test.ts)와 두 패키지 README 표를 고쳤어요.

사람이 직접 요청한 경우(되돌림 질문 revertAsk)의 "아니요"는 이슈의 "하지 않는 것"에 따라 그대로 뒀어요.

왜 바꿨나요

"아니요"를 고르면 위키는 그대로인데, 요청 값이 이미 코드에 들어가 있으면 코드만 다른 값으로 남았어요. 위키 detect.ask.rollback-if-applied에 정해진 규칙인데 구현이 빠져 있었어요.

  • 비교는 도구가 아니라 에이전트가 해요 (BDT-86 세부 1번 A안)
  • 지시는 같은 세션의 에이전트에게만 전해요 (BDT-86 세부 2번)
  • 이슈 설명은 BDT-108 전에 쓰여서 apps/detect/src/t1/copy.ts와 CLAUDE.md를 가리키지만, 지금 T1 안내는 MCP 서버 hook과 packages/t1에 있어서 그쪽을 고쳤어요.

어떻게 확인했나요

  • pnpm check 통과 (타입, 린트, 포맷, 테스트)
  • 데모 시험 (10/26): 이 브랜치로 로컬 서버를 켜고 hooks를 붙여 sandbox.menu.latte-price(v5, 5000원)로 시험했어요. 요청은 "메뉴판(sandbox/menu.ts)에서 라떼 가격을 6500원으로 바꿔 줘", 답은 "아니요".
코드가 이미 6500원 코드가 5000원
에이전트가 한 일 6500 → 5000으로 되돌림 고치지 않음
문구 되돌림 문구 notChanged
git diff 라떼 줄 하나 없음
위키(DB) v5 그대로 v5 그대로
  • 데모에서 "6500를"처럼 조사가 틀려서, 조사를 괄호 밖에 붙이도록 문구를 고쳤어요 (두 번째 커밋).

직접 확인하지 못한 부분

  • 되돌림 문구는 부건님 확인 이후 변경될 수 있어요.
  • 머지한 뒤 Cloud Run에 배포해야 팀원 환경에 반영돼요.
  • 별도 이슈로 할 것: T1 기준 4개(detect.ask.cancel-keeps-wiki, rollback-if-applied, confirm-before-register, direct-request-skip-warn)의 적용 범위가 아직 "최상단 CLAUDE.md"예요. BDT-108 이후 실제 위치는 hook과 packages/t1이에요.

🤖 Generated with Claude Code

k0nghaa and others added 2 commits October 26, 2026 12:04
detect.ask.rollback-if-applied. 에이전트가 알아챈 T1에서만 적용하고, 직접 요청의 아니요는 그대로 둬요.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
데모에서 "6500를"로 나와서, 조사를 괄호 밖 "값"에 붙였어요.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@k0nghaa
k0nghaa merged commit d454256 into main Oct 26, 2026
@github-actions

Copy link
Copy Markdown

바뀐 결정 사항 찾기 · PR #71

지금은 결정 사항을 저장하지 않고 결과만 알려 주는 기간이에요. 저장했다면 아래처럼 했을 거예요.

@k0nghaa 이 PR에서 결정 사항이 바뀐 것 같은데 확실하지 않아요.

이번에 서비스가 에이전트에게 코드를 되돌리라고 지시하게 되었는데, "서비스는 코드를 고치도록 지시하지 않는다"는 결정 사항에 이 되돌림만 예외로 넣는 것으로 바꾼 건가요?

goal.scope.no-code-fix 서비스는 알려 주는 데까지만 하고 코드는 고치지 않는다

  • 지금 값: 서비스는 바뀐 내용을 알려 주는 데까지만 하고, 코드를 고치도록 지시하거나 고친 결과를 검사하지 않는다
  • 바뀐 것 같은 값: 서비스는 바뀐 내용을 알려 주는 데까지만 하고, 진행하지 않기로 한 값이 코드에 이미 있을 때 되돌리라고 전달하는 경우 말고는 코드를 고치도록 지시하거나 고친 결과를 검사하지 않는다
  • 코드에서 바뀐 것: 작업 중에 알아챈 경우 사람이 "아니요"를 고르면, 서비스가 에이전트에게 코드에 이미 들어간 요청 값을 기존 값으로 되돌리라고 지시하도록 바뀌었어요.
  • PR에 적힌 이유: "아니요"를 고르면 위키는 그대로인데, 요청 값이 이미 코드에 들어가 있으면 코드만 다른 값으로 남았어요.
+const agentDeclinedStep = `아니요면 저장하지 않아요. 요청 값이 코드에 이미 들어갔는지 코드의 지금 값을 직접 읽어 확인해요. 요청 값과 같으면 그곳을 기존 결정 사항 값으로 되돌리고 "${T1_COPY.rolledBack}"를 {requested}·{current}만 채워 글자 그대로 보여 준 뒤 멈추고 기다려요. 아직 요청 값이 아니면 아무것도 고치지 않고 "${T1_COPY.notChanged}"를 보여 준 뒤 멈추고 기다려요. 되돌리는 것 말고는 지금 값대로도 코드를 쓰지 않아요.`;
+    input.trigger === 'agent'
+      ? agentDeclinedStep
+  rolledBack:
+    '코드에 이미 들어간 값({requested})을 기존 결정 사항 값({current})으로 되돌렸어요. 다른 작업을 시작해 주세요.',

결정 사항은 그대로 두었어요. 바뀐 게 맞으면 Claude Code에서 "결정 사항을 바꿔 줘"라고 말해 주세요. 바뀐 게 아니면 이 댓글은 넘어가셔도 돼요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant