- AgentConfig/LlmClient 新增 enable_thinking 参数,前端 SSE 请求传递 thinking 开关,仅千问/DashScope 时启用 - 完善权限系统,支持细粒度的权限控制和用户权限申请 - delegate_research 工具重命名为 subagent,SubAgentTool/SubAgentRunner 重构 - 子代理消息(system/user/assistant/tool)持久化到 agent_messages 表,带 agent_name 标识 - 子代理活动日志(工具调用列表+思考摘要)注入返回结果,Hooks 获得正确 session_id 和 subagent_name - LLM 工具调用 ID 回退生成 UUID(llm.rs),ToolCall/ToolResult SSE 事件增加 id/tool_call_id 双字段 - ToolContext 扩展 session_id/sse_tx/enable_thinking 字段,executor 统一注入而非构造函数传参 - agent_messages 新增 metadata+raw_json 列,agent_sessions 暴露 summary 字段 - 删除文件级 transcript 快照(compact.rs),改为依赖 DB 持久化 - ResearchAgentPanel 重写:TimelineItem 类型替代 StreamStep,支持会话历史回放 - 新增 AgentMetricsPanel/AskUserQuestionCard/AuditLogViewer 三个前端组件,types.ts 完整类型定义 - docs/architecture/ 分层重组:概览/核心模块/核心工作流 + agent/ 子目录 11 篇专题文档 - docs/api.md 补充 RAG/Target/Agent 接口,docs/development.md 新建开发指南 - .env.example 完全重写,补充 FALLBACK_MODEL 等变量说明
80 lines
2.6 KiB
Markdown
80 lines
2.6 KiB
Markdown
# AstroResearch Architecture / 架构设计
|
|
|
|
AstroResearch 是一个集成了天文学文献检索、多通道下载(含防爬绕过与手动上传)、下载错误诊断、结构化解析、中英学术对比翻译、引文星系图谱以及馆藏健康度诊断的天文科研辅助系统。
|
|
|
|
## 1. 整体架构 (Overall Architecture)
|
|
|
|
AstroResearch 采用 **C/S (Client-Server)** 架构,由前端 React 单页应用和后端 Axum HTTP 服务构成,核心流程及层级如下:
|
|
|
|
```mermaid
|
|
graph TD
|
|
subgraph Frontend ["React 前端 (Port 5173 / 8000)"]
|
|
UI[仪表盘 UI / ReaderPanel]
|
|
Canvas[引文 Canvas 拓扑图]
|
|
API_Client[Axum API 客户端]
|
|
CustomSelect[CustomSelect 可复用组件]
|
|
end
|
|
|
|
subgraph Backend ["Rust Axum 后端 (Port 8000)"]
|
|
Router[Axum 路由与中间件]
|
|
|
|
subgraph API ["API 层 (模块化)"]
|
|
Helpers[helpers.rs 格式转换与数据库工具]
|
|
Papers[papers.rs 文献检索/下载/上传/解析/翻译/引文/导出]
|
|
Notes[notes.rs 笔记 CRUD]
|
|
Sync[sync.rs 批量同步控制]
|
|
end
|
|
|
|
subgraph Services ["服务层"]
|
|
Batch[batch/ 批量同步引擎]
|
|
BatchMeta[batch/meta.rs 元数据采集]
|
|
BatchAsset[batch/asset.rs 资源处理]
|
|
Parser[parser.rs HTML/PDF 解析]
|
|
Downloader[download.rs 多通道下载器]
|
|
Translator[translation.rs LLM 翻译器]
|
|
Logging[logging.rs 日志系统]
|
|
end
|
|
|
|
DB[("SQLite / astro_research.db")]
|
|
end
|
|
|
|
subgraph External [外部第三方服务]
|
|
ADS[NASA ADS API]
|
|
arXiv[arXiv Atom XML API]
|
|
MinerU[MinerU PDF 解析服务]
|
|
QiniuCDN[七牛云对象存储 CDN]
|
|
LLM[LLM API]
|
|
end
|
|
|
|
UI -->|用户操作| API_Client
|
|
API_Client -->|RESTful APIs| Router
|
|
Router --> API
|
|
|
|
Papers -->|查询/保存元数据| DB
|
|
Papers -->|文献下载| Downloader
|
|
Papers -->|文件上传| Papers
|
|
Papers -->|正文解析| Parser
|
|
Papers -->|学术翻译| Translator
|
|
Sync -->|批量操作| Batch
|
|
|
|
BatchMeta -->|元数据同步| ADS
|
|
BatchMeta -->|元数据同步| arXiv
|
|
BatchAsset -->|批量文件下载| Downloader
|
|
BatchAsset -->|批量正文解析| Parser
|
|
BatchAsset -->|批量翻译| Translator
|
|
Batch -->|写库记录| DB
|
|
|
|
Downloader -->|代理请求| ADS
|
|
Downloader -->|直连或 ar5iv| arXiv
|
|
|
|
Parser -->|图文降级解析| MinerU
|
|
Parser -->|托管插图| QiniuCDN
|
|
|
|
Translator -->|天文术语翻译| LLM
|
|
|
|
Canvas -->|引文网络请求| Papers
|
|
```
|
|
|
|
---
|
|
|