|
|
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 |
|
|
|
5f2d2d83f6
|
refactor: 大文件模块化拆分、自进化Skill管线、前端设计系统统一
后端:
- runtime: 拆分 AgentConfig/events/duplicate_detector 为独立模块
- error_recovery: 1499行单体拆为 classification(21种FailoverReason)/overflow/mod
- executor: 提取 helpers.rs (PreparedCall/ToolExecutionResult/execute_single_tool)
- skills: 新增 SkillCreator + SelfImprovePipeline(模式检测→自动生成SKILL.md→质量审查)
- clients/llm: 拆分为 chat/embedding/types 三个子模块
- services/download: 1548行拆为 mod/headers(反爬+SSRF)/strategies(多级回退)
- services/batch/asset: 1264行拆为 mod/helpers/process
前端:
- 设计系统统一: sky/indigo → blueprint 色系, rounded-xl→lg, shadow-lg→sm
- 删除 Vite 模板残留 App.css
- GlobalDialog/PaperDetailModal/UncachedPaperModal 提取公共 BaseModal 组件
|
2026-06-27 09:56:36 +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 |
|
|
|
b11b8ad015
|
refactor: Agent 配置硬编码化、压缩系统不可变重构、前端组件化与安全硬化
- AgentConfig: 移除 10+ 个环境变量读取,仅保留 TOKEN_SOFT/HARD_LIMIT 两个
可调参数,context_char_limit 替换为统一的 token_soft_limit 阈值
- compact: find_safe_cut_point 重写为 HashSet O(n) 算法,
micro_compact 改为不可变风格,compress_context 签名升级为
token_soft_limit + max_messages 双参数,新增 COMPACTION_OUTPUT_RESERVE
- modes: ModeConfig.max_steps/tool_timeout_secs 去 Optional 化,
Deep Research 步数 16→100,Literature Reader 步数 6→25
- dashboard: 提取 AgentMarkdown/ThoughtCard/ToolCallCard/AnswerCard/
SubAgentContainer 等共享组件,ResearchAgentPanel 大幅瘦身,
交互卡片重构为 console-panel 紧凑风格
- security: 移除 HERMES_YOLO_MODE、AGENT_BLOCK_NETWORK 开关、
AGENT_CHECKPOINT_ENABLED 开关,关键安全机制强制启用
|
2026-06-25 00:49:45 +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 |
|
|
|
cec4b8cf7b
|
feat: Docker 容器化、Cookie 鉴权、Coordinator 编排、FTS5 搜索与 P1-P3 全面收尾
Docker 容器化部署
- 提供 Mode A (Alpine musl, ~23MB) 和 Mode B (Distroless glibc, ~87MB)
两种镜像,Docker Compose 一键启动
- build.rs 支持 SKIP_DASHBOARD_BUILD 跳过前端构建
- 国内镜像加速 (npm/apt/apk) 通过 USE_MIRRORS build-arg 控制
安全:Cookie-Based 鉴权系统
- HttpOnly/SameSite=Strict Cookie 会话管理(24h 过期自动清理)
- 登录/登出/验证接口 + 中间件注入
- 前端登录页面 + 退出按钮
- 三层 CORS:localhost 鉴权 / 全放通 bookmarklet / 受保护路由
- 书签脚本 fetch 添加 credentials:'include'
Coordinator 模式 (P2)
- 4 个 meta-tool (delegate_task/check_task/task_stop/synthesize)
- WorkerPool + Semaphore 并发控制 + 超时保护
- 前端协调者模式开关
Hook 系统:UserPromptSubmit 事件 (P2)
- 第 13 个生命周期事件,fire-and-forget 审计
FTS5 全文搜索 (P3)
- agent_sessions_fts + agent_messages_fts 虚拟表
- search_history Agent 工具 + /api/search/history HTTP 接口
- 前端防抖搜索框 + 仅当前会话筛选
工具加载优化 (P3)
- defer_loading 延迟加载 (7 个重型工具)
- is_readonly 只读标记 (9 个查询工具)
- classifier_summary 工具目录供 LLM 按需判断
模型回退策略 (P3)
- LLM_FALLBACK_MODEL 优先回退 + LLM_FALLBACK_CHAIN 链式轮换
- LlmClient model 改为 Arc<RwLock> 支持运行时切换
- 连续 3 次过载后自动切换
压缩记忆桥接 (P3)
- 压缩丢弃消息 → 子代理提取持久记忆 (extract_memories_from_compaction)
git2 依赖修复
- 切换到 vendored-libgit2,消除 OpenSSL 系统依赖
|
2026-06-23 20:22:06 +08:00 |
|
|
|
698d007f39
|
feat: Agent 安全纵深防御、Checkpoint 快照、会话 Rewind/Branch、自进化
Skill、流式执行优化与系统架构全面升级
本次提交对标 Claude Code 与 Hermes-Agent 的工程细节,在安全、可靠性、
会话管理、自我进化四个维度进行了系统性加固,变更总量 48 文件 / +12680 -2292 行。
═══════ 安全纵深防御 ═══════
1. Hardline 硬阻止层 (src/agent/runtime/hardline.rs, +534 行)
- 不可绕过的危险命令拦截(关重启、磁盘擦除、Fork 炸弹、rm -rf /、kill -1)
- 反规避标准化管线: ANSI 序列剥离 → Unicode NFKC → shell 反斜杠还原 → 空字面量清理
- 在 PermissionChecker 之前执行,YOLO/Bypass 模式下同样生效
- 集成到 executor Phase 2,被拒绝工具直接注入错误结果
2. Permission 优先级裁决器 (src/agent/runtime/permission.rs, +200 行)
- 7 层正式优先级规则 (P0 Deny → P7 Allow),带冲突日志
- explain() 方法支持审计追溯
- Hook PermissionRequired 与 Checker 结果的正确叠加逻辑
═══════ Checkpoint 文件快照系统 ═══════
3. git2 原生快照 (src/agent/runtime/checkpoint.rs, +920 行)
- 基于 git2 bare repo,内容寻址自动去重
- 文件变更操作前自动触发 (file_write/file_edit/run_bash)
- 每目录每 turn 最多一次快照,防止同一轮重复
- 支持 list/diff/restore API + pre-rollback 安全快照
- 旧快照自动 prune(保留最近 N 个)+ 按目录隔离 ref
- 排除规则自动过滤 node_modules/target/.git/*.pdf 等
- 集成到 executor: 文件操作前 ckpt.ensure_checkpoint()
═══════ 错误恢复系统大升级 ═══════
4. 21 种 FailoverReason 分类 (src/agent/runtime/error_recovery.rs, +1200 行)
- 参考 Hermes-Agent error_classifier.py
- 8 步分类管线: provider-specific → HTTP status → text pattern → error body → fallback
- is_retryable / should_compress / should_failover / is_permanent 方法
- Context Overflow 自动修复: 从错误消息提取 token 限制,自动下调预算
- RecoveryStep::AdjustMaxTokens 实现 (参考 Claude Code 自动修复)
- 向后兼容 ErrorKind 别名
═══════ 会话 Rewind / Branch / Retry 体系 ═══════
5. 完整 undo 栈 (src/agent/runtime/session.rs, +800 行 + 2 迁移脚本)
- Rewind (软删除): active=0 标记,审计 trail 保留,LLM 不可见
- Restore (撤销回退): 冲突检测——回退后有新消息则拒绝,引导使用 Branch
- Branch: 分叉会话,复制所有 active=1 消息到新会话
- Retry: 硬删除最后一轮对话,返回原消息文本供前端重提交
- 数据库: agent_messages.active 列 + agent_sessions.rewind_count + parent_session_id
- API: 4 个新端点 (/branch, /retry, /rewind, /rewind/restore)
- load_history_for_agent 全面使用 active=1 过滤
═══════ Hooks 系统模块化重构 ═══════
6. 单文件 → 7 模块体系 (src/agent/hooks/)
hooks.rs (994 行) 拆分为:
- mod.rs — 入口 + HookRegistry + SessionHookManager
- types.rs — 类型定义 (Context, TaggedContext, PermissionRequestAction 等)
- traits.rs — AgentHook + AsyncAgentHook + 15 种生命周期事件
- matcher.rs — 工具名/参数匹配 + session 作用域过滤
- dispatch.rs — 并行调度引擎 (run_pre/post_tool_use 等)
- registry.rs — 注册/注销/查询
- builtins.rs — CancellationHook + MetricsHook + AuditLogHook + ContextDeduplicator
关键改进:
- run_pre_tool_use 并行执行所有匹配 hooks,聚合 Block/MutateInput/Continue
- TaggedContext 带完整来源标记的上下文注入 (hook_name + event)
- ContextDeduplicator 单 dispatch cycle 内内容哈希去重
- AsyncAgentHook 支持 fire-and-forget 异步 hooks
═══════ Executor 并发执行升级 ═══════
7. 三阶段管道重写 (src/agent/runtime/executor.rs, +600 行)
- Phase 1: 死循环检测 + 参数解析 (不变)
- Phase 2: Hardline 预检查 (新增) → PermissionChecker (改进)
- Phase 3: ToolPartitioner 分区 → 逐批次执行 (重写)
- 并行批次内 FuturesUnordered 并发
- 串行批次确保非并发安全工具独占执行
- Checkpoint 预触发集成
- Hook 上下文注入: system-reminder 格式 + ContextDeduplicator 去重
- Hook 阻塞错误详细记录
═══════ 流式执行真正的流式调度 ═══════
8. StreamingExecutor 重写 (src/agent/runtime/streaming_executor.rs, ~400 行变更)
- on_tool_use 中对并发安全工具立即 tokio::spawn,不等待 flush
- executing_non_concurrent 标志阻塞后继工具直到独占工具完成
- JoinHandle 管理替代自定义 cancel channel
- completed_queue 按流顺序 yield
- Sibling Abort 通过 broadcast channel + tokio::select! 竞速
- ToolContext 实现 Clone (支持 per-task 上下文复制)
═══════ 自改进 Skill 系统 ═══════
9. PatternDetector + SkillCreator + Curator (src/agent/skills/, +1500 行)
- PatternDetector: 扫描 agent_messages 表,检测跨 session 重复工具调用模式
- SkillCreator: 将高置信度模式自动生成 SKILL.md (YAML frontmatter + 工作流步骤)
- SelfImprovePipeline: 一站式 模式检测 → 创建 → 质量审查
- Curator: 分析 skill 使用统计,标记 stale/deprecated,建议清理
- Skill frontmatter 新增 pinned 字段 (禁止 Curator 自动清理)
═══════ 基础设施优化 ═══════
10. 系统提示词缓存 (src/agent/runtime/system_prompt.rs + mod.rs)
- SystemPromptCache: 首次计算后永久复用,/clear 时失效
- 新增 SAFETY / SYSTEM_CONTEXT / TOOL_USAGE 静态 section
- 环境/tools/skills/memory 动态 section 通过 get_or_compute 缓存
11. ToolRegistry schema 缓存 (src/agent/tools/mod.rs)
- schema_cache + schema_generation 版本号
- 工具变更/过滤器变更时自动失效
- precompute_definitions() 预计算 (AgentRuntime 初始化时调用)
12. 迭代摘要融合 (src/agent/compact.rs, +100 行)
- 参考 Hermes context_compressor.py
- CollapseLog 追踪压缩历史,支持溢出合并
- extract_prior_summary: 提取已有摘要融入新压缩
13. SubAgent 系统提示词模块化 (src/agent/tools/subagent.rs)
- 复用 5 个标准 section + 子代理专有上下文 section
- 独立 ToolRegistry 构建工具列表
═══════ 前端 — CSS 变量主题系统 ═══════
14. 全新主题变量体系 (dashboard/src/index.css + App.tsx + 各面板)
- CSS 自定义属性: --bg-card, --text-main, --text-muted, --border-precision
- 语义化颜色: --accent-blueprint, --accent-star
- 全面替换硬编码 Tailwind 颜色 (slate-xxx → var(--xxx))
- 文献入库提示优化 ("核心知识节点" 替代 "向量块")
- ReaderPanel 样式变量化
|
2026-06-22 20:29:37 +08:00 |
|
|
|
f6df9d8136
|
feat: Agent 思考模式前端可控、子代理全链路持久化、权限系统、工具 ID 追踪体系、前端面板与文档架构重构
- 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 等变量说明
|
2026-06-18 01:21:02 +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 |
|