AI Engineering
别把联网当研究:yichen-web-research把 Agent 的证据链分成四道闸
研究型 Agent 最容易出现的错觉,是把“搜索到了”当成“已经研究过”。搜索发现、原文读取、媒体下载、私人数据导出和音视频转写,本来就是不同风险等级的动作。mcncarl/yichen-skills 里的 yichen-web-research 没有试图做一个万能网页工具,而是建立了一层安全优先的研究路由。
把研究拆成四种动作
仓库将公开搜索交给 yichen-unified-search,已知 URL 的读取和归档交给 yichen-content-archive,私人书签导出交给 yichen-bookmarks-export,已有音视频的字幕和 ASR 交给 yichen-asr。顶层 yichen-web-research 只在任务跨越两个以上阶段,或者用户没有明确指定工具时负责编排。
这个架构的核心不是目录命名,而是禁止隐式升级。搜索结果不会自动变成下载任务;导出收藏不会自动获得媒体读取权限;已知链接归档也不会扩展成站点爬取。每一步都需要更精确的输入,或者用户当轮明确授权。
候选清单是研究的中间层
统一搜索的交付物不是一堆没有上下文的链接,而是候选记录。候选应包含来源平台、原始 URL、标题、作者、时间、使用的后端、覆盖范围和限制。这个中间层很重要,因为搜索摘要只能用于发现,不能直接充当文章中的事实证据。
当研究任务需要写报告时,流程应该先形成候选清单,再确认最终范围,然后读取官方页面、README、release 或其他一手材料。这样可以把“搜到的线索”“已经打开的页面”和“最终引用的证据”分开管理,减少模型把摘要、二手转述和官方事实混在一起的机会。
多平台不等于一个大搜索框
项目支持 GitHub、微信公众号公共内容、YouTube、Bilibili、X 等不同路线,但平台适配器并不是通用兜底。公开网页使用公共路由;X 关键词搜索有单独的 Grok 优先策略;已知 X URL 则走匿名 FxTwitter,再按规则考虑 Jina;微信公众号禁止操控桌面客户端;需要 Chrome 登录态的平台搜索必须在当前任务取得针对平台和范围的授权。
这比“给 Agent 更多工具”更接近真实的工程问题。平台的权限模型、稳定性和合规边界不同,把它们全部包成一个 search() 函数,反而会掩盖重要差异。
安全约束要能被测试
仓库提供 doctor_yichen.py 和 validate_family.py。前者检查后端和路由状态,但不读取私人内容;后者检查 Skill 的结构、语法、链接、旧入口和边界契约。测试明确验证搜索不下载、不归档,归档不做开放式搜索,书签导出不包含媒体下载命令,以及 ASR 不会在服务商之间静默重复提交。
这种测试方式值得推广到其他 Agent 工具。安全规则如果只写在提示词里,很容易在重构、换后端或压缩上下文时丢失;如果它们被写成测试断言,工具升级时就能及时发现边界漂移。
对研究质量的直接影响
一个研究工作流最贵的不是搜索调用,而是错误结论进入后续内容。明确的阶段切分让研究报告可以保留失败状态:验证码、超时、登录限制、限流或私有目标阻断,都应作为“未核验”或“不可用”交接,而不是让模型用常识补齐。
因此,yichen-web-research 的价值更像研究基础设施,而不是搜索产品。它把“研究”从一次性的模型输出,变成有入口、有交接、有授权、有回归检查的过程。
采用时的边界
只查一个已知网页时,不需要启用总路由;只搜关键词时,也应直接使用统一搜索。总路由适合跨阶段任务,例如先发现开源项目,再核验官方文档,最后把确认后的资料归档。采用时应先安装完整的五个目录,并运行离线验证;可选后端缺失时,应该降低覆盖范围,而不是放宽安全规则。
研究 Agent 的成熟度,最终不由它能返回多少结果决定,而由它能否明确说明哪些结果来自哪里、哪些内容没有读到、哪些动作尚未被授权决定。这个项目把答案写进了路由结构里。