Перейти к содержимому

Динамические ссылки

Многие поля шагов принимают строку-ссылку, которую CARL разрешает на основе контекста выполнения во время работы. Так более поздний шаг читает вывод более раннего, значение из памяти или исходные входные данные.

СсылкаРазрешается в
$history[-1]Вывод предыдущего шага по индексу (отрицательные индексы от конца).
$historyПолная текущая история как единая строка.
$memory.namespace.keyЗначение из памяти в пространстве имён. $memory.key использует пространство имён default.
$outer_contextИсходные входные данные. Если они выглядят как JSON, разбираются автоматически.
$metadata.path(Возможно вложенное) значение из метаданных контекста.
$steps.pathВложенное значение из метаданных результатов шагов.
$ltm.keyЗначение из долгосрочной памяти (если подключён LTM-бэкенд).
$event.nameПоследний payload события с данным именем (см. шаги с событиями).
"literal" или 'literal'Строка в кавычках возвращается дословно (литерал, не ссылка).

Всё остальное ищется как обычный ключ в метаданных контекста.

ПолеНа шагеТипичное значение
input_mappingTool{"data": "$history[-1]"}
argument_mappingMCP{"query": "$memory.input.query"}
value_sourceMemory (write/append)"$history[-1]"
conditionConditional branch"$history[-1] == 'yes'"
condition_context_keyConditional"$history[-1]"
condition_keyLoop"$memory.loop.needs_retry"
input_sourceStructured output"$history[-1]"
input_keyTransform"$history[-1]"
from mmar_carl import ToolStepDescription, ToolStepConfig
# Feed the previous step's output and a literal into a tool
ToolStepDescription(
number=2,
title="Summarise",
dependencies=[1],
config=ToolStepConfig(
tool_name="summarise",
input_mapping={
"text": "$history[-1]",
"topic": "$memory.input.topic",
"style": "'concise'", # a literal string
},
),
)