Skip to main content

Agentbase Memory for AgentScope

agentbase-memory-agentscope 为 AgentScope 2.x 提供 Agentbase 长期 Memory Middleware。 插件在模型推理前统一召回 Memory、Profile、Skill 和 Experience,在一轮成功结束后把新增的 用户/助手消息提交给 Agentbase 异步抽取;也可以向模型提供按需搜索和显式记忆工具。

插件不代理模型请求,不替换 AgentScope 的会话状态,不把 API Key 或用户身份暴露给模型。

安装

发布包:

python -m pip install agentbase-memory-agentscope

仓库开发版本:

python -m pip install -e ".[dev]"

也可以直接使用 Demo 目录中的脚本创建隔离环境并运行全部自动测试:

./demo/test.sh

使用 AgentScope Agent Service 示例时安装 Service 与 Redis Storage 依赖:

python -m pip install "agentbase-memory-agentscope[service]"

配置

export AGENTBASE_MEMORY_ENDPOINT="https://<agentbase-host>"
export AGENTBASE_PROJECT_ID="<project-id>"
export AGENTBASE_API_KEY="<project-api-key>"

API Key 至少需要 memories.read 和 memories.write。项目必须已经启用 Memory;当前服务端 要求 Shared V2 项目。

常用可选项:

环境变量 默认值 说明
AGENTBASE_MEMORY_ENABLED true Agent Service Factory 的总开关
AGENTBASE_MEMORY_MODE both static_control、agent_control 或 both
AGENTBASE_MEMORY_SCOPE user user、agent 或 project;后两者必须显式配置
AGENTBASE_MEMORY_ACCESS_MODE owned owned 或 accessible
AGENTBASE_MEMORY_KINDS memory,profile,skill,experience 统一召回的内容类型
AGENTBASE_MEMORY_LIMIT 10 每次召回最多 1~100 项
AGENTBASE_MEMORY_TOKEN_BUDGET 1200 注入上下文的 Token 上限
AGENTBASE_MEMORY_TOOL_TOKEN_BUDGET 2400 一次 search_memory 调用中所有关键词共享的 Token 上限
AGENTBASE_MEMORY_TOOL_RESULT_MAX_BYTES 12288 一次 search_memory Tool Result 的 UTF-8 字节硬上限
AGENTBASE_MEMORY_WRITE_PERMISSION ask add_memory 权限策略:ask、allow 或 deny
AGENTBASE_MEMORY_TIMEOUT_SECONDS 5 HTTP 超时
AGENTBASE_MEMORY_VERIFY_TLS true 是否校验 Agentbase TLS 证书;生产环境保持开启
AGENTBASE_MEMORY_FAIL_OPEN true Memory 故障时是否继续无 Memory 回复
AGENTBASE_MEMORY_CAPTURE_INFER true 是否由 Agentbase 抽取和去重
AGENTBASE_MEMORY_CAPTURE_ASYNC true 是否使用服务端异步写入
AGENTBASE_MEMORY_SUB_STORE_ID 空 可选 Memory 子存储
AGENTBASE_MEMORY_RESPONSE_FORMAT 2.7.0 Agentbase Memory API 响应格式版本

AGENTBASE_MEMORY_PROJECT_ID、AGENTBASE_MEMORY_API_KEY 可以覆盖通用的 Project / API Key。 凭据只能通过 Secret 或环境变量注入,不要写进代码、Prompt 或 Tool Schema。

接入现有 Agent

from agentbase_memory_agentscope import AgentbaseMemoryMiddleware
from agentscope.agent import Agent
from agentscope.tool import Toolkit


memory = AgentbaseMemoryMiddleware(
    user_id=authenticated_user_id,
    agent_id="support-agent",
)

agent = Agent(
    name="support-agent",
    system_prompt="You are a helpful support agent.",
    model=model,
    toolkit=Toolkit(tools=await memory.list_tools()),
    middlewares=[memory],
)

user_id 必须来自认证上下文,不能使用模型输出。Session 默认从 agent.state.session_id 获取。默认 scope=user,同一 User 的不同 Agent 共享长期 Memory;需要 按 Agent 隔离时设置 AGENTBASE_MEMORY_SCOPE=agent,并传入可信 agent_id。应用退出时,如果 Middleware 自己创建了 HTTP Client,应执行:

await memory.aclose()

Agent Service:配置化 Factory

AgentScope Agent Service 会向 Factory 传入可信的 user_id、agent_id 和 session_id:

from agentbase_memory_agentscope import AgentbaseMemoryMiddlewareFactory
from agentscope.app import create_app


memory_factory = AgentbaseMemoryMiddlewareFactory()
app = create_app(
    # storage=...,
    # message_bus=...,
    extra_agent_middlewares=memory_factory,
)
memory_factory.attach_to_app(app)

完成一次装配后,租户只需修改环境变量;设置 AGENTBASE_MEMORY_ENABLED=false 时 Factory 返回 空 Middleware 列表。

三种控制模式

模式 自动召回 自动写回 Memory 工具
static_control 是 是 无
agent_control 否 否 search_memory、add_memory
both 是 是 两个工具均有

自动召回直接使用 Agentbase /memory/memories/recall 返回的、有 Token Budget 的 context。 AgentScope 2.0.7 在接收本轮输入后、模型推理前发出 ReplyStartEvent;插件在此时把 HintBlock 临时插入到本轮 User 消息之前。HintBlock 由 AgentScope 的 AssistantMsg 容器承载, 但 provider formatter 会把它发送为 user role,因此不会形成 Assistant prefill,也不会把不可信 Memory 提升为 system 指令。完成或异常退出后,插件立即按对象身份移除临时消息,避免跨轮累积。

自动写回要求同一 Reply ID 同时出现显式 ReplyEndEvent(COMPLETED) 和 AssistantMsg(finished_reason=COMPLETED),中断、超出最大迭代、错误和缺失完成状态都不会写入。 插件使用 User Message ID、User、Agent 和 Session 生成稳定 Idempotency-Key;长消息会按 Agentbase API 上限裁剪并在 metadata 中标记。默认等待服务端接受异步任务,而不是启动本地 fire-and-forget Task。

需要用户确认或外部工具执行时,插件把经过长度限制的本轮输入保存在 AgentState.middle_context, 并绑定 Reply ID、可信身份和 Memory 配置。应用保存并恢复完整 AgentState 后,即使重建 Middleware, 恢复执行仍会重新召回,并在同一回合完成后写回原始用户输入与最终回复。中断会清理待完成回合; 身份或配置不匹配时不会恢复该回合的 Memory 处理。 上下文压缩移除原 User 消息后,恢复注入仍保留末尾的待执行工具状态,支持继续确认或外部执行。

作用域会按 Agentbase 两类 API 的正式语义映射:user 召回写入 User Memory,agent 召回写入 带 agentId 的 Private Memory,project 召回写入 Project Memory。scope=project 还应配合 AGENTBASE_MEMORY_ACCESS_MODE=accessible,并只向可信服务端 API Key 开放。

search_memory 和 add_memory 的 Tool Schema 不包含用户、Agent、Project、Session 或 API Key。 多个搜索关键词会平分一次工具调用的总 Token Budget,最终 Tool Result 还受 UTF-8 字节硬上限 约束。add_memory 的 thinking 只用于 Tool Result 审计,不会写入 Memory;默认 AGENTBASE_MEMORY_WRITE_PERMISSION=ask,返回不可被普通 allow rule 静默放行的 ASK 决策,防止 Prompt Injection 被固化。AgentScope DEFAULT / ACCEPT_EDITS 会逐次确认,DONT_ASK 会拒绝; 显式 BYPASS 仍遵循框架自身“跳过确认”的契约。只有受控、无人值守且上游已经完成内容审核的 场景才应改为 allow;deny 可彻底关闭模型主动写入,且不影响自动捕获。

延迟与故障语义

自动召回位于首个模型调用前,失败时每轮最多会付出配置的 HTTP Timeout;插件当前不内置熔断器。 生产环境应设置较短的 AGENTBASE_MEMORY_TIMEOUT_SECONDS,并在网关层使用熔断/退避。自动捕获在 异步 Generator 的收尾阶段内联等待服务端接受请求,因此客户端完整消费流时,流关闭最多会增加 一次写入请求的尾延迟;客户端在最终 Assistant 消息之前提前关闭 Generator 时不会捕获不完整回复。

AGENTBASE_MEMORY_FAIL_OPEN=true 同时适用于自动召回、自动捕获、工具搜索和工具写入:故障被转换 为空结果或 Error ToolChunk;false 时异常向 AgentScope 调用方传播。取消信号始终传播,不会被 fail-open 吞掉。

严格模式通过 on_acting 在 Toolkit 的错误转换边界之外传播 Memory 工具故障,阻止继续生成成功 回复;并发工具故障由 AgentScope 汇总为 ExceptionGroup。工具参数校验仍返回可供模型修正的错误结果。

HTTP 2xx 响应中的 status=failed / partial_failed 也按写入失败处理,遵循相同的 fail_open 配置;错误不会回显服务端可能包含原始内容的 reason。queued 表示服务端已接受异步任务。

兼容范围

  • Python >=3.11
  • AgentScope >=2.0.7,<2.1
  • Agentbase Memory response format 2.7.0

完整生命周期、故障降级、身份映射和验收矩阵见 集成设计。

可运行 Demo

demo/ 提供依赖安装、自动测试和真实跨 Session Memory 验收入口。准备好 Agentbase 与 DashScope 凭据后执行:

cd demo
cp .env.example .env
# 编辑 .env 后运行;首次执行会自动安装依赖
./run.sh

完整步骤和验收条件见 Demo README。

Metadata

Release files for agentbase-memory-agentscope 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentbase-memory-agentscope 0.1.0
File Size Uploaded Provenance
agentbase_memory_agentscope-0.1.0.tar.gz 39.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agentbase-memory-agentscope 0.1.0
File Interpreter ABI Platform
agentbase_memory_agentscope-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.6 kB

Release files / agentbase_memory_agentscope-0.1.0.tar.gz

Download URL agentbase_memory_agentscope-0.1.0.tar.gz
Size 39.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9a00707cfa27035710205b9fd4589158d908bcea1faf585b408f7a04526ec758
BLAKE2b-256 checksum
How to use checksums
776f66652089f40d080fea9cf541fe694ca23bd17029d6aa98650871b52bbee3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / agentbase_memory_agentscope-0.1.0-py3-none-any.whl

Download URL agentbase_memory_agentscope-0.1.0-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bf045f58d1658190cb7d25de446b3dd13c1e00d35755f40132035959f1421bcb
BLAKE2b-256 checksum
How to use checksums
f5b419f77de4b97d2abc998eb024746e6baa0022869540d1761cb7301c0a58ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Security for agentbase-memory-agentscope 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page