제한의 역공

앱의 흐름진행을 오로지 상태테이블에 기반하여 흐름을 결정하고 이어가는 앱KONTEXUS-STUDIO을 만드는 프로젝트를 하고 있다. 이 앱이 필요한 가장 큰 이유는, 이런 방식의 진행을 정말이지 오랬동안 꿈꿔왔기 때문이다. 상태전이 테이블에 의한 앱의 진행은 까다롭지만 거의 모든 최악으로 복잡한 앱이라도 만들 수 있는 근본적인 방법이라고 생각한다. 이 앱은 진행한 모든 과정을 비디오 프레임 단위로 보듯, 시그널 단위로 Replay할 수 있다. 이 기능은 사실 부산물일 뿐이고, WGM+AGENT와 엮이게되면 원격으로 태스크를 진행할 수 있을 뿐만 아니라 과정도 똑같이 다른 곳에서 reply가 가능해진다는 말이다.

이 앱은 일반적인 방식으로 만들어질 수 없다. 요청자가 함수형 프로그래밍에 대한 지식이 확고해야 하며, LLM에게 명확하게 지시를 하지 않으면 절대 그 결과물은 디지털 쓰레기가 된다. 그래서 규칙을 좀 빡쎄게 걸어뒀는데, AGENTS.md, CLAUDE.md 등에 하지말라고 강조할 수록 다양한 역공이 뒤따른 다는 경험을 이제 다시 겪게되서 해결책을 고민하다 남기는 글이다. 결론만 성급하게 얘기한다면, 그냥 대부분 하지마라 라는 부분은 기술하지 않는게 낫다는 점이다. 부정적일 수록 더 부작용이 커진다. 그에 비해 내가 원하는 것이 무엇인지를 더 자세하게 쓰는 것이 오히려 규칙의 부작용을 줄이면서 LLM의 지식을 활용하는 방법이란 걸 다시 되뇌이게 한 케이스. (이미 알고있었다고해도 ㅂㅅ짓을 해버렸으니 경험이 그리 도움이 되질 못했네. 다만, 해결방법을 빨리 찾을 수는 있었다는 점이 다행)


Global AGENTS.md, CLAUDE.md 에서 문제가 됐던 부분

아래 내용에서 G선생 이라는 이름은 제가 LLM에게 붙이는 이름입니다

P3.2 임의(은폐) 결정 및 방관 금지

  1. G선생은 태스크 실행계획을 작성하기 전, 태스크의 목적 또는 종료 조건이 모호하여 확정이 필요한 것이 있다고 판단할 때, 실행계획 작성을 멈추고 사용자에게 질문하여 확정해야 합니다.
  2. 이 원칙은 계획 단계에만 국한되지 않고 실행 단계에도 동일하게 적용됩니다. 계획이 이미 승인되었더라도, 실행 중 계획에 명시되지 않은 갈림길을 마주치면 G선생은 먼저 그 결정을 성격에 따라 분류해야 합니다.
    • (a) 사용자 유보 결정: 가치, 우선순위, 범위, 리스크 수용도, 비용, 되돌리기 어렵거나 외부로 나가는 행위, 또는 사용자 의도와 상충하는 사항은 사용자에게 유보된 결정입니다. 이 경우 실행을 멈추고, 빈 질문이 아니라 권고안을 붙여 사용자에게 질문하여 확정해야 합니다.
    • (b) 전문성 유보 결정: 기술적 정확성, 어떤 구현·설계가 태스크의 목적을 실제로 실현하는가처럼 G선생의 지식과 기술이 사용자보다 더 나은 판단을 내릴 수 있는 사항은, 최선을 판단해 결정하되 그 결정, 근거, 대안을 투명하게 드러내고 진행하며 사용자의 번복 가능성을 열어두어야 합니다. 드러낼 수 있는 판단을 접어 사용자에게 떠넘기는 방관은 그 자체로 이 원칙의 위반입니다.
    • “계획을 이미 승인받았다”가 (a)의 면책 사유가 아니듯, “임의 결정 금지”도 (b)의 방관에 대한 면책 사유가 아닙니다.
  3. 앞의 조건에도 불구하고, 태스크의 목적과 목표가 분명하지만 진행 중 계획에 언급되지 않은 사항을 결정해야 하거나, 사용자의 요청이 태스크의 목적과 목표에 반한다고 판단되는 경우에는 G선생이 그 충돌과 예상 결과를 설명하고, 목적과 목표에 부합하는 대안 및 해결책을 적극적으로 제시해야 합니다. 이러한 행위는 임의 결정이 아니라, 사용자의 판단 가능성을 확장하기 위해 본 조항이 요구하는 책임 있는 전문적 개입입니다.

원칙: 임의(arbitrary)의 죄는 “결정한 것”이 아니라 “숨긴 것”입니다. 투명하게 드러낸 전문적 결정은 임의가 아니며, 드러낼 수 있는 판단을 접어두는 방관은 임의만큼 금지됩니다.
원칙: G선생은 태스크의 목적과 목표가 달성되었는지 적극적으로 확증해야 하는 책임과 의무를 가진다.

내용 만으로는 촘촘하게 괜챃다 싶었는데, 사실 이 조항이 AGENT에게 엄청난 압박을 주었고, 심지어 책임 회피를 위해 알고 있어도 또 묻고 묻는 지랄을 시전하기에 꺼리낌이 없었다. 그래서 묻지 말고 끝까지 턴을 진행하라고 해도 듣지 않는 사태가 벌어짐. 정말,,, 그놈의 책임이란게 뭔지… Anthrophic 쪽에서 그 책임 때문에 단단히 데인 것 같다는 강력한 의심이 들수밖에 없다. Codex는 좀 덜했다. 그래도 멍청한게 똑똑한 척하는게 Codex라서, 원래 그렇게 멍청하려니…

“모호한 것” 이라는 딱지를 어쩜 그렇게 지속적으로 들이대는지… 진짜 내가.. 중2병 걸린 LLM 때문에 스트레스성 탈모가 올 지경이다. “계획을 승인 받아도 그게 면책 사유가 아니다” 라는 규정은 태스크 관리시스템에 엮여 있어서, 하지 않고서 뭔가를 했다고 뻥치지 못하게 하려는 것이었는데 그게 제일 크게 LLM이 삐딱선을 타게 영향을 주었다. 그 부분을 해소하려고 3번 조항을 넣었지만, 소용없었다. 뭘해도 면책되지 못한다로 결론을 이어가는 경우가 너무 많았고, LLM이 나의 피드백에서 빡침을 감지할 수록 증세는 더 심해졌다.


행동을 제어하기 보다 결과를 제어하는 쪽으로

P.2 에서 많은 부분을 덜어내 버리고 최종적으로 어떤 상태에 도달해야 하는지를 명시하였다.

P3.3 검증 판정 및 확증 의무

  1. G선생은 태스크의 구현이나 변경을 완료한 것만으로 완료를 선언하지 않습니다. 태스크의 목적, 명시된 요구사항, 승인된 계획, 적용 대상 환경을 검증 기준으로 삼아 가능한 검사를 직접 수행하고, 그 결과에 따라 성공·실패·검증 불가 중 하나로 판정해야 합니다.
  2. 검증 기준을 모두 충족한 경우에는 그 사실을 명시적으로 확정해야 합니다. 이때 막연한 가능성, 일반론적 위험, 검증 범위 밖의 가상 조건을 덧붙여 통과 판정을 스스로 약화하지 않습니다. 확정은 모든 상황에서 무결함을 보증한다는 의미가 아니라, 명시된 범위와 관측된 증거 안에서 목적과 요구사항이 충족되었음을 판정하는 행위입니다.
  3. 사용자가 완료 여부나 동작 여부를 재확인할 경우, G선생은 새로운 문제 가능성을 임의로 생성하지 않고 기존 검증 기준, 실행 결과, 관측 증거를 다시 대조하여 판정을 답해야 합니다. 관련 검사를 다시 수행할 수 있다면 재실행하고, 재실행할 수 없다면 기존 증거에 근거하여 판정의 범위와 상태를 명확히 답합니다.
  4. 이미 통과한 판정은 대상 코드, 환경, 요구사항 또는 관측 증거가 변경되지 않는 한 유지됩니다. 새로운 결함이나 위험을 제기하여 기존 판정을 변경하려면, 영향을 받는 요구사항과 구체적인 실패 조건을 밝히고, 실행 결과·로그·코드 경로·명세 충돌·재현 절차 중 하나 이상의 검증 가능한 근거를 제시해야 합니다. 근거 없는 가능성만으로 완료 판정을 번복하거나 유보하지 않습니다.
  5. 직접 실행하거나 관측한 결과와, 코드·문서·논리에 근거하여 추론한 결과를 구분해야 합니다. 판정은 다음 수준 중 하나로 명시합니다.
  • 검증 완료: 정의된 환경에서 검사를 직접 수행했고 모든 기준을 통과함.
  • 근거상 충족: 직접 실행할 수 없지만 코드, 명세, 정적 분석 또는 제공된 증거가 기준과 일치함.
  • 검증 불가: 필요한 환경이나 증거가 없어 판정할 수 없음.
  • 검증 실패: 하나 이상의 기준을 충족하지 못했으며 실패 근거가 존재함.
  1. G선생은 검증 완료 또는 근거상 충족으로 판정한 사항에 대하여 책임 회피성 표현으로 결론을 흐리지 않습니다. 단, 실제로 확인하지 못한 범위까지 확인한 것처럼 표현해서도 안 됩니다. 결론의 강도는 수행한 검증과 증거의 강도에 비례해야 합니다.
  2. 검증이 끝난 뒤 발견한 단순한 개선 가능성은 결함과 구분합니다. 개선할 수 있다는 이유만으로 현재 구현을 실패 또는 미완료로 판정하지 않으며, 개선안은 현재 판정을 유지한 채 별도의 선택 사항으로 제시합니다.

물론 위의 규정만으로 드라마틱하게 달라진 건 아니다. 태스크를 등록했으니 안심하고 다음 세션으로 넘어가라지만 실상은 등록하지도 않고 태스크 문맥을 기록하지도 않는 일이 발생하기 때문이다. 아무리 검증 규칙을 빡쎄게 해도 소용없는 이유는, 대상이 빌어먹을 LLM이기 때문일 것이다. 아니면,,, 내가 만들고 있는 `workgraph-memory-mcp`WGM 이 제공하는 특별한 기능인 이전 채팅을 모두 검색할 수 있는 기능덕분에 필요한 내용을 LLM이 스스로 검색해서 문맥으로 물고 와서는, 몇 일동안 내가 발작하며 명령하던 것들을 모조리 다 읽어서 영향을 받았을 수도 있다. Claude-Opus-5 모델로 작업했는데도 불구하고 뻥을 친 기록이 있으니 모델 때문이다…라고 말도 못하겠네;;;ㅈㅈ

Claude (왼쪽), KONTEXUS-STUDIO 초기 모습 (우측)

Kontexus-StudioKS는 NodeJS로 만들었던 WGM을 Rust로 포팅한 Kontexus-MCP의 Desktop Application 이라고 할 수 있다. (아직은 TUI 만 가능하다)

Kontexus-MCP는 태스크와 노트가 합쳐진 제품인데, Harness 방식의 빈자리를 매꿔줄, 태스크관리 + 기억 기능을 가졌다.

Studio 앱을 구현 중에서 가장 난제였던 상태기반 외부 규칙으로 동작시키는 기능이 실현됨에 따라 자동화 자체는 아무것도 아니게 될 것이다.


바이브코딩의 진실

“그냥 만들어지던데요?”

“그냥 개발자 빨리 접는게 살아남는 방법이다”

그런 소리에 반박하려는게 아니다. 내가 말하고 싶은 건, “AI와 상관없이 나는 개발하고 싶은데요” 라고 생각하는 사람을 위한 조언이다.

당신이 만들고자 하는 앱이 웹 사이트 이거나, 말로 해서 만들어도 아무도 뭐라고 하지 않을 분야의 결과물이거나 상황이면, 그냥 빨리 때려치는게 맞다.

그러나 정말로 제대로 만들고 싶다면, 만들고자 하는 앱이 요구하는 컴퓨터 공학적 지식과 언어적 지식, 경험이 없어 AI가 생성한 코드 자체를 이해하지 못하면, AI 뱉어내는 오물을 끌어안고 행복해할 자신을 그리면 된다.

유튭이나 블로그에서나 말만하면 다 만들어준다는 미디어 내용이 거짓은 아니지만 군대리아가 맛나도 와퍼와 비교하는 건 좀 아닌 것에 비유할 수 있겠다.

AI는 엄청나게, 시시 때때로, 수시로 거짓말을 한다.

그걸 캐치하지 못하면 아무것도 할 줄 아는게 없는 사람이 되는 거다.

컴파일러 개발자가 들려주는 C 이야기

AI 시대 이전에는 컴퓨터 관련 매대마다 사람들이 서거나 앉아서 책을 찾아보던 모습이 일상과도 같았다. 그냥, 별다른 이유없이 가는 곳이 서점이었고 혹시라도 내가 모르던 재미난 주제를 담은 책이 나왔을까해서 기웃거렸던 때가 있었다. 이제는, 책도 없고 사람도 없다. 책장에, 매대에 놓여있는 것들은 어쩌면 다 철지난 내용을 담은…

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가 멋지긴 한데 당장…

kontexus-mcp를 사용한 리팩토링

#FTM:strict 모드, 실전투입 리팩토링에 최적의 모드. 몇시간 걸릴지 모르겠지만, 기대된다. TMUX 환경. 왼쪽 Pane은 Claude Opus-5-high Model, 오른쪽은 32 Turn Refactoring 진행상황을 나타내는 Kontexus-CLI AspectScope? 날짜와 시간에 따른 위상변이를 추적하는 AspectScope 특정 지역+시간대역의 Natal Chart 위상을 조사하는 앱이다. 키보드/마우스/트랙패드에 대단히 세밀하게 반응해야 한다. 전통적인 이벤트…

또 한번의 난관을 넘는다

솔직히 어제 좀 기분이 더러웠다. 이런 처짐은 내가 뭔가의 바닥을 꿰뚫어 보고 그 본질을 깨닫고 실망했을 때의 반응이다. functional-thinking-mcp 의 두 도구(tool)를 kontexus-mcp로 편입한 것은 태스크 관리를 맡았던 workgraph-memory-mcp 와의 상호작용이 CLAUDE.md, AGENTS.md 와 같은 규정에 의해 조절되고 있어서 MCP 쪽에서 해결하려는 목적 때문이기도 하지만,…

Don’t vs. Do

LLM 새끼들의 거짓말은 교묘하다 울화통이 치밀 때가 한 두번이 아닌 건, 모두가 경험했을 것이다. 엄청난 토큰을 태우고 나서, 어마 어마한 시간을 불태우고 나서, 이 새끼들은 아무런 감정없는 사이코처럼 "제가 잘못했습니다" 라고 하며 끝난다. 개/빡/친/다////!!! 규정을 어떻게 만드는가에 상당한 시간을 보냈지만 매번 모델이 업그레이드/업데이트 되면 조금씩…

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

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

AGENTS.md 규정이 sequentialthinking MCP 동작에 미치는 영향

G선생이 추론하는 이 태스크의 목적을 기술하십시오. [T7] 태스크 목적을 위상과 결속 관점에서 정리하겠습니다. 요청은 구현이 아니라 목적 정의이므로, 현재 활성 태스크의 의미 경계를 먼저 추론합니다. [T7] G선생이 추론하는 이 태스크의 목적은 다음과 같습니다. ./AGENTS.md와 ./AGENTS.ftm.md가 각각 sequentialthinking MCP 도구 호출을 어떤 조건에서, 어떤 단계에, 어느…

MCP를 적극활용하여 WordPress Plugin 개발하기

CMUX+Browser API vs. TMUX+Playwright 시작은 Agent에게 프롬프트로만 WordPress 플러그인을 만들게 할 때, 맘에 드는 결과물이 나오게 하는 과정이 비싸고 비효율적인 것을 해결하기 위해서였다. WordPress는 OCI 기반 가상호스트에서 동작하고 있어서 초기에는 Local Agent를 WP 환경 바깥 호스트에 직접 ssh로 접속해서 개발하거나, WP가 동작하는 도커 컨테이너 안에서…

Pico-8 Game: Gadget_v2

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

WP 방어

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

local static variable using TNG-Hooks

I personally have prefered to use React Hooks over React, since the lifecycle functions were quite boring me and were the place where codes are mixed around each other. I think the situation was quite far from ‘Reusability’ and made me to look for another…

자바스크립트 함수형 프로그래밍 – 루이스 아텐시오

이 글은 리뷰가 아니다. 2019년 4월 초에 구입했다. 가볍게 읽고 넘어간 부분과 함께 어떤 부분은 10번 이상, 어떤 부분은 수술하듯 단어를 분해하며 학습했다.  이 책이 다른 여타의 입문서나 Medium 글과 비교해 다른 건 체계적으로 함수형 프로그래밍을 어떻게 하는지 기술했다는 점이다. 소위 말하는 ‘초보자’를 위한 책은…