3步用wigolo shell写脚本:NDJSON管道与可门控退出码完整指南
3步用wigolo shell写脚本NDJSON管道与可门控退出码完整指南【免费下载链接】wigoloThe go-to web for your AI coding agent — local-first search, fetch, crawl research over MCP. No API keys, no cloud, $0/query. Public beta.项目地址: https://gitcode.com/GitHub_Trending/wi/wigolowigolo 是一个面向 AI 编程代理的本地优先 Web 工具——搜索、抓取、爬取与研究都跑在你自己的机器上无需 API 密钥、不依赖云端每次查询成本为零。而wigolo shell的脚本模式是它最被低估的超能力把一行行命令从标准输入喂进去得到的是一条干净可解析的 NDJSON 管道加上可以精确门控的退出码。本文带你用 3 个实战场景从零写出可放进 cron 的自动化脚本。为什么是 wigolo shell一次启动整条管道受益单独执行wigolo tool时每次调用都要重新冷启动进程加载模型、缓存、浏览器池。而 shell 脚本模式让一整个管道只付一次启动成本这对 50 条 URL 的抓取清单或定时批查询来说是分钟级和秒级的差别。它靠三条设计保证管道永远干净NDJSON 输出加--json后每条命令返回一行一个 JSON 文档标准输出严格可解析日志分流人类可读的提示与日志全部走 stderr用2/dev/null一挡即隐退出码门控管道内任何一条命令失败整个会话退出码为1全部成功则为0。前置要求很简单Node ≥ 20 和jq。实战一批量搜索一条管道跑两个查询这是最经典的用法。把多条search命令通过 here-doc 喂进同一个进程再用jq把每个结果展平成相关度 URL两列npx wigolo shell --json 2/dev/null EOF \ | jq -r select(.results) | .results[] | \(.relevance_score * 100 | floor / 100)\t\(.url) search web components shadow dom --limit 3 --no-content search css container queries --limit 3 --no-content EOF输出是 6 行带分数的 URL——两条查询共享一个热进程结果顺序与输入一一对应。注意select(.results)的作用非搜索命令的输出行会被自动过滤掉管道天然宽容。实战二一个管道里混用搜索、抓取与缓存shell 接受全部 10 个工具命令且可以任意混排。下面这条管道先fetch一个 MDN 页面、再查cache stats每行都是独立完整的 JSON{title:Intl,chars:17023,cached:false} {total_urls:68,total_size_mb:21.9,oldest:2026-07-17 09:21:11,newest:2026-07-17 14:55:40}配合jq的多路分发if .markdown ... elif .stats ...你甚至可以在同一个管道里同时监控页面抓取成功和缓存体积增长两件事。这正是本地优先架构的红利第一次抓取走网络之后的重复查询直接从本地知识缓存回答毫秒级返回。实战三可门控的退出码让失败可解析大多数 CLI 的失败只给你一个非零退出码。wigolo 更进一步失败本身也是一条可解析的 JSON落到 stdoutprintf fetch https://no-such-host.invalid\n \ | npx wigolo shell --json 2/dev/null \ | jq -c {url, error} # {url:https://no-such-host.invalid,error:DNS resolution failed (ENOTFOUND)} # echo $? → 1脚本里你可以同时拿到错误原因JSON和管道失败退出码 1两者不冲突。唯一要注意的坑默认 shell 下$?是最后一个命令比如jq的状态所以脚本开头加上set -euo pipefail退出码才能穿过整条管道——官方示例脚本就是这么做的。在源码层面这个契约由 shell.ts 收尾startShell统计失败次数failures 0时返回 1交互式干净退出则返回 0。完整示例三步走通的 pipeline.sh仓库里有一份可直接运行的完整范例覆盖了上述全部场景推荐逐行读懂它可执行脚本pipeline.sh开头即set -euo pipefail三段分别演示批量搜索、混用工具、退出码门控场景说明README.md官方文档对应章节见 cli.md 的 Scripting the shell交互式 shell 核心实现shell.ts总结3 条规则记住就能用 规则命令要点输出可解析--json→ 一行一个 JSON 文档日志不污染人类输出全在 stderr2/dev/null失败可门控任一命令失败 → 退出码1 可解析错误 JSON配合pipefail把wigolo shell --json当作你管道里的一级网络过滤级批量搜索、页面抓取、缓存巡检都能塞进同一进程再交给jq做下游加工——这就是 wigolo shell 脚本模式的全部精髓。【免费下载链接】wigoloThe go-to web for your AI coding agent — local-first search, fetch, crawl research over MCP. No API keys, no cloud, $0/query. Public beta.项目地址: https://gitcode.com/GitHub_Trending/wi/wigolo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考