@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.
Files changed (424) hide show
  1. package/AGENTS.md +21 -19
  2. package/README.md +237 -261
  3. package/README.zh-CN.md +239 -269
  4. package/dist/adapters/1688/assets.d.ts +2 -0
  5. package/dist/adapters/1688/assets.d.ts.map +1 -0
  6. package/dist/adapters/1688/assets.js +102 -0
  7. package/dist/adapters/1688/assets.js.map +1 -0
  8. package/dist/adapters/51job/jobs.d.ts +2 -0
  9. package/dist/adapters/51job/jobs.d.ts.map +1 -0
  10. package/dist/adapters/51job/jobs.js +292 -0
  11. package/dist/adapters/51job/jobs.js.map +1 -0
  12. package/dist/adapters/_shared/browser-tools.d.ts +10 -0
  13. package/dist/adapters/_shared/browser-tools.d.ts.map +1 -0
  14. package/dist/adapters/_shared/browser-tools.js +42 -0
  15. package/dist/adapters/_shared/browser-tools.js.map +1 -0
  16. package/dist/adapters/antigravity/extra.d.ts +2 -0
  17. package/dist/adapters/antigravity/extra.d.ts.map +1 -0
  18. package/dist/adapters/antigravity/extra.js +52 -0
  19. package/dist/adapters/antigravity/extra.js.map +1 -0
  20. package/dist/adapters/baidu-scholar/search.d.ts +2 -0
  21. package/dist/adapters/baidu-scholar/search.d.ts.map +1 -0
  22. package/dist/adapters/baidu-scholar/search.js +34 -0
  23. package/dist/adapters/baidu-scholar/search.js.map +1 -0
  24. package/dist/adapters/bilibili/compat.d.ts +2 -0
  25. package/dist/adapters/bilibili/compat.d.ts.map +1 -0
  26. package/dist/adapters/bilibili/compat.js +114 -0
  27. package/dist/adapters/bilibili/compat.js.map +1 -0
  28. package/dist/adapters/chatgpt/image.d.ts +2 -0
  29. package/dist/adapters/chatgpt/image.d.ts.map +1 -0
  30. package/dist/adapters/chatgpt/image.js +81 -0
  31. package/dist/adapters/chatgpt/image.js.map +1 -0
  32. package/dist/adapters/chatgpt-app/chatgpt-app.d.ts +2 -0
  33. package/dist/adapters/chatgpt-app/chatgpt-app.d.ts.map +1 -0
  34. package/dist/adapters/chatgpt-app/chatgpt-app.js +9 -0
  35. package/dist/adapters/chatgpt-app/chatgpt-app.js.map +1 -0
  36. package/dist/adapters/chatwise/extra.d.ts +2 -0
  37. package/dist/adapters/chatwise/extra.d.ts.map +1 -0
  38. package/dist/adapters/chatwise/extra.js +35 -0
  39. package/dist/adapters/chatwise/extra.js.map +1 -0
  40. package/dist/adapters/codex/extra.d.ts +2 -0
  41. package/dist/adapters/codex/extra.d.ts.map +1 -0
  42. package/dist/adapters/codex/extra.js +35 -0
  43. package/dist/adapters/codex/extra.js.map +1 -0
  44. package/dist/adapters/deepseek/web.d.ts +2 -0
  45. package/dist/adapters/deepseek/web.d.ts.map +1 -0
  46. package/dist/adapters/deepseek/web.js +187 -0
  47. package/dist/adapters/deepseek/web.js.map +1 -0
  48. package/dist/adapters/doubao/web.d.ts +2 -0
  49. package/dist/adapters/doubao/web.d.ts.map +1 -0
  50. package/dist/adapters/doubao/web.js +138 -0
  51. package/dist/adapters/doubao/web.js.map +1 -0
  52. package/dist/adapters/eastmoney/market-data.d.ts +2 -0
  53. package/dist/adapters/eastmoney/market-data.d.ts.map +1 -0
  54. package/dist/adapters/eastmoney/market-data.js +753 -0
  55. package/dist/adapters/eastmoney/market-data.js.map +1 -0
  56. package/dist/adapters/gitee/user.d.ts +2 -0
  57. package/dist/adapters/gitee/user.d.ts.map +1 -0
  58. package/dist/adapters/gitee/user.js +54 -0
  59. package/dist/adapters/gitee/user.js.map +1 -0
  60. package/dist/adapters/google-scholar/cite.d.ts +2 -0
  61. package/dist/adapters/google-scholar/cite.d.ts.map +1 -0
  62. package/dist/adapters/google-scholar/cite.js +82 -0
  63. package/dist/adapters/google-scholar/cite.js.map +1 -0
  64. package/dist/adapters/google-scholar/profile.d.ts +2 -0
  65. package/dist/adapters/google-scholar/profile.d.ts.map +1 -0
  66. package/dist/adapters/google-scholar/profile.js +80 -0
  67. package/dist/adapters/google-scholar/profile.js.map +1 -0
  68. package/dist/adapters/google-scholar/search.d.ts +2 -0
  69. package/dist/adapters/google-scholar/search.d.ts.map +1 -0
  70. package/dist/adapters/google-scholar/search.js +54 -0
  71. package/dist/adapters/google-scholar/search.js.map +1 -0
  72. package/dist/adapters/gov-law/laws.d.ts +2 -0
  73. package/dist/adapters/gov-law/laws.d.ts.map +1 -0
  74. package/dist/adapters/gov-law/laws.js +58 -0
  75. package/dist/adapters/gov-law/laws.js.map +1 -0
  76. package/dist/adapters/gov-policy/policy.d.ts +2 -0
  77. package/dist/adapters/gov-policy/policy.d.ts.map +1 -0
  78. package/dist/adapters/gov-policy/policy.js +58 -0
  79. package/dist/adapters/gov-policy/policy.js.map +1 -0
  80. package/dist/adapters/jd/commerce.d.ts +2 -0
  81. package/dist/adapters/jd/commerce.d.ts.map +1 -0
  82. package/dist/adapters/jd/commerce.js +133 -0
  83. package/dist/adapters/jd/commerce.js.map +1 -0
  84. package/dist/adapters/jianyu/detail.d.ts +2 -0
  85. package/dist/adapters/jianyu/detail.d.ts.map +1 -0
  86. package/dist/adapters/jianyu/detail.js +27 -0
  87. package/dist/adapters/jianyu/detail.js.map +1 -0
  88. package/dist/adapters/jimeng/workspace.d.ts +2 -0
  89. package/dist/adapters/jimeng/workspace.d.ts.map +1 -0
  90. package/dist/adapters/jimeng/workspace.js +49 -0
  91. package/dist/adapters/jimeng/workspace.js.map +1 -0
  92. package/dist/adapters/ke/rent-transaction.d.ts +2 -0
  93. package/dist/adapters/ke/rent-transaction.d.ts.map +1 -0
  94. package/dist/adapters/ke/rent-transaction.js +63 -0
  95. package/dist/adapters/ke/rent-transaction.js.map +1 -0
  96. package/dist/adapters/linux-do/search.d.ts +2 -0
  97. package/dist/adapters/linux-do/search.d.ts.map +1 -0
  98. package/dist/adapters/linux-do/search.js +75 -0
  99. package/dist/adapters/linux-do/search.js.map +1 -0
  100. package/dist/adapters/linux-do/topic-content.d.ts +2 -0
  101. package/dist/adapters/linux-do/topic-content.d.ts.map +1 -0
  102. package/dist/adapters/linux-do/topic-content.js +32 -0
  103. package/dist/adapters/linux-do/topic-content.js.map +1 -0
  104. package/dist/adapters/maimai/talents.d.ts +2 -0
  105. package/dist/adapters/maimai/talents.d.ts.map +1 -0
  106. package/dist/adapters/maimai/talents.js +64 -0
  107. package/dist/adapters/maimai/talents.js.map +1 -0
  108. package/dist/adapters/mubu/docs.d.ts +2 -0
  109. package/dist/adapters/mubu/docs.d.ts.map +1 -0
  110. package/dist/adapters/mubu/docs.js +96 -0
  111. package/dist/adapters/mubu/docs.js.map +1 -0
  112. package/dist/adapters/nowcoder/nowcoder.d.ts +2 -0
  113. package/dist/adapters/nowcoder/nowcoder.d.ts.map +1 -0
  114. package/dist/adapters/nowcoder/nowcoder.js +480 -0
  115. package/dist/adapters/nowcoder/nowcoder.js.map +1 -0
  116. package/dist/adapters/powerchina/search.d.ts +2 -0
  117. package/dist/adapters/powerchina/search.d.ts.map +1 -0
  118. package/dist/adapters/powerchina/search.js +41 -0
  119. package/dist/adapters/powerchina/search.js.map +1 -0
  120. package/dist/adapters/quark/actions.d.ts +2 -0
  121. package/dist/adapters/quark/actions.d.ts.map +1 -0
  122. package/dist/adapters/quark/actions.js +151 -0
  123. package/dist/adapters/quark/actions.js.map +1 -0
  124. package/dist/adapters/reddit/browser-utils.d.ts +7 -0
  125. package/dist/adapters/reddit/browser-utils.d.ts.map +1 -0
  126. package/dist/adapters/reddit/browser-utils.js +68 -0
  127. package/dist/adapters/reddit/browser-utils.js.map +1 -0
  128. package/dist/adapters/reddit/listings.d.ts +2 -0
  129. package/dist/adapters/reddit/listings.d.ts.map +1 -0
  130. package/dist/adapters/reddit/listings.js +193 -0
  131. package/dist/adapters/reddit/listings.js.map +1 -0
  132. package/dist/adapters/reddit/search.d.ts +2 -0
  133. package/dist/adapters/reddit/search.d.ts.map +1 -0
  134. package/dist/adapters/reddit/search.js +66 -0
  135. package/dist/adapters/reddit/search.js.map +1 -0
  136. package/dist/adapters/spotify/api.d.ts +2 -0
  137. package/dist/adapters/spotify/api.d.ts.map +1 -0
  138. package/dist/adapters/spotify/api.js +252 -0
  139. package/dist/adapters/spotify/api.js.map +1 -0
  140. package/dist/adapters/taobao/commerce.d.ts +2 -0
  141. package/dist/adapters/taobao/commerce.d.ts.map +1 -0
  142. package/dist/adapters/taobao/commerce.js +130 -0
  143. package/dist/adapters/taobao/commerce.js.map +1 -0
  144. package/dist/adapters/tdx/hot-rank.d.ts +2 -0
  145. package/dist/adapters/tdx/hot-rank.d.ts.map +1 -0
  146. package/dist/adapters/tdx/hot-rank.js +34 -0
  147. package/dist/adapters/tdx/hot-rank.js.map +1 -0
  148. package/dist/adapters/ths/hot-rank.d.ts +2 -0
  149. package/dist/adapters/ths/hot-rank.d.ts.map +1 -0
  150. package/dist/adapters/ths/hot-rank.js +34 -0
  151. package/dist/adapters/ths/hot-rank.js.map +1 -0
  152. package/dist/adapters/toutiao/articles.d.ts +2 -0
  153. package/dist/adapters/toutiao/articles.d.ts.map +1 -0
  154. package/dist/adapters/toutiao/articles.js +41 -0
  155. package/dist/adapters/toutiao/articles.js.map +1 -0
  156. package/dist/adapters/twitter/lists-extra.d.ts +2 -0
  157. package/dist/adapters/twitter/lists-extra.d.ts.map +1 -0
  158. package/dist/adapters/twitter/lists-extra.js +125 -0
  159. package/dist/adapters/twitter/lists-extra.js.map +1 -0
  160. package/dist/adapters/uiverse/components.d.ts +2 -0
  161. package/dist/adapters/uiverse/components.d.ts.map +1 -0
  162. package/dist/adapters/uiverse/components.js +138 -0
  163. package/dist/adapters/uiverse/components.js.map +1 -0
  164. package/dist/adapters/wanfang/search.d.ts +2 -0
  165. package/dist/adapters/wanfang/search.d.ts.map +1 -0
  166. package/dist/adapters/wanfang/search.js +34 -0
  167. package/dist/adapters/wanfang/search.js.map +1 -0
  168. package/dist/adapters/weixin/drafts.d.ts +2 -0
  169. package/dist/adapters/weixin/drafts.d.ts.map +1 -0
  170. package/dist/adapters/weixin/drafts.js +69 -0
  171. package/dist/adapters/weixin/drafts.js.map +1 -0
  172. package/dist/adapters/weread/ai-outline.d.ts +2 -0
  173. package/dist/adapters/weread/ai-outline.d.ts.map +1 -0
  174. package/dist/adapters/weread/ai-outline.js +28 -0
  175. package/dist/adapters/weread/ai-outline.js.map +1 -0
  176. package/dist/adapters/xiaoyuzhou/media.d.ts +2 -0
  177. package/dist/adapters/xiaoyuzhou/media.d.ts.map +1 -0
  178. package/dist/adapters/xiaoyuzhou/media.js +105 -0
  179. package/dist/adapters/xiaoyuzhou/media.js.map +1 -0
  180. package/dist/adapters/xueqiu/extra.d.ts +2 -0
  181. package/dist/adapters/xueqiu/extra.d.ts.map +1 -0
  182. package/dist/adapters/xueqiu/extra.js +74 -0
  183. package/dist/adapters/xueqiu/extra.js.map +1 -0
  184. package/dist/adapters/youtube/personal.d.ts +2 -0
  185. package/dist/adapters/youtube/personal.d.ts.map +1 -0
  186. package/dist/adapters/youtube/personal.js +183 -0
  187. package/dist/adapters/youtube/personal.js.map +1 -0
  188. package/dist/adapters/zhihu/actions.d.ts +2 -0
  189. package/dist/adapters/zhihu/actions.d.ts.map +1 -0
  190. package/dist/adapters/zhihu/actions.js +110 -0
  191. package/dist/adapters/zhihu/actions.js.map +1 -0
  192. package/dist/agents/backends.d.ts +42 -0
  193. package/dist/agents/backends.d.ts.map +1 -0
  194. package/dist/agents/backends.js +598 -0
  195. package/dist/agents/backends.js.map +1 -0
  196. package/dist/agents/editor-backends.d.ts +3 -0
  197. package/dist/agents/editor-backends.d.ts.map +1 -0
  198. package/dist/agents/editor-backends.js +70 -0
  199. package/dist/agents/editor-backends.js.map +1 -0
  200. package/dist/browser/adapter-authoring.d.ts.map +1 -1
  201. package/dist/browser/adapter-authoring.js +3 -3
  202. package/dist/browser/adapter-authoring.js.map +1 -1
  203. package/dist/browser/bridge.d.ts.map +1 -1
  204. package/dist/browser/bridge.js +2 -3
  205. package/dist/browser/bridge.js.map +1 -1
  206. package/dist/browser/daemon-client.d.ts.map +1 -1
  207. package/dist/browser/daemon-client.js +17 -5
  208. package/dist/browser/daemon-client.js.map +1 -1
  209. package/dist/browser/network-cache.js +2 -2
  210. package/dist/browser/network-cache.js.map +1 -1
  211. package/dist/browser/site-memory.d.ts.map +1 -1
  212. package/dist/browser/site-memory.js +11 -8
  213. package/dist/browser/site-memory.js.map +1 -1
  214. package/dist/browser/target-errors.d.ts +2 -2
  215. package/dist/browser/target-errors.js +2 -2
  216. package/dist/browser/verify-fixture.d.ts.map +1 -1
  217. package/dist/browser/verify-fixture.js +2 -2
  218. package/dist/browser/verify-fixture.js.map +1 -1
  219. package/dist/cli.d.ts.map +1 -1
  220. package/dist/cli.js +9 -4
  221. package/dist/cli.js.map +1 -1
  222. package/dist/commands/acp.d.ts +5 -0
  223. package/dist/commands/acp.d.ts.map +1 -1
  224. package/dist/commands/acp.js +20 -17
  225. package/dist/commands/acp.js.map +1 -1
  226. package/dist/commands/agents-backends.d.ts +6 -0
  227. package/dist/commands/agents-backends.d.ts.map +1 -0
  228. package/dist/commands/agents-backends.js +49 -0
  229. package/dist/commands/agents-backends.js.map +1 -0
  230. package/dist/commands/agents.d.ts.map +1 -1
  231. package/dist/commands/agents.js +8 -3
  232. package/dist/commands/agents.js.map +1 -1
  233. package/dist/commands/auth.d.ts.map +1 -1
  234. package/dist/commands/auth.js +8 -2
  235. package/dist/commands/auth.js.map +1 -1
  236. package/dist/commands/browser-operator-runtime.d.ts.map +1 -1
  237. package/dist/commands/browser-operator-runtime.js +2 -2
  238. package/dist/commands/browser-operator-runtime.js.map +1 -1
  239. package/dist/commands/browser-operator.d.ts.map +1 -1
  240. package/dist/commands/browser-operator.js +2 -2
  241. package/dist/commands/browser-operator.js.map +1 -1
  242. package/dist/commands/describe.d.ts +2 -2
  243. package/dist/commands/describe.d.ts.map +1 -1
  244. package/dist/commands/describe.js +14 -3
  245. package/dist/commands/describe.js.map +1 -1
  246. package/dist/commands/dispatch.d.ts.map +1 -1
  247. package/dist/commands/dispatch.js +7 -6
  248. package/dist/commands/dispatch.js.map +1 -1
  249. package/dist/commands/explore.js +2 -2
  250. package/dist/commands/explore.js.map +1 -1
  251. package/dist/commands/generate.js +3 -3
  252. package/dist/commands/generate.js.map +1 -1
  253. package/dist/commands/health.d.ts.map +1 -1
  254. package/dist/commands/health.js +4 -10
  255. package/dist/commands/health.js.map +1 -1
  256. package/dist/commands/migrate.d.ts +9 -9
  257. package/dist/commands/migrate.d.ts.map +1 -1
  258. package/dist/commands/migrate.js +22 -22
  259. package/dist/commands/migrate.js.map +1 -1
  260. package/dist/commands/repair.d.ts.map +1 -1
  261. package/dist/commands/repair.js +9 -4
  262. package/dist/commands/repair.js.map +1 -1
  263. package/dist/commands/search.d.ts +3 -3
  264. package/dist/commands/search.js +4 -4
  265. package/dist/commands/skills.d.ts +3 -0
  266. package/dist/commands/skills.d.ts.map +1 -1
  267. package/dist/commands/skills.js +8 -4
  268. package/dist/commands/skills.js.map +1 -1
  269. package/dist/commands/synthesize.js +2 -2
  270. package/dist/commands/synthesize.js.map +1 -1
  271. package/dist/discovery/aliases.d.ts.map +1 -1
  272. package/dist/discovery/aliases.js +69 -0
  273. package/dist/discovery/aliases.js.map +1 -1
  274. package/dist/discovery/loader.d.ts.map +1 -1
  275. package/dist/discovery/loader.js +130 -0
  276. package/dist/discovery/loader.js.map +1 -1
  277. package/dist/engine/kernel/execute.d.ts.map +1 -1
  278. package/dist/engine/kernel/execute.js +27 -4
  279. package/dist/engine/kernel/execute.js.map +1 -1
  280. package/dist/engine/user-home.d.ts +9 -0
  281. package/dist/engine/user-home.d.ts.map +1 -0
  282. package/dist/engine/user-home.js +12 -0
  283. package/dist/engine/user-home.js.map +1 -0
  284. package/dist/fast-path.d.ts +14 -0
  285. package/dist/fast-path.d.ts.map +1 -0
  286. package/dist/fast-path.js +565 -0
  287. package/dist/fast-path.js.map +1 -0
  288. package/dist/hub/index.d.ts +1 -1
  289. package/dist/hub/index.d.ts.map +1 -1
  290. package/dist/hub/index.js +28 -17
  291. package/dist/hub/index.js.map +1 -1
  292. package/dist/main.js +15 -3
  293. package/dist/main.js.map +1 -1
  294. package/dist/manifest-compact.txt +11 -11
  295. package/dist/manifest-search.json +1 -1
  296. package/dist/manifest.json +27600 -1016
  297. package/dist/mcp/tools.js +1 -1
  298. package/dist/mcp/tools.js.map +1 -1
  299. package/dist/output/error-map.d.ts.map +1 -1
  300. package/dist/output/error-map.js +16 -5
  301. package/dist/output/error-map.js.map +1 -1
  302. package/dist/protocol/acp.js +1 -1
  303. package/dist/protocol/acp.js.map +1 -1
  304. package/dist/registry.d.ts +3 -0
  305. package/dist/registry.d.ts.map +1 -1
  306. package/dist/registry.js +34 -1
  307. package/dist/registry.js.map +1 -1
  308. package/dist/runtime/usage-ledger.d.ts +6 -7
  309. package/dist/runtime/usage-ledger.d.ts.map +1 -1
  310. package/dist/runtime/usage-ledger.js +6 -7
  311. package/dist/runtime/usage-ledger.js.map +1 -1
  312. package/dist/types.d.ts +2 -0
  313. package/dist/types.d.ts.map +1 -1
  314. package/dist/types.js.map +1 -1
  315. package/package.json +61 -52
  316. package/src/adapters/1688/assets.ts +114 -0
  317. package/src/adapters/51job/jobs.ts +327 -0
  318. package/src/adapters/_shared/browser-tools.ts +59 -0
  319. package/src/adapters/antigravity/extra.ts +53 -0
  320. package/src/adapters/baidu-scholar/search.ts +38 -0
  321. package/src/adapters/bilibili/compat.ts +132 -0
  322. package/src/adapters/binance/asks.yaml +41 -0
  323. package/src/adapters/binance/depth.yaml +41 -0
  324. package/src/adapters/binance/gainers.yaml +42 -0
  325. package/src/adapters/binance/hot.yaml +1 -1
  326. package/src/adapters/binance/kline.yaml +1 -1
  327. package/src/adapters/binance/klines.yaml +46 -0
  328. package/src/adapters/binance/losers.yaml +42 -0
  329. package/src/adapters/binance/pairs.yaml +38 -0
  330. package/src/adapters/binance/price.yaml +32 -0
  331. package/src/adapters/binance/prices.yaml +30 -0
  332. package/src/adapters/binance/ticker.yaml +2 -2
  333. package/src/adapters/binance/top.yaml +46 -0
  334. package/src/adapters/binance/trades.yaml +42 -0
  335. package/src/adapters/chatgpt/image.ts +84 -0
  336. package/src/adapters/chatgpt-app/chatgpt-app.ts +11 -0
  337. package/src/adapters/chatwise/extra.ts +36 -0
  338. package/src/adapters/codex/extra.ts +36 -0
  339. package/src/adapters/deepseek/web.ts +203 -0
  340. package/src/adapters/doubao/web.ts +154 -0
  341. package/src/adapters/eastmoney/market-data.ts +829 -0
  342. package/src/adapters/excel/insert-image.yaml +80 -0
  343. package/src/adapters/excel/insert-link.yaml +90 -0
  344. package/src/adapters/excel/list.yaml +63 -0
  345. package/src/adapters/excel/read.yaml +74 -0
  346. package/src/adapters/excel/set-cell.yaml +77 -0
  347. package/src/adapters/excel/set-font.yaml +87 -0
  348. package/src/adapters/excel/status.yaml +29 -0
  349. package/src/adapters/gh/search-repos.yaml +62 -0
  350. package/src/adapters/gitee/user.ts +59 -0
  351. package/src/adapters/google-scholar/cite.ts +95 -0
  352. package/src/adapters/google-scholar/profile.ts +91 -0
  353. package/src/adapters/google-scholar/search.ts +58 -0
  354. package/src/adapters/gov-law/laws.ts +61 -0
  355. package/src/adapters/gov-policy/policy.ts +61 -0
  356. package/src/adapters/imessage/contact.yaml +7 -2
  357. package/src/adapters/imessage/recent.yaml +7 -2
  358. package/src/adapters/imessage/search.yaml +7 -2
  359. package/src/adapters/jd/commerce.ts +142 -0
  360. package/src/adapters/jianyu/detail.ts +28 -0
  361. package/src/adapters/jimeng/workspace.ts +53 -0
  362. package/src/adapters/ke/rent-transaction.ts +70 -0
  363. package/src/adapters/linux-do/search.ts +92 -0
  364. package/src/adapters/linux-do/topic-content.ts +45 -0
  365. package/src/adapters/maimai/talents.ts +65 -0
  366. package/src/adapters/mubu/docs.ts +107 -0
  367. package/src/adapters/nowcoder/nowcoder.ts +570 -0
  368. package/src/adapters/powerchina/search.ts +45 -0
  369. package/src/adapters/powerpoint/add-slide.yaml +93 -0
  370. package/src/adapters/powerpoint/insert-image.yaml +71 -0
  371. package/src/adapters/powerpoint/insert-link.yaml +94 -0
  372. package/src/adapters/powerpoint/list.yaml +58 -0
  373. package/src/adapters/powerpoint/set-font.yaml +101 -0
  374. package/src/adapters/powerpoint/slides.yaml +73 -0
  375. package/src/adapters/powerpoint/status.yaml +29 -0
  376. package/src/adapters/quark/actions.ts +169 -0
  377. package/src/adapters/reddit/browser-utils.ts +93 -0
  378. package/src/adapters/reddit/listings.ts +223 -0
  379. package/src/adapters/reddit/search.ts +74 -0
  380. package/src/adapters/spotify/api.ts +292 -0
  381. package/src/adapters/taobao/commerce.ts +134 -0
  382. package/src/adapters/tdx/hot-rank.ts +35 -0
  383. package/src/adapters/ths/hot-rank.ts +35 -0
  384. package/src/adapters/toutiao/articles.ts +45 -0
  385. package/src/adapters/twitter/lists-extra.ts +139 -0
  386. package/src/adapters/uiverse/components.ts +154 -0
  387. package/src/adapters/vercel/list.yaml +2 -1
  388. package/src/adapters/wanfang/search.ts +38 -0
  389. package/src/adapters/weixin/drafts.ts +74 -0
  390. package/src/adapters/weread/ai-outline.ts +32 -0
  391. package/src/adapters/word/insert-image.yaml +73 -0
  392. package/src/adapters/word/insert-link.yaml +82 -0
  393. package/src/adapters/word/insert-text.yaml +72 -0
  394. package/src/adapters/word/list.yaml +63 -0
  395. package/src/adapters/word/read.yaml +63 -0
  396. package/src/adapters/word/set-font.yaml +97 -0
  397. package/src/adapters/word/status.yaml +29 -0
  398. package/src/adapters/xiaoyuzhou/media.ts +139 -0
  399. package/src/adapters/xueqiu/extra.ts +78 -0
  400. package/src/adapters/youtube/personal.ts +215 -0
  401. package/src/adapters/zhihu/actions.ts +111 -0
  402. package/src/hub/external-clis-harness.yaml +211 -0
  403. package/src/hub/external-clis.yaml +175 -0
  404. package/src/hub/index.ts +29 -25
  405. package/src/adapters/linux-do/search.yaml +0 -44
  406. package/src/adapters/meituan/hot.yaml +0 -34
  407. package/src/adapters/reddit/frontpage.test.ts +0 -15
  408. package/src/adapters/reddit/frontpage.yaml +0 -41
  409. package/src/adapters/reddit/hot.test.ts +0 -15
  410. package/src/adapters/reddit/hot.yaml +0 -41
  411. package/src/adapters/reddit/new.test.ts +0 -15
  412. package/src/adapters/reddit/new.yaml +0 -42
  413. package/src/adapters/reddit/popular.test.ts +0 -15
  414. package/src/adapters/reddit/popular.yaml +0 -41
  415. package/src/adapters/reddit/rising.test.ts +0 -15
  416. package/src/adapters/reddit/rising.yaml +0 -41
  417. package/src/adapters/reddit/search.test.ts +0 -15
  418. package/src/adapters/reddit/search.yaml +0 -52
  419. package/src/adapters/reddit/subreddit.test.ts +0 -15
  420. package/src/adapters/reddit/subreddit.yaml +0 -50
  421. package/src/adapters/reddit/top.test.ts +0 -15
  422. package/src/adapters/reddit/top.yaml +0 -48
  423. package/src/adapters/reddit/trending.test.ts +0 -15
  424. package/src/adapters/reddit/trending.yaml +0 -33
package/README.zh-CN.md CHANGED
@@ -1,340 +1,310 @@
1
- <!-- AGENT: npm install -g @zenalexa/unicli && unicli search "你的意图" — 220 个站点,1283 条命令,自修复 YAML 适配器,BM25 中英双语搜索,比 MCP 少 95–99% token。默认 Markdown envelope;JSON 用 -f json。实时统计见 AGENTS.md。 -->
2
-
3
- <div align="center">
1
+ <p align="center">
2
+ <img src="assets/mascot-otter.png" alt="Uni-CLI 水獭 mascot" width="180">
3
+ </p>
4
4
 
5
- <img src="assets/icon.svg" width="180" alt="Uni-CLI">
5
+ <h1 align="center">Uni-CLI</h1>
6
6
 
7
- # Uni-CLI
7
+ <p align="center">
8
+ <strong>给 Agent 用的一层统一 CLI:网站、桌面 App、本地工具、外部 CLI,都变成可搜索、可执行、可修复的命令。</strong>
9
+ </p>
8
10
 
9
- > 给你的 Agent 一双手。
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
- <!-- STATS:site_count -->220<!-- /STATS --> 个站点 &nbsp;·&nbsp; <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 &nbsp;·&nbsp; 自修复 YAML &nbsp;·&nbsp; 比 MCP 少 95–99% token
19
+ <p align="center">
20
+ 先按意图搜索,再执行真实命令,最后拿结构化结果。网站变了也不会假装成功,错误会告诉你哪个 adapter、哪一步、怎么修。
21
+ </p>
12
22
 
13
- <br>
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
- <a href="https://www.npmjs.com/package/@zenalexa/unicli"><img src="https://img.shields.io/npm/v/@zenalexa/unicli?style=flat-square&color=cb3837" alt="npm"></a>
16
- <a href="https://github.com/olo-dot-io/Uni-CLI/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/olo-dot-io/Uni-CLI/ci.yml?style=flat-square&label=CI" alt="CI"></a>
17
- <a href="https://github.com/olo-dot-io/Uni-CLI/stargazers"><img src="https://img.shields.io/github/stars/olo-dot-io/Uni-CLI?style=flat-square" alt="stars"></a>
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
- <br>
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
- [English](README.md)
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
- <br>
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
- ```sh
116
+ ```bash
29
117
  npm install -g @zenalexa/unicli
118
+ unicli search "微博热搜"
119
+ unicli hackernews top -f json
30
120
  ```
31
121
 
32
- <br>
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
- <img src="docs/demo/demo.svg" alt="Uni-CLI 30 秒演示" width="720">
130
+ ## 它解决什么
35
131
 
36
- </div>
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
- ## 🤖 Agent 帮你配置
144
+ ## Agent 的入口
41
145
 
42
- 把下面这段扔给你的 agent,然后去倒杯水:
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
- | **Claude Code** | `claude mcp add unicli -- npx @zenalexa/unicli mcp serve` |
58
- | **Codex CLI** | 在 `~/.codex/config.toml` 添加 `[mcp_servers.unicli]` · `command = "npx @zenalexa/unicli mcp serve"` |
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
- Uni-CLI 是专为 AI Agent 设计的通用命令行界面——单个二进制文件,将 Agent 意图编译为可确定性执行的程序,覆盖 <!-- STATS:site_count -->220<!-- /STATS --> 个站点、30+ 桌面应用、35 个 CLI 桥接和本地操作系统(共 <!-- STATS:command_count -->1283<!-- /STATS --> 条命令)。每个适配器约 20 行 YAML:Agent 可读、可编辑、零构建步骤。站点修改 API 时,Agent 编辑 YAML,保存到 `~/.unicli/adapters/`,重试即可。修复永久生效,`npm update` 也不会覆盖。全程无需人工介入。
161
+ 协议入口:
69
162
 
70
- 覆盖范围贯穿各个层面:HTTP Web API、CDP 浏览器自动化、桌面子进程(ffmpeg、Blender、LibreOffice)、macOS 系统调用(截屏、日历、剪贴板)、macOS AX,以及可插拔 CUA 合同。Windows UIA、Linux AT-SPI 和第三方 CUA provider 当前是显式声明的能力边界/接口桩,不按已完成实执行能力宣传;全部通过统一的 `unicli <站点> <命令>` 接口访问。
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
- ## 为什么 CLI MCP
171
+ ACP 作为编辑器和桥接兼容层保留。真正跑任务时,优先 native CLI、JSON stream MCP
73
172
 
74
- 一个 93 工具的 MCP 服务器在 Agent 能行动之前要加载约 55,000 个 token。Firecrawl、Scalekit、Apideck 的独立基准测试均报告,Agent 通过 CLI 层按需拉取命令比加载完整 MCP 目录减少 95–99% 的上下文开销。2025–2026 年的学术研究(Semantic Tool Discovery、ITR Dynamic Tool Exposure、JSPLIT)得出了相同结论。
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
- Uni-CLI MCP 服务器只暴露四个元工具(`unicli_run`、`unicli_list`、`unicli_search`、`unicli_explore`),Agent 通过 BM25 中英双语搜索在 50KB 索引中按需拉取精确命令。诚实的单次调用数据(p50/p95,实测非估算):[`docs/BENCHMARK.md`](docs/BENCHMARK.md)。
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
- npm install -g @zenalexa/unicli
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
- 完整指南(含 5 个实例):[`docs/QUICKSTART.md`](docs/QUICKSTART.md)。
195
+ 同一份生成目录也发布在文档站:
196
+ <https://olo-dot-io.github.io/Uni-CLI/reference/sites>
109
197
 
110
- ## 自修复
198
+ ## 输出契约
111
199
 
112
- 自修复是 Uni-CLI 作为基础设施而非普通工具的核心能力。当站点修改 API:
200
+ 普通命令都返回 v2 envelope。`mcp serve` 和 `acp` 是协议服务器,保留各自原始 stdio 协议。
113
201
 
114
- ```
115
- unicli <站点> <命令> 失败
116
- → stderr: { "adapter_path": "~/.unicli/adapters/weibo/trending.yaml",
117
- "step": "fetch", "action": "GET /api/v4/search/top",
118
- "suggestion": "endpoint 可能已版本化为 /api/v4/search/trending" }
119
- Agent 打开 adapter_path 处的 ~20 行 YAML
120
- Agent 修改选择器 / 端点 / 认证头
121
- unicli <站点> <命令> 成功
122
- → 修复保存到 ~/.unicli/adapters/ — 永久生效,npm update 不覆盖
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
- 这是 Banach 收敛设计:每条错误消息都提供方向性反馈(`adapter_path` + `step` + `suggestion`),使连续修复迭代收敛到可用状态。Agent 积累的修复不会被重置。
215
+ 错误也要可执行:
126
216
 
127
- ```bash
128
- unicli repair weibo trending # 诊断 + 建议修复方案
129
- unicli test weibo # 验证站点所有适配器
130
- unicli repair --loop # 自主修复循环(Agent 驱动)
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
- 退出码遵循 `sysexits.h`:`0` 成功 · `66` 空结果 · `69` 不可用 · `75` 临时错误 · `77` 认证 · `78` 配置。
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
- ```bash
213
- unicli auth setup weibo # 打印所需 cookie 和保存路径
214
- unicli auth check weibo # 验证 cookie 文件
215
- unicli auth list # 所有已配置站点
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
- 浏览器守护进程(`unicli browser start`)通过 CDP 复用已登录的 Chrome 会话——无需导出 cookie,无需安装扩展。4 小时无操作后自动退出。
219
-
220
- ## 写一个适配器
249
+ 本地修复会在 npm 更新后继续保留。
221
250
 
222
- 20 行 YAML,零 TypeScript,零构建步骤,Agent 可直接读写:
251
+ ## 写一个 adapter
223
252
 
224
253
  ```yaml
225
- site: hackernews
226
- name: top
227
- type: web-api
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://hacker-news.firebaseio.com/v0/topstories.json"
232
- - limit: { count: "${{ args.limit | default(30) }}" }
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
- columns: [title, score, url]
242
- ```
243
-
244
- 五种适配器类型:`web-api` · `desktop` · `browser` · `bridge` · `service`。29 个模板过滤器在沙箱 VM 中运行。
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
- BM25 + TF-IDF · 200 条 ZH↔EN 别名表 · 50KB 索引 · <10ms 查询。
269
-
270
- ## 理论基础
278
+ 文档入口:
271
279
 
272
- 五条设计原则,每条对应 [`docs/refs.bib`](docs/refs.bib) 中的引用文献:
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
- 1. **Rice 限制** — 可判定的适配器语义(YAML 流水线,无图灵完备逻辑,可证明终止)
275
- 2. **Lehman 命令** — 自修复是一等公民;没有永久有效的适配器;每个站点终将改变
276
- 3. **Shannon 压缩** — `unicli` 调用是底层 API 调用的近最优压缩(约 80 token)
277
- 4. **Agent 工具三难困境**(原创贡献)— 覆盖率 × 准确率 × 性能,三选二。我们优化准确率 × 性能
278
- 5. **Banach 收敛** — 结构化错误消息(`adapter_path` + `step` + `suggestion`)保证修复迭代收敛
287
+ ## 边界和诚实说明
279
288
 
280
- 42 条引用的完整论述:[`docs/THEORY.md`](docs/THEORY.md)。可复现的 token 基准测试:[`docs/BENCHMARK.md`](docs/BENCHMARK.md)。
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
- git clone https://github.com/olo-dot-io/Uni-CLI.git && cd Uni-CLI
286
- npm install
287
- npm run verify # 类型检查 + lint + 测试 + 构建(7 个关卡,发布前必须全通过)
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>v0.215.0 — Closed Adapter Loop</sub><br>
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/adapters/1688/assets.ts"],"names":[],"mappings":""}