- 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 等变量说明
5.3 KiB
5.3 KiB
AstroResearch Architecture / 架构设计
AstroResearch 是一个集成了天文学文献检索、多通道下载(含防爬绕过与手动上传)、下载错误诊断、结构化解析、中英学术对比翻译、引文星系图谱以及馆藏健康度诊断的天文科研辅助系统。
3. 核心模块说明
3.1 API 层 (src/api/)
| 模块文件 | 职责 |
|---|---|
| mod.rs | 定义全局共享状态 AppState(含 active_bibcode 追踪)和统一文献格式 StandardPaper(含 pdf_error / html_error 诊断字段),通过 pub mod handlers 保持向后兼容命名空间。 |
| helpers.rs | 共享工具函数:convert_ads_doc_to_standard、convert_arxiv_to_standard、save_paper_to_db、get_paper_from_db、check_paper_paths_in_db。负责数据库 CRUD 和 error: 前缀诊断信息的读取与解析。 |
| papers.rs | 文献相关核心处理器:统一检索 (search_papers)、下载 (download_paper)、手动上传 (upload_paper_file)、无资源标记 (mark_no_resource)、解析 (parse_paper)、翻译 (translate_paper)、引文拓扑 (get_citation_network)、文献详情 (get_paper_detail)、馆藏列表 (get_library)、BibTeX 导出 (export_citations)、活跃文献追踪 (get/set_active_bibcode)。 |
| notes.rs | 笔记 CRUD 处理器:创建 (create_note)、查询 (get_notes)、删除 (delete_note)。 |
| sync.rs | 批量同步控制处理器:元数据同步启动/状态/计数、资源同步启动/停止/状态、检索条件管理。 |
3.2 服务层 (src/services/)
| 模块文件 | 职责 |
|---|---|
| batch/mod.rs | 批量同步引擎公共导出模块。 |
| batch/meta.rs | 元数据大批量采集引擎 (MetaSync):分页检索 ADS/arXiv 并增量入库。 |
| batch/asset.rs | 物理资源批量处理引擎 (AssetSync):后台异步执行下载/解析/翻译流水线,记录 download_failed / parse_failed 计数,保留最新 100 条日志。 |
| download.rs | 多通道下载器:浏览器头伪装与请求延迟控制、ADS Link Gateway 重定向追踪与 validate.perfdrive.com 防护解码绕过、官方 arxiv.org/html 优先及 ar5iv 兜底、下载失败时以 error: 前缀记录诊断信息至数据库。 |
| parser.rs | HTML 语法树向 GFM Markdown 逆向转换,使用占位符保护 LaTeX 公式;统一图表链接;集成 MinerU PDF 解析。 |
| translation.rs | 基于本地天文双语词典的 Trie 树最长匹配分词,注入 Glossary 系统提示词让 LLM 实现学术级精细翻译。 |
| query_parser.rs | 高级检索语法解析器,将前端组合条件(AND/OR/NOT + 字段限定)转换为 ADS API 查询语法。 |
| logging.rs | 全局日志记录系统,基于 tracing-subscriber 实现控制台美化日志输出与基于时间的每日滚动日志文件写出,使用上海时区 (+08:00) 格式化时间。 |
3.3 客户端层 (src/clients/)
| 模块文件 | 职责 |
|---|---|
| ads.rs | NASA ADS API 客户端:文献检索、元数据获取、BibTeX 导出。 |
| arxiv.rs | arXiv Atom XML API 客户端:解析 XML Feed 提取文献元数据。 |
| qiniu.rs | 七牛云对象存储客户端:PDF 插图上传与 CDN 外链生成。 |
3.4 独立工具 (src/bin/)
| 文件 | 职责 |
|---|---|
| health_check.rs | 馆藏健康度诊断与修复工具:检测损坏文件、丢失文件、error: 报错记录和孤立 Markdown;--fix 模式自动清理并重置数据库状态。 |
3.5 前端核心组件 (dashboard/src/)
| 组件文件 | 职责 |
|---|---|
| App.tsx | 全局状态管理:Tab 持久化、手动上传处理、无资源标记、活跃文献追踪、详情弹窗(含错误诊断和上传区)。 |
| components/CustomSelect.tsx | 可复用下拉选择组件:统一视觉风格、点击外部关闭、选中高亮。 |
| components/CitationGalaxyCanvas.tsx | 基于 HTML5 Canvas 的自研力导向引文星系图谱引擎:节点排斥力、中心引力、拖拽阻尼、双击多层级衍生。 |
| features/library/LibraryPanel.tsx | 馆藏管理面板:同步反馈、下载失败/无资源状态筛选、文献类型筛选(13 种)、状态优先排序。 |
| features/search/SearchPanel.tsx | 跨源检索面板:高级组合条件、排序分页、下载失败状态提示、文献类型徽章(16 种)。 |
| features/sync/SyncPanel.tsx | 批量同步控制台:乐观 UI 更新、容器内日志自动滚动。 |