feat: add initial LightMAS prototype
LightMAS 是面向“多智能体协作的低开销通信、状态传递与共享记忆机制”赛题的 Python 原型项目。项目可在 Linux/openEuler CPU 环境运行,不依赖 GPU,不需要外部模型下载,重点展示多 Agent 协作中如何降低重复上下文通信,并用严格实验拆分“结构化通信”和“共享记忆”两类收益。
多 Agent 系统通常需要规划、检索、执行和总结等角色协作。如果每一步都传递完整自然语言上下文,消息字符数和 token 近似开销会随着任务轮次增长。
LightMAS 当前提供三组实验模式:
text_mode
structured_no_memory
AgentMessage
StatePacket
structured_with_memory
这样可以分别观察:
用户任务 | v LightMASRuntime | +-- AgentRegistry:注册 Agent +-- MessageDispatcher:发送、接收、记录 AgentMessage +-- RuntimeContext:保存初始输入和 text_mode 上下文 +-- StateStore:保存 structured 模式的非文本向量状态 +-- SharedMemory:SQLite 元数据 + numpy 向量文件 +-- CommunicationMetrics:统计通信、状态、记忆和耗时指标 | +-- PlannerAgent -> RetrieverAgent -> ExecutorAgent -> SummarizerAgent
Agent 之间不能直接调用彼此函数,必须通过 Dispatcher 发送和接收 AgentMessage。
LightMAS/ ├── agents/ # BaseAgent 与 4 个协作 Agent ├── data/ # tasks.json 与 experiment_config.json ├── docs/ # 系统设计、部署、实验报告和演示脚本 ├── evaluation/ # 通信、状态、记忆和耗时指标 ├── memory/ # SQLite + numpy 共享记忆 ├── outputs/ # 实验输出 CSV 和 Markdown 报告 ├── protocol/ # AgentMessage、AgentCapability、握手协议 ├── runtime/ # 注册表、Dispatcher、运行时 ├── state/ # StateEncoder、StatePacket、StateStore ├── tests/ # 单元测试 ├── app.py # Streamlit 展示页面 ├── run_demo.py # Demo 入口 ├── run_experiment.py # 三模式可复现实验入口 └── requirements.txt
cd LightMAS python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip pip install -r requirements.txt
依赖说明:
numpy
scikit-learn
HashingVectorizer
streamlit
run_experiment.py
pytest
运行 Demo:
python run_demo.py
运行三模式可复现实验:
python run_experiment.py
启动展示页面:
streamlit run app.py
如果环境没有 Streamlit,直接查看命令行报告:
outputs/comparison_report.md
任务集:
data/tasks.json
共 10 个连续任务:
配置文件:
data/experiment_config.json
关键配置:
similarity_threshold
0.35
memory_top_k
1
estimated_seconds_per_token
实验顺序:
每种模式都有独立 memory 数据库和 state_store,避免跨模式污染。
structured_with_memory 中每轮任务顺序为:
task_id
outputs/metrics_text.csv outputs/metrics_structured_no_memory.csv outputs/metrics_structured_with_memory.csv outputs/comparison_report.md
CSV 字段包括:
agent_message_count
text_characters
approximate_tokens
elapsed_seconds
estimated_end_to_end_seconds
non_text_state_transfer_count
vector_dimensions
vector_bytes
memory_query_count
true_memory_hit_count
memory_hit_rate
shared_memory_items_after_task
真实记忆命中必须同时满足:
memory_id
报告展示:
推荐步骤:
cd LightMAS python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip pip install -r requirements.txt python run_demo.py python run_experiment.py pytest
注意事项:
README.md
docs/系统设计文档.md
docs/部署文档.md
docs/实验报告.md
docs/演示视频脚本.md
outputs/metrics_text.csv
outputs/metrics_structured_no_memory.csv
outputs/metrics_structured_with_memory.csv
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
LightMAS
LightMAS 是面向“多智能体协作的低开销通信、状态传递与共享记忆机制”赛题的 Python 原型项目。项目可在 Linux/openEuler CPU 环境运行,不依赖 GPU,不需要外部模型下载,重点展示多 Agent 协作中如何降低重复上下文通信,并用严格实验拆分“结构化通信”和“共享记忆”两类收益。
1. 项目背景
多 Agent 系统通常需要规划、检索、执行和总结等角色协作。如果每一步都传递完整自然语言上下文,消息字符数和 token 近似开销会随着任务轮次增长。
LightMAS 当前提供三组实验模式:
text_mode:纯文本协作基线,不使用非文本状态传递,不使用共享记忆。structured_no_memory:结构化AgentMessage+StatePacket非文本状态传递,不使用共享记忆。structured_with_memory:结构化AgentMessage+StatePacket非文本状态传递 + SQLite/numpy 共享记忆。这样可以分别观察:
2. 系统架构
Agent 之间不能直接调用彼此函数,必须通过 Dispatcher 发送和接收
AgentMessage。3. 目录结构
4. 安装方法
依赖说明:
numpy:保存和读取共享记忆向量。scikit-learn:默认使用HashingVectorizer编码非文本状态。streamlit:展示实验结果;没有 Streamlit 时仍可运行run_experiment.py。pytest:运行测试。5. 运行方法
运行 Demo:
运行三模式可复现实验:
启动展示页面:
如果环境没有 Streamlit,直接查看命令行报告:
6. 实验方法
任务集:
共 10 个连续任务:
配置文件:
关键配置:
similarity_threshold:共享记忆真实命中阈值,默认0.35。memory_top_k:每轮任务最多纳入的历史记忆数量,默认1。estimated_seconds_per_token:估算端到端耗时使用的 token 时间系数。实验顺序:
text_mode的 10 个任务。structured_no_memory的 10 个任务。structured_with_memory的 10 个任务。每种模式都有独立 memory 数据库和 state_store,避免跨模式污染。
structured_with_memory中每轮任务顺序为:task_id。7. 输出文件
8. 指标说明
CSV 字段包括:
agent_message_count:Agent 消息次数。text_characters:通信字符开销。approximate_tokens:token 近似开销。elapsed_seconds:框架运行耗时。estimated_end_to_end_seconds:估算端到端耗时。non_text_state_transfer_count:非文本状态传递次数。vector_dimensions:传递向量维度累计值。vector_bytes:传递向量字节数累计值。memory_query_count:记忆查询次数。true_memory_hit_count:真实记忆命中次数。memory_hit_rate:真实记忆命中率。shared_memory_items_after_task:任务结束后的共享记忆条数。真实记忆命中必须同时满足:
similarity_threshold。memory_id被实际加入本轮任务上下文或最终结果。task_id。报告展示:
9. openEuler 部署说明
推荐步骤:
注意事项:
outputs/comparison_report.md完成交付评审。10. 交付材料
README.md:项目说明和运行入口。docs/系统设计文档.md:系统架构和核心机制。docs/部署文档.md:Linux/openEuler 部署步骤。docs/实验报告.md:实验任务、指标和结果说明。docs/演示视频脚本.md:比赛演示视频讲解脚本。outputs/metrics_text.csv:text_mode 实验结果。outputs/metrics_structured_no_memory.csv:structured_no_memory 实验结果。outputs/metrics_structured_with_memory.csv:structured_with_memory 实验结果。outputs/comparison_report.md:三模式实验对比报告。