提交比赛最终代码与参赛材料
面向多智能体协作的低开销通信、非文本状态传递与跨任务共享记忆基础设施
MemLink不是普通的多 Agent 聊天演示,而是一套可运行、可测试、可消融、可量化比较的协作基础设施。
本项目保留完整 text 基线,并实现 structured 协议、二进制语义状态、SQLite 共享记忆和离线 Benchmark;同一业务链路可使用 Fake 后端离线复现,也可通过显式配置切换到 DeepSeek 真实模型后端。
float32
.npy
state_id
AgentMessage
result_ref
MemLink 将通信、状态、记忆、模型和评测拆为独立模块。三项消融开关可分别关闭 Shared Memory、SemanticState 和 result_ref,用于观察单一机制对指标的影响。
AgentRegistry
structured_no_result_ref
memory_id
入口层将请求交给 Orchestrator;编排器通过 AgentRegistry 发现能力,按 Planner → Retriever → Executor → Reviewer 顺序执行。structured 模式组合 MessagePack、result_ref、SemanticState 和 Shared Memory,最终由 Metrics 与 Benchmark 形成 JSON、CSV、Markdown 和静态图。
固定随机种子 2026,Fake 后端,2 组连续任务场景,每轮 6 个任务,5 个实验组各运行 10 轮,共形成 300 条任务执行记录。
2026
权威数据源是 benchmarks/results/raw_runs.jsonl 中的 300 条原始记录。benchmark_summary.csv 与 benchmark_summary.json 均由同一统计函数汇总;Streamlit Benchmark 页面固定读取后者。当前 text / structured P50 原始值为 27.286 / 48.4905 ms,报告中的三位小数展示属于同一口径。
benchmarks/results/raw_runs.jsonl
benchmark_summary.csv
benchmark_summary.json
数据来源:基础 Benchmark 报告
上下文规模增长实验使用 1x / 2x / 4x / 8x 四档输入,比较 text、structured 与 structured_no_result_ref;每个组合 10 轮,共 120 条记录。在当前确定性任务中,result_ref 相对完整内联结果的 JSON 字节节省比例从 56.2% 增长到 **76.0%**。
1x / 2x / 4x / 8x
共享记忆实验覆盖 RAG 与 API 两个场景,以及 no_memory、cold_memory、warm_memory、irrelevant_memory 四种条件;每种条件 10 轮,共 80 条目标任务记录。warm_memory 的正确复用率和复用精确率均为 **100%**,irrelevant_memory 的无关记忆误用率为 **0%**。
完整证据图:
已完成的 DeepSeek structured 演示使用 deepseek-v4-pro,执行轨迹为 planner → retriever → executor → reviewer;记录 9 条消息、估算 Token 1040、JSON 7734 B、MessagePack 7002 B、SemanticState 3 次 / 384 B、共享记忆命中 15 条,总耗时 28107.309 ms。
deepseek-v4-pro
其中 memory hit 只表示检索命中,不单独证明正确复用;正确复用由共享记忆证据实验中的 reused_memory_ids、相关性真值和 Reviewer 接受结果共同验证。
reused_memory_ids
avoided_steps
以下命令面向 openEuler / Linux。请在已经克隆的仓库根目录执行:
bash scripts/linux/setup.sh source .venv/bin/activate python -m pip check python -m pytest -q
运行两种离线模式:
python -m app.cli run-demo --mode text --backend fake python -m app.cli run-demo --mode structured --backend fake
启动 FastAPI:
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000
可用接口:
GET /health
POST /api/v1/tasks/run
GET /api/v1/tasks/{task_id}
启动 Streamlit:
python -m streamlit run app/ui/streamlit_app.py --server.port 8501
等价脚本入口:
bash scripts/linux/test.sh bash scripts/linux/run_demo.sh bash scripts/linux/start.sh bash scripts/linux/start_ui.sh
所有自动化实验固定使用 Fake LLM / Fake Embedding,不读取 DeepSeek 凭据,也不访问真实模型接口。
为保留仓库中已有的 300 条基础结果,请将重跑结果写入新的空目录:
python -m app.benchmark.cli run \ --rounds 10 \ --experiment all \ --backend fake \ --results-dir benchmarks/reproduced_results python -m app.benchmark.cli summarize \ --results-dir benchmarks/reproduced_results
上下文规模增长实验:
python -m app.benchmark.context_scaling \ --rounds 10 \ --output-dir benchmarks/evidence_reproduced/context
共享记忆复用实验:
python -m app.benchmark.memory_reuse \ --rounds 10 \ --output-dir benchmarks/evidence_reproduced/memory
两项证据实验在目标文件已经存在时默认拒绝覆盖;只有维护者明确希望覆盖指定目录时才添加 --overwrite。基础 Benchmark 入口没有覆盖保护,因此复现时必须使用新的 --results-dir。
--overwrite
--results-dir
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MemLink
MemLink不是普通的多 Agent 聊天演示,而是一套可运行、可测试、可消融、可量化比较的协作基础设施。
本项目保留完整 text 基线,并实现 structured 协议、二进制语义状态、SQLite 共享记忆和离线 Benchmark;同一业务链路可使用 Fake 后端离线复现,也可通过显式配置切换到 DeepSeek 真实模型后端。
float32+.npy+state_id项目概览
AgentMessage、能力发现、动作字段、证据 ID、result_refstate_idMemLink 将通信、状态、记忆、模型和评测拆为独立模块。三项消融开关可分别关闭 Shared Memory、SemanticState 和
result_ref,用于观察单一机制对指标的影响。核心机制
1. text 与 structured 双模式
AgentRegistry根据 capability 发现 Agent,并校验 action 与目标能力。2. MessagePack 与 result_ref
result_ref让下游只接收稳定引用和必要摘要,避免重复内联大结果。structured_no_result_ref消融组恢复完整结果传递,用于量化引用机制。3. SemanticState 非文本状态
float32向量,StateStore 以.npy二进制文件保存。state_id、维度、类型、存储引用和必要元数据。4. SQLite 共享记忆
memory_id、摘要、证据、置信度、使用次数和来源 Agent。系统架构
入口层将请求交给 Orchestrator;编排器通过 AgentRegistry 发现能力,按 Planner → Retriever → Executor → Reviewer 顺序执行。structured 模式组合 MessagePack、
result_ref、SemanticState 和 Shared Memory,最终由 Metrics 与 Benchmark 形成 JSON、CSV、Markdown 和静态图。已验证结果
基础离线 Benchmark
固定随机种子
2026,Fake 后端,2 组连续任务场景,每轮 6 个任务,5 个实验组各运行 10 轮,共形成 300 条任务执行记录。权威数据源是
benchmarks/results/raw_runs.jsonl中的 300 条原始记录。benchmark_summary.csv与benchmark_summary.json均由同一统计函数汇总;Streamlit Benchmark 页面固定读取后者。当前 text / structured P50 原始值为 27.286 / 48.4905 ms,报告中的三位小数展示属于同一口径。数据来源:基础 Benchmark 报告
通信效率证据实验
上下文规模增长实验使用
1x / 2x / 4x / 8x四档输入,比较 text、structured 与 structured_no_result_ref;每个组合 10 轮,共 120 条记录。在当前确定性任务中,result_ref相对完整内联结果的 JSON 字节节省比例从 56.2% 增长到 **76.0%**。共享记忆复用证据实验
共享记忆实验覆盖 RAG 与 API 两个场景,以及 no_memory、cold_memory、warm_memory、irrelevant_memory 四种条件;每种条件 10 轮,共 80 条目标任务记录。warm_memory 的正确复用率和复用精确率均为 **100%**,irrelevant_memory 的无关记忆误用率为 **0%**。
完整证据图:
测试与真实模型验证
已完成的 DeepSeek structured 演示使用
deepseek-v4-pro,执行轨迹为 planner → retriever → executor → reviewer;记录 9 条消息、估算 Token 1040、JSON 7734 B、MessagePack 7002 B、SemanticState 3 次 / 384 B、共享记忆命中 15 条,总耗时 28107.309 ms。其中 memory hit 只表示检索命中,不单独证明正确复用;正确复用由共享记忆证据实验中的
reused_memory_ids、相关性真值和 Reviewer 接受结果共同验证。客观结论
result_ref的价值随上下文增长而增强。 在当前 1x 到 8x 实验中,JSON 字节节省比例由 56.2% 增长到 76.0%。avoided_steps仍为 0,项目不据此宣称步骤或载荷已经下降。快速开始
以下命令面向 openEuler / Linux。请在已经克隆的仓库根目录执行:
运行两种离线模式:
启动 FastAPI:
可用接口:
GET /healthPOST /api/v1/tasks/runGET /api/v1/tasks/{task_id}启动 Streamlit:
等价脚本入口:
实验复现
所有自动化实验固定使用 Fake LLM / Fake Embedding,不读取 DeepSeek 凭据,也不访问真实模型接口。
为保留仓库中已有的 300 条基础结果,请将重跑结果写入新的空目录:
上下文规模增长实验:
共享记忆复用实验:
两项证据实验在目标文件已经存在时默认拒绝覆盖;只有维护者明确希望覆盖指定目录时才添加
--overwrite。基础 Benchmark 入口没有覆盖保护,因此复现时必须使用新的--results-dir。