返回

文章详情

Keenable SELECT: 一个在 SQL 中搜索网络的代理

Hacker News2026年9月1日 15:41

由 Keenable SELECT 构建的研究报告,这是一个在 SQL 中搜索网络的代理。每个卡片链接到完成的报告和背后的完整轨迹:每个查询、工具结果和结果集。你询问:“自 2025 年以来,哪些 AI 研究人员在前沿实验室之间移动?每一次移动列出研究人员、他们离开的实验室、去往何处以及月份。” → Keenable SELECT 在网络上运行 SQL SELECT SEM_EXTRACT(content, 'researcher'), SEM_EXTRACT(content, 'left lab'), SEM_EXTRACT(content, 'joined lab'), SEM_EXTRACT(content, 'move month') FROM WEB_SEARCH(8 个不同的查询) WHERE SEM_MATCH(content, 'named researcher moving between frontier labs, 2025+') → 你将获得一份报告。报告背后的系统 Keenable SELECT 是一个 MCP 服务器,主要工具是 select。该工具在实时网络数据上运行一个只读的 DuckDB SELECT 语句。服务器在 DuckDB 外部运行网络和语义操作符,将它们的输出放回行集中,然后在 DuckDB 中运行最终的 SQL。传统的网络搜索给代理提供十个链接。代理必须读取每一页并从昂贵的 tokens 中构建答案。SELECT 将这项工作转移到查询中。一条调用可以搜索超过 1,000 个页面,在没有 LLM 成本的情况下使用精确的 WHERE 子句进行过滤,每行只需一次小 LLM 调用来提取字段,并对行进行分组。MCP 工具 select 接受 DuckDB SELECT 查询并返回行。服务器将每个查询结果保存为一个结果集,并带有一个 id,稍后的查询可以从该 id 读取。generate_html_report 接受简要信息和结果集 ids。服务器上的报告模型根据行编写 HTML 报告并返回可共享链接。语义操作符 操作符存在于普通 SQL 中。服务器在解析的语句中找到它们,运行并用普通列替换它们。精确的 SQL 过滤首先运行,因此只有剩余的行会传递给 LLM 操作符。操作符 功能 WEB_SEARCH('q1', 'q2', ...) 同时搜索所有查询,合并排名结果,并删除重复的 URL。WEB_FETCH('https://a.com', ...) 将给定的 URL 作为 Markdown 获取,每个页面一行。SEM_EXTRACT(column, 'field description') 每行一个 LLM 调用。它返回一个字段,或在文本未给出值时返回 null。SEM_EXTRACT_ALL(column, 'what one value is') 类似于 SEM_EXTRACT,但返回所有符合条件的值的列表。SEM_MATCH(column, 'predicate') 每行一个 LLM 测试。将其用作基于意义的 WHERE 过滤器。SEM_SCORE(column, 'query') 每行的低成本嵌入得分。使用 ORDER BY ... DESC LIMIT k。SEM_NORM(column) 为具有相同含义的值提供相同的键。在 GROUP BY 中使用。WEB_SEARCH 和 WEB_FETCH 也可以逐行运行。它们的参数可以使用行列,例如 WEB_SEARCH(name || ' founding year')。主要代理 本画廊中的每个报告来自两个代理:一个使用 MCP 服务器收集数据的研究代理和一个在服务器上运行 generate_html_report 的报告代理。研究代理是一个简单的工具循环:一个带有 select 工具的 LLM。它编写并运行自己的查询,直到可以回答,并将其工具调用、结果和答案作为事件流式传输。后续问题在存储的转录上继续对话。这次展示中的每次运行都要求生成 HTML 报告,因此代理在每个回答结束时附上报告链接。报告代理 第二个代理在服务器上编写每份报告。它获取简要信息、结果集的行和编写指南。它在一个沙箱 Python 会话中构建页面,该会话将结果集作为数据框,因此数据在没有模型重新输入的情况下到达页面。在每次发布之后,服务器渲染草稿并返回屏幕截图和页面的 JavaScript 错误计数;代理修正文档并再次发布,预算固定。只有最终草稿保持有效,作为链接发布。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡