Commit Graph

4 Commits

Author SHA1 Message Date
caoqianming f1a42ef13f skills: 3 SKILL.md 标 sandbox env key 拦截现状(documents/pymatgen ⚠️ + research )
run_python `_SENSITIVE_PATTERNS` 过滤器拦含 API_KEY/TOKEN/SECRET 字面的 host env
(挡 prompt 注入抽 JWT_SECRET 等),误伤 documents/pymatgen 从 env 读 key 的 helper;
docker backend 下 host env 根本不入容器,问题更彻底。LLM 还把 research 跟它们排版
类推也放弃,可 research 不持 secret 任何模式都能用 —— 加 callout 阻止误推 + 反模式
扩到禁所有 HTTP 客户端裸调,免得 urllib 钻空子跳过 helper 教学。
broker 下轮做(host tool 范式不取),DESIGN 当时再补。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 09:23:41 +08:00
caoqianming f197b06cb4 fix(skill): research fetch_pdf 改走静态直链跟 fetch_xml 对齐(绕开 paper_pdf_view 路径 bug)
二次迭代 redeploy + nginx 修 Host 透传后,fetch_xml 5/5 PASS 但 fetch_pdf 仍 5/5 404 —— 同批 paper 同目录 XML 能下 PDF 不能,说明 paper_pdf_view 的 init_paper_path 路径计算 bug(非数据问题)。fetch_pdf 改成读 paper.pdf_url 静态直链 + _stream_to,跟 fetch_xml 同范式;删常量 _PDF。smoke 跑通 5.4MB / 3843ms + 152ms 复用,5/5 候选 100% 成功。

paper_pdf_view 端点本身的 bug 不修(浏览器用户可能还在用),由 paper_server 后续处理;zcbot 不再走它。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 14:30:25 +08:00
caoqianming a1c0e71703 feat(skill): research list 加 pdf_url / xml_url 直链 + 新增 fetch_xml + smoke 扩 trgm/xml 步
paper.py: _LIST_FIELDS 扩到 16(加 publication_date / has_fulltext_xml / pdf_url / xml_url),新加 fetch_xml(id_or_doi, working_dir) helper 走 paper_server media 静态直链(从 paper.xml_url 读,paper_pdf_view 不支持 XML),抽出 _stream_to 共用;fetch_pdf 行为不变。
SKILL.md: 工作流加 "XML 优先 PDF" 原则(已结构化标签 vs OCR 抽取),四函数清单 + 错误处理表更新 fetch_xml / xml_url 空场景。
smoke: 加 step 0 验 pg_trgm 索引速度(>5s 警告 migration 没生效)+ step 4 fetch_xml 多候选轮询 + 复用,step 1 字段集 expected 同步扩到 16。

paper_server 侧改动(serializers pdf_url/xml_url + migration 0006 pg_trgm)见 paper_server 仓库 6a5a5d7b。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 13:49:34 +08:00
caoqianming 97bcd5ae1e feat(skill): paper_server → research skill (search / get_paper / fetch_pdf)
skills/research/{SKILL.md, paper.py}: 接内部部署 paper_server 的 3 个 helper,LLM 经 load_skill("research") + run_python 调用。范式选 skill 而非 tool/MCP/裸 httpx/lib —— 频次低且 helper 范式让 API 漂移时改一处。tools/run_python.py 注入 PYTHONPATH=base_dir,让子进程能 `from skills.research.paper import ...` 不必折腾 sys.path。base_url 默 http://paper.xxhhcty.xyz:8080,可 PAPER_SERVER_URL env 覆盖。遗留:paper_server 侧 PaperDetailSerializer 加 abstract 字段由用户重新部署。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 13:00:37 +08:00