wigolo的--json契约设计:机器可读输出如何直连自动化流水线

wigolo的--json契约设计:机器可读输出如何直连自动化流水线 wigolo的--json契约设计机器可读输出如何直连自动化流水线【免费下载链接】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 搜索、抓取与调研工具而--json标志正是它机器可读输出契约的核心任何命令加上--jsonstdout 上就只有一份结构化 JSON日志全部走 stderr退出码直接充当自动化门控——不写一行胶水代码就能把 wigolo 的 Web 智能接进 jq、cron 和 CI 流水线。一句话说清--json契约三个保证整条契约浓缩起来只有三句话保证内容对流水线的意义 结果独占 stdout--json下 JSON 是 stdout 上的唯一内容零日志泄漏对整段 stdout 直接JSON.parse永远成功 日志只走 stderr所有人类可读文本、进度、警告都进 stderr2/dev/null即可静默数据流保持纯净 退出码可门控成功0失败1失败时 stdout 仍是可解析的 JSON 错误信封CI、cron、if判断直接复用这个契约在源码注释中被明确写下见 src/cli/tool-run.tsRESULT → stdout, ALL logs → stderr.--jsonemits the tools MCP-shape JSON on stdout (exit 0), a failure exits 1, and under--jsona failure prints a JSON error object on stdout.完整条目参考 docs/cli.md 的 “The --json contract” 一节。如何把 wigolo 输出干净地喂给 jq新手最容易踩的坑是命令一边打进度一边打结果管道里混进了杂质。--json的设计从源头杜绝了这一点——tool-run.ts 中的emit函数在--json模式下只调用一个formatJson不输出任何别的东西wigolo search zig comptime --json 2/dev/null | jq .results[].url不需要grep出从第几行开始才是真正的输出不会被日志行破坏 JSON 解析结果自带results、evidence、citations、engine_telemetry等字段和 MCP 客户端拿到的形状完全一致——为 CLI 写好的管道换到 MCP 或 REST 接口时无需重写退出码与 JSON 错误信封失败也能被程序接住很多 CLI 工具失败时只在 stderr 吼一句脚本无从结构化处理。wigolo 在--json下失败时stdout 上输出的仍是一个可解析的 JSON 错误信封结果对象本身携带error字段退出码为1printf fetch https://no-such-host.invalid\n \ | wigolo shell --json 2/dev/null | jq -c {url, error} # {url:https://no-such-host.invalid,error:DNS resolution failed (ENOTFOUND)} # echo $? → 1配合set -o pipefail即使后面挂了| jq非零退出码也能穿透管道正是 CI 门控想要的行为。这个一次性 CLI 的完整演示在 examples/one-shot-cli/批量自动化NDJSON shell 流水线一次性命令简单但每次调用都要重新冷启动进程模型、缓存、浏览器池。面对 50 个 URL 的抓取清单或定时 cron 任务wigolo shell --json是正解命令从 stdin 逐行喂入stdout一行一个 JSON 文档NDJSON每行独立可解析人类闲聊照旧走 stderr数据流不被污染管道中任何一条命令失败整个会话以1退出失败信封仍是可解析 JSONprintf search bun test runner\nfetch https://bun.sh/docs/cli/test\n \ | wigolo shell --json 2/dev/null \ | jq -r .results[]?.url // .url启动成本只付一次同一批任务从每条命令冷启动的分钟级降到秒级。可直接运行的参考脚本在 examples/shell-ndjson-pipeline/pipeline.sh统一契约CLI、shell、MCP、REST 同一种 JSON--json输出的不是CLI 私有格式而是工具层的全局契约形状四个入口共享同一份结构入口输出形态触发方式一次性 CLI单个美化 JSON 文档wigolo tool --json脚本化 shellNDJSON一行一文档wigolo shell --jsonMCP 服务器stdio 上的同形状 JSONwigolo默认启动REST 守护进程HTTP 响应体即同一 JSONwigolo serve→/v1/toolJSON 序列化逻辑集中在 src/repl/formatters.tsformatJson是一次性的美化格式formatJsonLine是 NDJSON 用的紧凑单行格式文档内绝不插入换行——所以逐行过滤永远是安全的。管理命令init、doctor、verify、status、health、config、plugin、skills、backfill、uninstall等同样接受--jsonserve因输出协议流而例外。REST 侧的完整契约见 docs/rest-api.mdOpenAPI 文件可直接从守护进程拉取。新手三步接入流水线清单✅加--json给任意工具命令加上获得纯净的单文档输出✅用jq取字段如jq .results[].url失败时读.error✅门控退出码set -o pipefailif ! wigolo ... --json; then 重试或告警; fi更多可运行示例见 examples/README.md工具参数与字段语义见 docs/tools.md。掌握这条--json契约后wigolo 的本地 Web 智能就能像curl一样成为你任何自动化流水线里的一环。【免费下载链接】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),仅供参考