Files
memex/notes/org-skill-token-accountant.org

2.6 KiB

SKILL: Token Accountant Agent (Universal Literate Note)

Overview

The Token Accountant is the governor of the Neural Engine. it manages the cost and reliability of LLM providers on-the-fly.

Phase B: Blueprint (PROTOCOL)

1. Architectural Intent

Maintain a dynamic, state-aware provider cascade. Detect provider "pain" (errors) and autonomously route around them.

2. Semantic Interfaces

Dynamic Routing Logic

(in-package :org-agent)

(defvar *provider-pain-table* (make-hash-table :test 'equal))

(defun token-accountant-record-pain (provider)
  "Marks a provider as 'pained' (failed). It will be de-prioritized."
  (setf (gethash provider *provider-pain-table*) (+ (get-universal-time) 600)) ; 10 min penalty
  (kernel-log "ACCOUNTANT - Provider ~a de-prioritized due to failure." provider))

(defun token-accountant-get-cascade (context)
  "Returns a dynamic list of providers, routing around pained ones."
  (let ((all-providers '(:openrouter :groq :gemini))
        (healthy nil)
        (pained nil)
        (now (get-universal-time)))
    (dolist (p all-providers)
      (if (> (or (gethash p *provider-pain-table*) 0) now)
          (push p pained)
          (push p healthy)))
    (append (nreverse healthy) (nreverse pained))))


(defun token-accountant-get-model-for-provider (provider &optional context)
  "Returns the recommended model for the provider."
  (case provider
    (:openrouter "moonshotai/kimi-k2.5")
    (:groq "llama-3.3-70b-versatile")
    (:gemini "gemini-1.5-flash-latest")
    (t nil)))

(defun token-accountant-patch-kernel ()
  "Hot-patches the kernel's cascade and model selector to use our dynamic logic."
  (setf org-agent:*provider-cascade* #'token-accountant-get-cascade)
  (setf org-agent:*model-selector-fn* #'token-accountant-get-model-for-provider))

Registration

(progn
  (token-accountant-patch-kernel)
  (defskill :skill-token-accountant
    :priority 100
    :trigger (lambda (context) (eq (getf (getf context :payload) :sensor) :tool-error))
    :neuro (lambda (context) nil)
    :symbolic (lambda (action context) 
                (let ((p (getf (getf context :payload) :provider)))
                  (when p (token-accountant-record-pain p))
                  action))))