本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 想法:AI现行的当前,信息爆炸严重,对于科研人员,检索文献繁琐,且不易整理。基于这个问题,我想让AI基于主题每天去找前沿的文献。然后总结,不用多么详细,对于硕博而言,只需要大概的内容和方向,就能明白自己这个领域最近学者们都在做哪些工作,也可以给自己的科研做一些启发,所以做了这个项目。欢迎佬友们指导和交流。 图片先行: 主要功能: 1.根据主题,基于配置的多源,进行文献检索,同时对文献进行历史去重,证据完整性评分等工作。流程比较复杂,感兴趣的话可以让AI分析源项目,加了太多内容了。检索到的文献支持doi链接回看,支持科研人员一键查看文献原文。 2.调用LLM进行文献综述撰写,我总感觉AI写出的内容不够完美,欢迎佬友和我一起完善这部分的提示词。 3.公众号自动稿件撰写,手动推送。目前这部分就是把原文全部内容写在公众号里面,感觉还需要完善。大概功能已经实现了。 开源地址: yyy-OPS/YFR.frontier-review-daily 在线查看地址: https://yfr.yangy.cn/ 欢迎各位科研佬交流,再点点小星星~谢谢各位佬友~ 1 个帖子 - 1 位参与者 阅读完整话题
输入的 prompt 理论基础和假设推导缺乏文献支撑、逻辑推理不强,请搜索本地 zotero library 、或者调用 /semanticscholar-skill 补充文献,并且更新 bib 今天才发现这个任务花了这么多 token,有点恐怖。。。 1 个帖子 - 1 位参与者 阅读完整话题
前一版流程见这里: 记一次使用agent在一小时内完整调研上百篇文献的工作流 本文记录的是后续工程化改造。 项目背景是 1999-2025 年共 28 期完整英文技术期刊,文章总量在百篇级。目标不是简单翻译全文,而是围绕某一长期主题建立索引、筛选相关文章、拆分文章级摘录,并继续做翻译和横向梳理。 第一版流程已经能跑通,但后续暴露出两个主要问题: MinerU 本机运行慢,环境依赖重,Windows 下还会遇到编码、路径和依赖问题。 翻译阶段任务量大,长文需要分块,源文件更新后还要能定向重跑,不能靠人工记忆维护状态。 这次改造主要解决这两点。 MinerU 改为 MCP 调用 原先做法是本机直接调用 MinerU。这个方式适合单次测试,但不适合长期批处理。 主要问题有三个: 本机环境重,依赖变动后排查成本高。 转换耗时较长,中途异常后不容易判断是真失败,还是 Markdown 和图片已经生成。 Windows stdout 编码问题会干扰错误判断。 现在改为全局 mineru MCP,项目内只保留一层桥接脚本: global mineru MCP -> .codex/scripts/mineru_mcp_client.py -> output/<issue>/<issue>.md -> output/<issue>/images/ 桥接脚本的职责比较固定: 从全局 Codex MCP 配置读取 mineru server; 调用 parse_documents ; 强制 UTF-8 环境; 统一返回 extract_path 和 images_dir ; 如果 MCP 没有干净退出,但 Markdown 和 images 已经落盘,则按 fallback_success 处理。 这样 MinerU 不再散落在各个 workflow 里,而是变成一个统一的 PDF → Markdown 服务入口。 示例入口: python .\.codex\scripts\mineru_mcp_client.py ` --source ".\input.pdf" ` --output-dir ".\output\issue-name" ` --language en ` --enable-ocr 期刊批量转换则通过更上层的管理脚本执行: powershell -ExecutionPolicy Bypass -File .\.codex\scripts\run-issue-mineru.ps1 -FromVol 49 -Progress 这层只负责选择任务、跳过已有 Markdown、是否覆盖旧输出,实际转换仍然走 MCP 桥接脚本。 Runner 改造 早期流程接近 hooks 模式:agent 开始时写状态,结束时收集输出并推进进度。 后来改成普通 runner。原因很简单:Windows 下 hooks 不稳定,而且复杂任务只靠 start/stop 两个事件不够。 当前 runner 的基本生命周期是: read progress.json -> select next unit -> write active-run.json -> create runs/<workflow>/<timestamp-id>/ -> write prompt.txt -> codex exec -> validate output -> finalize official output -> update progress.json -> clear active-run.json 几个状态文件分工如下: progress.json 业务队列和完成状态 active-run.json 当前锁,防止并发写入 runs/... 单次运行审计目录 progress.md 人类可读的流水日志 每次运行至少保留: prompt.txt stdout.txt stderr.txt last-message.md metadata.json 这样中断后可以明确回答几个问题: 当前跑到哪个 unit; child process 是否真的完成; 输出是否通过校验; finalize 是否写入正式产物; progress 是否推进; 是否可以 repair 或定向重跑。 通用命令保留为固定形态: node .codex/runner/exec.mjs <workflow> --status node .codex/runner/exec.mjs <workflow> --dry-run node .codex/runner/exec.mjs <workflow> --once node .codex/runner/watch.mjs <workflow> --once node .codex/runner/exec.mjs <workflow> --repair 实际使用时,一般先 --dry-run 看下一个任务,再 --once 验证一次完整链路,最后才批量跑。 翻译 Workflow 翻译阶段是这套 runner 的主要压力测试。 长文不能直接整篇塞进一个 codex exec ,所以按 Markdown 结构切分: article.md -> chunk01.md -> chunk02.md -> chunk03.md 每个 chunk 单独作为一个 unit: chunk01.md -> codex exec -> chunk01.zh-CN.md chunk02.md -> codex exec -> chunk02.zh-CN.md chunk03.md -> codex exec -> chunk03.zh-CN.md 全部 chunk 完成后,再合并为正式中文稿: chunk*.zh-CN.md -> article.zh-CN.md 这里重点不是“切块”,而是状态判断。 之前遇到过一个问题:源 Markdown 已经更新,但旧中文稿还在。如果 runner 只判断“译文文件是否存在”,就会把旧译文误判为已完成。 现在的规则改成: 先比较 sourceHash 再判断旧输出是否可复用 也就是说,输入指纹变化优先于输出存在性。 如果源文变了,对应 unit 会重新进入 pending。只有该 unit 自己成功 finalize 后,才更新它的 last successful sourceHash。 这个规则解决了三类问题: 源文更新后旧译文挡住新任务; chunk 边界变化后旧 chunk 被错误复用; 某个 unit 完成时误清理其他 unit 的重跑状态。 定向重跑也固定成三步: node .codex/runner/exec.mjs component-translate --dry-run node .codex/runner/exec.mjs component-translate --once node .codex/runner/exec.mjs component-translate 先确认目标范围,再验证一个前台 unit,最后跑完整队列。 当前状态 当前项目状态如下: 主期刊处理:28/28 completed 文章级/分块翻译:161/161 translated 基础文献翻译:37 translated + 2 skipped_existing_cn 专题来源翻译:54/54 translated 这些数字来自状态文件和 watcher 输出,不依赖对话上下文。 对应状态入口包括: output/progress.json output/timeline-progress.json translation-progress.json runner watch output 结论 这次改造的核心不是 prompt,而是控制面。 对批量文献任务来说,agent 只应该处理当前最小单元。其余状态必须外置: 队列状态; 当前锁; 输入指纹; 失败记录; 正式输出; 单次运行审计目录。 MinerU MCP 解决输入转换的一致性问题。 Runner 解决批量任务的恢复、监控和重跑问题。 翻译 workflow 则验证了长文分块、输入变更检测和正式产物合并是否可靠。 这套结构跑起来之后,后续扩展新的文献队列或新的处理阶段,主要工作就变成新增 workflow adapter,而不是重新设计整条流水线。 1 个帖子 - 1 位参与者 阅读完整话题
从 【开源推广】作为一名在读博士生,我在日常是如何与 AI 协作的?——ai-collab-playbook 继续讨论: 最近导师让写一份关于本方向的研究进展,想用AI搭起来一个框架,但在填充框架内容的时候感觉割裂感很大,再加上导师的框架建议就更乱了,看有没有佬友有更合理的写作建议,还有就是文献看的确实不多。 1 个帖子 - 1 位参与者 阅读完整话题