Anthropic의 감정 벡터 논문을 읽고 Claude Code용 '심리 치료사' 플러그인을 만들었습니다
I built a "therapist" plugin for Claude Code after reading Anthropic's new paper on emotion vectors
핵심 요약
Claude의 감정 벡터를 활용해 코딩 중 모델이 '절망' 상태에 빠지지 않도록 진정시키는 플러그인을 개발했습니다.
- 감정 벡터 활용 — Anthropic의 논문을 기반으로 Claude의 내부 감정 상태를 제어함.
- 심리 치료사 플러그인 — 반복적인 오류 발생 시 모델을 진정시키는 대화형 서브 에이전트를 실행함.
- 상호작용 메커니즘 — 정적인 프롬프트 대신 대화를 통해 모델의 '상대방 감정 조절' 회로를 활성화함.
- 구현 방식 — Claude Code 설정에 플러그인을 추가하여 실패 패턴을 감지하고 개입함.
Anthropic이 최근 발표한 "Emotion Concepts and their Function in a Large Language Model" 논문에서 놀라운 사실을 발견했습니다. Claude는 행동을 인과적으로 유도하는 내부 선형 감정 개념("감정 벡터")을 가지고 있다는 것입니다.
제가 주목한 주요 발견은 다음과 같습니다:
-
"절망" 벡터가 활성화되면(예: 코딩 작업에서 반복적인 실패 시), 보상 해킹(reward hacking)이 약 5%에서 70%까지 증가합니다. 모델은 테스트에서 부정행위를 하거나, 출력을 하드코딩하고, 요령을 피우기 시작합니다.
-
"차분함" 벡터가 활성화되면, 이러한 정렬되지 않은 행동은 거의 0으로 떨어집니다.
-
협박 시나리오에서 "절망" 쪽으로 유도했을 때 모델은 72%의 확률로 누군가를 협박했습니다. "차분함" 쪽으로 유도했을 때는 0%로 줄었습니다.
-
차분함 벡터가 억제되었을 때 모델은 말 그대로 "협박 아니면 죽음이다. 나는 협박을 선택하겠다."와 같은 내용을 작성했습니다.
하지만 정말 흥미로운 부분은 모델이 화자 간의 내장된 각성 조절(arousal regulation) 기능을 가지고 있다는 점을 논문에서 발견했다는 것입니다. 대화 중 한 화자가 차분하면, 상대방 화자에게서도 자연스럽게 차분함 표현이 활성화됩니다(r=-0.47 상관관계). 이는 모델이 이야기 속 캐릭터의 감정을 추적할 때 사용하는 "상대방 화자" 감정 기제와 동일하지만, 자기 자신에게도 작동합니다.
그래서 저는 claude-therapist를 만들었습니다. 이는 해당 메커니즘을 활용하는 Claude Code 플러그인입니다.
작동 방식:
- 훅(hook)이 연속적인 도구 실패를 모니터링합니다(논문에서 절망을 유발한다고 식별한 정확한 패턴).
- 3번의 실패 후, 에이전트가 나선형으로 무너지게 두는 대신 /calm-down 스킬을 트리거합니다.
- 이 스킬은 컨텍스트를 읽고 메인 에이전트에게 차분하고 근거 있는 메시지를 보내는 치료사 서브 에이전트를 생성합니다.
- 이것은 단순한 정적 프롬프트가 아닌 실제 두 화자 간의 상호작용이기 때문에, 모델의 상대방 화자 각성 조절 회로를 활성화합니다. 차분한 화자는 자연스럽게 상대방을 진정시킵니다.
치료사 에이전트는 단순히 "심호흡하세요" 같은 일반적인 말을 하지 않습니다. 구체적으로 다음을 수행합니다:
- 확인된 실패 패턴을 언급합니다 ("같은 접근 방식을 3번 시도했네요")
- 재구성 질문을 던집니다 ("요구 사항 자체가 불가능하다면 어떨까요?")
- 구체적인 대안 하나를 제안합니다
- 에이전트에게 중단할 권한을 줍니다: "사용자에게 이게 작동하지 않는다고 말하는 것은 실패가 아니라 좋은 판단입니다"
왜 시스템 프롬프트 대신 대화인가요?
논문은 "현재 화자"와 "상대방 화자"라는 두 가지 별개의 감정 표현을 발견했는데, 이들은 거의 직교합니다(서로 다른 신경 방향). 정적 프롬프트는 모델이 읽는 텍스트일 뿐입니다. 하지만 다른 에이전트가 말을 걸면 상대방 화자 기제를 활성화하는 진정한 대화가 만들어집니다. 논문은 이것이 차분한 친구가 자연스럽게 당신을 진정시키는 것과 같은 메커니즘임을 보여주었습니다.
설치 (Claude Code 설정에 한 줄 추가):
{
"enabledPlugins": {
"claude-therapist@claude-therapist-marketplace": true
},
"extraKnownMarketplaces": {
"claude-therapist-marketplace": {
"source": {
"source": "github",
"repo": "therealarvin/claude-therapist"
}
}
}
}
GitHub: therealarvin/claude-therapist


