OpenCLI Wikipedia 适配器实战:无需浏览器,用 CLI 与 AI Agent 直接检索维基百科全文

发布时间:2026/9/20 6:19:42
OpenCLI Wikipedia 适配器实战:无需浏览器,用 CLI 与 AI Agent 直接检索维基百科全文
OpenCLI Wikipedia 适配器实战无需浏览器用 CLI 与 AI Agent 直接检索维基百科全文【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址: https://gitcode.com/gh_mirrors/ope/OpenCLI本篇指南围绕 OpenCLI 项目中的 Wikipedia 适配器展开讲解如何通过opencli wikipedia系列命令完成文章搜索、摘要获取、全文提取、随机文章与热榜阅读。该适配器走公开维基百科 API无需登录态、无需浏览器是 OpenCLI 中典型的 Public 策略适配器Strategy.PUBLIC适合脚本化查询、AI Agent 检索知识库以及多语言资料采集。读完本文你将掌握五个子命令的完整参数、输出字段、底层实现与常见异常处理方式。适配器概览公开 API 驱动的只读数据源Wikipedia 适配器对应仓库中的 clis/wikipedia 目录包含五个命令文件与共享工具模块文件对应命令search.jsopencli wikipedia searchsummary.jsopencli wikipedia summaryrandom.jsopencli wikipedia randomtrending.jsopencli wikipedia trendingpage.jsopencli wikipedia pageutils.js共享请求与格式化工具与多数需要登录态的网站适配器不同Wikipedia 适配器没有auth.js也没有任何浏览器会话逻辑——所有命令统一通过公开的 MediaWiki REST API/api/rest_v1/与 Action API/w/api.php完成请求请求头中附带明确的User-Agent: opencli/1.0标识见 utils.js无需 API Key。从 src/registry.ts 的类型约束可以看出browser: false与Strategy.PUBLIC属于非浏览器命令NonBrowserCliCommand这类命令的func不会接收IPage参数直接以普通函数执行网络请求。五个命令全部声明strategy: Strategy.PUBLIC与browser: false意味着它们既不需要 Cookie 注入也不需要前置导航navigateBefore在任何无头环境下都能零依赖运行。命令总览与参数说明原文档给出的五个命令及其职责如下命令说明opencli wikipedia search搜索维基百科文章opencli wikipedia summary获取文章摘要opencli wikipedia random获取随机文章opencli wikipedia trending获取昨日阅读量最高的文章opencli wikipedia page title获取文章完整纯文本正文可设段落上限各命令参数一览searchsearch.js参数类型默认值说明querystring位置参数必填—搜索关键词limitint10最大返回条数源码中强制钳制在1~50之间search.jslangstringen语言代码如en、zh、ja-f jsonformat—以 JSON 格式输出summarysummary.js参数类型默认值说明titlestring位置参数必填—文章标题如Transformer (machine learning model)langstringen语言代码randomrandom.js参数类型默认值说明langstringen语言代码trendingtrending.js参数类型默认值说明limitint10最大返回条数同样钳制在1~50langstringen语言代码pagepage.js参数类型默认值说明titlestring位置参数必填—文章标题langstringen语言代码源码通过正则^[a-z]{2,3}(?:-[a-z0-9])?$校验page.jsparagraphsint0只取前 N 段0表示返回全文快速上手五个命令的典型用法原文档提供了一组可直接复制运行的示例涵盖了中英文与 JSON 输出# 搜索文章 opencli wikipedia search quantum computing --limit 10 # 获取文章摘要 opencli wikipedia summary Artificial intelligence # 获取文章完整正文纯文本无静默截断 opencli wikipedia page Transformer (deep learning architecture) # 显式限定只取前 3 段 opencli wikipedia page Photosynthesis --paragraphs 3 # 使用其他语言 opencli wikipedia search 人工智能 --lang zh opencli wikipedia page 人工智能 --lang zh --paragraphs 5 # JSON 输出 opencli wikipedia search Rust -f json随机与热榜# 随机抽一篇文章 opencli wikipedia random # 昨日阅读量 Top 10 opencli wikipedia trending # 昨日阅读量 Top 20中文站 opencli wikipedia trending --limit 20 --lang zh输出字段说明不同命令的列定义columns直接写在各命令的注册声明中searchtitle、snippet、url。其中snippet会剥离 HTML 标签并截断至 120 字符search.js。summary/randomtitle、description、extract、url。trendingrank、title、description、views。pagetitle、description、pageId、paragraphs、extract、url。paragraphs列反映实际返回的段落数量便于下游脚本判断截断情况。两条核心约定summary 与 page 的差异原文档 Notes 部分是理解本适配器设计意图的关键必须重点展开summary返回引导段摘要固定截断到 300 字符。这是历史约定legacy conventionformatSummaryRow使用EXTRACT_MAX_LEN 300常量对extract字段做截断utils.js因此它只适合快速预览文章主题不适合做全文分析。page返回完整纯文本正文默认不做任何静默截断。--paragraphs参数默认0表示返回全文只有显式传入N时才取前 N 段。这一点从 page.js 的实现可以得到印证正文按两个以上连续换行切分为段落数组后paragraphsCap 0时才执行slice(0, paragraphsCap)否则保留全部段落。这条截断必须显式声明的约定与 OpenCLI 项目中强调输出完整性的设计理念一脉相承——调用方尤其是 AI Agent 的提示词管道永远清楚自己拿到的是完整数据还是裁剪数据不会因隐性截断而产生错误的推理结论。源码级解析page 命令的完整请求链路page是本适配器功能最强的命令其实现page.js完整展示了 OpenCLI 适配器的请求-校验-格式化范式1. 参数校验title去空白后为空直接抛ArgumentErrorlang必须匹配语言代码正则paragraphs必须是非负整数否则同样抛ArgumentError。2. 构造 Action API 请求通过URL对象组装https://{lang}.wikipedia.org/w/api.php依次设置actionquery、formatjson、formatversion2propextracts|info|description正文提取 页面信息 描述inpropurl获取完整页面 URLexplaintext1返回纯文本而非 HTML 片段redirects1自动跟随重定向3. 分层错误处理网络异常抛CommandExecutionErrorHTTP 非 2xx 抛带状态码的错误JSON 解析失败有专门提示API 返回error字段时透出data.error.info页面不存在page.missing或正文为空典型场景是消歧义页/重定向页则抛EmptyResultError并附带建议先用 search 命令的提示文案。4. 结果格式化正文切段后按需截取最终返回包含pageId、实际段数、正文与fullurl的单行记录。这种类型化错误 可操作提示的结构贯穿整个 OpenCLI 适配器体系使得命令失败信息可以被调用方直接解析并用于自我修复self-repair。底层原理trending 的 UTC 日期窗口trending命令读取的是维基百科昨日最热feed 接口其实现细节trending.js有两个值得注意的点固定取昨天代码用Date.now() - 86_400_000计算昨天的日期并全部以getUTC*系列方法取 UTC 年月日。注释明确指出维基 API 期望 UTC 日期且昨天的聚合数据必然完整可用而今天的数据可能仍在聚合中直接使用可能得到不完整结果。标题完整性校验如果--limit选中的行里存在缺失title的文章命令会抛PARSE_ERROR——因为热榜结果需要标题才能用page命令继续打开正文缺失标题的记录对下游无意义。这一行为有测试覆盖缺失标题时抛出PARSE_ERROR类型错误且校验只针对被--limit选中的行trending.test.js。summary与random则走 REST API 的/api/rest_v1/page/summary/{title}与/api/rest_v1/page/random/summary返回结构一致因此共用formatSummaryRow做行格式化utils.js。多语言支持所有命令都接受--lang参数底层通过动态拼接域名https://{lang}.wikipedia.org实现utils.js。这意味着opencli wikipedia天然支持维基百科全部语言版本只要该语言代码合法即可# 日语搜索 opencli wikipedia search 量子コンピュータ --lang ja # 德语摘要 opencli wikipedia summary Künstliche Intelligenz --lang de # 法语全文 opencli wikipedia page Intelligence artificielle --lang fr对于跨语言资料对比、术语对照等研究场景这一特性可以省去切换浏览器语言环境的时间成本。在 AI Agent 工作流中的典型用法由于wikipedia适配器无需浏览器与登录态且支持-f json结构化输出它非常适合嵌入自动化工作流知识预检Agent 用search定位是否存在相关条目避免凭记忆编造事实。精读全文用page title拉取完整纯文本正文交给大模型总结--paragraphs控制输入规模以匹配上下文窗口。事实溯源page输出行中的url字段来自page.fullurl可作为引用来源供后续生成带出处的回答。资料抽样random可用于语料采样trending可用于热点话题监控。需要说明的是维基百科的开放许可要求复用其内容时保留署名与协议信息实际产品化时请遵守对应语言的版权政策。前置条件与限制无需浏览器这是本适配器的核心特性Prerequisites中明确写有No browser required——uses public Wikipedia API。无需登录与 API Key直接使用公开接口。依赖网络可达性请求直连*.wikipedia.org在需要代理的网络环境中需保证域名可达。语言代码合法性page命令会对--lang做正则校验非法代码会以ArgumentError形式拒绝执行。请求频率适配器本身不做限流高并发场景需自行控制调用节奏以遵守维基百科的服务条款。小结opencli wikipedia是 OpenCLI 公开策略适配器的典型范例零配置、零浏览器、多语言、结构化输出并且通过显式段落上限、绝不静默截断的输出约定保证了数据完整性。无论是作为 AI Agent 的事实检索工具还是日常 CLI 查询维基百科的效率工具它都能开箱即用。若需深入阅读实现细节可直接查阅 clis/wikipedia 目录下的五个命令文件与 utils.js测试用例见 trending.test.js。【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址: https://gitcode.com/gh_mirrors/ope/OpenCLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考