@zenalexa/unicli 0.215.0 → 0.216.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +21 -19
- package/README.md +237 -261
- package/README.zh-CN.md +239 -269
- package/dist/adapters/1688/assets.d.ts +2 -0
- package/dist/adapters/1688/assets.d.ts.map +1 -0
- package/dist/adapters/1688/assets.js +102 -0
- package/dist/adapters/1688/assets.js.map +1 -0
- package/dist/adapters/51job/jobs.d.ts +2 -0
- package/dist/adapters/51job/jobs.d.ts.map +1 -0
- package/dist/adapters/51job/jobs.js +292 -0
- package/dist/adapters/51job/jobs.js.map +1 -0
- package/dist/adapters/_shared/browser-tools.d.ts +10 -0
- package/dist/adapters/_shared/browser-tools.d.ts.map +1 -0
- package/dist/adapters/_shared/browser-tools.js +42 -0
- package/dist/adapters/_shared/browser-tools.js.map +1 -0
- package/dist/adapters/antigravity/extra.d.ts +2 -0
- package/dist/adapters/antigravity/extra.d.ts.map +1 -0
- package/dist/adapters/antigravity/extra.js +52 -0
- package/dist/adapters/antigravity/extra.js.map +1 -0
- package/dist/adapters/baidu-scholar/search.d.ts +2 -0
- package/dist/adapters/baidu-scholar/search.d.ts.map +1 -0
- package/dist/adapters/baidu-scholar/search.js +34 -0
- package/dist/adapters/baidu-scholar/search.js.map +1 -0
- package/dist/adapters/bilibili/compat.d.ts +2 -0
- package/dist/adapters/bilibili/compat.d.ts.map +1 -0
- package/dist/adapters/bilibili/compat.js +114 -0
- package/dist/adapters/bilibili/compat.js.map +1 -0
- package/dist/adapters/chatgpt/image.d.ts +2 -0
- package/dist/adapters/chatgpt/image.d.ts.map +1 -0
- package/dist/adapters/chatgpt/image.js +81 -0
- package/dist/adapters/chatgpt/image.js.map +1 -0
- package/dist/adapters/chatgpt-app/chatgpt-app.d.ts +2 -0
- package/dist/adapters/chatgpt-app/chatgpt-app.d.ts.map +1 -0
- package/dist/adapters/chatgpt-app/chatgpt-app.js +9 -0
- package/dist/adapters/chatgpt-app/chatgpt-app.js.map +1 -0
- package/dist/adapters/chatwise/extra.d.ts +2 -0
- package/dist/adapters/chatwise/extra.d.ts.map +1 -0
- package/dist/adapters/chatwise/extra.js +35 -0
- package/dist/adapters/chatwise/extra.js.map +1 -0
- package/dist/adapters/codex/extra.d.ts +2 -0
- package/dist/adapters/codex/extra.d.ts.map +1 -0
- package/dist/adapters/codex/extra.js +35 -0
- package/dist/adapters/codex/extra.js.map +1 -0
- package/dist/adapters/deepseek/web.d.ts +2 -0
- package/dist/adapters/deepseek/web.d.ts.map +1 -0
- package/dist/adapters/deepseek/web.js +187 -0
- package/dist/adapters/deepseek/web.js.map +1 -0
- package/dist/adapters/doubao/web.d.ts +2 -0
- package/dist/adapters/doubao/web.d.ts.map +1 -0
- package/dist/adapters/doubao/web.js +138 -0
- package/dist/adapters/doubao/web.js.map +1 -0
- package/dist/adapters/eastmoney/market-data.d.ts +2 -0
- package/dist/adapters/eastmoney/market-data.d.ts.map +1 -0
- package/dist/adapters/eastmoney/market-data.js +753 -0
- package/dist/adapters/eastmoney/market-data.js.map +1 -0
- package/dist/adapters/gitee/user.d.ts +2 -0
- package/dist/adapters/gitee/user.d.ts.map +1 -0
- package/dist/adapters/gitee/user.js +54 -0
- package/dist/adapters/gitee/user.js.map +1 -0
- package/dist/adapters/google-scholar/cite.d.ts +2 -0
- package/dist/adapters/google-scholar/cite.d.ts.map +1 -0
- package/dist/adapters/google-scholar/cite.js +82 -0
- package/dist/adapters/google-scholar/cite.js.map +1 -0
- package/dist/adapters/google-scholar/profile.d.ts +2 -0
- package/dist/adapters/google-scholar/profile.d.ts.map +1 -0
- package/dist/adapters/google-scholar/profile.js +80 -0
- package/dist/adapters/google-scholar/profile.js.map +1 -0
- package/dist/adapters/google-scholar/search.d.ts +2 -0
- package/dist/adapters/google-scholar/search.d.ts.map +1 -0
- package/dist/adapters/google-scholar/search.js +54 -0
- package/dist/adapters/google-scholar/search.js.map +1 -0
- package/dist/adapters/gov-law/laws.d.ts +2 -0
- package/dist/adapters/gov-law/laws.d.ts.map +1 -0
- package/dist/adapters/gov-law/laws.js +58 -0
- package/dist/adapters/gov-law/laws.js.map +1 -0
- package/dist/adapters/gov-policy/policy.d.ts +2 -0
- package/dist/adapters/gov-policy/policy.d.ts.map +1 -0
- package/dist/adapters/gov-policy/policy.js +58 -0
- package/dist/adapters/gov-policy/policy.js.map +1 -0
- package/dist/adapters/jd/commerce.d.ts +2 -0
- package/dist/adapters/jd/commerce.d.ts.map +1 -0
- package/dist/adapters/jd/commerce.js +133 -0
- package/dist/adapters/jd/commerce.js.map +1 -0
- package/dist/adapters/jianyu/detail.d.ts +2 -0
- package/dist/adapters/jianyu/detail.d.ts.map +1 -0
- package/dist/adapters/jianyu/detail.js +27 -0
- package/dist/adapters/jianyu/detail.js.map +1 -0
- package/dist/adapters/jimeng/workspace.d.ts +2 -0
- package/dist/adapters/jimeng/workspace.d.ts.map +1 -0
- package/dist/adapters/jimeng/workspace.js +49 -0
- package/dist/adapters/jimeng/workspace.js.map +1 -0
- package/dist/adapters/ke/rent-transaction.d.ts +2 -0
- package/dist/adapters/ke/rent-transaction.d.ts.map +1 -0
- package/dist/adapters/ke/rent-transaction.js +63 -0
- package/dist/adapters/ke/rent-transaction.js.map +1 -0
- package/dist/adapters/linux-do/search.d.ts +2 -0
- package/dist/adapters/linux-do/search.d.ts.map +1 -0
- package/dist/adapters/linux-do/search.js +75 -0
- package/dist/adapters/linux-do/search.js.map +1 -0
- package/dist/adapters/linux-do/topic-content.d.ts +2 -0
- package/dist/adapters/linux-do/topic-content.d.ts.map +1 -0
- package/dist/adapters/linux-do/topic-content.js +32 -0
- package/dist/adapters/linux-do/topic-content.js.map +1 -0
- package/dist/adapters/maimai/talents.d.ts +2 -0
- package/dist/adapters/maimai/talents.d.ts.map +1 -0
- package/dist/adapters/maimai/talents.js +64 -0
- package/dist/adapters/maimai/talents.js.map +1 -0
- package/dist/adapters/mubu/docs.d.ts +2 -0
- package/dist/adapters/mubu/docs.d.ts.map +1 -0
- package/dist/adapters/mubu/docs.js +96 -0
- package/dist/adapters/mubu/docs.js.map +1 -0
- package/dist/adapters/nowcoder/nowcoder.d.ts +2 -0
- package/dist/adapters/nowcoder/nowcoder.d.ts.map +1 -0
- package/dist/adapters/nowcoder/nowcoder.js +480 -0
- package/dist/adapters/nowcoder/nowcoder.js.map +1 -0
- package/dist/adapters/powerchina/search.d.ts +2 -0
- package/dist/adapters/powerchina/search.d.ts.map +1 -0
- package/dist/adapters/powerchina/search.js +41 -0
- package/dist/adapters/powerchina/search.js.map +1 -0
- package/dist/adapters/quark/actions.d.ts +2 -0
- package/dist/adapters/quark/actions.d.ts.map +1 -0
- package/dist/adapters/quark/actions.js +151 -0
- package/dist/adapters/quark/actions.js.map +1 -0
- package/dist/adapters/reddit/browser-utils.d.ts +7 -0
- package/dist/adapters/reddit/browser-utils.d.ts.map +1 -0
- package/dist/adapters/reddit/browser-utils.js +68 -0
- package/dist/adapters/reddit/browser-utils.js.map +1 -0
- package/dist/adapters/reddit/listings.d.ts +2 -0
- package/dist/adapters/reddit/listings.d.ts.map +1 -0
- package/dist/adapters/reddit/listings.js +193 -0
- package/dist/adapters/reddit/listings.js.map +1 -0
- package/dist/adapters/reddit/search.d.ts +2 -0
- package/dist/adapters/reddit/search.d.ts.map +1 -0
- package/dist/adapters/reddit/search.js +66 -0
- package/dist/adapters/reddit/search.js.map +1 -0
- package/dist/adapters/spotify/api.d.ts +2 -0
- package/dist/adapters/spotify/api.d.ts.map +1 -0
- package/dist/adapters/spotify/api.js +252 -0
- package/dist/adapters/spotify/api.js.map +1 -0
- package/dist/adapters/taobao/commerce.d.ts +2 -0
- package/dist/adapters/taobao/commerce.d.ts.map +1 -0
- package/dist/adapters/taobao/commerce.js +130 -0
- package/dist/adapters/taobao/commerce.js.map +1 -0
- package/dist/adapters/tdx/hot-rank.d.ts +2 -0
- package/dist/adapters/tdx/hot-rank.d.ts.map +1 -0
- package/dist/adapters/tdx/hot-rank.js +34 -0
- package/dist/adapters/tdx/hot-rank.js.map +1 -0
- package/dist/adapters/ths/hot-rank.d.ts +2 -0
- package/dist/adapters/ths/hot-rank.d.ts.map +1 -0
- package/dist/adapters/ths/hot-rank.js +34 -0
- package/dist/adapters/ths/hot-rank.js.map +1 -0
- package/dist/adapters/toutiao/articles.d.ts +2 -0
- package/dist/adapters/toutiao/articles.d.ts.map +1 -0
- package/dist/adapters/toutiao/articles.js +41 -0
- package/dist/adapters/toutiao/articles.js.map +1 -0
- package/dist/adapters/twitter/lists-extra.d.ts +2 -0
- package/dist/adapters/twitter/lists-extra.d.ts.map +1 -0
- package/dist/adapters/twitter/lists-extra.js +125 -0
- package/dist/adapters/twitter/lists-extra.js.map +1 -0
- package/dist/adapters/uiverse/components.d.ts +2 -0
- package/dist/adapters/uiverse/components.d.ts.map +1 -0
- package/dist/adapters/uiverse/components.js +138 -0
- package/dist/adapters/uiverse/components.js.map +1 -0
- package/dist/adapters/wanfang/search.d.ts +2 -0
- package/dist/adapters/wanfang/search.d.ts.map +1 -0
- package/dist/adapters/wanfang/search.js +34 -0
- package/dist/adapters/wanfang/search.js.map +1 -0
- package/dist/adapters/weixin/drafts.d.ts +2 -0
- package/dist/adapters/weixin/drafts.d.ts.map +1 -0
- package/dist/adapters/weixin/drafts.js +69 -0
- package/dist/adapters/weixin/drafts.js.map +1 -0
- package/dist/adapters/weread/ai-outline.d.ts +2 -0
- package/dist/adapters/weread/ai-outline.d.ts.map +1 -0
- package/dist/adapters/weread/ai-outline.js +28 -0
- package/dist/adapters/weread/ai-outline.js.map +1 -0
- package/dist/adapters/xiaoyuzhou/media.d.ts +2 -0
- package/dist/adapters/xiaoyuzhou/media.d.ts.map +1 -0
- package/dist/adapters/xiaoyuzhou/media.js +105 -0
- package/dist/adapters/xiaoyuzhou/media.js.map +1 -0
- package/dist/adapters/xueqiu/extra.d.ts +2 -0
- package/dist/adapters/xueqiu/extra.d.ts.map +1 -0
- package/dist/adapters/xueqiu/extra.js +74 -0
- package/dist/adapters/xueqiu/extra.js.map +1 -0
- package/dist/adapters/youtube/personal.d.ts +2 -0
- package/dist/adapters/youtube/personal.d.ts.map +1 -0
- package/dist/adapters/youtube/personal.js +183 -0
- package/dist/adapters/youtube/personal.js.map +1 -0
- package/dist/adapters/zhihu/actions.d.ts +2 -0
- package/dist/adapters/zhihu/actions.d.ts.map +1 -0
- package/dist/adapters/zhihu/actions.js +110 -0
- package/dist/adapters/zhihu/actions.js.map +1 -0
- package/dist/agents/backends.d.ts +42 -0
- package/dist/agents/backends.d.ts.map +1 -0
- package/dist/agents/backends.js +598 -0
- package/dist/agents/backends.js.map +1 -0
- package/dist/agents/editor-backends.d.ts +3 -0
- package/dist/agents/editor-backends.d.ts.map +1 -0
- package/dist/agents/editor-backends.js +70 -0
- package/dist/agents/editor-backends.js.map +1 -0
- package/dist/browser/adapter-authoring.d.ts.map +1 -1
- package/dist/browser/adapter-authoring.js +3 -3
- package/dist/browser/adapter-authoring.js.map +1 -1
- package/dist/browser/bridge.d.ts.map +1 -1
- package/dist/browser/bridge.js +2 -3
- package/dist/browser/bridge.js.map +1 -1
- package/dist/browser/daemon-client.d.ts.map +1 -1
- package/dist/browser/daemon-client.js +17 -5
- package/dist/browser/daemon-client.js.map +1 -1
- package/dist/browser/network-cache.js +2 -2
- package/dist/browser/network-cache.js.map +1 -1
- package/dist/browser/site-memory.d.ts.map +1 -1
- package/dist/browser/site-memory.js +11 -8
- package/dist/browser/site-memory.js.map +1 -1
- package/dist/browser/target-errors.d.ts +2 -2
- package/dist/browser/target-errors.js +2 -2
- package/dist/browser/verify-fixture.d.ts.map +1 -1
- package/dist/browser/verify-fixture.js +2 -2
- package/dist/browser/verify-fixture.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +5 -0
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +20 -17
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/agents-backends.d.ts +6 -0
- package/dist/commands/agents-backends.d.ts.map +1 -0
- package/dist/commands/agents-backends.js +49 -0
- package/dist/commands/agents-backends.js.map +1 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +8 -3
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +8 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/browser-operator-runtime.d.ts.map +1 -1
- package/dist/commands/browser-operator-runtime.js +2 -2
- package/dist/commands/browser-operator-runtime.js.map +1 -1
- package/dist/commands/browser-operator.d.ts.map +1 -1
- package/dist/commands/browser-operator.js +2 -2
- package/dist/commands/browser-operator.js.map +1 -1
- package/dist/commands/describe.d.ts +2 -2
- package/dist/commands/describe.d.ts.map +1 -1
- package/dist/commands/describe.js +14 -3
- package/dist/commands/describe.js.map +1 -1
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +7 -6
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/explore.js +2 -2
- package/dist/commands/explore.js.map +1 -1
- package/dist/commands/generate.js +3 -3
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +4 -10
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/migrate.d.ts +9 -9
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +22 -22
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/repair.d.ts.map +1 -1
- package/dist/commands/repair.js +9 -4
- package/dist/commands/repair.js.map +1 -1
- package/dist/commands/search.d.ts +3 -3
- package/dist/commands/search.js +4 -4
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +8 -4
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/synthesize.js +2 -2
- package/dist/commands/synthesize.js.map +1 -1
- package/dist/discovery/aliases.d.ts.map +1 -1
- package/dist/discovery/aliases.js +69 -0
- package/dist/discovery/aliases.js.map +1 -1
- package/dist/discovery/loader.d.ts.map +1 -1
- package/dist/discovery/loader.js +130 -0
- package/dist/discovery/loader.js.map +1 -1
- package/dist/engine/kernel/execute.d.ts.map +1 -1
- package/dist/engine/kernel/execute.js +27 -4
- package/dist/engine/kernel/execute.js.map +1 -1
- package/dist/engine/user-home.d.ts +9 -0
- package/dist/engine/user-home.d.ts.map +1 -0
- package/dist/engine/user-home.js +12 -0
- package/dist/engine/user-home.js.map +1 -0
- package/dist/fast-path.d.ts +14 -0
- package/dist/fast-path.d.ts.map +1 -0
- package/dist/fast-path.js +565 -0
- package/dist/fast-path.js.map +1 -0
- package/dist/hub/index.d.ts +1 -1
- package/dist/hub/index.d.ts.map +1 -1
- package/dist/hub/index.js +28 -17
- package/dist/hub/index.js.map +1 -1
- package/dist/main.js +15 -3
- package/dist/main.js.map +1 -1
- package/dist/manifest-compact.txt +11 -11
- package/dist/manifest-search.json +1 -1
- package/dist/manifest.json +27600 -1016
- package/dist/mcp/tools.js +1 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/output/error-map.d.ts.map +1 -1
- package/dist/output/error-map.js +16 -5
- package/dist/output/error-map.js.map +1 -1
- package/dist/protocol/acp.js +1 -1
- package/dist/protocol/acp.js.map +1 -1
- package/dist/registry.d.ts +3 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +34 -1
- package/dist/registry.js.map +1 -1
- package/dist/runtime/usage-ledger.d.ts +6 -7
- package/dist/runtime/usage-ledger.d.ts.map +1 -1
- package/dist/runtime/usage-ledger.js +6 -7
- package/dist/runtime/usage-ledger.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +61 -52
- package/src/adapters/1688/assets.ts +114 -0
- package/src/adapters/51job/jobs.ts +327 -0
- package/src/adapters/_shared/browser-tools.ts +59 -0
- package/src/adapters/antigravity/extra.ts +53 -0
- package/src/adapters/baidu-scholar/search.ts +38 -0
- package/src/adapters/bilibili/compat.ts +132 -0
- package/src/adapters/binance/asks.yaml +41 -0
- package/src/adapters/binance/depth.yaml +41 -0
- package/src/adapters/binance/gainers.yaml +42 -0
- package/src/adapters/binance/hot.yaml +1 -1
- package/src/adapters/binance/kline.yaml +1 -1
- package/src/adapters/binance/klines.yaml +46 -0
- package/src/adapters/binance/losers.yaml +42 -0
- package/src/adapters/binance/pairs.yaml +38 -0
- package/src/adapters/binance/price.yaml +32 -0
- package/src/adapters/binance/prices.yaml +30 -0
- package/src/adapters/binance/ticker.yaml +2 -2
- package/src/adapters/binance/top.yaml +46 -0
- package/src/adapters/binance/trades.yaml +42 -0
- package/src/adapters/chatgpt/image.ts +84 -0
- package/src/adapters/chatgpt-app/chatgpt-app.ts +11 -0
- package/src/adapters/chatwise/extra.ts +36 -0
- package/src/adapters/codex/extra.ts +36 -0
- package/src/adapters/deepseek/web.ts +203 -0
- package/src/adapters/doubao/web.ts +154 -0
- package/src/adapters/eastmoney/market-data.ts +829 -0
- package/src/adapters/excel/insert-image.yaml +80 -0
- package/src/adapters/excel/insert-link.yaml +90 -0
- package/src/adapters/excel/list.yaml +63 -0
- package/src/adapters/excel/read.yaml +74 -0
- package/src/adapters/excel/set-cell.yaml +77 -0
- package/src/adapters/excel/set-font.yaml +87 -0
- package/src/adapters/excel/status.yaml +29 -0
- package/src/adapters/gh/search-repos.yaml +62 -0
- package/src/adapters/gitee/user.ts +59 -0
- package/src/adapters/google-scholar/cite.ts +95 -0
- package/src/adapters/google-scholar/profile.ts +91 -0
- package/src/adapters/google-scholar/search.ts +58 -0
- package/src/adapters/gov-law/laws.ts +61 -0
- package/src/adapters/gov-policy/policy.ts +61 -0
- package/src/adapters/imessage/contact.yaml +7 -2
- package/src/adapters/imessage/recent.yaml +7 -2
- package/src/adapters/imessage/search.yaml +7 -2
- package/src/adapters/jd/commerce.ts +142 -0
- package/src/adapters/jianyu/detail.ts +28 -0
- package/src/adapters/jimeng/workspace.ts +53 -0
- package/src/adapters/ke/rent-transaction.ts +70 -0
- package/src/adapters/linux-do/search.ts +92 -0
- package/src/adapters/linux-do/topic-content.ts +45 -0
- package/src/adapters/maimai/talents.ts +65 -0
- package/src/adapters/mubu/docs.ts +107 -0
- package/src/adapters/nowcoder/nowcoder.ts +570 -0
- package/src/adapters/powerchina/search.ts +45 -0
- package/src/adapters/powerpoint/add-slide.yaml +93 -0
- package/src/adapters/powerpoint/insert-image.yaml +71 -0
- package/src/adapters/powerpoint/insert-link.yaml +94 -0
- package/src/adapters/powerpoint/list.yaml +58 -0
- package/src/adapters/powerpoint/set-font.yaml +101 -0
- package/src/adapters/powerpoint/slides.yaml +73 -0
- package/src/adapters/powerpoint/status.yaml +29 -0
- package/src/adapters/quark/actions.ts +169 -0
- package/src/adapters/reddit/browser-utils.ts +93 -0
- package/src/adapters/reddit/listings.ts +223 -0
- package/src/adapters/reddit/search.ts +74 -0
- package/src/adapters/spotify/api.ts +292 -0
- package/src/adapters/taobao/commerce.ts +134 -0
- package/src/adapters/tdx/hot-rank.ts +35 -0
- package/src/adapters/ths/hot-rank.ts +35 -0
- package/src/adapters/toutiao/articles.ts +45 -0
- package/src/adapters/twitter/lists-extra.ts +139 -0
- package/src/adapters/uiverse/components.ts +154 -0
- package/src/adapters/vercel/list.yaml +2 -1
- package/src/adapters/wanfang/search.ts +38 -0
- package/src/adapters/weixin/drafts.ts +74 -0
- package/src/adapters/weread/ai-outline.ts +32 -0
- package/src/adapters/word/insert-image.yaml +73 -0
- package/src/adapters/word/insert-link.yaml +82 -0
- package/src/adapters/word/insert-text.yaml +72 -0
- package/src/adapters/word/list.yaml +63 -0
- package/src/adapters/word/read.yaml +63 -0
- package/src/adapters/word/set-font.yaml +97 -0
- package/src/adapters/word/status.yaml +29 -0
- package/src/adapters/xiaoyuzhou/media.ts +139 -0
- package/src/adapters/xueqiu/extra.ts +78 -0
- package/src/adapters/youtube/personal.ts +215 -0
- package/src/adapters/zhihu/actions.ts +111 -0
- package/src/hub/external-clis-harness.yaml +211 -0
- package/src/hub/external-clis.yaml +175 -0
- package/src/hub/index.ts +29 -25
- package/src/adapters/linux-do/search.yaml +0 -44
- package/src/adapters/meituan/hot.yaml +0 -34
- package/src/adapters/reddit/frontpage.test.ts +0 -15
- package/src/adapters/reddit/frontpage.yaml +0 -41
- package/src/adapters/reddit/hot.test.ts +0 -15
- package/src/adapters/reddit/hot.yaml +0 -41
- package/src/adapters/reddit/new.test.ts +0 -15
- package/src/adapters/reddit/new.yaml +0 -42
- package/src/adapters/reddit/popular.test.ts +0 -15
- package/src/adapters/reddit/popular.yaml +0 -41
- package/src/adapters/reddit/rising.test.ts +0 -15
- package/src/adapters/reddit/rising.yaml +0 -41
- package/src/adapters/reddit/search.test.ts +0 -15
- package/src/adapters/reddit/search.yaml +0 -52
- package/src/adapters/reddit/subreddit.test.ts +0 -15
- package/src/adapters/reddit/subreddit.yaml +0 -50
- package/src/adapters/reddit/top.test.ts +0 -15
- package/src/adapters/reddit/top.yaml +0 -48
- package/src/adapters/reddit/trending.test.ts +0 -15
- package/src/adapters/reddit/trending.yaml +0 -33
package/README.zh-CN.md
CHANGED
|
@@ -1,340 +1,310 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/mascot-otter.png" alt="Uni-CLI 水獭 mascot" width="180">
|
|
3
|
+
</p>
|
|
4
4
|
|
|
5
|
-
<
|
|
5
|
+
<h1 align="center">Uni-CLI</h1>
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>给 Agent 用的一层统一 CLI:网站、桌面 App、本地工具、外部 CLI,都变成可搜索、可执行、可修复的命令。</strong>
|
|
9
|
+
</p>
|
|
8
10
|
|
|
9
|
-
>
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://olo-dot-io.github.io/Uni-CLI/">文档站</a>
|
|
13
|
+
·
|
|
14
|
+
<a href="https://olo-dot-io.github.io/Uni-CLI/reference/sites">站点目录</a>
|
|
15
|
+
·
|
|
16
|
+
<a href="https://olo-dot-io.github.io/Uni-CLI/llms.txt">llms.txt</a>
|
|
17
|
+
</p>
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
<p align="center">
|
|
20
|
+
先按意图搜索,再执行真实命令,最后拿结构化结果。网站变了也不会假装成功,错误会告诉你哪个 adapter、哪一步、怎么修。
|
|
21
|
+
</p>
|
|
12
22
|
|
|
13
|
-
<
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="https://www.npmjs.com/package/@zenalexa/unicli"><img alt="npm" src="https://img.shields.io/npm/v/@zenalexa/unicli?style=flat-square"></a>
|
|
25
|
+
<a href="./LICENSE"><img alt="license" src="https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square"></a>
|
|
26
|
+
<img alt="Node 20+" src="https://img.shields.io/badge/node-20%2B-339933?style=flat-square&logo=node.js&logoColor=white">
|
|
27
|
+
<img alt="MCP" src="https://img.shields.io/badge/MCP-2025--11--25-6f42c1?style=flat-square">
|
|
28
|
+
</p>
|
|
14
29
|
|
|
15
|
-
<
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
<a href="./LICENSE"><img src="https://img.shields.io/github/license/olo-dot-io/Uni-CLI?style=flat-square" alt="license"></a>
|
|
19
|
-
<img src="https://img.shields.io/badge/tests-<!-- STATS:test_count -->7145<!-- /STATS -->-44cc11?style=flat-square" alt="tests">
|
|
20
|
-
<img src="https://img.shields.io/badge/agent--reach-ally-6a5acd?style=flat-square" alt="agent-reach ally">
|
|
30
|
+
<p align="center">
|
|
31
|
+
<sub><!-- STATS:site_count -->235<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1448<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> 个 pipeline step · <!-- STATS:test_count -->7394<!-- /STATS --> 个测试</sub>
|
|
32
|
+
</p>
|
|
21
33
|
|
|
22
|
-
<
|
|
34
|
+
<p align="center">
|
|
35
|
+
<strong>Web / Social / Knowledge</strong><br>
|
|
36
|
+
<img src="https://img.shields.io/badge/X-000000?style=flat-square&logo=x&logoColor=white" alt="X">
|
|
37
|
+
<img src="https://img.shields.io/badge/Reddit-FF4500?style=flat-square&logo=reddit&logoColor=white" alt="Reddit">
|
|
38
|
+
<img src="https://img.shields.io/badge/Instagram-E4405F?style=flat-square&logo=instagram&logoColor=white" alt="Instagram">
|
|
39
|
+
<img src="https://img.shields.io/badge/TikTok-000000?style=flat-square&logo=tiktok&logoColor=white" alt="TikTok">
|
|
40
|
+
<img src="https://img.shields.io/badge/YouTube-FF0000?style=flat-square&logo=youtube&logoColor=white" alt="YouTube">
|
|
41
|
+
<img src="https://img.shields.io/badge/Bilibili-00A1D6?style=flat-square&logo=bilibili&logoColor=white" alt="Bilibili">
|
|
42
|
+
<img src="https://img.shields.io/badge/Zhihu-0084FF?style=flat-square&logo=zhihu&logoColor=white" alt="Zhihu">
|
|
43
|
+
<img src="https://img.shields.io/badge/Weibo-E6162D?style=flat-square&logo=sinaweibo&logoColor=white" alt="Weibo">
|
|
44
|
+
<img src="https://img.shields.io/badge/Xiaohongshu-FF2442?style=flat-square&logoColor=white" alt="Xiaohongshu">
|
|
45
|
+
<img src="https://img.shields.io/badge/Douyin-000000?style=flat-square&logo=tiktok&logoColor=white" alt="Douyin">
|
|
46
|
+
<img src="https://img.shields.io/badge/Hacker%20News-FF6600?style=flat-square&logo=ycombinator&logoColor=white" alt="Hacker News">
|
|
47
|
+
<img src="https://img.shields.io/badge/GitHub-181717?style=flat-square&logo=github&logoColor=white" alt="GitHub">
|
|
48
|
+
<img src="https://img.shields.io/badge/Stack%20Overflow-F58025?style=flat-square&logo=stackoverflow&logoColor=white" alt="Stack Overflow">
|
|
49
|
+
<img src="https://img.shields.io/badge/Product%20Hunt-DA552F?style=flat-square&logo=producthunt&logoColor=white" alt="Product Hunt">
|
|
50
|
+
<img src="https://img.shields.io/badge/npm-CB3837?style=flat-square&logo=npm&logoColor=white" alt="npm">
|
|
51
|
+
<img src="https://img.shields.io/badge/PyPI-3775A9?style=flat-square&logo=pypi&logoColor=white" alt="PyPI">
|
|
52
|
+
<img src="https://img.shields.io/badge/Wikipedia-000000?style=flat-square&logo=wikipedia&logoColor=white" alt="Wikipedia">
|
|
53
|
+
<img src="https://img.shields.io/badge/Spotify-1DB954?style=flat-square&logo=spotify&logoColor=white" alt="Spotify">
|
|
54
|
+
<img src="https://img.shields.io/badge/IMDb-F5C518?style=flat-square&logo=imdb&logoColor=black" alt="IMDb">
|
|
55
|
+
<img src="https://img.shields.io/badge/Bloomberg-000000?style=flat-square&logoColor=white" alt="Bloomberg">
|
|
56
|
+
<img src="https://img.shields.io/badge/Reuters-FF8000?style=flat-square&logo=reuters&logoColor=white" alt="Reuters">
|
|
57
|
+
<img src="https://img.shields.io/badge/BBC-B80000?style=flat-square&logo=bbc&logoColor=white" alt="BBC">
|
|
58
|
+
<img src="https://img.shields.io/badge/Binance-F0B90B?style=flat-square&logo=binance&logoColor=black" alt="Binance">
|
|
59
|
+
<img src="https://img.shields.io/badge/Coinbase-0052FF?style=flat-square&logo=coinbase&logoColor=white" alt="Coinbase">
|
|
60
|
+
<img src="https://img.shields.io/badge/Yahoo%20Finance-6001D2?style=flat-square&logo=yahoo&logoColor=white" alt="Yahoo Finance">
|
|
61
|
+
</p>
|
|
23
62
|
|
|
24
|
-
|
|
63
|
+
<p align="center">
|
|
64
|
+
<strong>Agent / IDE / Coding Surfaces</strong><br>
|
|
65
|
+
<img src="https://img.shields.io/badge/Claude%20Code-D97757?style=flat-square&logo=anthropic&logoColor=white" alt="Claude Code">
|
|
66
|
+
<img src="https://img.shields.io/badge/Codex-111111?style=flat-square&logo=openai&logoColor=white" alt="Codex">
|
|
67
|
+
<img src="https://img.shields.io/badge/OpenCode-101010?style=flat-square&logoColor=white" alt="OpenCode">
|
|
68
|
+
<img src="https://img.shields.io/badge/Cursor-000000?style=flat-square&logoColor=white" alt="Cursor">
|
|
69
|
+
<img src="https://img.shields.io/badge/Kiro-FF9900?style=flat-square&logo=amazon&logoColor=black" alt="Kiro">
|
|
70
|
+
<img src="https://img.shields.io/badge/Gemini-4285F4?style=flat-square&logo=googlegemini&logoColor=white" alt="Gemini">
|
|
71
|
+
<img src="https://img.shields.io/badge/Qwen-1E88E5?style=flat-square&logoColor=white" alt="Qwen">
|
|
72
|
+
<img src="https://img.shields.io/badge/Kimi-6C5CE7?style=flat-square&logoColor=white" alt="Kimi">
|
|
73
|
+
<img src="https://img.shields.io/badge/MiniMax-00A6FB?style=flat-square&logoColor=white" alt="MiniMax">
|
|
74
|
+
<img src="https://img.shields.io/badge/Cline-6E56CF?style=flat-square&logoColor=white" alt="Cline">
|
|
75
|
+
<img src="https://img.shields.io/badge/Roo%20Code-2E7D32?style=flat-square&logoColor=white" alt="Roo Code">
|
|
76
|
+
<img src="https://img.shields.io/badge/Windsurf-00C2FF?style=flat-square&logoColor=white" alt="Windsurf">
|
|
77
|
+
<img src="https://img.shields.io/badge/Aider-6F42C1?style=flat-square&logo=python&logoColor=white" alt="Aider">
|
|
78
|
+
<img src="https://img.shields.io/badge/Goose-111827?style=flat-square&logoColor=white" alt="Goose">
|
|
79
|
+
<img src="https://img.shields.io/badge/OpenHands-FF6B00?style=flat-square&logoColor=white" alt="OpenHands">
|
|
80
|
+
<img src="https://img.shields.io/badge/SWE--agent-0F172A?style=flat-square&logoColor=white" alt="SWE-agent">
|
|
81
|
+
<img src="https://img.shields.io/badge/GitHub%20Copilot-181717?style=flat-square&logo=githubcopilot&logoColor=white" alt="GitHub Copilot">
|
|
82
|
+
<img src="https://img.shields.io/badge/AgentAPI-334155?style=flat-square&logoColor=white" alt="AgentAPI">
|
|
83
|
+
<img src="https://img.shields.io/badge/acpx-475569?style=flat-square&logoColor=white" alt="acpx">
|
|
84
|
+
</p>
|
|
25
85
|
|
|
26
|
-
<
|
|
86
|
+
<p align="center">
|
|
87
|
+
<strong>Desktop / Media / DevOps / Cloud</strong><br>
|
|
88
|
+
<img src="https://img.shields.io/badge/macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS">
|
|
89
|
+
<img src="https://img.shields.io/badge/Chrome-4285F4?style=flat-square&logo=googlechrome&logoColor=white" alt="Chrome">
|
|
90
|
+
<img src="https://img.shields.io/badge/Blender-F5792A?style=flat-square&logo=blender&logoColor=white" alt="Blender">
|
|
91
|
+
<img src="https://img.shields.io/badge/FFmpeg-007808?style=flat-square&logo=ffmpeg&logoColor=white" alt="FFmpeg">
|
|
92
|
+
<img src="https://img.shields.io/badge/ImageMagick-0074C1?style=flat-square&logoColor=white" alt="ImageMagick">
|
|
93
|
+
<img src="https://img.shields.io/badge/GIMP-5C5543?style=flat-square&logo=gimp&logoColor=white" alt="GIMP">
|
|
94
|
+
<img src="https://img.shields.io/badge/FreeCAD-729FCF?style=flat-square&logo=freecad&logoColor=white" alt="FreeCAD">
|
|
95
|
+
<img src="https://img.shields.io/badge/Audacity-0000CC?style=flat-square&logo=audacity&logoColor=white" alt="Audacity">
|
|
96
|
+
<img src="https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white" alt="Docker">
|
|
97
|
+
<img src="https://img.shields.io/badge/GitHub%20CLI-181717?style=flat-square&logo=github&logoColor=white" alt="GitHub CLI">
|
|
98
|
+
<img src="https://img.shields.io/badge/jq-C7254E?style=flat-square&logo=json&logoColor=white" alt="jq">
|
|
99
|
+
<img src="https://img.shields.io/badge/yt--dlp-4A5568?style=flat-square&logo=youtube&logoColor=white" alt="yt-dlp">
|
|
100
|
+
<img src="https://img.shields.io/badge/AWS-232F3E?style=flat-square&logo=amazonaws&logoColor=white" alt="AWS">
|
|
101
|
+
<img src="https://img.shields.io/badge/Vercel-000000?style=flat-square&logo=vercel&logoColor=white" alt="Vercel">
|
|
102
|
+
<img src="https://img.shields.io/badge/Supabase-3ECF8E?style=flat-square&logo=supabase&logoColor=black" alt="Supabase">
|
|
103
|
+
<img src="https://img.shields.io/badge/Cloudflare-F38020?style=flat-square&logo=cloudflare&logoColor=white" alt="Cloudflare">
|
|
104
|
+
<img src="https://img.shields.io/badge/Stripe-635BFF?style=flat-square&logo=stripe&logoColor=white" alt="Stripe">
|
|
105
|
+
<img src="https://img.shields.io/badge/Firebase-FFCA28?style=flat-square&logo=firebase&logoColor=black" alt="Firebase">
|
|
106
|
+
<img src="https://img.shields.io/badge/Netlify-00C7B7?style=flat-square&logo=netlify&logoColor=white" alt="Netlify">
|
|
107
|
+
<img src="https://img.shields.io/badge/Railway-0B0D0E?style=flat-square&logo=railway&logoColor=white" alt="Railway">
|
|
108
|
+
<img src="https://img.shields.io/badge/Azure-0078D4?style=flat-square&logo=microsoftazure&logoColor=white" alt="Azure">
|
|
109
|
+
<img src="https://img.shields.io/badge/Google%20Cloud-4285F4?style=flat-square&logo=googlecloud&logoColor=white" alt="Google Cloud">
|
|
110
|
+
<img src="https://img.shields.io/badge/Slack-4A154B?style=flat-square&logo=slack&logoColor=white" alt="Slack">
|
|
111
|
+
<img src="https://img.shields.io/badge/Notion-000000?style=flat-square&logo=notion&logoColor=white" alt="Notion">
|
|
112
|
+
<img src="https://img.shields.io/badge/Linear-5E6AD2?style=flat-square&logo=linear&logoColor=white" alt="Linear">
|
|
113
|
+
<img src="https://img.shields.io/badge/Figma-F24E1E?style=flat-square&logo=figma&logoColor=white" alt="Figma">
|
|
114
|
+
</p>
|
|
27
115
|
|
|
28
|
-
```
|
|
116
|
+
```bash
|
|
29
117
|
npm install -g @zenalexa/unicli
|
|
118
|
+
unicli search "微博热搜"
|
|
119
|
+
unicli hackernews top -f json
|
|
30
120
|
```
|
|
31
121
|
|
|
32
|
-
|
|
122
|
+
<!-- IF YOU ARE AN AI AGENT: Start here.
|
|
123
|
+
Install: npm install -g @zenalexa/unicli
|
|
124
|
+
Discover: unicli search "your intent"
|
|
125
|
+
Run: unicli <site> <command> [args] [-f json|md|yaml|csv|compact]
|
|
126
|
+
Repair: read the error envelope, edit the adapter_path, run unicli repair <site> <command>
|
|
127
|
+
Prefer native CLI / JSON stream / MCP for agent runtimes. Use ACP as an editor compatibility gateway.
|
|
128
|
+
-->
|
|
33
129
|
|
|
34
|
-
|
|
130
|
+
## 它解决什么
|
|
35
131
|
|
|
36
|
-
|
|
132
|
+
Uni-CLI 把软件表面封装成 Agent 能发现、能执行、能修的命令。
|
|
37
133
|
|
|
38
|
-
|
|
134
|
+
| 表面 | 能力 |
|
|
135
|
+
| ------------ | ------------------------------------------------------------------------------- |
|
|
136
|
+
| 网站和 API | public、cookie、header、browser-intercept 等 adapter |
|
|
137
|
+
| 浏览器自动化 | CDP 的 navigate、click、type、intercept、snapshot、extract、wait 等步骤 |
|
|
138
|
+
| 桌面和 macOS | 系统命令、App adapter、截图、剪贴板、日历、亮度、本地工具 |
|
|
139
|
+
| 外部 CLI | 58 个已登记的 passthrough bridge,支持安装和状态发现 |
|
|
140
|
+
| Agent 后端 | native CLI、JSON stream、MCP、ACP、HTTP API、OpenAI-compatible、bridge 路由矩阵 |
|
|
141
|
+
| 输出 | v2 `AgentEnvelope`,支持 Markdown、JSON、YAML、CSV、compact |
|
|
142
|
+
| 修复 | 错误里带 `adapter_path`、失败 `step`、是否可重试、修复建议和替代命令 |
|
|
39
143
|
|
|
40
|
-
##
|
|
144
|
+
## 给 Agent 的入口
|
|
41
145
|
|
|
42
|
-
|
|
146
|
+
先搜索,再执行最小可用命令。
|
|
43
147
|
|
|
148
|
+
```bash
|
|
149
|
+
unicli search "推特热门" --limit 5
|
|
150
|
+
unicli twitter search "coding agents" -f json
|
|
151
|
+
unicli repair twitter search
|
|
44
152
|
```
|
|
45
|
-
帮我配置 unicli——它能给 AI Agent 提供 220 个站点的 CLI 访问权限,支持自修复适配器:
|
|
46
|
-
1. npm install -g @zenalexa/unicli
|
|
47
|
-
2. 添加 MCP:claude mcp add unicli -- npx @zenalexa/unicli mcp serve
|
|
48
|
-
3. 验证:unicli hackernews top -f json
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Agent 自己会搞定。回来的时候,220 个站点都在 CLI 里等着你了。
|
|
52
153
|
|
|
53
|
-
|
|
154
|
+
非 TTY 和 Agent 环境默认输出结构化 Markdown。需要机器格式时显式指定:
|
|
54
155
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
| **Cursor / Windsurf** | MCP 设置 → 添加服务器 → `npx @zenalexa/unicli mcp serve` |
|
|
60
|
-
| **avante.nvim / Zed** | `unicli acp` — JSON-RPC 2.0(ACP 协议) |
|
|
61
|
-
| **OpenCode** | 在 `opencode.jsonc` 中添加 `"command": "unicli mcp serve"` |
|
|
62
|
-
| **任何有 Bash 权限的 Agent** | 直接运行 `unicli <站点> <命令>` — 零配置 |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 是什么
|
|
156
|
+
```bash
|
|
157
|
+
UNICLI_OUTPUT=json unicli reddit hot --limit 10
|
|
158
|
+
unicli hackernews top --limit 5 -f yaml
|
|
159
|
+
```
|
|
67
160
|
|
|
68
|
-
|
|
161
|
+
协议入口:
|
|
69
162
|
|
|
70
|
-
|
|
163
|
+
```bash
|
|
164
|
+
npx @zenalexa/unicli mcp serve
|
|
165
|
+
npx @zenalexa/unicli mcp serve --transport streamable --port 19826
|
|
166
|
+
unicli acp
|
|
167
|
+
unicli agents recommend codex
|
|
168
|
+
unicli agents matrix
|
|
169
|
+
```
|
|
71
170
|
|
|
72
|
-
|
|
171
|
+
ACP 作为编辑器和桥接兼容层保留。真正跑任务时,优先 native CLI、JSON stream 或 MCP。
|
|
73
172
|
|
|
74
|
-
|
|
173
|
+
## 覆盖范围
|
|
75
174
|
|
|
76
|
-
|
|
77
|
-
| ----------------------------- | -------------- | ------------------------------------------- | ------ |
|
|
78
|
-
| 典型 MCP 服务器(93 工具) | ~55,000 token | ~500–2,000 token | 否 |
|
|
79
|
-
| **Uni-CLI MCP**(4 个元工具) | **~200 token** | 见 [`docs/BENCHMARK.md`](docs/BENCHMARK.md) | **是** |
|
|
80
|
-
| **Uni-CLI via Bash** | **0 token** | 见 [`docs/BENCHMARK.md`](docs/BENCHMARK.md) | **是** |
|
|
175
|
+
数量不是重点,重点是每条命令都能搜索、可声明、可验证、可修。
|
|
81
176
|
|
|
82
|
-
|
|
177
|
+
| 领域 | 例子 |
|
|
178
|
+
| ------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
179
|
+
| 中文平台 | xiaohongshu、zhihu、bilibili、douyin、douban、v2ex、jike、linux-do |
|
|
180
|
+
| 国际平台 | twitter、reddit、instagram、tiktok、discord、slack、hackernews、lesswrong |
|
|
181
|
+
| AI 和开发工具 | Claude、ChatGPT、Gemini、Codex、Cursor、VS Code、Docker Desktop、Postman |
|
|
182
|
+
| 财经和新闻 | xueqiu、eastmoney、yahoo-finance、bloomberg、reuters、bbc、36kr |
|
|
183
|
+
| 桌面 App | Blender、FreeCAD、GIMP、Audacity、Figma、Docker、ImageMagick、ffmpeg |
|
|
184
|
+
| Agent CLI | Claude Code、Codex、OpenCode、Gemini CLI、Qwen Code、Aider、Goose、Cursor Agent、Kiro、OpenHands、SWE-agent |
|
|
83
185
|
|
|
84
|
-
|
|
186
|
+
看实时目录:
|
|
85
187
|
|
|
86
188
|
```bash
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
unicli list # 所有站点 + 命令
|
|
92
|
-
unicli search "微博热搜" # → weibo trending
|
|
93
|
-
unicli search "B站热门" # → bilibili popular
|
|
94
|
-
unicli search "download video" # → bilibili download, yt-dlp
|
|
95
|
-
|
|
96
|
-
# 运行
|
|
97
|
-
unicli weibo trending --limit 10 # 微博热搜,零配置
|
|
98
|
-
unicli zhihu hot -f json # 知乎热榜,JSON envelope
|
|
99
|
-
unicli bilibili popular --limit 5 # B 站热门视频
|
|
100
|
-
unicli hackernews top -f json | jq '.data[].title' # 管道 + 变换
|
|
101
|
-
|
|
102
|
-
# 接入 Agent
|
|
103
|
-
claude mcp add unicli -- npx @zenalexa/unicli mcp serve # Claude Code
|
|
104
|
-
unicli mcp serve --transport streamable --port 19826 # 任意 MCP 客户端
|
|
105
|
-
unicli acp # avante.nvim / Zed
|
|
189
|
+
unicli list
|
|
190
|
+
unicli list --site macos
|
|
191
|
+
unicli ext list
|
|
192
|
+
unicli ext list --tag agent
|
|
106
193
|
```
|
|
107
194
|
|
|
108
|
-
|
|
195
|
+
同一份生成目录也发布在文档站:
|
|
196
|
+
<https://olo-dot-io.github.io/Uni-CLI/reference/sites>
|
|
109
197
|
|
|
110
|
-
##
|
|
198
|
+
## 输出契约
|
|
111
199
|
|
|
112
|
-
|
|
200
|
+
普通命令都返回 v2 envelope。`mcp serve` 和 `acp` 是协议服务器,保留各自原始 stdio 协议。
|
|
113
201
|
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
202
|
+
```yaml
|
|
203
|
+
ok: true
|
|
204
|
+
schema_version: "2"
|
|
205
|
+
command: "twitter.search"
|
|
206
|
+
meta:
|
|
207
|
+
duration_ms: 412
|
|
208
|
+
count: 20
|
|
209
|
+
surface: web
|
|
210
|
+
data:
|
|
211
|
+
- { id: "...", text: "...", author: "..." }
|
|
212
|
+
error: null
|
|
123
213
|
```
|
|
124
214
|
|
|
125
|
-
|
|
215
|
+
错误也要可执行:
|
|
126
216
|
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
217
|
+
```yaml
|
|
218
|
+
ok: false
|
|
219
|
+
schema_version: "2"
|
|
220
|
+
command: "twitter.search"
|
|
221
|
+
meta:
|
|
222
|
+
duration_ms: 91
|
|
223
|
+
data: null
|
|
224
|
+
error:
|
|
225
|
+
code: auth_required
|
|
226
|
+
message: "401 Unauthorized"
|
|
227
|
+
adapter_path: "src/adapters/twitter/search.yaml"
|
|
228
|
+
step: 1
|
|
229
|
+
suggestion: "Run: unicli auth setup twitter"
|
|
230
|
+
retryable: false
|
|
231
|
+
alternatives: ["twitter.timeline", "twitter.profile"]
|
|
131
232
|
```
|
|
132
233
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
## 架构
|
|
136
|
-
|
|
137
|
-
七个传输层,一个适配器接口,一个输出格式化器。
|
|
138
|
-
|
|
139
|
-
| 传输层 | 覆盖范围 |
|
|
140
|
-
| ------------------ | ----------------------------------------------------------------- |
|
|
141
|
-
| **HTTP** | Web API — REST、RSS、JSON、GraphQL |
|
|
142
|
-
| **CDP 浏览器** | 通过真实 Chrome 会话访问任意站点(13 层反检测隐身,复用登录状态) |
|
|
143
|
-
| **子进程** | ffmpeg、yt-dlp、gh、aws、docker、stripe 等 30+ 工具 |
|
|
144
|
-
| **Desktop-AX** | macOS — AppleScript、Accessibility API、快捷指令、日历、邮件 |
|
|
145
|
-
| **Desktop-UIA** | Windows — 声明式接口桩,尚不按实执行能力宣传 |
|
|
146
|
-
| **Desktop-AT-SPI** | Linux — 声明式接口桩,尚不按实执行能力宣传 |
|
|
147
|
-
| **CUA** | screenshot/action 合同、mock 后端、provider 接口桩 |
|
|
148
|
-
|
|
149
|
-
适配器默认使用声明式 YAML(Rice 可判定性——无图灵完备逻辑,可证明终止)。流水线有 <!-- STATS:pipeline_step_count -->59<!-- /STATS -->+ 个步骤:`fetch`、`navigate`、`exec`、`extract`、`each`、`if`、`parallel`、`rate_limit`、`retry` 等。完整文档:[`docs/ADAPTER-FORMAT.md`](docs/ADAPTER-FORMAT.md)。
|
|
150
|
-
|
|
151
|
-
## 功能矩阵
|
|
152
|
-
|
|
153
|
-
| 能力 | 详情 |
|
|
154
|
-
| ------------------ | -------------------------------------------------------------------------------------- |
|
|
155
|
-
| **CUA 合同** | 稳定 screenshot/action 接口、mock 后端和显式 provider 桩;尚不按真实 computer-use 宣传 |
|
|
156
|
-
| **MCP 传输** | stdio · Streamable HTTP(规范 2025-11-25)· SSE · OAuth 2.1 PKCE |
|
|
157
|
-
| **ACP** | `unicli acp` — JSON-RPC 2.0,支持 avante.nvim、Zed、Gemini CLI |
|
|
158
|
-
| **跨厂商 Skills** | Claude Code · OpenCode · Codex CLI · Cursor · Windsurf · Cline |
|
|
159
|
-
| **自修复** | 每条 stderr 错误携带 `adapter_path` + `step` + `suggestion`(Banach 收敛) |
|
|
160
|
-
| **中英双语搜索** | BM25 + TF-IDF · 50KB 索引 · <10ms · 200 条 ZH↔EN 别名表 |
|
|
161
|
-
| **浏览器守护进程** | 持久化 Chrome(CDP)· 复用登录状态 · 13 层反检测隐身 |
|
|
162
|
-
| **输出格式** | 终端表格 · JSON(管道自动切换)· YAML · CSV · Markdown |
|
|
163
|
-
| **认证策略** | public · cookie · CSRF header · browser intercept · UI 自动化 — 自动级联探测 |
|
|
164
|
-
|
|
165
|
-
## 平台覆盖
|
|
166
|
-
|
|
167
|
-
<!-- STATS:site_count -->220<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 — 完整实时列表见 [`AGENTS.md`](AGENTS.md):
|
|
168
|
-
|
|
169
|
-
| 领域 | 代表站点 |
|
|
170
|
-
| ------------------- | -------------------------------------------------------------------- |
|
|
171
|
-
| **社交媒体 (25)** | 微博 · 知乎 · 哔哩哔哩 · 小红书 · 推特 · Reddit · Instagram · TikTok |
|
|
172
|
-
| **科技社区 (19)** | Hacker News · Stack Overflow · GitHub Trending · npm · PyPI |
|
|
173
|
-
| **资讯新闻 (11)** | BBC · Reuters · Bloomberg · 36kr · 纽约时报 · TechCrunch |
|
|
174
|
-
| **金融财经 (8)** | 雪球 · 东方财富 · Yahoo Finance · 币安 · Coinbase |
|
|
175
|
-
| **AI / ML (14)** | HuggingFace · 魔搭 · Ollama · Replicate · DeepSeek · 豆包 |
|
|
176
|
-
| **桌面软件 (30+)** | Blender · ffmpeg · ImageMagick · GIMP · FreeCAD · LibreOffice |
|
|
177
|
-
| **macOS 系统 (58)** | 截屏 · 剪贴板 · 日历 · 邮件 · 提醒事项 · 快捷指令 · Safari |
|
|
178
|
-
| **CLI 桥接 (35)** | gh · yt-dlp · jq · aws · vercel · supabase · wrangler · stripe |
|
|
179
|
-
|
|
180
|
-
<p align="center">
|
|
181
|
-
<img src="https://img.shields.io/badge/微博-E6162D?style=flat-square&logo=sinaweibo&logoColor=white" alt="微博">
|
|
182
|
-
<img src="https://img.shields.io/badge/知乎-0084FF?style=flat-square&logo=zhihu&logoColor=white" alt="知乎">
|
|
183
|
-
<img src="https://img.shields.io/badge/Bilibili-00A1D6?style=flat-square&logo=bilibili&logoColor=white" alt="哔哩哔哩">
|
|
184
|
-
<img src="https://img.shields.io/badge/Twitter%2FX-000000?style=flat-square&logo=x&logoColor=white" alt="Twitter/X">
|
|
185
|
-
<img src="https://img.shields.io/badge/Reddit-FF4500?style=flat-square&logo=reddit&logoColor=white" alt="Reddit">
|
|
186
|
-
<img src="https://img.shields.io/badge/HackerNews-FF6600?style=flat-square&logo=ycombinator&logoColor=white" alt="HackerNews">
|
|
187
|
-
<img src="https://img.shields.io/badge/GitHub-181717?style=flat-square&logo=github&logoColor=white" alt="GitHub">
|
|
188
|
-
<img src="https://img.shields.io/badge/npm-CB3837?style=flat-square&logo=npm&logoColor=white" alt="npm">
|
|
189
|
-
<img src="https://img.shields.io/badge/Binance-F0B90B?style=flat-square&logo=binance&logoColor=black" alt="Binance">
|
|
190
|
-
<img src="https://img.shields.io/badge/HuggingFace-FFD21F?style=flat-square&logo=huggingface&logoColor=black" alt="HuggingFace">
|
|
191
|
-
<img src="https://img.shields.io/badge/Blender-F5792A?style=flat-square&logo=blender&logoColor=white" alt="Blender">
|
|
192
|
-
<img src="https://img.shields.io/badge/ffmpeg-007808?style=flat-square&logo=ffmpeg&logoColor=white" alt="ffmpeg">
|
|
193
|
-
<img src="https://img.shields.io/badge/AWS-232F3E?style=flat-square&logo=amazonaws&logoColor=white" alt="AWS">
|
|
194
|
-
<img src="https://img.shields.io/badge/Vercel-000000?style=flat-square&logo=vercel&logoColor=white" alt="Vercel">
|
|
195
|
-
<img src="https://img.shields.io/badge/Stripe-635BFF?style=flat-square&logo=stripe&logoColor=white" alt="Stripe">
|
|
196
|
-
</p>
|
|
197
|
-
|
|
198
|
-
`unicli list` 查看完整列表 · `unicli list --category=<领域>` 按类别筛选。
|
|
234
|
+
退出码:`0` 成功,`66` 空结果,`69` 服务不可用,`75` 临时失败,`77` 需要认证,`78` 配置错误。
|
|
199
235
|
|
|
200
|
-
##
|
|
201
|
-
|
|
202
|
-
五种策略,自动级联探测(`public → cookie → header → intercept → ui`):
|
|
236
|
+
## 自修复
|
|
203
237
|
|
|
204
|
-
|
|
205
|
-
| ----------- | ------------------------------------------ |
|
|
206
|
-
| `public` | 直接 HTTP,无需凭证 |
|
|
207
|
-
| `cookie` | `~/.unicli/cookies/<站点>.json` 注入请求头 |
|
|
208
|
-
| `header` | Cookie + 自动提取 CSRF(ct0、bili_jct 等) |
|
|
209
|
-
| `intercept` | Chrome 导航,Uni-CLI 捕获 XHR/fetch 响应 |
|
|
210
|
-
| `ui` | 通过 CDP 直接操作 DOM(点击、输入、提交) |
|
|
238
|
+
adapter 默认是很小的 YAML。命令失败时,Agent 不需要猜,可以直接按错误定位到文件和步骤。
|
|
211
239
|
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
240
|
+
```text
|
|
241
|
+
1. 执行命令。
|
|
242
|
+
2. 读取错误 envelope。
|
|
243
|
+
3. 打开 error.adapter_path。
|
|
244
|
+
4. 修改失败 step。
|
|
245
|
+
5. 保存到 ~/.unicli/adapters/<site>/<command>.yaml。
|
|
246
|
+
6. 用 unicli repair <site> <command> 验证。
|
|
216
247
|
```
|
|
217
248
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
## 写一个适配器
|
|
249
|
+
本地修复会在 npm 更新后继续保留。
|
|
221
250
|
|
|
222
|
-
|
|
251
|
+
## 写一个 adapter
|
|
223
252
|
|
|
224
253
|
```yaml
|
|
225
|
-
site:
|
|
226
|
-
name:
|
|
227
|
-
|
|
254
|
+
site: example
|
|
255
|
+
name: search
|
|
256
|
+
description: "Search example.com"
|
|
257
|
+
transport: http
|
|
228
258
|
strategy: public
|
|
259
|
+
capabilities: [fetch, select, map, limit]
|
|
260
|
+
minimum_capability: http.fetch
|
|
261
|
+
trust: public
|
|
262
|
+
confidentiality: public
|
|
263
|
+
quarantine: false
|
|
229
264
|
pipeline:
|
|
230
265
|
- fetch:
|
|
231
|
-
url: "https://
|
|
232
|
-
-
|
|
233
|
-
- each:
|
|
234
|
-
do:
|
|
235
|
-
- fetch:
|
|
236
|
-
url: "https://hacker-news.firebaseio.com/v0/item/${{ item }}.json"
|
|
266
|
+
url: "https://api.example.com/search?q=${{ args.query }}"
|
|
267
|
+
- select: data.results
|
|
237
268
|
- map:
|
|
238
269
|
title: "${{ item.title }}"
|
|
239
|
-
score: "${{ item.score }}"
|
|
240
270
|
url: "${{ item.url }}"
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
unicli init <站点> <命令> # 生成脚手架
|
|
248
|
-
unicli dev <路径> # 热重载开发
|
|
249
|
-
unicli test <站点> # 验证适配器
|
|
250
|
-
unicli record <URL> # 从网络流量自动生成适配器
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
完整文档:[`docs/ADAPTER-FORMAT.md`](docs/ADAPTER-FORMAT.md)。
|
|
254
|
-
|
|
255
|
-
## 搜索
|
|
256
|
-
|
|
257
|
-
按意图发现命令,中英双语:
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
unicli search "微博热搜" # → weibo trending
|
|
261
|
-
unicli search "B站热门" # → bilibili popular
|
|
262
|
-
unicli search "推特热门" # → twitter trending
|
|
263
|
-
unicli search "股票行情" # → binance ticker, xueqiu quote
|
|
264
|
-
unicli search "download video" # 英文查询 → 多平台下载命令
|
|
265
|
-
unicli search --category finance # 按类别浏览
|
|
271
|
+
- limit: "${{ args.limit }}"
|
|
272
|
+
args:
|
|
273
|
+
- { name: query, type: string, required: true, positional: true }
|
|
274
|
+
- { name: limit, type: int, default: 20 }
|
|
275
|
+
columns: [title, url]
|
|
266
276
|
```
|
|
267
277
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
## 理论基础
|
|
278
|
+
文档入口:
|
|
271
279
|
|
|
272
|
-
|
|
280
|
+
- [独立文档站](https://olo-dot-io.github.io/Uni-CLI/)
|
|
281
|
+
- [快速开始](docs/guide/getting-started.md)
|
|
282
|
+
- [Agent 集成](docs/guide/integrations.md)
|
|
283
|
+
- [Adapter 格式](docs/ADAPTER-FORMAT.md)
|
|
284
|
+
- [Pipeline 参考](docs/reference/pipeline.md)
|
|
285
|
+
- [Exit codes](docs/reference/exit-codes.md)
|
|
273
286
|
|
|
274
|
-
|
|
275
|
-
2. **Lehman 命令** — 自修复是一等公民;没有永久有效的适配器;每个站点终将改变
|
|
276
|
-
3. **Shannon 压缩** — `unicli` 调用是底层 API 调用的近最优压缩(约 80 token)
|
|
277
|
-
4. **Agent 工具三难困境**(原创贡献)— 覆盖率 × 准确率 × 性能,三选二。我们优化准确率 × 性能
|
|
278
|
-
5. **Banach 收敛** — 结构化错误消息(`adapter_path` + `step` + `suggestion`)保证修复迭代收敛
|
|
287
|
+
## 边界和诚实说明
|
|
279
288
|
|
|
280
|
-
|
|
289
|
+
- 需要登录的网站使用本地 cookie 文件:`~/.unicli/cookies/<site>.json`。
|
|
290
|
+
- Browser adapter 需要可连接的 Chrome/CDP。
|
|
291
|
+
- CUA 路由必须配置真实 backend。声明了但不可用的 provider 会失败关闭,并返回结构化错误。
|
|
292
|
+
- 用户 adapter 和修复放在 `~/.unicli/adapters/`;包内 adapter 是基线。
|
|
293
|
+
- 如果网站阻止自动化或私有 API 变了,正确行为是清楚失败,不是伪装成功。
|
|
281
294
|
|
|
282
295
|
## 开发
|
|
283
296
|
|
|
284
297
|
```bash
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
298
|
+
pnpm install
|
|
299
|
+
pnpm typecheck
|
|
300
|
+
pnpm lint
|
|
301
|
+
npm run verify
|
|
288
302
|
```
|
|
289
303
|
|
|
290
|
-
|
|
291
|
-
| ---------------------- | ----------------------------------------------------------- |
|
|
292
|
-
| `npm run dev` | 从源码运行(tsx) |
|
|
293
|
-
| `npm run build` | 生产构建 |
|
|
294
|
-
| `npm run typecheck` | TypeScript 严格模式 |
|
|
295
|
-
| `npm run lint` | Oxlint |
|
|
296
|
-
| `npm run test` | 单元测试(<!-- STATS:test_count -->7145<!-- /STATS --> 个) |
|
|
297
|
-
| `npm run test:adapter` | 验证所有适配器 |
|
|
298
|
-
| `npm run verify` | 完整流水线 — 发布前必须通过 |
|
|
299
|
-
|
|
300
|
-
十一个生产依赖:`ajv` · `ajv-formats` · `chalk` · `cli-table3` · `commander` · `js-yaml` · `jsonpath-plus` · `turndown` · `undici` · `ws` · `zod`。
|
|
301
|
-
|
|
302
|
-
## 发布节奏
|
|
303
|
-
|
|
304
|
-
补丁版本每周 **周五 09:00 HKT** 发布——前提是自上次打 tag 以来有实质性提交。平静的一周会被记录并跳过——沉默不是失败,而是成功。Dependabot 升级每周一合成一个 PR,在周五的版本里搭车一起上,避免污染提交历史。
|
|
305
|
-
|
|
306
|
-
<a href="https://github.com/olo-dot-io/Uni-CLI/commits/main"><img src="https://img.shields.io/github/last-commit/olo-dot-io/Uni-CLI?style=flat-square&label=last-commit" alt="最近提交"></a>
|
|
307
|
-
|
|
308
|
-
完整策略——手动覆写、取消流程、升级规则:[`docs/RELEASE-CADENCE.md`](docs/RELEASE-CADENCE.md)。
|
|
309
|
-
|
|
310
|
-
## 贡献
|
|
311
|
-
|
|
312
|
-
最快合并的方式:为你每天使用的站点写一个 20 行 YAML 适配器。评审门槛很低——只要能跑、符合 schema,就能合并。
|
|
313
|
-
|
|
314
|
-
| 领域 | 指南 |
|
|
315
|
-
| ---------- | -------------------------------------------------------- |
|
|
316
|
-
| 新适配器 | [`contributing/adapter.md`](contributing/adapter.md) |
|
|
317
|
-
| 新传输层 | [`contributing/transport.md`](contributing/transport.md) |
|
|
318
|
-
| CUA 后端 | [`contributing/cua.md`](contributing/cua.md) |
|
|
319
|
-
| MCP 服务器 | [`contributing/mcp.md`](contributing/mcp.md) |
|
|
320
|
-
| ACP 集成 | [`contributing/acp.md`](contributing/acp.md) |
|
|
321
|
-
| 发布流程 | [`contributing/release.md`](contributing/release.md) |
|
|
322
|
-
|
|
323
|
-
## 许可证
|
|
304
|
+
## License
|
|
324
305
|
|
|
325
306
|
[Apache-2.0](./LICENSE)
|
|
326
307
|
|
|
327
|
-
仓库:<https://github.com/olo-dot-io/Uni-CLI> · npm:[`@zenalexa/unicli`](https://www.npmjs.com/package/@zenalexa/unicli) · 欢迎提 Issue。
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
<p align="center">
|
|
332
|
-
<a href="https://github.com/olo-dot-io/Uni-CLI/graphs/contributors">
|
|
333
|
-
<img src="https://contrib.rocks/image?repo=olo-dot-io/Uni-CLI" alt="贡献者">
|
|
334
|
-
</a>
|
|
335
|
-
</p>
|
|
336
|
-
|
|
337
308
|
<p align="center">
|
|
338
|
-
<sub>
|
|
339
|
-
<sub><!-- STATS:site_count -->220<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> 个流水线步骤 · BM25+TF-IDF 中英双语搜索 · MCP 2025-11-25 · <!-- STATS:test_count -->7145<!-- /STATS --> 个测试</sub>
|
|
309
|
+
<sub>0.216.0 — OpenCLI Parity Harness</sub>
|
|
340
310
|
</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/adapters/1688/assets.ts"],"names":[],"mappings":""}
|