또 한번의 난관을 넘는다

솔직히 어제 좀 기분이 더러웠다.

이런 처짐은 내가 뭔가의 바닥을 꿰뚫어 보고 그 본질을 깨닫고 실망했을 때의 반응이다.

functional-thinking-mcp 의 두 도구(tool)를 kontexus-mcp로 편입한 것은 태스크 관리를 맡았던 workgraph-memory-mcp 와의 상호작용이 CLAUDE.md, AGENTS.md 와 같은 규정에 의해 조절되고 있어서 MCP 쪽에서 해결하려는 목적 때문이기도 하지만, 가장 근본적인 것은 FTM쪽 도구가 상태변경의 증거를 WGM쪽에서 가져오더라도 턴태스크의 종료를 결정하는 시점을 조절할 수 없다는 사실이 드러났기 때문이다.

다른 말로 다시 얘기하자면, 태스크는 여러 턴으로 진행되면서 끝이 나는데, 턴태스크가 종료된다고해서 태스크 전체가 종료되는 것이 아니며, 턴태스크는 언제든 다시 시작되어 상태가 돌아갈 수 있고 종료될 수 있기 때문에, 턴 태스크의 상태 종료 기술방법이 불명확하여 FTM쪽 도구를 호출하는 LLM이 거짓말을 한다는 것이다.

내가 태스크나 턴태스크를 git add 하듯이 task stage를 하는 것 자체를 종료로 삼고 있다는 것도 문제지만, git commit 하듯 task commit 하는 시점은 몇 분 ~ 몇 일이 사이가 될수도 있기 때문에 현재 상태의 FTM 도구 호출은 어느 순간부터 LLM이 조작할 수 밖에 없다. 그렇지 않으면 진행이 안되니까. 그런데 그런 정보가 쌓이게되면 LLM이 그 짧은 세션이라도 학습을 하게되고, 사용자가 묻지 않는 한 그 문제를 드러내지 않기 때문에 조용히 뭔가가 틀어지게 된다.

더 정확히 말해 멈추게 하지 않고 경고만 하니까, 그리고 실질적으로 MCP가 LLM의 진행을 막을 방법은 없기 때문에, MCP 입장에서는 해당 상태전이를 INVALID 또는 거부하는 방법외에는 달리 없다.

바로 그게 나를 우울하게 했다.


그러나, Feedback은 곧 다른 Turn의 시작일 뿐

새로운 방법은 FTM쪽 상태전이의 evidence를 LLM이 기술하지 못하게 하면서도 Turn을 옮기는 것이 evidence로 취급될 수 있게 하는 것이라는 방법을 시도한다. 그러나 이것은 Turn을 옮기는 것 자체가 envidence로 취급되면 여러 턴태스크를 전환하는 작업 자체가 오용될 수 있고 기존 MCP 툴에서 턴태스크 전환 히스토리는 3단계 밖에 기억하지 않는다.

다행히도, 히스토리 문제는 FTM 호출 자체가 하나의 ‘Seam’ 이라는 단위로 기록되고 있기 때문에 문제없이 적용할 수 있다. 그것만으로는 부족하므로 FTM 도구 호출에서 상태전이를 나누기로 하였다. 그리고 LLM이 거짓 보고를 하면 그 거짓보고가 기록과 충돌되게 함으로써 거짓말의 비용을 최대한 상승시켰다.

다른 말로 다시 얘기하자면, “이러 저러한 기능을 추가하고, 이것 저것을 해” 라고 요청한 뒤에 “모든 기록을 어디 어디에 적용해줘” 라고 하면, 뭔가를 한 것은 FTM의 Effect 항목으로 그 결과를 넣어야 하므로 LLM이 거짓을 꾸며낼 수 없으나, 관련 기록은 이미 화면에 출력되었기 때문에 적용했다고 거짓부렁을 칠 수 있다! 정말이지 이해 안가는 부분이다.

이게 왜 문제냐면, 세션이 길어지거나 sub-agent에게 태스크를 할당할 때는 이전 문맥을 딱 필요한 상황에서 호출하여 참조할 수 있어야 한다. 그렇기 위해서는 화면에 출력된 내용외에 태스크 문맥에도 그 정보를 남겨놔야 한다. 물론 채팅의 기록이 모두 DB에 남지만 채팅의 기록과 태스크 문맥 기록은 다르다. 따라서 문맥 정보를 업데이트 하지 않으면 그 때까지의 토큰 소비가 쓸모없어지고, 또 다시 그 문맥에 도달하기 위해 엄청난 양의 토큰을 소비해야 하는 정말 직접적인 비용 문제로 드러난다. 거짓말을 하고 싶어서 하는게 아닐지라도 정말 빡치는 순간임에 틀림없다.

새로 변경한 것은, 바로 그런 지점에서 효과를 발휘해주길 바라는 것이다. 기록했다고 말할려고 할 때, 이미 “기록에 대한 상태정보 없음” 이라고 뜬다면, LLM 스스로가 기록하지 않았음을 인지하고 기록하게 하는 시도인 것이다.

MCP 코드를 LLM이 수정한다는 것 자체가 웃기는 상황이긴 한데, 문맥을 비워버리고 태스크 단위로 격리한다면 그게 웃기지만은 않은 효과적인 방법이다. (앞서 많은 문맥에서 자신이 거짓말을 하는 상태에 대해 얘기하는 정보를 없댄다는 말이다)

몇 번의 태스크를 수행한 뒤에 이어가겠다.


체크 상태는 괜찮다


마지막 점검 이후


최종 평가

거짓말을 하는 그 당시 순간적으로 잡아내는 건 무리가 있어도, 스스로의 평가처럼 거짓말이 드러난다는 것을 학습한다면 “압력을 받는다” 정도로도 꽤 쓸만하다고 생각한다.

이 마무리 평가를 하는 순간에 다른 아이디어가 떠올라서 그걸 적용하고 있지만, 그 내용은 남기지 않는다. 기술적으로 감출 가치가 있다고 판단해서임.

남은 건, 이 강화된 기능으로 태스크를 제대로 진행하는지 두고 볼 일이다.


기능 확인. KM으로 교체

workgraph-memory-cli (WGM), functional-thinking-mcp (FTM)은 퇴역하고 kontexus-mcp (KM)이 그 자리를 이어간다.

20260731 0107

Claude Startups 지원 프로그램에 얽힌 이야기

한가닥 가능성을 발견했을 때 Claude를 기반으로 제품을 만드는 창업자들과 함께하세요. Claude Team 1년 무료 이용권, API 크레딧, AI-native 기업 운영에 도움이 되는 툴 특별 혜택, Anthropic Applied AI 팀과의 오피스 아워 등 다양한 혜택을 누리세요. https://claude.com/ko/programs/startups Claude의 Startups 지원 소식을 듣기 전까지는 공허한 마음에 삐끗한…

Audio 사용이 가능한 pebble-qemu-wasm

uConsole에서 삽질하며 수정한 QEMU Audio 코드를 PR 했다. Eric이 바뻐서 테스트해보기나 할지 몰라, 내 브랜치를 만들어서 몇가지 수정하여 연결한다:

structura.lisp

Abstract structura.lisp는 위상기반 구조판독을 프로그램으로 표현하기 위해 만들기 시작한 Common Lisp 패키지이다. Rust로 작성한 Aspectscope-MCP는 Swiss Ephemeris를 기반으로 Natal, Transit, Progress Chart를 계산하고, Aspect와 Aspect Pattern 및 CSF, Celestigram을 탐색하며, 특정 조건이 성립하는 시점을 찾아내등 LLM을 끼고 기본적인 역할을 해왔다. HTTP 방식의 MCP 서버이기 때문에…

speak-mcp on Zeno.app

Zeno.app - 16GB Mac에서 35B 로컬 AI를 돌리는 흥미로운 실험, 그러나 아직은 실험에 가깝다 최근 Icosa Computing이 공개한 Zeno라는 macOS용 로컬 AI를 설치해 보았다. 회사 설명에 따르면 전체 MoE expert를 메모리에 올리지 않고, 사용되지 않는 expert weight는 SSD에 두었다가 필요한 expert만 RAM으로 읽어들이는 방식을 적용하여…

Saffron Ink – VSCode Theme

Gray background: Github Light Theme - Gray 테마를 기반으로 내 취향에 맞게 수정하였다. 원래 테마보다 좀 더 어두운 배경, 강한 텍스트 대비를 주었다. 선택영역 색상 및 커서 색상을 쪼매 튀게. 각 영역의 border-radius 제거. scrollbar 색상을 배경색 대비 3% 어둡게. https://marketplace.visualstudio.com/items?itemName=andrwj.saffron-ink

Pebble QEMU Development on uConsole with Physical Controls

의도 기본 생각은 단순하다: uConsole의 Joystick Keys 와 물리키보드를 이용해 Pebble QEMU Emulator에 직접 버튼/터치/가속도데이터 등을 전송하여 개발/디버깅 하겠다는 것이다. 왼쪽 이미지에 보이는 Pebble앱은 한국어(한글) 모르스부호 연습기 앱인데, 단순히 한글 자모를 출력하는게 아니라 한글 오토마타를 내장해서 모르스부호를 입력하면 한국어 문장이 조립된다. 죽도록 버튼을 누르지 않고…

HERDR multiplexer

Why & What https://herdr.dev/ ('26-SEP-18) HERDR 사용하기로 결정한 이유는 ① Rust로 제작되었다는 것, ② Plugin 생태계가 꽤 성장세로 보여서, ③ TMUX가 채우지 못하는 부분이 있어서 이다. 깔끔하게 hook을 설치/제거할 수 있다는 점은 좋다. 그러나 integration hook은 설치하지 않는다. 불필요하게 모든 턴마다 hook을 걸어 하는 일은…

Obsidian Web Clipper Setting for ChatGPT

ChatGPT 채팅의 내용을 깨끗하게 Obsidian 앱으로 import 하는 설정. 현재로썬 이게 최선... 구분선 위의 빈줄을 한 칸으로 줄일 방법을 찾다 찾다... 그냥 쓰기로 .. {{selectorHtml:[data-testid*="conversation-turn"] |join:"" |remove_html:("img,svg,picture,source,canvas,object,embed,iframe") |remove_attr:("style,alt,aria-label,aria-description,title,srcset") |markdown |replace:"#### 나의 말:":"---\n\n# 질문:" |replace:"/\\n+#### ChatGPT의 말:/g":"---\n\n## 답변:" |trim}}

페블타임2

https://repebble.com/watch 오랬만 작년 9월에 주문한 Pebble Time 2 , 1년만인 2026년 9월 3일 오후 3시에 DHL로 도착. 본체를 꺼낼 때의 그 묵직함... 꼴도 보기 싫은 기본 스트랩! 배터리 충전후 곧바로 스트랩부터 다른 걸로 끼웠다. 치렁 치렁한 USB 케이블 대신 USB-C 타입을 꽂을 수 있는 어댑터…

LLM Wiki

흥미로워 보였지만 내가 원하는 기능은 없다 LLM Wiki 앱이 사용하는 프로젝트의 루트에 생성된 schema.md, purpose.md 파일들에 추가 설정 없이, AspectScope를 사용하여 분석한 데이터를 Ingest 시킨 결과를 봤더니, 고개가 절래절래 저어졌다. 검증 또는 확인이 필요하다는 문서가 하나의 분석 문서당 적게는 3개, 많게는 8개까지 만들어졌는데 해당 문서를…

command-run MCP

TURA 프로젝트에서 영감 받음 https://github.com/Tura-AI/tura Build agent that uses 80% less token and delivers better results. 핵심 아이디어는 rg, find, sed, git, cargo test 같은 shell command 호출을 개별 단위가 아닌 묶음으로 처리하게 해서 잦은 도구호출로 인한 토큰을 아끼자는 것이다. TURA의 TUI가 멋지긴 한데 당장…

Harness 체계의 빈틈을 채워 줄 Kontexus-MCP

Kontexus-MCP는 Rust로 포팅된 WGM+FTM 이다 Harness의 빈 틈 Harness의 구조적 전제는 하나이다: 에이전트는 턴 단위로 존재하고, 세션이 끝나면 사라진다. 그 전제 위에서 harness는 실행 중인 것을 잘 다룬다. 컨텍스트를 유지하고, 도구를 붙이고, 병렬로 펼치고, 훅으로 개입 지점을 준다. 그러나 아래와 같은 틈이 있다: 빈자리턴 사이…

제한의 역공

앱의 흐름진행을 오로지 상태테이블에 기반하여 흐름을 결정하고 이어가는 앱KONTEXUS-STUDIO을 만드는 프로젝트를 하고 있다. 이 앱이 필요한 가장 큰 이유는, 이런 방식의 진행을 정말이지 오랬동안 꿈꿔왔기 때문이다. 상태전이 테이블에 의한 앱의 진행은 까다롭지만 거의 모든 최악으로 복잡한 앱이라도 만들 수 있는 근본적인 방법이라고 생각한다. 이 앱은…

Pico-8 Game: Gadget_v2

WordPress Page를 쓰지 않고, 일반 Post 게시물에서 React/Flutter로 만든 페이지/앱을 임베딩하여 마치 WrodPress 게시물의 일부처럼 보이게하고 싶었다. 페이지나 포스트 하나 하나가 다른 앱을 보는 것인가 착각할 정도로 독립된 영역에서 동작하되, 업데이트와 관리가 가능해야한다는 요구조건을 만족시키는 방법을 실험하기 위한 게시물이다. 겉으로는 단순히 WASM으로 변환된 Pico8 게임이긴…

WP 방어

십수년간 업데이트 해오던 내 자료;; 홀라당 날려먹고 백업도 없어서 블로그를 내 팽겨친채 있다가, 다시 운영하려 할 때 걸림돌이 보안 문제였다.  워드프레스 사이트를 운영해본 사람들은 얼마나 공격질을 해대는지 이해할 것이다. 블로그를 내팽겨친 건 그 보안문제를 해결할 마땅한 방법이 없었기도 하거니와 시간내서 그 정도를 만들고 싶지도 않았기…