ATM

СПРАВОЧНИК

Справочник по реализации

Точки входа, типы результатов и первичные документы для интеграции.

Код контекста — запускается где угодно

Это блок, который важен, если вы просто хотите пользоваться, а не тестировать библиотеку. Не нужен ни Claude Code, ни MCP, ни аккаунт — работает в любом Python-процессе: в вашем агенте, в ноутбуке, в CI-джобе, или вставленный прямо в чат-сессию, чтобы разом задать контекст. Адаптировано напрямую из README пакета:

pip install fpf-thinking-map
from fpf_thinking_map.state import SemanticMap, RuntimeBinding
from fpf_thinking_map.primitives import (
    ContextPrimitive, RolePrimitive, GatePrimitive, GateCheck, TransitionPrimitive,
)
from fpf_thinking_map.logic import LogicLayer, DecisionRule, RuleKind, EvidencePresent, GatePasses
from fpf_thinking_map.traversal import ThinkingMapTraversal

# 1. your domain: contexts, roles, gates, transitions
sm = SemanticMap()
sm.register_context(ContextPrimitive("my_domain", "My Domain",
    glossary={"review": "check code for correctness"}))
sm.register_role(RolePrimitive("reviewer", "Reviewer", "my_domain"))
sm.register_gate(GatePrimitive("review_gate", "Review Gate", "my_domain", checks=[
    GateCheck("tests", "Tests must pass", required_evidence=["test_results"]),
]))
sm.register_transition(TransitionPrimitive(
    "start_to_reviewed", "Start -> Reviewed", "my_domain",
    from_state="start", to_state="reviewed",
    required_gate_id="review_gate", required_evidence=["test_results"],
))

# 2. optional: your own logic rules
logic = LogicLayer()
logic.add_rule(DecisionRule(
    name="review_ready",
    condition=EvidencePresent("test_results").AND(GatePasses("review_gate")),
    action_if_true="proceed_to_review", action_if_false="not_ready",
    kind=RuleKind.ROUTE, tags=["review"],
))

# 3. the engine, one step
engine = ThinkingMapTraversal(sm, logic_layer=logic)
binding = RuntimeBinding(
    task="review PR #42", actor_role_ids=["reviewer"],
    active_context_id="my_domain", current_evidence=["test_results"],
)
state = engine.build_active_state(binding, current_state="start")
outcome = engine.step(state, transition_id="start_to_reviewed")
print(outcome.kind, outcome.llm_prompt_state)

Замените my_domain/reviewer/review_gate на свой контекст, роль и шлюз — остальной механизм (состояние, срез, типизированный результат) остаётся тем же.

Хотите попробовать без кода? Режим пользователя vs. режим разработчика, в Claude Code

Шесть шагов установки, дальше выбираете, что делать:

  1. 1.Клонируйте репозиторийgit clone https://github.com/igareosh/fpf-agentic-thinking-map
  2. 2.Перейдите в папкуcd fpf-agentic-thinking-map
  3. 3.Установите локальноpip install -e .
  4. 4.Установите тестовый серверpip install -r dev_mcp/requirements.txt
  5. 5.Проверьте егоpython -m dev_mcp.test_server — должно быть 13/13
  6. 6.Добавьте в Claude Code, одной командойclaude mcp add fpf-test -- python -m dev_mcp.server

Режим пользователя

Тестируете свой собственный домен, в диалоге. Просите Claude: «построй run_scenario с scope="user-extension" для моего случая, оттолкнувшись от кода контекста выше» — Claude пишет и запускает сценарий, вы видите результат.

Режим разработчика

Аудируете саму библиотеку. Просите Claude: «запусти get_audit_gaps с scope="core" и покажи пробел в покрытии» — полезно, если хотите внести вклад или проверить границы, а не научиться пользоваться.

Оба варианта — режим для изучения, а не для продакшена: отлично, чтобы почувствовать инструмент за 10 минут перед решением о серьёзной интеграции. Для продакшена используете сразу код контекста выше, в своём собственном процессе.

Основные объекты

SemanticMapСтатическая структура и допустимые отношения.
RuntimeBindingТекущая роль, состояние и данные.
ThinkingMapTraversalВыбор кандидатов, проверка шлюзов и результат.

Типы результатов

CONTINUE · COLLECT_EVIDENCE · BRIDGE · IDLE · ESCALATE

Документы репозитория

Хотите это в своём проекте?

Если вы хотите встроить ATM в реальную агентную систему — финансы, e-commerce, что угодно, где агенту нужна рамка, а не только импровизация — пишите прямо: igareosh@igareosh.com — мой личный адрес, читаю и отвечаю сам, а не анонимная форма обратной связи.