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 完整项目架构文档
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Agent Skills
|
||||
|
||||
按需加载的领域知识模块。参考 Claude Code 的三层设计:
|
||||
|
||||
- **Layer 1(系统提示词)**:仅列出 skill 名称(~20 tokens/skill)
|
||||
- **Layer 2(load_skill 工具)**:LLM 按需调用,注入完整 SKILL.md 内容
|
||||
|
||||
## 目录约定
|
||||
|
||||
```
|
||||
skills/{name}/SKILL.md ← 必须是子目录 + SKILL.md
|
||||
```
|
||||
|
||||
当前仅读取 `SKILL.md` 文件。skill 目录下可以放其他文件(如 `references/`、`scripts/`、`assets/`),但当前版本的加载逻辑不会处理它们。
|
||||
|
||||
## SKILL.md 格式
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: skill-name # 唯一标识(必填)
|
||||
description: 一句话描述 # 必填
|
||||
context: inline # 已解析但未生效(依赖子代理架构)
|
||||
allowed-tools: # 已解析但未生效(无权限系统)
|
||||
- bash
|
||||
- read
|
||||
---
|
||||
|
||||
# Skill 正文
|
||||
```
|
||||
|
||||
`context` 和 `allowed-tools` 字段会被 `parse_frontmatter()` 解析,`LoadSkillTool` 执行时会在返回内容中标记 `context: fork` 的 skill,但实际执行行为不变——所有 skill 当前都是内联返回 Markdown 文本。
|
||||
|
||||
## 添加新 skill
|
||||
|
||||
1. 创建 `skills/{name}/SKILL.md`,填写 frontmatter 和正文
|
||||
2. 系统提示词在下次请求时自动发现
|
||||
3. 无需改动代码
|
||||
|
||||
## 当前 Skills
|
||||
|
||||
| Skill | 状态 |
|
||||
|-------|------|
|
||||
| methodology | 就绪 |
|
||||
| plotting | 占位 |
|
||||
| presentation | 占位 |
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
name: methodology
|
||||
description: 系统性文献综述方法论——如何高效地完成学术文献调研
|
||||
---
|
||||
|
||||
# 系统性文献综述方法论
|
||||
|
||||
## 工作流程
|
||||
|
||||
当用户请求进行文献综述或调研时,按以下步骤进行:
|
||||
|
||||
### 1. 范围界定
|
||||
- 理解用户的研究问题,提取核心关键词和同义词
|
||||
- 使用 `search_papers` 进行 broad search(rows=10~20),了解领域规模
|
||||
- 向用户确认搜索范围(时间跨度、子领域、是否包含预印本)
|
||||
|
||||
### 2. 按引用数筛选
|
||||
- 优先关注高被引文献(citation_count > 10)
|
||||
- 同时保留近期重要成果(year >= 当前年份-2)
|
||||
- 使用 `get_paper_metadata` 查看候选文献的完整摘要
|
||||
|
||||
### 3. 逐篇深读
|
||||
- 对筛选出的核心文献(通常 5-10 篇),依次:
|
||||
1. `download_paper` → `parse_paper` → `get_paper_content`
|
||||
2. 提取每篇的关键发现、方法论、数据来源
|
||||
3. 记录文献之间的引用关系和争议点
|
||||
|
||||
### 4. 补充检索
|
||||
- 核心文献的参考文献中如有高频出现但未检索到的文献,用 `search_papers` 补查
|
||||
- 使用 `rag_search` 检查本地文献库是否有相关内容
|
||||
|
||||
### 5. 交叉验证
|
||||
- 对关键结论,检查是否有其他独立研究得出一致/矛盾的结果
|
||||
- 注意作者群体和机构是否有明显的学术派系倾向
|
||||
|
||||
### 6. 输出综述
|
||||
- 使用 `save_note` 保存完整的综述报告
|
||||
- 结构:摘要 → 引言 → 方法 → 主要发现 → 争议与共识 → 未来方向 → 参考文献
|
||||
- 所有引用使用 ADS bibcode 标注
|
||||
- 数学公式使用 LaTeX 格式
|
||||
|
||||
## 质量检查清单
|
||||
- [ ] 是否覆盖了近 5 年的主要文献?
|
||||
- [ ] 引用的结论是否有文献支持?
|
||||
- [ ] 不同观点是否得到了平衡呈现?
|
||||
- [ ] 是否标注了各文献的方法局限性?
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: plotting
|
||||
description: 科研绘图规范
|
||||
context: fork
|
||||
allowed-tools:
|
||||
- bash
|
||||
- save_note
|
||||
---
|
||||
|
||||
# 科研绘图规范(TODO:待细化)
|
||||
|
||||
## 目标期刊要求(占位)
|
||||
|
||||
- 分辨率:通常 300-600 dpi
|
||||
- 格式:矢量图优先(PDF/SVG),光栅图备选(PNG)
|
||||
- 字体:需与期刊正文一致(如 Times New Roman)
|
||||
|
||||
## 常用图表类型(占位)
|
||||
|
||||
| 类型 | Python 库 | 适用场景 |
|
||||
|------|----------|---------|
|
||||
| 光谱图 | matplotlib | 光谱分析、能谱 |
|
||||
| 赫罗图 | matplotlib | 恒星演化 |
|
||||
| 光变曲线 | matplotlib | 变星、超新星 |
|
||||
| 参数分布 | seaborn | 统计分布、角图 |
|
||||
| 3D 轨道 | plotly | 天体力学 |
|
||||
|
||||
## 工作流程(TODO)
|
||||
|
||||
1. 准备数据(从文献或天体数据库提取)
|
||||
2. 生成 Python 脚本
|
||||
3. 使用 bash 工具执行脚本
|
||||
4. 检查输出图片
|
||||
5. 保存到指定路径
|
||||
|
||||
**注意:此 skill 为预留占位,具体实现待补充。**
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
name: presentation
|
||||
description: 学术PPT生成规范
|
||||
context: fork
|
||||
allowed-tools:
|
||||
- bash
|
||||
- save_note
|
||||
---
|
||||
|
||||
# 学术 PPT 生成规范(TODO:待细化)
|
||||
|
||||
## 标准结构(占位)
|
||||
|
||||
1. 标题页:报告标题、作者、日期
|
||||
2. 背景与动机:1-2 页
|
||||
3. 数据与方法:2-3 页
|
||||
4. 主要结果:3-5 页(每页一张关键图 + 要点)
|
||||
5. 讨论与结论:1-2 页
|
||||
6. 参考文献:1 页
|
||||
|
||||
## 视觉规范(占位)
|
||||
|
||||
- 配色:学术风格(深蓝 + 白 + 强调色)
|
||||
- 字体:标题 32pt,正文 24pt
|
||||
- 图表:高清、统一配色、标注来源
|
||||
- 公式:LaTeX 渲染
|
||||
|
||||
## 生成方式(TODO)
|
||||
|
||||
- 方案 A:Python-pptx 生成 .pptx 文件
|
||||
- 方案 B:LaTeX Beamer 生成 PDF 幻灯片
|
||||
- 方案 C:Markdown → Marp 转换
|
||||
|
||||
**注意:此 skill 为预留占位,具体实现待补充。**
|
||||
Reference in New Issue
Block a user