본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 24. 05:38

성격은 정적이어야 하지 않습니다

요약

단순한 시스템 프롬프트 방식의 한계를 지적하며, AI 어시스턴트가 진정한 개인용 AI로 거듭나기 위한 '계층화된 성격 시스템' 아키텍처를 제안합니다. 정적 프롬프트의 모순과 복잡성을 해결하기 위해 핵심 정체성과 가변적 상태를 분리하는 설계 방식을 다룹니다.

핵심 포인트

  • 정적 시스템 프롬프트는 모순과 복잡성 문제를 야기함
  • 영구적 선호도와 일시적 기분을 구분하는 설계가 필요함
  • 성격을 core_identity, emotional_state 등 계층으로 구조화해야 함
  • 핵심 정체성은 보호하고 가변적 상태는 학습하도록 설계함

대부분의 AI 어시스턴트(AI assistants)는 성격을 마치 코스튬(costume)처럼 취급합니다. 영리한 시스템 프롬프트(system prompt)를 작성하고, 어조(tone)를 선택한 뒤, 그것이 유용하게 유지되기를 바랄 뿐입니다. 진정한 개인용 AI(personal AI)에는 더 깊은 무언가가 필요합니다. 모델이 스스로를 혼돈 속으로 재작성하지 않으면서도 진화할 수 있는 행동적 연속성(behavioural continuity)이 필요합니다.

대부분의 AI 성격은 매우 특정한 방식으로 가짜입니다. 그것은 대개 하나의 문단에 불과합니다. 당신은 모델에게 이렇게 말합니다:

메모리(Memory)를 가진 챗봇은 "당신의 프로젝트를 기억합니다"라고 말할 수 있습니다. 행동적 연속성(Behavioral continuity)을 가진 개인용 AI는 무엇을 비공개로 유지해야 하는지 존중하면서, 적절한 모델을 통해 적절한 수준의 확실성을 가지고, 적절한 스타일로, 적절한 양만큼 말할 수 있습니다. 그것이 더 만들기 어려운 제품입니다. 또한 더 유용한 제품이기도 합니다.

정적 프롬프트의 함정 (The Static Prompt Trap)
어시스턴트 성격의 가장 흔한 형태는 거대한 시스템 프롬프트(System prompt)입니다. 처음에는 이것이 강력하게 느껴집니다. 톤(Tone), 규칙, 예시, 포맷팅 선호도, 안전 경계, 그리고 역할 정체성을 한곳에서 정의할 수 있기 때문입니다. 그러다 프롬프트가 점점 커집니다. 모든 수정 사항이 또 다른 한 줄이 됩니다. 모든 선호 사항이 또 다른 불렛 포인트가 됩니다. 모든 예외 케이스(Edge case)가 또 다른 문단이 됩니다. 결국 프롬프트는 잡동사니 서랍이 되어버립니다. 어떤 지침은 오래되어 쓸모가 없습니다. 어떤 것들은 서로 모순됩니다. 어떤 것들은 너무 모호합니다. 어떤 것들은 구조화된 데이터(Structured data)였어야 합니다. 어떤 것들은 테스트(Tests)였어야 합니다. 어떤 것들은 도구 정책(Tool policy)이었어야 합니다. 어떤 것들은 메모리(Memory)였어야 합니다.

가장 최악인 것은, 정적 프롬프트는 영구적인 선호도와 일시적인 기분을 구분할 수 없다는 점입니다. "짧게 유지해줘"라는 말은 다음과 같은 의미일 수 있습니다: '나는 지금 바쁘다.' 또는 '일반적으로 이 사용자는 긴 답변을 싫어한다.' 이 둘은 서로 다른 신호입니다. 이 둘을 프롬프트의 문장 하나로 취급하는 것은 허술한 엔지니어링(Sloppy engineering)입니다. 만약 당신이 진지한 개인용 AI를 구축하고 있다면, 더 나은 질문은 이것입니다: 성격의 어떤 부분은 설정(Configure)되어야 하고, 어떤 부분은 학습(Learn)되어야 하며, 어떤 부분은 자동 편집으로부터 보호(Protect)되어야 하는가?

더 깔끔한 해답은 성격을 계층화(Layered)하는 것입니다.

계층화된 성격 시스템의 작동 방식 (How a Layered Personality System Works)
내가 연구한 참조 아키텍처(Reference architecture)에서 성격은 하나의 서브시스템(Subsystem)으로 취급됩니다. 프로필 관리자(Profile manager)는 다음과 같은 현재 JSON 계층들의 집합을 저장합니다:

core_identity, linguistic, emotional_state, domain, interaction, vocabulary, exemplars, meta

이러한 구조는 각 계층이 서로 다른 속도로 변화하기 때문에 중요합니다. 핵심 정체성(Core identity)은 의도적으로 보호됩니다. ProfileManager.save_layer()에서 core_identity에 대한 프로그래밍 방식의 쓰기(Programmatic writes)는 차단됩니다.

이는 대화의 흐름이 바뀌었다고 해서 어시스턴트가 자신의 기본 정체성 (base identity)을 아무렇게나 다시 쓸 수 없음을 의미합니다. 감정 상태 (Emotional state)는 변동성이 큽니다. 최근의 기분 신호 (mood signals)에 따라 빠르게 변할 수 있습니다. 언어 스타일 (Linguistic style)은 더 느리게 진화합니다. 언어 혼합, 평균 메시지 길이, 이모지 빈도, 그리고 최근 배치 (batches) 동안의 변화 등을 추적합니다. 상호작용 패턴 (Interaction patterns)은 활성 시간, 응답 길이 선호도, 루틴, 그리고 교정 규칙을 추적합니다. 도메인 컨텍스트 (Domain context)는 활성 관심사, 중요한 프로젝트, 인물, 그리고 안정적인 정체성 노트 (identity notes)를 추적합니다. 어휘 (Vocabulary)는 사용자의 현재 언어를 유지합니다. 예시 (Exemplars)는 어시스턴트에게 친숙한 스타일로 응답하는 방법을 보여주는 선택된 상호작용 쌍을 유지합니다. 메타 (Meta)는 프로필 버전 관리와 배치 이력을 추적합니다. 이것이 핵심적인 아키텍처 설계의 변화입니다. 성격은 하나의 덩어리 (blob)가 아닙니다. 그것은 서로 다른 업데이트 규칙을 가진 타입화된 레이어 (typed layers)들의 집합입니다. 이를 통해 시스템을 추론하기 더 쉽게 만들며, 또한 더 안전하게 만듭니다.

실시간 학습 (Realtime Learning)이 다음 응답을 처리합니다. 어떤 신호들은 어시스턴트에게 빠르게 영향을 미쳐야 합니다. 만약 사용자가 "야간 작업(nightly job)을 기다리는 게 너무 길어서 짜증 나요"라고 말한다면, 다음 답변은 이미 더 짧아져 있어야 합니다. 아키텍처는 실시간 처리 (realtime processing)와 암시적 피드백 탐지 (implicit feedback detection)를 통해 이를 처리합니다. 실시간 프로세서 (realtime processor)는 각 메시지에서 실행됩니다. 이는 언어, 감정 (sentiment), 그리고 기분을 추정합니다. 채팅 파이프라인 (chat pipeline)을 차단하지 않고도 감정 프로필 레이어 (emotional profile layer)를 핫 업데이트 (hot update)할 수 있습니다. 피드백 탐지기 (feedback detector)는 다음과 같은 자연스러운 교정 사항을 찾습니다: "너무 격식 차리지 마세요", "짧게 해주세요", "너무 캐주얼해요", "더 설명해 주세요". 이를 탐지하면 관련 프로필 레이어를 업데이트합니다. 길이 교정은 상호작용 레이어 (interaction layer)를 변경합니다. 어조 교정은 언어 스타일 (linguistic style)을 변경합니다. 칭찬은 현재 스타일을 강화합니다. 이는 작지만 중요합니다. 어시스턴트는 사용자가 설정을 열기를 기다리지 않습니다. 대화 피드백을 제품 입력 (product input)으로 취급합니다. 이것이 개인용 AI가 챗봇처럼 느껴지기보다 적응하는 소프트웨어처럼 느껴지기 시작하는 방식입니다.

배치 학습 (Batch Learning)이 패턴을 처리합니다. 실시간 업데이트 (Realtime updates)는 유용하지만, 노이즈가 발생하기 쉽습니다. 사용자가 단 한 번의 대화에서 좌절감을 느낄 수도 있습니다. 그렇다고 해서 어시스턴트가 영구적으로 침울해져야 한다는 뜻은 아닙니다. 사용자가 한 번 상세한 설명을 요구할 수도 있습니다. 그렇다고 해서 앞으로의 모든 답변이 기술적인 에세이가 되어야 한다는 의미는 아닙니다. 이것이 바로 동일한 아키텍처에 배치 프로세서 (batch processor)가 필요한 이유입니다. 배치 프로세서는 누적된 메시지를 주기적으로 분석합니다. 코드 주석에 따르면, 트리거 조건은 새로운 사용자 메시지 50개마다, 6시간마다, 또는 수동 실행 시입니다. 이는 어휘 (vocabulary), 언어적 트렌드 (linguistic trends), 상호작용 패턴 (interaction patterns), 도메인 관심사 (domain interests), 예시 (exemplars), 그리고 감쇠 (decay)를 업데이트합니다. 구분은 명확합니다. 실시간 처리 (Realtime processing)는 즉각적인 적응을 위한 것이고, 배치 처리 (Batch processing)는 지속적인 행동 학습 (durable behavioral learning)을 위한 것입니다. 이러한 분리는 시스템이 모든 개별 메시지에 과잉 반응하는 것을 방지하는 동시에, 사용자가 명확한 피드백을 줄 때 빠르게 응답할 수 있게 합니다. 이것이 바로 에이전트 시스템을 제정신인 것처럼 느껴지게 만드는, 지루하지만 중요한 제품적 판단 (product judgment)입니다. 모든 것이 즉각적일 필요는 없습니다. 모든 것이 영구적일 필요도 없습니다.

프롬프트 인젝션 (Prompt Injection)은 런타임 인터페이스 (Runtime Interface)입니다. 프로필은 다음 응답에 영향을 미치지 않는 한 중요하지 않습니다. 여기서 프롬프트 컴파일 (prompt compilation)이 등장합니다. 프롬프트 컴파일러는 계층화된 프로필을 제한된 페르소나 지침 블록 (bounded persona instruction block)으로 변환할 수 있습니다. 여기에는 핵심 정체성 (core identity), 감정적 맥락 (emotional context), 학습된 상호작용 노트 (learned interaction notes), 활성 어휘 (active vocabulary), 커뮤니케이션 스타일 (communication style), 예시 (examples), 그리고 현재 관심사 (current interests)가 포함될 수 있습니다. 이는 가공되지 않은 메모리 (raw memory)를 프롬프트에 그대로 쏟아붓는 것보다 더 나은 패턴입니다. 가공되지 않은 메모리는 무질서합니다. 중복되거나, 오래되었거나, 민감하거나, 혹은 관련이 없을 수 있습니다. 컴파일된 행동 프로필 (compiled behavioral profile)은 런타임 인터페이스입니다. 이는 다음과 같이 말합니다: "어시스턴트가 지금 당장 어떻게 행동해야 하는지에 대해 알아야 할 사항은 이것입니다." 해당 프로필은 컨텍스트 (context)에 들어갈 만큼 충분히 작고, 검사할 수 있을 만큼 구조화되어 있으며, 모델 변경 시에도 살아남을 수 있을 만큼 안정적일 수 있습니다. 단어는 여전히 모델이 생성합니다. 하지만 연속성 (continuity)은 아키텍처에 속해 있습니다.

이것이 모델 전환 시에도 유지되는 이유

개인용 AI (Personal AI)에서 가장 과소평가된 문제 중 하나는 성격(personality)을 통한 제공업체 종속 (provider lock-in)입니다. 만약 당신의 어시스턴트의 정체성이 단 하나의 모델의 채팅 기록이나 한 제공업체의 메모리 기능 내에만 존재한다면, 모델을 전환할 때 그 관계가 깨질 수 있습니다. 새로운 모델이 더 똑똑하거나, 저렴하거나, 빠르거나, 혹은 더 프라이빗할 수도 있습니다. 좋습니다. 하지만 연속성 (continuity)이 당신의 시스템이 아닌 제공업체에 머물러 있었기 때문에, 이제 어시스턴트는 다르게 느껴질 것입니다.

더 강력한 아키텍처는 정반대의 접근 방식을 취합니다. 행동 프로필 (behavioral profile)은 모델 외부에 존재합니다. 메모리 (memory)는 모델 외부에 존재합니다. 라우팅 로직 (routing logic)은 모델 외부에 존재합니다. 프롬프트 컴파일러 (prompt compiler)는 작업에 적합한 어떤 모델이든 현재의 프로필을 주입할 수 있습니다. 이는 어시스턴트가 성격을 일회용으로 취급하지 않고도, 가벼운 작업은 한 제공업체로, 개인적인 콘텐츠는 로컬 모델 (local model)로, 어려운 추론은 더 강력한 모델로 라우팅할 수 있음을 의미합니다.

이것이 핵심적인 교훈입니다. 만약 관계가 모델 제공업체에 속해 있다면, 사용자는 그것을 진정으로 소유하는 것이 아닙니다. 만약 관계가 아키텍처에 속해 있다면, 사용자는 그것을 계속해서 가져갈 수 있습니다.

안전성 부분도 중요합니다

적응형 성격 (adaptive personality)은 무엇이 잘못될 수 있는지 생각하기 전까지는 듣기 좋게 들립니다. 자신의 행동을 스스로 업데이트하는 AI에는 경계 (boundaries)가 필요합니다. 좋은 적응형 프로필 시스템은 몇 가지 유용한 경계를 갖추고 있습니다.

  • 핵심 정체성 (Core identity)은 일반적인 프로필 쓰기 작업을 통해서는 불변 (immutable)합니다.
  • 프로필 스냅샷 (Profile snapshots)은 아카이브되어 이전 버전을 복구할 수 있습니다.
  • 배치 업데이트 (Batch updates)는 명시적이며 버전이 관리됩니다.
  • 실시간 업데이트 (Realtime updates)는 특정 레이어 (layers)로 범위가 제한됩니다.
  • 프롬프트 컴파일러는 무한한 성격 성장을 허용하는 대신 제한된 출력 (bounded output)을 가집니다.

이것이 중요한 이유는 '학습'이 자동으로 좋은 것만은 아니기 때문입니다. 어시스턴트는 잘못된 것을 학습할 수 있습니다. 나쁜 하루에 과적합 (overfit)될 수 있습니다. 특정 상황을 위해 의도된 수정을 그대로 보존할 수도 있습니다. 사용자의 실제 선호도에서 벗어날 수도 있습니다.

따라서 진지한 개인용 AI에는 적응 (adaptation)을 제어할 수 있는 제어 표면 (control surface)이 필요합니다: 버전 관리 (versioning), 롤백 (rollback), 검사 (inspection), 프라이버시 경계 (privacy boundaries), 그리고 테스트 (tests)가 그것입니다.

그러한 요소들이 없다면, "적응형 성격 (adaptive personality)"은 통제되지 않는 드리프트 (drift)를 미화한 표현에 불과합니다. 제품의 느낌 (The Product Feeling) 가장 훌륭한 개인용 AI 경험은 어시스턴트가 자신을 기억하고 있다고 끊임없이 알릴 때가 아닙니다. 그것은 금방 기괴하게 느껴질 수 있습니다. 더 나은 경험은 더 조용합니다. 사용자의 인내심을 학습했기에 적절한 길이를 제공합니다. 사용자가 좌절했을 때 어조를 바꿉니다. 사용자가 빌드 모드 (build mode)에 있을 때는 기술적 세부 사항을 높게 유지합니다. 사용자가 직접 사용하거나 가르치지 않는 한 지역 언어의 특색 (local language flavour)을 강요하지 않습니다. 모든 대화를 기억에 관한 것으로 만들지 않으면서도 안정적인 교정 규칙을 기억합니다. 친밀함을 연기하지 않으면서도 친숙하게 느껴집니다. 마지막 부분이 중요합니다. 개인용 AI는 유용해지기 위해 인간 관계를 흉내 낼 필요가 없습니다. 마찰을 줄이고, 컨텍스트 (context)를 보존하며, 경계를 존중하고, 사용자가 검사하고 제어할 수 있는 방식으로 적응해야 합니다. 이러한 방식의 시스템이 흥미로운 이유는 그 중간 경로를 가리키기 때문입니다. 정적인 프롬프트 (static prompt)도 아니고, 통제되지 않는 자기 수정 (uncontrolled self modification)도 아닙니다. 사용자를 중심으로 진화하는 구조화된 행동 계층 (structured behavioural layer)입니다. 빌더를 위한 교훈 (The Builder Lesson) 만약 당신이 에이전트 (agents)나 개인용 AI 시스템을 구축하고 있다면, "AI가 어떤 성격을 가져야 하는가?"라는 질문으로 시작하지 마십시오. 대신 다음 질문들로 시작하십시오: 어떤 신호 (signals)가 즉각적으로 업데이트되어야 하는가? 어떤 신호가 시간이 지남에 따라 정제 (distilled)되어야 하는가? 정체성의 어떤 부분은 절대 자동으로 편집되어서는 안 되는가? 어떤 선호도는 일시적인가? 어떤 선호도는 지속적인가? 사용자가 AI가 학습한 내용을 검사할 수 있는가? 사용자가 이를 교정할 수 있는가? 시스템이 잘못된 프로필 업데이트를 롤백 (roll back)할 수 있는가? 이 성격이 모델을 전환해도 유지될 수 있는가? 민감한 행동 컨텍스트 (behavioral context)가 로컬 (local)에 머물 수 있는가? 이러한 질문들은 또 다른 영리한 프롬프트보다 더 나은 아키텍처 (architecture)를 만들어냅니다. 개인용 AI의 미래는 단 다섯 번의 대화 동안 독특하게 들리는 어시스턴트가 승리하지 못할 것입니다. 통제력을 잃지 않으면서 연속성 (continuity)을 발전시킬 수 있는 시스템이 승리할 것입니다. 이는 메모리 (memory), 프로필 계층 (profile layers), 피드백 루프 (feedback loops), 프롬프트 컴파일 (prompt compilation), 모델 라우팅 (model routing), 프라이버시 경계 (privacy boundaries), 그리고 버전 관리 (versioning)가 모두 함께 작동해야 함을 의미합니다.

성격은 정적이어도 안 되지만, 그렇다고 마법과 같아서도 안 됩니다. 성격은 설계(engineered)되어야 합니다. 핵심 요약(The Takeaway): 정적인 프롬프트(prompts)는 목소리를 만들어낼 수 있고, 메모리(Memory)는 사실을 저장할 수 있습니다. 하지만 진정한 개인용 AI(personal AI)에는 더 지속 가능한 무언가가 필요합니다. 즉, 증거에 따라 변화하고, 경계(boundaries)를 존중하며, 모델(models), 도구(tools), 채널(channels)을 가로질러 사용자를 따라갈 수 있는 행동 기질(behavioral substrate)이 필요합니다. 이것이 바로 적응형 성격(adaptive personality)을 개인용 AI에서 가장 중요한 아이디어 중 하나로 만드는 요소입니다. 이는 성격을 하나의 시스템(system)으로 취급합니다. 그리고 이것이 에이전트형 AI(agentic AI)가 나아가야 할 올바른 방향입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0