面向论文检索、知识库问答与证据约束写作的 RAG + 多智能体项目。当前 /chat 主链路已并入多智能体编排(planner → retrieval → writing → review),编排异常时回退到原 Agent,保证可用性。
- 第一次看项目:
START_HERE.md - 开发者文档导航:
docs/README.md - 论文写作子域入口:
app/paper_api/(app/paper_routes.py兼容)、paper_writer/workflow/facade.py(PaperPipeline) - A2A 网关入口:
app/a2a_routes.py
python -m venv bert_env
# Windows
bert_env\Scripts\activate
# Linux/macOS
source bert_env/bin/activate
pip install -r requirements.txt
python init_user.py
python server.py客户端(可选):
python main.py- 服务启动现在只会检查并加载已有索引,不再自动全量重建。
- 如果看到“索引为空”或“索引损坏”,请显式执行:
python scripts/rebuild_index.py --force- 上传/删除论文仍会做增量索引,但不会触发隐式全库重建。
定位:证据约束型科研写作辅助系统 + 自治型多 Agent 协作(Manager 策略 / 消息总线 / 动态子任务),非「全自动替代作者」。
# 自治协作(默认 PAPER_AUTONOMOUS_MODE=true)
curl -X POST http://localhost:8000/paper/v3/autonomous/run \
-H "Authorization: Bearer <token>" \
-d '{"topic": "contrastive learning 在低资源 NER 中的应用", "target_venue": "acl"}'
# 固定流水线(关闭自治:PAPER_AUTONOMOUS_MODE=false)
curl -X POST http://localhost:8000/paper/auto ...
# 黑板 / Manager 计划 / Agent 消息
curl http://localhost:8000/paper/{paper_id}/blackboard
curl http://localhost:8000/paper/{paper_id}/manager/plan
curl http://localhost:8000/paper/{paper_id}/messagesPaperCopilot/
├── server.py # FastAPI HTTP 入口(鉴权、限流;Chat 编排在 app/runtime/chat_service.py)
├── main.py # 可选 Kivy 客户端
├── app/
│ ├── runtime/ # ChatService、Workflow/Fallback/Delegation Runtime
│ ├── tooling/ # ToolExecutor 统一工具出口
│ ├── safety/ # SafetyGuard
│ ├── memory_layer/ # UnifiedMemoryFacade
│ ├── consolidation_trigger.py # 记忆固化触发(轮数 + Token)
│ └── ...
├── paper_writer/
│ ├── orchestration/ # PaperOrchestrator(A2A dispatch)
│ ├── autonomous/ # 自治循环、黑板、Manager
│ ├── workflow/ # PaperPipeline 门面
│ ├── runtime/ # DelegationRuntime
│ ├── core/ # draft_store(json | db)
│ ├── agents/
│ ├── a2a/
│ └── ...
├── docs/ # 架构、演进、评测、基础设施文档
├── scripts/ # 索引、评测、导入等脚本
├── tests/ # 测试
└── 面试准备/ # 面试表达与项目说明材料
docs/README.md:文档导航docs/mcp.md:MCP MySQL 接入app/ragas_eval/README.md:RAGAS 评估docs/从RAG到Agent演进规划.md:演进规划docs/论文写作多智能体架构设计.md:论文写作多 Agent 架构
data/:业务上传或主知识库文档data/papers/:生产中希望被检索的论文data/benchmarks/qasper/:QASPER 离线 benchmark 资产,不进入生产知识库eval_dataset.json/eval_dataset_qasper.json:评测标签,不参与入库
QASPER 生成与评测示例:
python scripts/import_qasper_to_index.py --limit 100
python scripts/evaluate_qasper_retrieval.py --dataset eval_dataset_qasper.json --retriever-mode bm25 --ks 1 3 5 10仅供学习和研究使用。