프롬프트 엔지니어링, MCP, 스킬, 그리고 하네스

누구나 AI를 잘 쓰고 싶다. 그래서 모델부터 수많은 툴까지 공부하고 섭렵하고 만들기까지 한다. 어떻게 하면 잘 되고, 어떻게 하면 잘 안된다. 그걸 우리는 프롬프트 엔지니어링이라고 부르다가 좀 결이 다르지만 MCP로 해결하려고 했다가 skills면 충분해 하다가 요샌 하네스(harnesss)를 만들라고들 한다.

이들은 결국 하나의 목적을 향한다. AI를 더 잘 쓰고 싶다. "더 잘"은 좀 모호하다. "더 내가 원하는대로" 쓰고 싶다에 조금 더 가까워 보인다. 필요(needs)를 넘어 "늘 일관성 있게", "적당히 시켜도 찰떡같이"라는 욕망도 보인다. 물론 모델이 늘 우리의 필요와 욕망을 채워주진 못한다.

결국 우리가 하고 싶은 건 동기화(sync)가 아닐까 생각해본다. AI 모델과 하나 되어 문제를 해결하자. 물론 문제는 내 문제. 이 "하나됨", "싱크"를 위해 이런 저런 궁리를 하는 것 같다. 행동 방식과 포맷에 따라 조금씩 다른 이름으로 불릴 뿐.

그럼 뭘 어떻게 동기화할까. 내 경험상 동기화는 2가지 정도로 분류해볼 수 있다. 먼저 내가 모델보다 더 많이 알고 있을 때이다. 내 머리 속에 있는 문제를, 내가 관찰하고 발견한 문제를, 제품을 만들기 위해 떠오른 아이디어는 내가 더 잘 안다. 일반적으로 "일"이라고 부르는 대부분의 작업이 여기에 속할 것이다. 둘째로 AI가 더 많이 알고 있을 때이다. AI는 늘 나보다 많이 알고 있다. 다만 그 모든 것이 나에게 쓸모있지 않을 뿐이고, 할루시네이션이라고 하는 복병도 있어 신뢰의 문제를 늘 가지고 있다. 새로운 개념을 학습해야할 때, 무언가 분석해야할 때, 다른 시각이 필요할 때, 내가 모르는 것을 알려줘야 할 때가 이 경우이다. 내가 더 많이 알 때는 모델을 내 수준에 맞춰줘야 하고, 모델이 더 많이 알 때는 일종의 작업분석처럼 내가 더 알려고 적극적인 소통을 해야한다. 그리고 대부분의 상황에서는 이 2가지로 수시로 바뀌고 잦은 전환이 일어난다고 본다. 현재 상황에 대해 어떤 방식의 싱크를 할 것인지 메타인지, 감각을 세워서 작업에 임해야할 것이다.

단숨에 코드 10,000줄을 대신 짜준들 이런 감각을 세우고 싱크하는 일은 굉장히 피곤한 일이다. 아직 피곤할 수 있음에 감사해야겠지만 말이다.