Delete 系统演示.mp4
AgentMemBus 是一个面向多智能体协作的低开销通信、状态传递与共享记忆机制原型系统。项目支持 Planner、Retriever、Executor、Summarizer 四类 Agent,并提供 text-only 与 optimized 两种协作模式,用于对比自然语言长文本通信和结构化协议通信的开销差异。
当前系统默认使用 Mock LLM,不依赖 NPU、CUDA、torch、torch_npu、faiss 或 sentence-transformers。只有显式设置 LLM_BACKEND=deepseek 时才会尝试调用 DeepSeek API。
LLM_BACKEND=deepseek
推荐环境:
项目第一阶段到当前 Dashboard 演示阶段都可以在 CPU 环境运行,不需要 Ascend NPU,也不会调用 torch 或 torch_npu。
Linux / openEuler:
conda create -n agentmembus python=3.10 -y conda activate agentmembus cd AgentMemBus python -m pip install -r requirements.txt
Windows PowerShell:
conda create -n agentmembus python=3.10 -y conda activate agentmembus cd C:\OSopen\AgentMemBus python -m pip install -r requirements.txt
如果服务器已经创建好虚拟环境,只需要进入项目目录后安装依赖:
python -m pip install -r requirements.txt
requirements.txt 当前包含轻量依赖:
requirements.txt
pydantic python-dotenv requests numpy streamlit pandas plotly
项目不会安装或使用以下重型依赖:
进入项目目录:
cd AgentMemBus
运行 optimized 模式,默认使用 Mock LLM:
LLM_BACKEND=mock python run_demo.py --mode optimized
运行 text-only 模式:
LLM_BACKEND=mock python run_demo.py --mode text
如果不传 --mode,默认使用 optimized:
--mode
python run_demo.py
运行完成后会生成 demo 指标文件:
metrics/demo_text_metrics.json
metrics/demo_optimized_metrics.json
执行:
python compare_demo.py
该脚本会依次运行:
python run_demo.py --mode text python run_demo.py --mode optimized
然后生成:
metrics/demo_comparison.json
对比内容包括:
运行 text-only 与 optimized 的完整 benchmark:
python benchmark/run_benchmark.py --mode both --rounds 10
也可以分别运行:
python benchmark/run_benchmark.py --mode text --rounds 10 python benchmark/run_benchmark.py --mode optimized --rounds 10
Benchmark 会读取:
benchmark/tasks.json
当前任务集包含 2 组关联连续任务,每组 3 个任务:
Benchmark 输出文件:
metrics/benchmark_text_metrics.json
metrics/benchmark_optimized_metrics.json
metrics/benchmark_comparison.json
docs/experiment_report.md
说明:Benchmark 为了保证可复现,默认使用 Mock LLM,不会强制调用 DeepSeek API。
建议先生成 benchmark 指标:
启动可视化页面:
streamlit run dashboard/app.py
Dashboard 包含两个主要页面:
如果 metrics/benchmark_comparison.json 不存在,Dashboard 会提示先运行 benchmark,不会直接崩溃。
默认 mock 模式不需要 API key:
如果需要使用 DeepSeek API,可以复制环境变量模板:
cp .env.example .env
编辑 .env:
.env
LLM_BACKEND=deepseek DEEPSEEK_API_KEY=your_api_key_here DEEPSEEK_API_KEY_FILE= DEEPSEEK_BASE_URL=https://api.deepseek.com DEEPSEEK_MODEL=deepseek-chat
然后运行:
LLM_BACKEND=deepseek python run_demo.py --mode optimized
也可以把 API key 写入项目根目录的 api-key.txt:
api-key.txt
printf '%s' '你的真实 API key' > api-key.txt chmod 600 api-key.txt LLM_BACKEND=deepseek python run_demo.py --mode optimized
api-key.txt 只写一行 API key,不要添加 DEEPSEEK_API_KEY= 前缀。该文件已加入 .gitignore,不要提交到代码仓库。
DEEPSEEK_API_KEY=
.gitignore
也可以把密钥保存在项目外部:
mkdir -p ~/.config/agentmembus printf '%s' '你的真实 API key' > ~/.config/agentmembus/deepseek.key chmod 600 ~/.config/agentmembus/deepseek.key export LLM_BACKEND=deepseek export DEEPSEEK_API_KEY_FILE="$HOME/.config/agentmembus/deepseek.key" python run_demo.py --mode optimized
DeepSeek 当前只用于:
PlannerAgent
SummarizerAgent
RetrieverAgent 和 ExecutorAgent 仍保持确定性模拟逻辑,便于 benchmark 复现和答辩演示。
RetrieverAgent
ExecutorAgent
Agent 之间传递较长自然语言文本:
state_refs
memory_refs
该模式用于作为通信开销 baseline。
Agent 之间传递结构化协议字段:
action
params
result
state_id
该模式用于验证低开销通信、非文本状态传递和共享记忆复用。
StateStore 默认目录:
data/states/
典型文件:
data/states/state_index.json
data/states/state_000001.json
data/states/state_000001_embedding.npy
MemoryStore 默认数据库:
data/memory/memory.db
MemoryStore 使用 SQLite 保存:
memory_id
task_topic
summary
tags
embedding_ref
reuse_count
Benchmark 会自动生成:
报告包含:
optimized latency 可能高于 text-only,这是因为原型系统中包含 SQLite 读写、StateStore 文件持久化、轻量 embedding 和 memory search。当前实验重点是验证 token 降低、状态传递可行性和共享记忆复用效果。
python run_demo.py --mode text python run_demo.py --mode optimized python compare_demo.py python benchmark/run_benchmark.py --mode text --rounds 10 python benchmark/run_benchmark.py --mode optimized --rounds 10 python benchmark/run_benchmark.py --mode both --rounds 10 streamlit run dashboard/app.py
先运行:
然后重新启动:
使用 mock 模式即可:
如果确实要调用 DeepSeek,请配置 .env、DEEPSEEK_API_KEY 或 DEEPSEEK_API_KEY_FILE。
DEEPSEEK_API_KEY
DEEPSEEK_API_KEY_FILE
默认 demo 会清理 store,以保证实验可复现。如果想保留历史记忆:
python run_demo.py --mode optimized --no-reset-store
确认当前 Conda 环境已激活,并重新安装依赖:
conda activate agentmembus python -m pip install -r requirements.txt python -m streamlit run dashboard/app.py
AgentMemBus/ ├── agents/ ├── benchmark/ ├── bus/ ├── dashboard/ ├── docs/ ├── llm/ ├── memory/ ├── metrics/ ├── state/ ├── compare_demo.py ├── run_demo.py ├── requirements.txt ├── .env.example └── README.md
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
AgentMemBus 项目运行说明
AgentMemBus 是一个面向多智能体协作的低开销通信、状态传递与共享记忆机制原型系统。项目支持 Planner、Retriever、Executor、Summarizer 四类 Agent,并提供 text-only 与 optimized 两种协作模式,用于对比自然语言长文本通信和结构化协议通信的开销差异。
当前系统默认使用 Mock LLM,不依赖 NPU、CUDA、torch、torch_npu、faiss 或 sentence-transformers。只有显式设置
LLM_BACKEND=deepseek时才会尝试调用 DeepSeek API。1. 运行环境
推荐环境:
项目第一阶段到当前 Dashboard 演示阶段都可以在 CPU 环境运行,不需要 Ascend NPU,也不会调用 torch 或 torch_npu。
2. 创建 Conda 环境
Linux / openEuler:
Windows PowerShell:
如果服务器已经创建好虚拟环境,只需要进入项目目录后安装依赖:
3. 依赖说明
requirements.txt当前包含轻量依赖:项目不会安装或使用以下重型依赖:
4. 快速运行 Demo
进入项目目录:
运行 optimized 模式,默认使用 Mock LLM:
运行 text-only 模式:
如果不传
--mode,默认使用 optimized:运行完成后会生成 demo 指标文件:
metrics/demo_text_metrics.jsonmetrics/demo_optimized_metrics.json5. Demo 对比实验
执行:
该脚本会依次运行:
然后生成:
metrics/demo_comparison.json对比内容包括:
6. Benchmark 多轮实验
运行 text-only 与 optimized 的完整 benchmark:
也可以分别运行:
Benchmark 会读取:
benchmark/tasks.json当前任务集包含 2 组关联连续任务,每组 3 个任务:
Benchmark 输出文件:
metrics/benchmark_text_metrics.jsonmetrics/benchmark_optimized_metrics.jsonmetrics/benchmark_comparison.jsondocs/experiment_report.md说明:Benchmark 为了保证可复现,默认使用 Mock LLM,不会强制调用 DeepSeek API。
7. 启动 Streamlit Dashboard
建议先生成 benchmark 指标:
启动可视化页面:
Dashboard 包含两个主要页面:
如果
metrics/benchmark_comparison.json不存在,Dashboard 会提示先运行 benchmark,不会直接崩溃。8. DeepSeek API 可选接入
默认 mock 模式不需要 API key:
如果需要使用 DeepSeek API,可以复制环境变量模板:
编辑
.env:然后运行:
也可以把 API key 写入项目根目录的
api-key.txt:api-key.txt只写一行 API key,不要添加DEEPSEEK_API_KEY=前缀。该文件已加入.gitignore,不要提交到代码仓库。也可以把密钥保存在项目外部:
DeepSeek 当前只用于:
PlannerAgentSummarizerAgentRetrieverAgent和ExecutorAgent仍保持确定性模拟逻辑,便于 benchmark 复现和答辩演示。9. 两种协作模式说明
text-only 模式
Agent 之间传递较长自然语言文本:
state_refs。memory_refs。该模式用于作为通信开销 baseline。
optimized 模式
Agent 之间传递结构化协议字段:
action、params、result等紧凑字段。state_id。state_refs读取 StateStore。memory_refs命中并复用历史记忆。该模式用于验证低开销通信、非文本状态传递和共享记忆复用。
10. StateStore 与 MemoryStore
StateStore 默认目录:
典型文件:
data/states/state_index.jsondata/states/state_000001.jsondata/states/state_000001_embedding.npyMemoryStore 默认数据库:
MemoryStore 使用 SQLite 保存:
memory_idtask_topicsummarytagsstate_refsembedding_refreuse_count11. 实验报告
Benchmark 会自动生成:
报告包含:
optimized latency 可能高于 text-only,这是因为原型系统中包含 SQLite 读写、StateStore 文件持久化、轻量 embedding 和 memory search。当前实验重点是验证 token 降低、状态传递可行性和共享记忆复用效果。
12. 常用验收命令
13. 常见问题
1. Dashboard 提示缺少 benchmark 指标
先运行:
然后重新启动:
2. DeepSeek 没有 API key
使用 mock 模式即可:
如果确实要调用 DeepSeek,请配置
.env、DEEPSEEK_API_KEY或DEEPSEEK_API_KEY_FILE。3. 想保留历史记忆复用
默认 demo 会清理 store,以保证实验可复现。如果想保留历史记忆:
4. Linux 服务器上找不到 streamlit
确认当前 Conda 环境已激活,并重新安装依赖:
14. 项目目录
15. 安全说明
.env或api-key.txt。