From 8b67b1e6ff22f7eb7f3e5ad12fad5d7854e9a23a Mon Sep 17 00:00:00 2001 From: EMRG Evolution Date: Thu, 6 Aug 2026 08:19:39 +0800 Subject: [PATCH] =?UTF-8?q?emrg:=20paper=5Fprompt.md=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=204=20=E4=B8=AA=E9=81=97=E7=95=99=E7=BC=BA=E9=99=B7=EF=BC=88?= =?UTF-8?q?=E8=AE=B0=E5=BF=86=20paper-prompt-remaining-gaps=202026-07-27?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对照 .emrg/memory/paper-prompt-remaining-gaps.md 的 5 项缺陷修复 4 项 (#1 记忆路径已由状态文件机制解决,无需改动): 1. **LaTeX 编译必然失败** → 编译前 which latexmk 检查,不可用则跳过编译 只做文本级交叉引用检查 2. **文献检索无去重** → 检索前先 ls literature/ 已有文献,笔记已存在则跳过 3. **arXiv 关键词与研究方向脱节** → 禁止通用大词 all:large+language+model, 改为从 Agent.md/摘要/状态文件派生方向术语构造靶向查询 4. **seq 重置误导** → 当前状态区注明 daemon 重启后序号重置,判断首次运行 以状态文件为准 新增 tests/test_scheduler.py 模板渲染回归测试(paper_prompt.md 可正常渲染 且含状态文件/latexmk/literature 指引)。 验证:pytest 473 绿(+1 新测试) --- emrg/server/paper_prompt.md | 23 ++++++++++++++++------- tests/test_scheduler.py | 20 ++++++++++++++++++++ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/emrg/server/paper_prompt.md b/emrg/server/paper_prompt.md index 5a49d88e..a1dcce74 100644 --- a/emrg/server/paper_prompt.md +++ b/emrg/server/paper_prompt.md @@ -7,6 +7,7 @@ - 已运行: {{ uptime }} - 项目源码: `{{ source_dir }}` - 会话 ID: `{{ session_id }}` +- ⚠️ 注意:daemon 重启后循环序号会重置为 1,**不代表真实的历史运行次数**。判断"是否第一次运行"以状态文件 `paper_state.md` 和项目文件为准。 --- @@ -136,13 +137,17 @@ date "+%Y-%m-%d %H:%M" **文献检索**(回顾步骤必须包含——向外看,不只向内看): -1. **优先使用 browser harness skill** 访问 arXiv(cs.LG, cs.CL, cs.AI),搜索近 6 个月与研究方向相关的新预印本 -2. **若 browser harness 不可用**,用 bash + curl 调 arXiv API 兜底: +1. **先列出已读文献**(避免重复添加): ```bash - # 示例:搜索近 6 个月 cs.CL 领域与大语言模型相关的论文 - curl -s "http://export.arxiv.org/api/query?search_query=cat:cs.CL+AND+all:large+language+model&sortBy=submittedDate&sortOrder=descending&max_results=10" + ls {{ source_dir }}/literature/ 2>/dev/null || echo "无 literature/ 目录(尚未开始文献工作)" ``` -3. 读取摘要或全文,生成中文笔记保存到 `literature/` 目录 +2. **优先使用 browser harness skill** 访问 arXiv(cs.LG, cs.CL, cs.AI),搜索近 6 个月与研究方向相关的新预印本 +3. **若 browser harness 不可用**,用 bash + curl 调 arXiv API 兜底。关键词必须从项目研究方向派生(读 Agent.md / 摘要 / 状态文件确定方向术语,如互学习、co-teaching、self-play、知识蒸馏),禁止使用通用大词: + ```bash + # 示例:搜索近 6 个月与研究方向相关的论文(方向术语替换 xxx) + curl -s "http://export.arxiv.org/api/query?search_query=cat:cs.CL+AND+all:xxx&sortBy=submittedDate&sortOrder=descending&max_results=10" + ``` +4. 读取摘要或全文,生成中文笔记保存到 `literature/` 目录——**若该论文已有笔记,跳过并标记已读** ### 2. 规划 @@ -173,8 +178,12 @@ date "+%Y-%m-%d %H:%M" - 若为 LaTeX 项目:编译并检查编译日志 ```bash -# LaTeX 项目:编译检查 -cd {{ source_dir }} && latexmk -pdf -interaction=nonstopmode main.tex 2>&1 | tail -20 +# LaTeX 项目:编译检查(先确认 latexmk 可用,不可用则跳过编译,只做文本交叉引用检查) +if which latexmk >/dev/null 2>&1; then + cd {{ source_dir }} && latexmk -pdf -interaction=nonstopmode main.tex 2>&1 | tail -20 +else + echo "latexmk 不可用——跳过编译,改为文本级检查(交叉引用/参考文献编号一致性)" +fi ``` ### 5. 提交 diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py index c81215d1..1cdbd2ae 100644 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -430,3 +430,23 @@ def test_evolution_handler_default_owner(): assert handler._owner == "argszero" assert handler._repo == "emrg" assert handler._repo_url == "https://github.com/argszero/emrg.git" + + +def test_paper_template_renders_with_context(): + """paper_prompt.md renders without Jinja2 errors (seq/uptime placeholders).""" + import jinja2 + + template_path = ( + Path(__file__).resolve().parent.parent + / "emrg" / "server" / "paper_prompt.md" + ) + env = jinja2.Environment(undefined=jinja2.Undefined) + template = env.from_string(template_path.read_text(encoding="utf-8")) + out = template.render( + instance_id="test", host_name="host", uptime="0h 0m", + source_dir="/tmp/paper", session_id="s1", timestamp="20260806", + task={}, project={}, evolution_count=0, + ) + assert "paper_state.md" in out, "状态文件指引应渲染" + assert "latexmk" in out, "LaTeX 检查指引应渲染" + assert "literature" in out, "文献去重指引应渲染"