Skills · AI Agent Paper Hunter 端到端

自动检索 arXiv 上 AI Agent 领域最新最有用的论文,并通过 Skills 内化到本项目 Memory + Knowledge Graph 的最小可跑通范式。理论锚点见 docs/skills.md §3.2 「Phase 2 缺口 4」。

#1. 链路总览

用户 → /interface/skills "From Template…" 选 paper_hunter → Install
   ↓
Skill 落库(required_tools=[fetch_papers, save_to_memory, update_knowledge_graph],
           enforcement_mode=strict,3 类 resources)
   ↓
路径 A — UI Preview:点 Skill 卡片的 Preview 按钮,填变量即看 Jinja2 渲染结果(不调 LLM)
路径 B — SubAgent:把 ai-agent-paper-hunter 关联到 SubAgent.skills,启动后 LLM
        在 system prompt 中看到该 Skill 描述 → 自主调用 expand_skill → 触发 fetch_papers
        → save_to_memory + update_knowledge_graph

#2. 准备(一次性)

hljs bash
# 1) 启动服务(已启则跳过)
./scripts/cli.sh start backend ui

# 2) 三步自检:dev cookie + skills 端点
TOKEN=$(NE_AUTH_TOKEN_SECRET=<hex> node apps/negentropy-ui/scripts/sign-dev-cookie.mjs --quiet)
curl -fsS -b "ne_sso=$TOKEN" http://localhost:3292/auth/me
curl -fsS -b "ne_sso=$TOKEN" http://localhost:3192/api/auth/me
curl -fsS -b "ne_sso=$TOKEN" http://localhost:3192/api/interface/skills

#3. 路径 A — UI Preview

适合调试 Jinja2 模板与变量。不会真的拉论文 / 写库。

  1. 浏览器访问 http://localhost:3192/interface/skills

  2. From Template… → 选 AI Agent Paper HunterInstall

  3. 卡片网格中找到 AI Agent Paper Hunter,点眼睛图标 (Preview) 打开预览对话框;

  4. Variables (JSON) 输入:

    hljs json
    {
      "query": "ReAct agent reasoning",
      "top_n": 3,
      "days_back": 14,
      "topic_tag": "ai-agent"
    }
    
  5. Render,下方 RENDERED PROMPT 区块即显示 Jinja2 渲染后的完整 prompt(含 <skill_resources> 块);

  6. RESOURCES 区块列出 3 类资源:corpus:ai-papers-2026 / kg_node:Topic/AgentSkills / url:https://arxiv.org/list/cs.AI/recent

  7. "Heads up" 框说明该 Skill 声明了 3 个 required tools — 这是给 SubAgent 配置者的提醒(路径 B 触发时 strict 模式下缺工具会阻塞)。

#4. 路径 B — SubAgent 自动触发(生产链路)

路径 B 需要后端配置 LLM provider(OpenAI / Anthropic / Vertex AI 至少一个 vendor key)。本 PR 不引入新 LLM 配置,复用既有 ADK runtime。

  1. /interface/subagents 创建一个 SubAgent(如 paper-hunter):
    • tools: ["fetch_papers", "save_to_memory", "update_knowledge_graph"](必须包含 strict 模式声明的 3 个);
    • skills: ["ai-agent-paper-hunter-{owner_short}"](精确名,可在 Skills 卡片上看到);
  2. 启动 SubAgent,发送 user message:"采集本周 ReAct agent 相关 arXiv 论文 5 篇"
  3. ADK runtime 在 SubAgent 启动时调 _load_subagent_row
    • resolve_skills 加载 Skill;
    • build_progressive_disclosure_prompt(agent_tools=...) 检测 strict 模式 + 全部 required_tools 在 SubAgent.tools 中 → 通过;缺一即抛 SkillToolMissingError → SubAgent 降级为无 system prompt 启动(明确"工具不全无法运行");
  4. LLM 在 system prompt 中看到 <available_skills> - ai-agent-paper-hunter: ... [3 resources]
  5. LLM 决定使用:调 expand_skill("ai-agent-paper-hunter", { query, top_n, days_back, topic_tag }) → 服务端 Jinja2 渲染完整模板 + 资源列表回灌;
  6. LLM 按渲染结果指引依次:fetch_papers → 每篇 save_to_memory + update_knowledge_graph
  7. /memory/timeline?metadata.tags=paper/knowledge/graph 即可看到结果。

#5. 排错

现象可能原因处理
Preview 渲染 {{ query }} 没替换Variables JSON 缺 query补齐变量;StrictUndefined 模式下缺失变量 fail-soft 返回原模板
invoke 返回 503feature flag NEGENTROPY_SKILLS_LAYER2_ENABLED=false移除该 env 或设为 true 重启 backend
invoke 返回 409Skill is_enabled=false卡片上点眼睛图标启用
SubAgent 起不来且日志 subagent_skills_strict_blockedstrict 模式 + SubAgent.tools 缺工具把缺失工具补齐到 SubAgent;或临时把 Skill 改 warning 模式
arXiv 0 篇返回days_back 太短 / 关键词太冷放宽到 30 天,或用更通用 query
Memory/KG 无写入LLM 没真的调 save_to_memory(提示词理解偏差)把 prompt_template 改更命令式;或在 Preview 内调试新模板再覆盖 Skill

#6. 进阶:v0.2 引文图(Phase 3 已落地)

新模板 paper_hunter_v02.yaml 在 v0.1 流程之上叠加 Semantic Scholar 一跳引文:

fetch_papers (arXiv)
  → save_to_memory + update_knowledge_graph (v0.1 不变)
  → fetch_paper_citations (S2 batch lookup + per-paper citations)
  → update_knowledge_graph (Paper:{src}-[cites]->Paper:{tgt})

启用方式:/interface/skills → "From Template..." → 选 AI Agent Paper Hunter v0.2。两个版本可共存(template_id 不同)。

新增变量:citation_top_n(每篇论文返回的引用方上限,默认 5,硬上限 10)。

可选 env:S2_API_KEY 提升免费配额(无 key 时遵循公共 ~100 req/5min 限速;429 由 _call_with_retry 指数退避)。

#7. 进阶:定时调度(Phase 3 已落地)

详见 skills-scheduling.md。最常见 case:每周一 09:00 自动跑:

hljs yaml
cron_expr: "0 9 * * 1"
enabled: true
vars: { query: "AI agent", top_n: 10, days_back: 7, topic_tag: "weekly-digest" }

/interface/skills 卡片右上 ⏰ 黄色按钮 → Schedules → 填表 → Create。

重要:scheduler 当前只渲染 prompt + 写入 Memoryapp_name=skill_scheduler),不直接调 LLM。要让 LLM 真正消费这些定时记录,需 SubAgent 接入 Memory trigger(Phase 4 路线)。

#7. 引用

  • arXiv API Help, "API Basics," info.arxiv.org/help/api. — fetch_papers 严格遵守 ≥3s/req 速率与 Atom feed 解析约定。
  • D. Lewis et al., "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks," NeurIPS, 2020.
  • S. Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models," ICLR, 2023.