jianmu.memory¶
适用对象:Agent 应用开发者 / 记忆与上下文扩展开发者
是否必读:按需
相关模块:jianmu.message, jianmu.skill, jianmu.rag
1. 模块职责¶
jianmu.memory 负责工作记忆、长期记忆、checkpoint、上下文构建和记忆工具。
它的核心价值不是单纯“存数据”,而是把消息、状态、历史和工具描述整理成可供模型消费的上下文。
2. 适合查什么¶
- 协议:
WorkingMemoryProtocol、LongTermMemoryProtocol、CheckpointerProtocol - 上下文构建:
ContextBuilder、ContextBuilderProtocol - token 预算:
TokenCounterProtocol、TokenBudgetFilter - checkpoint:
InMemoryCheckpointer、FileCheckpointer、NullCheckpointer - 内置记忆工具:
MemoryAddTool、MemorySearchTool
3. 使用建议¶
- 想先把聊天历史、状态和工具说明拼成 prompt 时,优先看上下文构建相关对象
- 想给 runner 增加恢复能力时,先接
FileCheckpointer或InMemoryCheckpointer - 想给 agent 提供轻量长期记忆工具时,再使用
MemoryAddTool/MemorySearchTool - 想接入能力型长期记忆后端时,优先实现或使用
LongTermMemoryProtocol - 需要更准确的 token 预算控制时,不要只停留在
SimpleTokenCounter,优先考虑TiktokenTokenCounter或HFTokenCounter
4. 注意事项¶
LongTermMemoryProtocol是长期记忆的公开主抽象SimpleStore是一个轻量内置长期记忆后端,而公开抽象边界仍然是LongTermMemoryProtocol- 这里的长期记忆层与 RAG 向量库不是同一层抽象
- 需要检索增强时,再结合
jianmu.rag ContextBuilder属于 prompt 上下文构建层,不等同于长期记忆或知识库
5. 最小示例¶
from jianmu.memory import FileCheckpointer, Mem0LongTermMemory, SimpleStore, create_memory_tools
store = SimpleStore()
checkpointer = FileCheckpointer()
memory_tools = create_memory_tools(long_term_memory=store)
long_term_memory = Mem0LongTermMemory()
6. 常见入口¶
- 想持久化 runner 状态:看
FileCheckpointer/InMemoryCheckpointer - 想组 prompt 上下文:看
ContextBuilder - 想限制上下文 token 预算:看
TokenCounterProtocol、SimpleTokenCounter、TiktokenTokenCounter、HFTokenCounter、TokenBudgetFilter - 想给 agent 一个轻量 memory read/write 能力:看
MemoryAddTool、MemorySearchTool - 想接入 mem0 这类长期记忆系统:看
LongTermMemoryProtocol、Mem0LongTermMemory
7. API 参考¶
memory
¶
jianmu memory module – context, checkpoint, and long-term memory primitives.
WorkingMemoryProtocol
¶
Bases: Protocol
Abstract interface for filtering or summarizing state messages.
CheckpointerProtocol
¶
Bases: Protocol
Abstract interface for thread state checkpointing.
save_checkpoint
¶
save_checkpoint(
thread_id: str,
step: int,
state_dump: dict,
tree_state: Optional[dict] = None,
runtime_metadata: Optional[dict] = None,
) -> None
Persist a checkpoint for a logical thread.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Stable identifier for the checkpoint stream. |
必需 |
step
|
int
|
Monotonic checkpoint step. |
必需 |
state_dump
|
dict
|
Serializable runtime state payload. |
必需 |
tree_state
|
Optional[dict]
|
Optional serialized tree-status payload. |
None
|
runtime_metadata
|
Optional[dict]
|
Optional runner-internal metadata payload. |
None
|
源代码位于: jianmu/memory/base.py
get_checkpoint
¶
Load the latest checkpoint for a logical thread.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Stable identifier for the checkpoint stream. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[dict]
|
Latest checkpoint payload, or |
源代码位于: jianmu/memory/base.py
ContextBuilderProtocol
¶
Bases: Protocol
Build a context (messages/prompt) from state and runtime context.
build
¶
build(
local_state: Any,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Build a message context from local state and runtime context.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
local_state
|
Any
|
State owned by the current agent or node. |
必需 |
global_state
|
Any
|
Optional shared state visible across agents or trees. |
None
|
ctx
|
Any | None
|
Optional runtime context object. |
None
|
**kwargs
|
Any
|
Builder-specific extension arguments. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Ordered messages ready to be sent to the model. |
源代码位于: jianmu/memory/context/base.py
transform
¶
transform(
messages: Sequence[Message],
*,
local_state: Any = None,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Transform an existing message list.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
messages
|
Sequence[Message]
|
Existing message list to post-process. |
必需 |
local_state
|
Any
|
State owned by the current agent or node. |
None
|
global_state
|
Any
|
Optional shared state visible across agents or trees. |
None
|
ctx
|
Any | None
|
Optional runtime context object. |
None
|
**kwargs
|
Any
|
Builder-specific extension arguments. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Transformed message sequence. |
源代码位于: jianmu/memory/context/base.py
MessageProvider
¶
Bases: Protocol
Produce a list of messages from state and runtime context.
get_messages
¶
get_messages(
local_state: Any,
global_state: Any = None,
ctx: Any | None = None,
) -> Sequence[Message]
Produce messages from the provided state and runtime context.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
local_state
|
Any
|
State owned by the current agent or node. |
必需 |
global_state
|
Any
|
Optional shared state visible across agents or trees. |
None
|
ctx
|
Any | None
|
Optional runtime context object. |
None
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Message sequence contributed by this provider. |
源代码位于: jianmu/memory/context/base.py
ContextFilter
¶
Bases: Protocol
Post-process aggregated messages.
apply
¶
apply(
messages: Sequence[Message],
local_state: Any = None,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Post-process an aggregated message list.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
messages
|
Sequence[Message]
|
Message list produced by providers or prior filters. |
必需 |
local_state
|
Any
|
State owned by the current agent or node. |
None
|
global_state
|
Any
|
Optional shared state visible across agents or trees. |
None
|
ctx
|
Any | None
|
Optional runtime context object. |
None
|
**kwargs
|
Any
|
Filter-specific extension arguments. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Filtered or augmented message sequence. |
源代码位于: jianmu/memory/context/base.py
ContextBuilder
¶
ContextBuilder(
providers: Sequence[MessageProvider],
filters: Sequence[ContextFilter] | None = None,
)
Bases: ContextBuilderProtocol
Composable context builder: providers first, then filters.
Use this when prompt assembly needs to combine multiple sources such as chat history, tool descriptions, state summaries, and post-processing filters like token budgets.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
providers |
Ordered providers contributing base messages. |
|
filters |
Ordered filters applied after message aggregation. |
Create a context builder.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
providers
|
Sequence[MessageProvider]
|
Ordered providers that contribute base messages. |
必需 |
filters
|
Sequence[ContextFilter] | None
|
Optional ordered filters that post-process aggregated messages. |
None
|
源代码位于: jianmu/memory/context/builder.py
for_chat
classmethod
¶
for_chat(
system_prompt: str | None = None,
working_memory: Any | None = None,
max_messages: int | None = None,
max_tokens: int | None = None,
*,
runtime_prompt: "PromptRuntimeContext | None" = None,
) -> "ContextBuilder"
Build a chat-oriented context builder.
This preset assembles persona prompt, optional bootstrap-file context, and conversation history. It does not inject tool or skill guidance.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
system_prompt
|
str | None
|
Optional persona prompt. When omitted, the configured default persona prompt is used. |
None
|
working_memory
|
Any | None
|
Optional working-memory adapter applied to history. |
None
|
max_messages
|
int | None
|
Optional maximum number of messages retained after filtering. |
None
|
max_tokens
|
int | None
|
Optional token budget applied after aggregation. |
None
|
runtime_prompt
|
'PromptRuntimeContext | None'
|
Optional execution-scoped prompt overrides.
|
None
|
返回:
| 类型 | 描述 |
|---|---|
'ContextBuilder'
|
A configured |
源代码位于: jianmu/memory/context/builder.py
for_react
classmethod
¶
for_react(
system_prompt: str | None = None,
tools_desc: str | None = None,
working_memory: Any | None = None,
max_messages: int | None = None,
max_tokens: int | None = None,
*,
runtime_prompt: "PromptRuntimeContext | None" = None,
bootstrap_files: Sequence[str] | None = None,
) -> "ContextBuilder"
Build a ReAct-oriented context builder.
This preset assembles persona prompt, ReAct protocol, tool descriptions, optional bootstrap-file context, and message history. It does not inject skill summaries or active skill instructions.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
system_prompt
|
str | None
|
Optional persona prompt. When omitted, the configured default persona prompt is used. |
None
|
tools_desc
|
str | None
|
Optional preformatted tool description block. |
None
|
working_memory
|
Any | None
|
Optional working-memory adapter applied to history. |
None
|
max_messages
|
int | None
|
Optional maximum number of messages retained after filtering. |
None
|
max_tokens
|
int | None
|
Optional token budget applied after aggregation. |
None
|
runtime_prompt
|
'PromptRuntimeContext | None'
|
Optional execution-scoped prompt overrides.
|
None
|
bootstrap_files
|
Sequence[str] | None
|
Optional explicit bootstrap filenames to load when bootstrap prompting is enabled. |
None
|
返回:
| 类型 | 描述 |
|---|---|
'ContextBuilder'
|
A configured |
源代码位于: jianmu/memory/context/builder.py
for_skill
classmethod
¶
for_skill(
*,
system_prompt: str | None = None,
skill_set: Any | None = None,
tools: Sequence[Any] | None = None,
mode: str = "summary",
include_resources: bool = True,
include_react_protocol: bool = False,
max_messages: int | None = None,
max_tokens: int | None = None,
runtime_prompt: "PromptRuntimeContext | None" = None,
bootstrap_files: Sequence[str] | None = None,
include_unavailable_skills: bool = False,
) -> "ContextBuilder"
Build a skill-aware context builder.
This preset can operate in two modes:
- Explicit mode, where
skill_setalready contains the selected skills for the run. - Runtime-resolved mode, where
runtime_promptsupplies a skill catalog or skill directory and the builder derives active skills and/or summaries from it.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
system_prompt
|
str | None
|
Optional persona prompt. When omitted, the configured default persona prompt is used. |
None
|
skill_set
|
Any | None
|
Optional explicitly selected skill set for the run. |
None
|
tools
|
Sequence[Any] | None
|
Optional tools available alongside the selected skills. |
None
|
mode
|
str
|
Prompt rendering mode for explicit skills, typically
|
'summary'
|
include_resources
|
bool
|
Whether to include runtime-visible skill resource sections for explicit skills. |
True
|
include_react_protocol
|
bool
|
Whether to prepend the ReAct protocol contract used by ReAct-backed skill execution. |
False
|
max_messages
|
int | None
|
Optional maximum number of messages retained after filtering. |
None
|
max_tokens
|
int | None
|
Optional token budget applied after aggregation. |
None
|
runtime_prompt
|
'PromptRuntimeContext | None'
|
Optional execution-scoped prompt overrides.
|
None
|
bootstrap_files
|
Sequence[str] | None
|
Optional explicit bootstrap filenames to load when bootstrap prompting is enabled. |
None
|
include_unavailable_skills
|
bool
|
Whether unavailable catalog skills may be included when deriving prompt records from runtime prompt state. |
False
|
返回:
| 类型 | 描述 |
|---|---|
'ContextBuilder'
|
A configured |
源代码位于: jianmu/memory/context/builder.py
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | |
resolve_for_llm
classmethod
¶
resolve_for_llm(
*,
explicit_builder: ContextBuilderProtocol | None = None,
runtime_prompt: "PromptRuntimeContext | None" = None,
system_prompt: str | None = None,
tools_desc: str | None = None,
prefer_react: bool = False,
allow_skill_context: bool = False,
skill_set: Any | None = None,
skill_tools: Sequence[Any] | None = None,
skill_mode: str = "summary",
include_skill_resources: bool = True,
include_react_protocol: bool = False,
include_unavailable_skills: bool = False,
) -> ContextBuilderProtocol
Resolve the effective builder for one LLM-style node invocation.
Resolution order is:
- Explicit builder passed directly to the node.
- Runtime-provided builder from
PromptRuntimeContext. for_skill(...)when the caller explicitly enables skill-aware context and the runtime requests skill-aware prompting.for_react(...)when the caller prefers ReAct semantics or tool descriptions are present.for_chat(...)otherwise.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
explicit_builder
|
ContextBuilderProtocol | None
|
Optional builder provided directly by the caller. |
None
|
runtime_prompt
|
'PromptRuntimeContext | None'
|
Optional execution-scoped prompt overrides. |
None
|
system_prompt
|
str | None
|
Optional base system prompt forwarded to the resolved preset builder. |
None
|
tools_desc
|
str | None
|
Optional preformatted tool description block. Its presence selects the ReAct preset. |
None
|
prefer_react
|
bool
|
Whether this call site should resolve the ReAct preset even when no tool descriptions are present yet. |
False
|
allow_skill_context
|
bool
|
Whether this call site allows skill-aware prompt assembly. |
False
|
skill_set
|
Any | None
|
Optional explicitly selected skill set for the run. |
None
|
skill_tools
|
Sequence[Any] | None
|
Optional tools visible alongside the selected skills. |
None
|
skill_mode
|
str
|
Prompt rendering mode for skill-aware prompting. |
'summary'
|
include_skill_resources
|
bool
|
Whether runtime-visible skill resources should be rendered when skill-aware prompting is selected. |
True
|
include_react_protocol
|
bool
|
Whether ReAct protocol semantics should be prepended when skill-aware prompting is selected. |
False
|
include_unavailable_skills
|
bool
|
Whether unavailable catalog skills may be included when deriving skill context from runtime prompt. |
False
|
返回:
| 类型 | 描述 |
|---|---|
ContextBuilderProtocol
|
The effective |
源代码位于: jianmu/memory/context/builder.py
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 | |
build
¶
build(
local_state: Any,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Build context messages by running providers and then filters.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
local_state
|
Any
|
State owned by the current agent or node. |
必需 |
global_state
|
Any
|
Optional shared state visible across agents or trees. |
None
|
ctx
|
Any | None
|
Optional runtime context object. |
None
|
**kwargs
|
Any
|
Reserved for future pipeline extensions. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Ordered message sequence produced by the builder. |
源代码位于: jianmu/memory/context/builder.py
transform
¶
transform(
messages: Sequence[Message],
*,
local_state: Any = None,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Apply only the filter phase to an existing message sequence.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
messages
|
Sequence[Message]
|
Existing message sequence to transform. |
必需 |
local_state
|
Any
|
State owned by the current agent or node. |
None
|
global_state
|
Any
|
Optional shared state visible across agents or trees. |
None
|
ctx
|
Any | None
|
Optional runtime context object. |
None
|
**kwargs
|
Any
|
Reserved for future pipeline extensions. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Filtered message sequence. |
源代码位于: jianmu/memory/context/builder.py
TokenCounterProtocol
¶
Bases: Protocol
Estimate token counts for individual messages and message sequences.
count_message
¶
Estimate token count for one message.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
message
|
Message
|
The message to count. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
int
|
Estimated token count for the message. |
SimpleTokenCounter
¶
Bases: TokenCounterProtocol
Approximate token counter based on character length.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
chars_per_token |
Approximate character-to-token ratio used for estimates. |
Configure the approximate characters-per-token ratio.
源代码位于: jianmu/memory/context/filters.py
count_message
¶
Estimate token count for one message.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
message
|
Message
|
The Message instance to count. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
int
|
The estimated token count. |
源代码位于: jianmu/memory/context/filters.py
TiktokenTokenCounter
¶
Bases: TokenCounterProtocol
Token counter backed by the optional tiktoken package.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
_encoding |
|
Configure a tiktoken-based token counter.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
model
|
str | None
|
Optional model name used to resolve the encoding. |
None
|
encoding_name
|
str | None
|
Optional explicit encoding name. Takes precedence over model. |
None
|
引发:
| 类型 | 描述 |
|---|---|
RuntimeError
|
If |
ValueError
|
If neither |
源代码位于: jianmu/memory/context/filters.py
count_message
¶
Estimate token count for one message using tiktoken.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
message
|
Message
|
The message to count. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
int
|
Estimated token count for the message. |
源代码位于: jianmu/memory/context/filters.py
HFTokenCounter
¶
HFTokenCounter(
model_name: str | None = None,
*,
tokenizer: Any | None = None,
use_fast: bool = True,
)
Bases: TokenCounterProtocol
Token counter backed by an optional HuggingFace tokenizer.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
_tokenizer |
HuggingFace tokenizer instance used for counting. |
Configure a HuggingFace tokenizer-based counter.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
model_name
|
str | None
|
Model or tokenizer identifier for |
None
|
tokenizer
|
Any | None
|
Optional prebuilt tokenizer instance. If provided, |
None
|
use_fast
|
bool
|
Whether to prefer fast tokenizers when loading from model name. |
True
|
引发:
| 类型 | 描述 |
|---|---|
RuntimeError
|
If |
ValueError
|
If neither |
源代码位于: jianmu/memory/context/filters.py
count_message
¶
Estimate token count for one message using a HuggingFace tokenizer.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
message
|
Message
|
The message to count. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
int
|
Estimated token count for the message. |
源代码位于: jianmu/memory/context/filters.py
MaxMessagesFilter
¶
Bases: ContextFilter
Limit message count while keeping leading pinned roles.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
max_messages |
Maximum number of messages preserved after filtering. |
|
pinned_roles |
Leading roles that remain pinned at the front of context. |
Configure a message-count limit with pinned leading roles.
源代码位于: jianmu/memory/context/filters.py
apply
¶
apply(
messages: Sequence[Message],
local_state: Any = None,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Trim message count while preserving the pinned prefix.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
messages
|
Sequence[Message]
|
Incoming message sequence. |
必需 |
local_state
|
Any
|
Local state object. |
None
|
global_state
|
Any
|
Global state object. |
None
|
ctx
|
Any | None
|
Execution context. |
None
|
**kwargs
|
Any
|
Extra parameters. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Trimmed sequence of messages. |
源代码位于: jianmu/memory/context/filters.py
TokenBudgetFilter
¶
TokenBudgetFilter(
max_tokens: int,
token_counter: TokenCounterProtocol | None = None,
pinned_roles: Sequence[str] = ("system",),
trim_from_start: bool = True,
)
Bases: ContextFilter
Truncate messages to fit within a token budget.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
max_tokens |
Maximum token budget allowed for the final message list. |
|
token_counter |
Token counter used to estimate message costs. |
|
pinned_roles |
Leading roles that remain pinned at the front of context. |
|
trim_from_start |
Whether trimming removes older tail messages first. |
Configure token-budget trimming while preserving pinned roles.
源代码位于: jianmu/memory/context/filters.py
apply
¶
apply(
messages: Sequence[Message],
local_state: Any = None,
global_state: Any = None,
ctx: Any | None = None,
**kwargs: Any,
) -> Sequence[Message]
Trim messages until the token budget is satisfied.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
messages
|
Sequence[Message]
|
Incoming message sequence. |
必需 |
local_state
|
Any
|
Local state object. |
None
|
global_state
|
Any
|
Global state object. |
None
|
ctx
|
Any | None
|
Execution context. |
None
|
**kwargs
|
Any
|
Extra parameters. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Trimmed sequence of messages. |
源代码位于: jianmu/memory/context/filters.py
StaticPromptProvider
¶
Bases: MessageProvider
Inject a static system prompt.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
prompt |
Static system prompt text emitted by the provider. |
Initialize the provider.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
prompt
|
str
|
Static system prompt text to inject when non-empty. |
必需 |
源代码位于: jianmu/memory/context/providers.py
get_messages
¶
get_messages(
local_state: Any,
global_state: Any = None,
ctx: Any | None = None,
) -> Sequence[Message]
Return the configured static prompt as a system message.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
local_state
|
Any
|
Node-local state object. |
必需 |
global_state
|
Any
|
Optional shared state placeholder. |
None
|
ctx
|
Any | None
|
Optional execution context. |
None
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
A sequence containing the system message or empty sequence. |
源代码位于: jianmu/memory/context/providers.py
ToolsDescProvider
¶
Bases: MessageProvider
Inject tool descriptions as a system message.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
tools_desc |
Preformatted tool description block rendered into context. |
Initialize the provider.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
tools_desc
|
str
|
Preformatted tool description block. |
必需 |
源代码位于: jianmu/memory/context/providers.py
get_messages
¶
get_messages(
local_state: Any,
global_state: Any = None,
ctx: Any | None = None,
) -> Sequence[Message]
Return a system message describing available tools.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
local_state
|
Any
|
Node-local state object. |
必需 |
global_state
|
Any
|
Optional shared state placeholder. |
None
|
ctx
|
Any | None
|
Optional execution context. |
None
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
A sequence containing the system message or empty sequence. |
源代码位于: jianmu/memory/context/providers.py
StateHistoryProvider
¶
Bases: MessageProvider
Load conversation history from state and normalize runtime semantics.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
state_key |
State field used to read prior messages. |
|
working_memory |
Optional working-memory adapter applied to history. |
Initialize the provider.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
state_key
|
str
|
State field that stores the message history. |
'messages'
|
working_memory
|
Any | None
|
Optional working-memory adapter with |
None
|
源代码位于: jianmu/memory/context/providers.py
get_messages
¶
get_messages(
local_state: Any,
global_state: Any = None,
ctx: Any | None = None,
) -> Sequence[Message]
Build history messages from the current state snapshot.
This provider also annotates prior assistant tool plans and tool receipts so downstream models do not confuse them with new incoming human messages.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
local_state
|
Any
|
Node-local state or message container. |
必需 |
global_state
|
Any
|
Unused shared state placeholder for protocol parity. |
None
|
ctx
|
Any | None
|
Optional runtime context that may expose working memory. |
None
|
返回:
| 类型 | 描述 |
|---|---|
Sequence[Message]
|
Normalized message history ready for context assembly. |
源代码位于: jianmu/memory/context/providers.py
InMemoryCheckpointer
¶
Bases: CheckpointerProtocol
Simple in-memory checkpointer for tests and transient sessions.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
_store |
Dict[str, dict]
|
In-memory checkpoint map keyed by thread ID. |
Initialize the in-memory checkpoint map.
源代码位于: jianmu/memory/checkpoint/in_memory.py
save_checkpoint
¶
save_checkpoint(
thread_id: str,
step: int,
state_dump: dict,
tree_state: Optional[dict] = None,
runtime_metadata: Optional[dict] = None,
) -> None
Store a checkpoint payload in memory.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Logical thread/session identifier. |
必需 |
step
|
int
|
Step tick index. |
必需 |
state_dump
|
dict
|
Serialized state dict. |
必需 |
tree_state
|
Optional[dict]
|
Optional serialized behavior tree state. |
None
|
runtime_metadata
|
Optional[dict]
|
Optional runner-internal metadata payload. |
None
|
源代码位于: jianmu/memory/checkpoint/in_memory.py
get_checkpoint
¶
Load an in-memory checkpoint payload for one thread id.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Logical thread/session identifier. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[dict]
|
The loaded checkpoint dictionary if found, or None. |
源代码位于: jianmu/memory/checkpoint/in_memory.py
FileCheckpointer
¶
Bases: CheckpointerProtocol
JSONL file-based checkpointer for lightweight persistent runs.
FileCheckpointer appends one checkpoint envelope per line and restores
only the latest line for a given thread id. It is appropriate for local
apps, demos, and simple resumable workflows.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
storage_dir |
Directory containing per-thread checkpoint JSONL files. |
Initialize the JSONL checkpoint directory.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
storage_dir
|
str | None
|
Optional directory override. When omitted, Jianmu config determines the checkpoint directory. |
None
|
源代码位于: jianmu/memory/checkpoint/file_checkpointer.py
save_checkpoint
¶
save_checkpoint(
thread_id: str,
step: int,
state_dump: dict,
tree_state: Optional[dict] = None,
runtime_metadata: Optional[dict] = None,
) -> None
Persist a checkpoint payload to the backing store.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Logical thread/session identifier. |
必需 |
step
|
int
|
Step tick index. |
必需 |
state_dump
|
dict
|
Serialized state dict. |
必需 |
tree_state
|
Optional[dict]
|
Optional serialized behavior tree state. |
None
|
runtime_metadata
|
Optional[dict]
|
Optional runner-internal metadata payload. |
None
|
源代码位于: jianmu/memory/checkpoint/file_checkpointer.py
get_checkpoint
¶
Load a checkpoint payload for one thread id.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Logical thread/session identifier. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[dict]
|
The loaded checkpoint dictionary if found, or None. |
源代码位于: jianmu/memory/checkpoint/file_checkpointer.py
NullCheckpointer
¶
Bases: CheckpointerProtocol
No-op checkpointer used in tests or ephemeral runs.
save_checkpoint
¶
save_checkpoint(
thread_id: str,
step: int,
state_dump: dict,
tree_state: Optional[dict] = None,
runtime_metadata: Optional[dict] = None,
) -> None
Ignore checkpoint save requests.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Session identifier. |
必需 |
step
|
int
|
Step tick index. |
必需 |
state_dump
|
dict
|
Serialized state dict. |
必需 |
tree_state
|
Optional[dict]
|
Optional serialized behavior tree state. |
None
|
runtime_metadata
|
Optional[dict]
|
Optional runner-internal metadata payload. |
None
|
源代码位于: jianmu/memory/checkpoint/base.py
get_checkpoint
¶
Always return no checkpoint.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
thread_id
|
str
|
Session identifier. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[dict]
|
Always returns None. |
LongTermMemoryProtocol
¶
Bases: Protocol
Public capability protocol for long-term memory integrations.
This protocol models what a long-term memory system can do for an agent: record durable information and retrieve relevant memory later. It does not assume the backend is a key-value store or expose deletion as a core capability.
record
¶
record(
inputs: LongTermMemoryInput,
*,
namespace: tuple[str, ...] | None = None,
**kwargs: Any,
) -> LongTermMemoryRecordResult
Record information into long-term memory.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
inputs
|
LongTermMemoryInput
|
Text or message payload to persist. |
必需 |
namespace
|
tuple[str, ...] | None
|
Optional namespace for isolating memory records. |
None
|
**kwargs
|
Any
|
Backend-specific record options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRecordResult
|
Backend-defined record result payload. |
源代码位于: jianmu/memory/long_term/base.py
retrieve
¶
retrieve(
query: LongTermMemoryQuery,
*,
limit: int = 5,
namespace: tuple[str, ...] | None = None,
**kwargs: Any,
) -> LongTermMemoryRetrieved
Retrieve relevant information from long-term memory.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
LongTermMemoryQuery
|
Text or message payload describing the retrieval target. |
必需 |
limit
|
int
|
Maximum number of results to return. |
5
|
namespace
|
tuple[str, ...] | None
|
Optional namespace for isolating memory retrieval. |
None
|
**kwargs
|
Any
|
Backend-specific retrieval options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRetrieved
|
A list of retrieved memory items. |
源代码位于: jianmu/memory/long_term/base.py
format_retrieved
¶
Render retrieved memory into LLM-consumable text.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
retrieved
|
LongTermMemoryRetrieved
|
Retrieved memory items to render. |
必需 |
**kwargs
|
Any
|
Backend-specific formatting options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
str
|
Formatted text suitable for tools or prompt injection. |
源代码位于: jianmu/memory/long_term/base.py
Mem0LongTermMemory
¶
Mem0LongTermMemory(
api_key: str | None = None,
config: dict[str, Any] | None = None,
*,
infer: bool = True,
)
Mem0-backed implementation of LongTermMemoryProtocol.
This integration treats Mem0 as a memory capability rather than as a
key-value store. Recording and retrieval keep namespace explicit while
leaving backend-specific result structure flexible.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
client |
Mem0 client or local memory instance used for operations. |
|
_is_client |
Whether the hosted |
|
_infer |
Whether semantic fact extraction is enabled during writes. |
Initialize a Mem0-backed long-term memory instance.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
api_key
|
str | None
|
Optional API key for hosted |
None
|
config
|
dict[str, Any] | None
|
Optional configuration passed to local |
None
|
infer
|
bool
|
Whether Mem0 should perform semantic fact extraction when recording memory. |
True
|
源代码位于: jianmu/memory/long_term/mem0.py
record
¶
record(
inputs: LongTermMemoryInput,
*,
namespace: tuple[str, ...] | None = None,
**kwargs: Any,
) -> LongTermMemoryRecordResult
Record information into Mem0.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
inputs
|
LongTermMemoryInput
|
Text or message payload to persist. |
必需 |
namespace
|
tuple[str, ...] | None
|
Optional Jianmu namespace mapped to Mem0 |
None
|
**kwargs
|
Any
|
Optional backend-specific options such as |
{}
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRecordResult
|
A backend-shaped record result with normalized |
LongTermMemoryRecordResult
|
available. |
源代码位于: jianmu/memory/long_term/mem0.py
retrieve
¶
retrieve(
query: LongTermMemoryQuery,
*,
limit: int = 5,
namespace: tuple[str, ...] | None = None,
**kwargs: Any,
) -> LongTermMemoryRetrieved
Retrieve relevant Mem0 memories.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
LongTermMemoryQuery
|
Search query text or message payload. |
必需 |
limit
|
int
|
Maximum number of results to return. |
5
|
namespace
|
tuple[str, ...] | None
|
Optional Jianmu namespace mapped to Mem0 |
None
|
**kwargs
|
Any
|
Reserved backend-specific options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRetrieved
|
A list of normalized retrieved memory dictionaries. |
源代码位于: jianmu/memory/long_term/mem0.py
format_retrieved
¶
Render retrieved memories into plain text.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
retrieved
|
LongTermMemoryRetrieved
|
Normalized retrieved memory items. |
必需 |
**kwargs
|
Any
|
Reserved formatting options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
str
|
A readable text block suitable for tool output or prompt injection. |
源代码位于: jianmu/memory/long_term/mem0.py
MemoryService
¶
MemoryService(
long_term_memory: LongTermMemoryProtocol,
namespace: tuple[str, ...] = ("default",),
)
Facade over a namespace-scoped long-term memory backend.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
memory |
Bound long-term memory backend implementation. |
|
namespace |
Default namespace used for read and write operations. |
Bind the facade to a long-term memory backend and default namespace.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
long_term_memory
|
LongTermMemoryProtocol
|
Backend used to record and retrieve memories. |
必需 |
namespace
|
tuple[str, ...]
|
Default namespace used when a call does not override it. |
('default',)
|
源代码位于: jianmu/memory/long_term/service.py
add
¶
add(
content: str,
*,
metadata: dict[str, Any] | None = None,
key: str,
namespace: tuple[str, ...] | None = None,
) -> LongTermMemoryRecordResult
Record one memory value.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
content
|
str
|
Text content to record. |
必需 |
metadata
|
dict[str, Any] | None
|
Optional metadata stored with the memory item. |
None
|
key
|
str
|
Stable backend key for the recorded memory. |
必需 |
namespace
|
tuple[str, ...] | None
|
Optional namespace override for the write operation. |
None
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRecordResult
|
Backend-defined record result payload. |
源代码位于: jianmu/memory/long_term/service.py
search
¶
search(
query: str,
*,
limit: int = 5,
namespace: tuple[str, ...] | None = None,
) -> LongTermMemoryRetrieved
Retrieve stored memories within the resolved namespace.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
str
|
Query text to execute. |
必需 |
limit
|
int
|
Maximum number of items to return. |
5
|
namespace
|
tuple[str, ...] | None
|
Optional namespace override for the read operation. |
None
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRetrieved
|
Retrieved memory items from the backend. |
源代码位于: jianmu/memory/long_term/service.py
format_retrieved
¶
Render retrieved memory items into text.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
retrieved
|
LongTermMemoryRetrieved
|
Retrieved memory items to render. |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
Text representation suitable for prompts or tools. |
源代码位于: jianmu/memory/long_term/service.py
delete
¶
Delete one memory item from the resolved namespace when supported.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
memory
|
Any
|
Backend-defined memory record handle to delete. |
必需 |
namespace
|
tuple[str, ...] | None
|
Optional namespace override for the delete operation. |
None
|
源代码位于: jianmu/memory/long_term/service.py
as_tools
¶
Return the default read/write tool pair for this memory scope.
返回:
| 类型 | 描述 |
|---|---|
list[Tool]
|
A list containing search and add tools bound to this service. |
源代码位于: jianmu/memory/long_term/service.py
SimpleStore
¶
JSON-backed long-term memory implementation with namespace support.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
path |
Filesystem path to the JSON backing store. |
|
_data |
Dict[str, Any]
|
In-memory nested dictionary representing persisted memory state. |
Initialize the JSON-backed memory file from disk if present.
源代码位于: jianmu/memory/long_term/simple.py
record
¶
record(
inputs: LongTermMemoryInput,
*,
namespace: tuple[str, ...] | None = None,
**kwargs: Any,
) -> LongTermMemoryRecordResult
Persist one memory item into the JSON store.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
inputs
|
LongTermMemoryInput
|
Text or message payload to persist. |
必需 |
namespace
|
tuple[str, ...] | None
|
Optional namespace used for storage isolation. |
None
|
**kwargs
|
Any
|
Additional options such as |
{}
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRecordResult
|
Record result payload containing normalized stored items. |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
If input validation fails. |
源代码位于: jianmu/memory/long_term/simple.py
retrieve
¶
retrieve(
query: LongTermMemoryQuery,
*,
limit: int = 5,
namespace: tuple[str, ...] | None = None,
**kwargs: Any,
) -> LongTermMemoryRetrieved
Search JSON-serialized values within one namespace.
SimpleStore is a local demo backend, so retrieval stays deliberately
lightweight: exact substring match first, then fallback keyword overlap.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
LongTermMemoryQuery
|
Query text to execute. |
必需 |
limit
|
int
|
Maximum number of items to return. |
5
|
namespace
|
tuple[str, ...] | None
|
Optional namespace used for storage isolation. |
None
|
**kwargs
|
Any
|
Reserved backend-specific options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
LongTermMemoryRetrieved
|
Retrieved memory items ordered by local relevance score. |
源代码位于: jianmu/memory/long_term/simple.py
format_retrieved
¶
Render retrieved memory items into plain text.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
retrieved
|
LongTermMemoryRetrieved
|
Retrieved memory items to render. |
必需 |
**kwargs
|
Any
|
Reserved formatting options. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
str
|
Plain-text representation of retrieved memory items. |
源代码位于: jianmu/memory/long_term/simple.py
delete
¶
Delete one retrieved memory item from the target namespace.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
memory
|
Any
|
Memory record handle or dictionary containing an |
必需 |
namespace
|
tuple[str, ...] | None
|
Optional namespace used for storage isolation. |
None
|
源代码位于: jianmu/memory/long_term/simple.py
MemoryAddTool
¶
MemoryAddTool(
namespace: Tuple[str, ...] = ("default",),
*,
long_term_memory: LongTermMemoryProtocol | None = None,
memory: MemoryService | None = None,
)
Bases: Tool
Record one piece of information into long-term memory.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
memory |
Memory service used to persist records. |
|
namespace |
Default namespace used for writes. |
Bind the add tool to a memory facade or namespace.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
namespace
|
Tuple[str, ...]
|
Default namespace for record writes. |
('default',)
|
long_term_memory
|
LongTermMemoryProtocol | None
|
Optional long-term memory capability backend. |
None
|
memory
|
MemoryService | None
|
Optional high-level memory facade. |
None
|
源代码位于: jianmu/memory/tools.py
run
async
¶
run(
content: Optional[str] = None,
metadata: Optional[dict[str, Any]] = None,
key: Optional[str] = None,
namespace: Optional[List[str]] = None,
**kwargs: Any,
) -> str
Store one memory value under the resolved namespace.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
content
|
Optional[str]
|
The text content to store. |
None
|
metadata
|
Optional[dict[str, Any]]
|
Optional dictionary of metadata. |
None
|
key
|
Optional[str]
|
Optional explicit key to identify the memory. |
None
|
namespace
|
Optional[List[str]]
|
Optional namespace path override. |
None
|
**kwargs
|
Any
|
Extra parameters. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
str
|
Status message indicating success or failure. |
源代码位于: jianmu/memory/tools.py
MemorySearchTool
¶
MemorySearchTool(
namespace: Tuple[str, ...] = ("default",),
top_k: int = 5,
*,
long_term_memory: LongTermMemoryProtocol | None = None,
memory: MemoryService | None = None,
)
Bases: Tool
Search long-term memory from a memory backend.
This is a lightweight long-term memory retrieval tool, not a full RAG pipeline.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
memory |
Memory service used to execute retrieval. |
|
namespace |
Default namespace used for searches. |
|
top_k |
Default maximum number of results returned by the tool. |
Bind the search tool to a memory facade or namespace.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
namespace
|
Tuple[str, ...]
|
Default namespace for retrieval. |
('default',)
|
top_k
|
int
|
Default maximum number of results. |
5
|
long_term_memory
|
LongTermMemoryProtocol | None
|
Optional long-term memory capability backend. |
None
|
memory
|
MemoryService | None
|
Optional high-level memory facade. |
None
|
源代码位于: jianmu/memory/tools.py
run
async
¶
run(
query: Optional[str] = None,
k: Optional[int] = None,
namespace: Optional[List[str]] = None,
**kwargs: Any,
) -> str
Search memory records and return normalized result text.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
query
|
Optional[str]
|
Query string to search for. |
None
|
k
|
Optional[int]
|
Maximum number of results to return. |
None
|
namespace
|
Optional[List[str]]
|
Optional list representing namespace path override. |
None
|
**kwargs
|
Any
|
Extra parameters. |
{}
|
返回:
| 类型 | 描述 |
|---|---|
str
|
Formatted search results string or error. |
源代码位于: jianmu/memory/tools.py
create_memory_tools
¶
create_memory_tools(
namespace: Tuple[str, ...] = ("default",),
*,
long_term_memory: LongTermMemoryProtocol | None = None,
memory: MemoryService | None = None,
) -> list[Tool]
Create the default read/write tool pair for memory access.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
namespace
|
Tuple[str, ...]
|
Default store namespace. |
('default',)
|
long_term_memory
|
LongTermMemoryProtocol | None
|
Optional long-term memory capability backend. |
None
|
memory
|
MemoryService | None
|
Optional high-level memory facade. |
None
|
返回:
| 类型 | 描述 |
|---|---|
list[Tool]
|
List containing |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
If input validation fails. |