C.W.K.
Stream
Lesson 02 of 04 · published

레퍼런스 말고 프롬프트를 보내

~11 min · apply-free, contract, vault-bypass, wire

Level 0차가운 부싯돌
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Flint 이 프롬프트 전체를 스스로 렌더하고 완성된 텍스트를 보내. 브레인한테 뭘 찾아보라고 절대 안 시켜."

로컬로 렌더, 완성해서 보내

계약이 'apply-free' 라 불리는 건 Flint 이 자유형 프롬프트를 적용하기 때문이야: 템플릿 렌더링을 자기 쪽에서 하고, 캡처한 선택을 {input} 자리에 떨구고, 완성된 프롬프트 문자열을 만들어. 그런 다음에야 경계를 건너 호출해. 브레인은 채울 템플릿도 풀 이름도 아니라, 변환할 완성된 텍스트를 받아. 렌더링은 Flint 의 일; 생각은 브레인의 일.

와이어를 건너는 것

요청은 셋을 날라: 렌더된 프롬프트, vault-맥락 선택, 그리고 — 로컬 모델 티어엔 — 어느 티어와 모델을 쓸지. 그게 계약 전부야. 프롬프트는 내용; vault 선택과 티어는 브레인한테 그걸 어떻게 돌릴지 알려주는 실행 파라미터. 세션도, 기록도, 딴 데 저장된 뭐로의 참조도 없어. 각 호출은 자기완결적이야: 브레인이 답하는 데 필요한 전부가 그 요청 하나에 있어.

Vault 우회는 와이어에 명시적 — 절대 숨은 기본값 아냐. 매크로가 완전한 개인 vault 맥락으로 도는지 아예 우회하는지는 진짜 결과(지연, 그리고 모델이 너에 대해 아는 것)를 가진 진짜 결정이야. 그래서 모든 요청에 명시적 필드로, 매크로별로 설정돼 다녀. 빈 소울이나 빠진 필드가 조용히 성능 지름길이 되면 절대 안 돼; 선택은 매번 소리 내어 진술돼, 어떤 요청도 의도한 것보다 많거나 적은 맥락을 조용히 안 보내게.

절대 매크로 ID 아냐

요청에서 제일 중요한 필드는 없는 필드야: 매크로 id. Flint 은 '저장해둔 7번 매크로를 돌려' 라고 절대 안 해. 실제 프롬프트를 보내. 이건 의도적이야 — Flint 이 브레인 쪽 매크로를 id 로 참조하는 순간, 두 시스템이 그 id 로 결합되고, 다음 레슨이 다룰 독립성이 사라져. 데이터를 보내, 남의 데이터로의 포인터 말고.

내용을 보내, 상대가 쥔 내용으로의 참조 말고. 필요한 전부를 나르는 자기완결적 요청은 피호출자의 내부 상태로부터 분리돼; 피호출자가 찾아봐야 하는 id 를 이름 붙이는 요청은 저기서 그 id 가 뭘 뜻하든에 결합돼. 통째로 보낼 여유가 있으면, 보내 — 몇 바이트를 양쪽을 독립으로 바꿀 자유와 맞바꿔.

Code

apply-free 요청 — 완성된 프롬프트, 매크로 id 없음·swift
struct ApplyFreeRequest: Encodable {
    let prompt: String        // 완전 렌더됨; {input} 이미 인라인됨
    let vaultBypass: Bool     // 와이어에 명시적, 절대 숨은 기본값 아님
    let ollamaTier: String?   // local / server / cloud
    let model: String?
    // 일부러 macroID 필드 없음: Flint 은 프롬프트를 보내, 브레인이
    // 저장한 뭐로의 포인터 말고. 그 부재가 시스템들을 떼어 놔.
}

func applyFree(_ req: ApplyFreeRequest) async throws -> String {
    var request = URLRequest(url: brainURL)   // .../utility-macros/apply-free
    request.httpMethod = "POST"
    request.httpBody = try JSONEncoder().encode(req)
    // ... 보내고, 응답에서 변환된 문자열 디코드 ...
}
와이어에서 본문이 어떻게 생겼나·json
{
  "prompt": "Fix the spelling and grammar. Return only the corrected text.\n\nteh qiuck borwn fox",
  "vaultBypass": true,
  "ollamaTier": "local",
  "model": null
}

External links

Exercise

Flint 을 브레인에 매크로를 저장해두고 선택과 함께 '7번 매크로 돌려' 만 보내게 설계할 수도 있었어. 그 설계가 만들 결합들을 나열하고, apply-free(프롬프트 통째로 보내기) 설계가 대신 무슨 비용을 내고 뭘 사는지 대조해. 별도로: vault 우회가 왜 소울이 설정됐는지에서 추론되는 대신 명시적 필드여야 해?
Hint
'7번 매크로' 설계는 두 카탈로그를 공유 id 로 결합해: 브레인의 매크로를 편집하면 Flint 의 동작이 조용히 바뀌고, 어느 목록도 상대 없이 못 움직여. apply-free 는 호출마다 몇 바이트를 더 내고 완전한 독립을 사. Vault 우회는 명시적이어야 해, 빈 소울에서 추론하면 지식/지연 결정을 보이지 않는 부수효과로 만드니까 — 요청이 작성자가 안 것과 다른 맥락을 보내, 그게 계약이 금지하는 숨은-기본값 함정이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.