|
|
c5fd5b0d66
|
refactor: 全栈质量硬化
后端:
- 权限系统重写: 全局→按 Session 隔离, 新增规则查询 API
- 安全加固: 登录 IP 限流, Token 仅存 Cookie, bibcode 白名单校验
- SSE 超时保护, 异步 I/O 迁移, 10+ 处静默 DB 错误改为显式日志
- ar5iv 下标解析修复, parse_paper_row 去重, 优雅关闭
前端:
- useSyncScroll 重写: 段落 ID 映射修复中英错位
- 全局竞态修复 (active 标志), libraryRef 闭包过期修复
- ErrorBoundary + vitest 测试基础设施
- Logo 组件提取, CustomSelect 泛型化, TabId 类型统一
- ReaderPanel 自动视图模式, AIAssistantPanel 状态批处理
|
2026-06-28 14:40:26 +08:00 |
|
|
|
5db4cc5998
|
refactor: 全栈架构重构与质量硬化——API 错误统一、工具域重组、安全加固、前端组件化
后端核心变更:
- API 层: 新增 AppError 枚举统一错误类型,替代散落的 (StatusCode, String)
- Agent 工具域: 重组为 astro/system/ 和 astro/research/ 两级域,新增 ProcessPaperTool 流水线工具
- 安全: 新增 SSRF 双层防护 (同步字符串级 + 异步 DNS 解析级),覆盖 IPv4/IPv6 私网段
- 弱密码检测: 扩展弱密码列表并增加最小长度检查
- LLM 客户端: 新增 ChatCompleter/Embedder trait,支持依赖注入与批量向量化 embed_batch
- 批量处理: AssetBatch 从串行改为 Semaphore 并发池 (BATCH_CONCURRENCY=3)
- 分块器: 重写为三阶段结构化管线 (章节解析→短节合并→带标题路径子块)
- RAG: embedding 计算移出事务,RetrievalResult 新增 headings/section_index 字段
- 检索: ADS/arXiv 并行检索 (tokio::join!),去重改用 HashSet,本地库回填批量 IN 查询
- 天体查询: Sesame API 升级到 v4,新增视差误差/自行/视向速度/多波段测光字段
- 迁移: 14 个增量文件合并为单一 init.sql,支持 sqlx::migrate! 内存库集成测试
- 测试: circuit_breaker/hooks/task_board/session/memory/streaming_executor 新增修正 15+ 测试
前端架构重构:
- 目录重组: features/ → pages/ + components/ + hooks/ 三层分离
- App.tsx 从 1181 行压缩至 ~174 行 (逻辑抽入 9 个自定义 Hook)
- Agent 面板拆分为 AgentSessionSidebar/AgentMessageList/AgentInputArea 子组件
- 新增 GlobalDialog/PaperDetailModal/UncachedPaperModal 通用对话框组件
- 工具函数抽取: celestial.ts (天体坐标格式), paper.tsx (文献信息渲染)
|
2026-06-25 23:45:37 +08:00 |
|
|
|
85b6429c30
|
feat: Agent 多模式系统、视觉模型集成、LLM 能力分层与 P3 性能收尾
核心架构变更:
1. Agent 多模式系统替代 Coordinator
- 移除 src/agent/coordinator/(Coordinator Agent/Worker/Tools,946 行)
- 新建 src/agent/modes/:声明式模式抽象(AgentMode/ModeConfig/ToolSet)
- 三种内置模式:
- default:通用科研助手,零覆盖保持现有行为
- deep-research:16 步、启用思考、research 权限、系统性调研
- literature-reader:白名单工具、只读沙箱、结构化阅读
- ModeRegistry + ModeConfig 预设 + ToolSet 过滤 + 身份/原则覆盖
- AgentRuntime::with_mode() 统一入口,模式持久化到 session.mode 字段
- GET /api/chat/modes 提供模式列表给前端选择器
2. 视觉模型与图片分析
- 新增 analyze_image 工具(340 行):本地/URL 图片 → 视觉模型流式分析
- LlmClient::analyze_image_stream():SSE 增量实时推送
- 配置:LLM_VISION_MODEL / LLM_VISION_API_KEY / LLM_VISION_API_BASE
- 前端:粘贴/选择图片附件,重试时复用文件路径
- Service 层移除 /chat/rag 和 /chat/figure 端点,统一走 Agent SSE
- Body limit 提升至 100MB 适配大图上传
3. LLM 三级能力分层
- Tier 1 (Core) → Tier 2 (Medium) → Tier 3 (Fast),级联回退
- medium_llm / fast_llm / vision_llm 注入 AppState
- 资产批量翻译 → Medium LLM + Semaphore(3) 并发控制
- 记忆提取/上下文压缩子代理 → Fast LLM
- SubAgentRunner::with_llm_client() 支持注入专用 LLM
4. 数据库与性能优化
- SQLite 启用 WAL + busy_timeout(10s) 处理并发写入
- RAG ingest:DELETE 合并为原子语句 + 批量事务写入
- Meta sync:save_paper_to_db_tx() 事务化批量插入
- 翻译词典:first_words HashSet 预过滤 + next_valid_index 跳跃优化
- read_file 不截断输出 + skip_persist 防止级联磁盘持久化
5. 工具系统增强
- ToolContext 增加 tool_call_id + max_output_chars
- ToolOutput 增加 skip_persist 标记
- TextDelta SSE 携带可选 tool_call_id 支持工具的流式输出
- ChatMessage::text() 辅助方法
|
2026-06-24 19:52:27 +08:00 |
|
|
|
49784739fa
|
feat: Agent 全栈升级——模块化重构、Hooks/Skills/Memory/SubAgent/Team 子系统、审计与任务持久化
架构重构:
- Agent Runtime 由单文件拆为 runtime/ 目录 12 模块(熔断/流式执行/Token预算/文件缓存/权限等)
- Agent Tools 由单文件拆为 tools/ 目录 20+ 模块(filesystem/astro/memory/skill/subagent/team 等)
- 解析器体系重构(common.rs 836行变更),各解析器同步升级
- Download 服务重构(562行),反爬策略强化
- LLM 客户端重构(266行),流式调用优化
新子系统:
- Hooks 生命周期系统(9种事件类型,PreToolUse/PostToolUse 支持输入输出拦截)
- Skills 双层加载系统(system-reminder 轻量注入 + LoadSkillTool 按需加载,notify 文件监听热更新)
- Memory 项目记忆管理(类型/提取/去重/衰减/保活/选择策略/护栏 7 模块)
- SubAgent 上下文隔离子代理运行器(独立 ReAct 循环 + Hook 管道)
- Team 多智能体团队协作(文件 inbox 通信、lead/teammate 协调)
- TaskBoard DAG 任务依赖管理
- Trajectory 会话轨迹、Terminal 终止信号、Autonomous 自主模式、Background 异步通知
数据库:
- agent_tasks 表(DAG 依赖模式,blocked_by JSON 数组)
- agent_audit_log 表(工具调用审计:名称/状态/耗时/输出预览)
- agent_identity 迁移(消息/审计/任务的 agent_name 归属,agent_team_members 团队注册表)
API:
- GET /chat/metrics 聚合指标端点
- GET /chat/sessions/:id/audit 会话审计查询
- GET /chat/questions + POST /chat/answer 人机交互问答
工程:
- 新增依赖:serde_yaml、notify、glob、walkdir、lru
- Skills 目录含 methodology/plotting/presentation 三个初始 SKILL.md
- CLAUDE.md 完整项目架构文档
|
2026-06-17 00:14:02 +08:00 |
|
|
|
b1fb884f21
|
feat: ReAct Agent 自主科研引擎、LLM 流式工具调用、论文搜索服务化
核心新增 —— ReAct 智能体引擎 (src/agent/):
- ReAct 主循环:自主推理→工具调用→观察→迭代,支持流式 SSE 推送、
上下文自动压缩、重复调用死循环检测、手动取消与超时控制
- 7 个内置工具:ADS/arXiv 论文搜索、元数据查询、全文读取、PDF/HTML
下载解析、RAG 向量语义检索、CDS Sesame 天体目标查询
LLM 客户端增强 (src/clients/llm.rs):
- 新增流式/非流式 Function Calling (tool calling) 支持
- 原生 reasoning_content 推理链字段 (DeepSeek/QwQ)
- 多模态图片+文本对话、TokenUsage 用量统计
搜索服务重构 (src/services/search.rs):
- 抽取 ADS/arXiv 搜索为统一 service,跨平台去重、本地状态合并
- API handler 瘦身至薄封装层
下载器增强 (src/services/download.rs):
- Obscura 无头浏览器反爬下载通道 (进程内/CLI 双模式)
- arXiv/Springer 专用策略、ADS Scan PDF 兜底、CAPTCHA 绕过
解析器增强 (src/services/parser/mod.rs):
- Markdown 输出自动附加 YAML 前端元数据头 (标题/作者/来源)
新增 API (src/api/agent.rs):
- POST /api/chat/agent — SSE 流式智能体对话
- GET/DELETE /api/chat/sessions — 会话管理 CRUD
- POST /api/chat/sessions/:id/stop — 紧急停止
数据库: agent_sessions + agent_messages 表
前端 (dashboard/):
- 全新"智能科研"标签页 (ResearchAgentPanel) — 会话列表、ReAct
步骤时间线可视化、SSE 实时流式渲染、Markdown+KaTeX 答案展示
- Reader AI 助手集成 Agent 工作流,含工具调用步骤展示与引用溯源
- 侧边栏新增"智能科研"导航入口
|
2026-06-15 17:30:45 +08:00 |
|
|
|
22e7e1dcee
|
feat: RAG 文献问答、天体目标识别、解析器模块化与批量管线扩展
核心新增:
- RAG 问答系统:Markdown 安全切片器 (LaTeX 保护) + 向量化 + sqlite-vec 检索 + LLM 生成
- 天体目标识别:IAU 标准正则提取 15+ 星表标识符,CDS SIMBAD/Sesame 查询与本地缓存
- 多模态 LLM:chat_completion_with_image 支持图表视觉分析
- CLI Skills Agent (cli.rs):对外暴露 rag/target/ingest 等 5 个子命令
- 解析器模块化重构:单体 778 行 → 按期刊拆分 (A&A/ar5iv/IOP/Generic/PDF) +
common.rs 静态正则工具库
管线与 Schema:
- AssetSync→AssetBatch 重命名,批量管线新增 embed/target 两个处理阶段
- 新增 paper_chunks_content (RAG 切片) 和 paper_targets (天体缓存) 两张表
- StandardPaper 新增 has_vector 字段,所有查询同步更新
前端:
- 新增 AI 助手侧边栏 (RAG 问答 + 来源跳转高亮)
- 最近浏览文献列表 (localStorage 持久化)、跨面板无缝导航
- SyncPanel 批量阶段扩展为下拉选项,支持向量化/天体识别
测试与清理:
- 集成测试合并至 ads.rs 和 llm.rs,新增 chunker + target 单元测试 15 个
- 删除旧单体 parser.rs、独立测试文件及过期 scratch 脚本
|
2026-06-15 13:25:18 +08:00 |
|
|
|
3f1935678b
|
feat: LLM/Embedding 客户端模块化、侧边栏折叠交互、arXiv→ADS 下载回退与前端体验重构
**后端架构**
- 抽取翻译服务中内嵌的 LLM HTTP 调用为独立的 LlmClient /
EmbeddingClient(src/clients/llm.rs),翻译模块改为委托调用,消除
对 reqwest/serde 的直接耦合
- Config 新增 EMBEDDING_API_KEY/EMBEDDING_API_BASE/EMBEDDING_MODEL
三项配置,默认 fallback 至 LLM 对应值,补齐向量嵌入基础设施
**下载策略优化**
- arXiv 直连下载失败后自动回退至 ADS 网关 PUB_PDF→EPRINT_PDF→CrossRef
多级通道,替换此前单路径策略;批量同步同步应用此逻辑
- PDF/HTML 任一方成功时,失败方的 path 字段不再存储 "error:" 报错字符串,
改为置 NULL,防止日志污染数据
**前端交互增强**
- 侧边栏支持折叠/展开:收起为仅图标模式(w-16),展开恢复完整模式(w-64);
收起后点击 Logo 展开,含流畅 cubic-bezier 过渡动画
- 阅读面板新增 PDF 内嵌预览:已下载 PDF 时可通过 iframe 切换查看
/api/files 下的本地文献
- reader/citation 面板未选文献时展示带图标的空状态引导页,替代空白页
- 文献详情面板改为固定高度弹性布局(h-[460px]),各区块按比例分配避免
内容挤压;期刊名过长截断+悬停tooltip;关键词无数据显式占位
- 全局移除 emoji Unicode,统一替换为 lucide-react 图标组件,
消除跨平台字体渲染差异
**反爬检测精细化**
- 按响应长度分层:>150KB 跳过检测(完整文献),<5KB 才扫描通用 HTTP
错误关键字,杜绝长文献误触 Cloudflare/503 模式匹配
- 新增 Radware Bot Manager、ShieldSquare WAF 特征识别
**健壮性**
- Obscura 下载校验失败后自动清理硬盘残留坏文件
- 健康检查工具:文献已有有效 HTML 但 PDF 字段为旧报错时自动判定可修复
- 上传接口 body limit 提升至 100MB,新增 /api/files 静态文件服务路由
- StandardPaper 新增 has_pdf/has_html 字段区分格式级下载状态
|
2026-06-13 11:11:33 +08:00 |
|
|
|
8cc2b74abc
|
feat: 手动上传绕防爬、下载错误诊断与健康检查工具;模块化重构 API 与批量同步
后端:
- 将 handlers.rs (1338行) 拆分为 helpers/papers/notes/sync 四模块
- 将 batch_sync.rs 拆分为 batch/{mod,meta,asset} 三模块
- 新增 POST /api/upload 多部件文件上传接口
- 新增 POST /api/no_resource 标记文献"无全文资源"
- 新增 GET/POST /api/active_bibcode 追踪活跃文献
- StandardPaper 结构体扩展 pdf_error / html_error 错误诊断字段
- download.rs 记录下载失败详情至数据库
- 新增 health_check 二进制工具,支持只读扫描与 --fix 自动修复
- 移除 scratch/ 目录、recovered_handlers.rs 及调试日志
前端:
- 新建 CustomSelect 可复用组件,替换全部原生 select
- LibraryPanel:同步按钮反馈动画、下载失败/无资源状态筛选与计数、
文献类型筛选、状态优先排序、搜索一键清空
- 详情弹窗:错误诊断展示、手动 PDF/HTML 上传区、无资源标记/恢复
- SearchPanel:扩展文献类型徽章、下载失败状态提示
- SyncPanel:同步启动乐观 UI 更新、日志容器内自动滚动
- Tab 状态 localStorage 持久化、弹窗 z-index 修复
|
2026-06-11 22:56:36 +08:00 |
|