@jackwener/opencli 1.6.1 → 1.6.2

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 (384) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +27 -45
  3. package/README.zh-CN.md +32 -34
  4. package/autoresearch/browse-tasks.json +18 -20
  5. package/autoresearch/commands/debug.ts +163 -0
  6. package/autoresearch/commands/fix.ts +145 -0
  7. package/autoresearch/commands/plan.ts +88 -0
  8. package/autoresearch/commands/run.ts +138 -0
  9. package/autoresearch/config.ts +82 -0
  10. package/autoresearch/engine.ts +359 -0
  11. package/autoresearch/eval-all.ts +127 -0
  12. package/autoresearch/eval-browse.ts +1 -1
  13. package/autoresearch/eval-publish.ts +238 -0
  14. package/autoresearch/eval-save.ts +249 -0
  15. package/autoresearch/eval-skill.ts +14 -8
  16. package/autoresearch/eval-v2ex.ts +220 -0
  17. package/autoresearch/eval-zhihu.ts +230 -0
  18. package/autoresearch/logger.ts +69 -0
  19. package/autoresearch/presets/combined-reliability.ts +27 -0
  20. package/autoresearch/presets/index.ts +23 -0
  21. package/autoresearch/presets/operate-reliability.ts +24 -0
  22. package/autoresearch/presets/save-reliability.ts +26 -0
  23. package/autoresearch/presets/skill-quality.ts +20 -0
  24. package/autoresearch/presets/v2ex-reliability.ts +24 -0
  25. package/autoresearch/presets/zhihu-reliability.ts +25 -0
  26. package/autoresearch/publish-tasks.json +345 -0
  27. package/autoresearch/run-save.sh +11 -0
  28. package/autoresearch/save-adapters/xhs-explore-deep.ts +64 -0
  29. package/autoresearch/save-adapters/xhs-note-comments.ts +61 -0
  30. package/autoresearch/save-adapters/xhs-search-full.ts +62 -0
  31. package/autoresearch/save-adapters/zhihu-hot-detail.ts +52 -0
  32. package/autoresearch/save-adapters/zhihu-question-full.ts +57 -0
  33. package/autoresearch/save-adapters/zhihu-search-detail.ts +53 -0
  34. package/autoresearch/save-tasks.json +281 -0
  35. package/autoresearch/v2ex-tasks.json +899 -0
  36. package/autoresearch/zhihu-tasks.json +848 -0
  37. package/dist/browser/base-page.d.ts +4 -2
  38. package/dist/browser/base-page.js +37 -4
  39. package/dist/browser/bridge.js +10 -8
  40. package/dist/browser/cdp.js +2 -6
  41. package/dist/browser/daemon-client.d.ts +11 -1
  42. package/dist/browser/daemon-client.js +3 -0
  43. package/dist/browser/dom-helpers.d.ts +4 -2
  44. package/dist/browser/dom-helpers.js +42 -31
  45. package/dist/browser/dom-snapshot.js +23 -1
  46. package/dist/browser/page.d.ts +7 -2
  47. package/dist/browser/page.js +112 -30
  48. package/dist/browser.test.js +1 -1
  49. package/dist/build-manifest.d.ts +1 -0
  50. package/dist/build-manifest.js +1 -0
  51. package/dist/cli-manifest.json +1135 -184
  52. package/dist/cli.d.ts +2 -0
  53. package/dist/cli.js +48 -7
  54. package/dist/cli.test.d.ts +1 -0
  55. package/dist/cli.test.js +88 -0
  56. package/dist/clis/1688/item.d.ts +70 -0
  57. package/dist/clis/1688/item.js +187 -0
  58. package/dist/clis/1688/item.test.d.ts +1 -0
  59. package/dist/clis/1688/item.test.js +67 -0
  60. package/dist/clis/1688/search.d.ts +56 -0
  61. package/dist/clis/1688/search.js +309 -0
  62. package/dist/clis/1688/search.test.d.ts +1 -0
  63. package/dist/clis/1688/search.test.js +75 -0
  64. package/dist/clis/1688/shared.d.ts +112 -0
  65. package/dist/clis/1688/shared.js +514 -0
  66. package/dist/clis/1688/shared.test.d.ts +1 -0
  67. package/dist/clis/1688/shared.test.js +57 -0
  68. package/dist/clis/1688/store.d.ts +45 -0
  69. package/dist/clis/1688/store.js +226 -0
  70. package/dist/clis/1688/store.test.d.ts +1 -0
  71. package/dist/clis/1688/store.test.js +62 -0
  72. package/dist/clis/amazon/bestsellers.d.ts +0 -20
  73. package/dist/clis/amazon/bestsellers.js +6 -129
  74. package/dist/clis/amazon/bestsellers.test.js +12 -3
  75. package/dist/clis/amazon/movers-shakers.d.ts +1 -0
  76. package/dist/clis/amazon/movers-shakers.js +7 -0
  77. package/dist/clis/amazon/new-releases.d.ts +1 -0
  78. package/dist/clis/amazon/new-releases.js +7 -0
  79. package/dist/clis/amazon/rankings.d.ts +59 -0
  80. package/dist/clis/amazon/rankings.js +226 -0
  81. package/dist/clis/amazon/rankings.test.d.ts +1 -0
  82. package/dist/clis/amazon/rankings.test.js +41 -0
  83. package/dist/clis/amazon/shared.d.ts +11 -0
  84. package/dist/clis/amazon/shared.js +121 -11
  85. package/dist/clis/amazon/shared.test.js +11 -0
  86. package/dist/clis/bilibili/comments.js +2 -2
  87. package/dist/clis/bilibili/comments.test.js +3 -2
  88. package/dist/clis/bilibili/download.js +2 -1
  89. package/dist/clis/bilibili/subtitle.js +4 -3
  90. package/dist/clis/bilibili/subtitle.test.js +2 -1
  91. package/dist/clis/bilibili/utils.d.ts +5 -0
  92. package/dist/clis/bilibili/utils.js +30 -0
  93. package/dist/clis/bilibili/utils.test.d.ts +1 -0
  94. package/dist/clis/bilibili/utils.test.js +17 -0
  95. package/dist/clis/douban/marks.js +1 -1
  96. package/dist/clis/douban/subject.yaml +50 -19
  97. package/dist/clis/doubao/utils.js +32 -12
  98. package/dist/clis/douyin/_shared/browser-fetch.test.js +0 -1
  99. package/dist/clis/douyin/_shared/transcode.test.js +0 -2
  100. package/dist/clis/douyin/draft.test.js +0 -2
  101. package/dist/clis/facebook/search.test.js +0 -2
  102. package/dist/clis/gemini/ask.js +9 -3
  103. package/dist/clis/gemini/ask.test.d.ts +1 -0
  104. package/dist/clis/gemini/ask.test.js +100 -0
  105. package/dist/clis/gemini/reply-state.test.d.ts +1 -0
  106. package/dist/clis/gemini/reply-state.test.js +641 -0
  107. package/dist/clis/gemini/utils.d.ts +44 -1
  108. package/dist/clis/gemini/utils.js +528 -61
  109. package/dist/clis/gemini/utils.test.js +149 -2
  110. package/dist/clis/hupu/detail.d.ts +1 -0
  111. package/dist/clis/hupu/detail.js +72 -0
  112. package/dist/clis/hupu/hot.yaml +43 -0
  113. package/dist/clis/hupu/like.d.ts +1 -0
  114. package/dist/clis/hupu/like.js +75 -0
  115. package/dist/clis/hupu/reply.d.ts +1 -0
  116. package/dist/clis/hupu/reply.js +71 -0
  117. package/dist/clis/hupu/search.d.ts +1 -0
  118. package/dist/clis/hupu/search.js +59 -0
  119. package/dist/clis/hupu/unlike.d.ts +1 -0
  120. package/dist/clis/hupu/unlike.js +75 -0
  121. package/dist/clis/hupu/utils.d.ts +20 -0
  122. package/dist/clis/hupu/utils.js +319 -0
  123. package/dist/clis/instagram/_shared/private-publish.d.ts +138 -0
  124. package/dist/clis/instagram/_shared/private-publish.js +1030 -0
  125. package/dist/clis/instagram/_shared/private-publish.test.d.ts +1 -0
  126. package/dist/clis/instagram/_shared/private-publish.test.js +705 -0
  127. package/dist/clis/instagram/_shared/protocol-capture.d.ts +26 -0
  128. package/dist/clis/instagram/_shared/protocol-capture.js +282 -0
  129. package/dist/clis/instagram/_shared/protocol-capture.test.d.ts +1 -0
  130. package/dist/clis/instagram/_shared/protocol-capture.test.js +114 -0
  131. package/dist/clis/instagram/_shared/runtime-info.d.ts +9 -0
  132. package/dist/clis/instagram/_shared/runtime-info.js +81 -0
  133. package/dist/clis/instagram/note.d.ts +1 -0
  134. package/dist/clis/instagram/note.js +222 -0
  135. package/dist/clis/instagram/note.test.d.ts +1 -0
  136. package/dist/clis/instagram/note.test.js +81 -0
  137. package/dist/clis/instagram/post.d.ts +4 -0
  138. package/dist/clis/instagram/post.js +1496 -0
  139. package/dist/clis/instagram/post.test.d.ts +1 -0
  140. package/dist/clis/instagram/post.test.js +1647 -0
  141. package/dist/clis/instagram/reel.d.ts +1 -0
  142. package/dist/clis/instagram/reel.js +826 -0
  143. package/dist/clis/instagram/reel.test.d.ts +1 -0
  144. package/dist/clis/instagram/reel.test.js +167 -0
  145. package/dist/clis/instagram/story.d.ts +1 -0
  146. package/dist/clis/instagram/story.js +115 -0
  147. package/dist/clis/instagram/story.test.d.ts +1 -0
  148. package/dist/clis/instagram/story.test.js +167 -0
  149. package/dist/clis/sinafinance/stock-rank.d.ts +4 -0
  150. package/dist/clis/sinafinance/stock-rank.js +65 -0
  151. package/dist/clis/substack/utils.test.js +0 -2
  152. package/dist/clis/twitter/post.js +72 -45
  153. package/dist/clis/twitter/post.test.d.ts +1 -0
  154. package/dist/clis/twitter/post.test.js +116 -0
  155. package/dist/clis/twitter/reply.d.ts +12 -0
  156. package/dist/clis/twitter/reply.js +257 -35
  157. package/dist/clis/twitter/reply.test.d.ts +1 -0
  158. package/dist/clis/twitter/reply.test.js +151 -0
  159. package/dist/clis/xianyu/chat.d.ts +7 -0
  160. package/dist/clis/xianyu/chat.js +146 -0
  161. package/dist/clis/xianyu/chat.test.d.ts +1 -0
  162. package/dist/clis/xianyu/chat.test.js +15 -0
  163. package/dist/clis/xianyu/item.d.ts +7 -0
  164. package/dist/clis/xianyu/item.js +152 -0
  165. package/dist/clis/xianyu/item.test.d.ts +1 -0
  166. package/dist/clis/xianyu/item.test.js +56 -0
  167. package/dist/clis/xianyu/search.d.ts +10 -0
  168. package/dist/clis/xianyu/search.js +134 -0
  169. package/dist/clis/xianyu/search.test.d.ts +1 -0
  170. package/dist/clis/xianyu/search.test.js +17 -0
  171. package/dist/clis/xianyu/utils.d.ts +1 -0
  172. package/dist/clis/xianyu/utils.js +8 -0
  173. package/dist/clis/xiaoe/catalog.yaml +129 -0
  174. package/dist/clis/xiaoe/content.yaml +43 -0
  175. package/dist/clis/xiaoe/courses.yaml +73 -0
  176. package/dist/clis/xiaoe/detail.yaml +39 -0
  177. package/dist/clis/xiaoe/play-url.yaml +124 -0
  178. package/dist/clis/xiaohongshu/comments.test.js +0 -2
  179. package/dist/clis/xiaohongshu/creator-note-detail.test.js +0 -2
  180. package/dist/clis/xiaohongshu/creator-notes.test.js +0 -2
  181. package/dist/clis/xiaohongshu/download.test.js +0 -2
  182. package/dist/clis/xiaohongshu/note.test.js +0 -2
  183. package/dist/clis/xiaohongshu/publish.test.js +0 -2
  184. package/dist/clis/xiaohongshu/search.js +29 -20
  185. package/dist/clis/xiaohongshu/search.test.js +56 -48
  186. package/dist/clis/yuanbao/ask.d.ts +21 -0
  187. package/dist/clis/yuanbao/ask.js +427 -0
  188. package/dist/clis/yuanbao/ask.test.d.ts +1 -0
  189. package/dist/clis/yuanbao/ask.test.js +124 -0
  190. package/dist/clis/yuanbao/new.d.ts +1 -0
  191. package/dist/clis/yuanbao/new.js +70 -0
  192. package/dist/clis/yuanbao/new.test.d.ts +1 -0
  193. package/dist/clis/yuanbao/new.test.js +30 -0
  194. package/dist/clis/yuanbao/shared.d.ts +13 -0
  195. package/dist/clis/yuanbao/shared.js +49 -0
  196. package/dist/clis/zhihu/question.js +30 -19
  197. package/dist/clis/zhihu/question.test.js +34 -16
  198. package/dist/commanderAdapter.js +8 -4
  199. package/dist/commanderAdapter.test.js +42 -0
  200. package/dist/completion.js +3 -1
  201. package/dist/completion.test.d.ts +1 -0
  202. package/dist/completion.test.js +23 -0
  203. package/dist/doctor.js +1 -1
  204. package/dist/electron-apps.d.ts +2 -0
  205. package/dist/electron-apps.js +7 -1
  206. package/dist/errors.js +1 -1
  207. package/dist/execution.js +25 -35
  208. package/dist/explore.js +1 -1
  209. package/dist/launcher.d.ts +4 -0
  210. package/dist/launcher.js +64 -8
  211. package/dist/launcher.test.js +88 -7
  212. package/dist/output.d.ts +2 -0
  213. package/dist/output.js +10 -1
  214. package/dist/output.test.d.ts +0 -3
  215. package/dist/output.test.js +59 -92
  216. package/dist/pipeline/executor.test.js +0 -2
  217. package/dist/pipeline/steps/download.test.js +0 -2
  218. package/dist/registry.d.ts +2 -0
  219. package/dist/serialization.d.ts +1 -0
  220. package/dist/serialization.js +1 -0
  221. package/dist/types.d.ts +9 -2
  222. package/docs/.vitepress/config.mts +4 -0
  223. package/docs/adapters/browser/1688.md +52 -0
  224. package/docs/adapters/browser/36kr.md +2 -1
  225. package/docs/adapters/browser/doubao.md +5 -1
  226. package/docs/adapters/browser/hupu.md +53 -0
  227. package/docs/adapters/browser/sinafinance.md +32 -2
  228. package/docs/adapters/browser/weibo.md +6 -1
  229. package/docs/adapters/browser/wikipedia.md +2 -0
  230. package/docs/adapters/browser/xianyu.md +42 -0
  231. package/docs/adapters/browser/xiaoe.md +44 -0
  232. package/docs/adapters/browser/yuanbao.md +64 -0
  233. package/docs/adapters/index.md +14 -5
  234. package/docs/comparison.md +1 -1
  235. package/docs/developer/ai-workflow.md +2 -2
  236. package/docs/developer/contributing.md +1 -1
  237. package/docs/developer/testing.md +2 -0
  238. package/docs/guide/plugins.md +1 -0
  239. package/docs/guide/troubleshooting.md +11 -0
  240. package/docs/superpowers/specs/2026-04-03-v2ex-autoresearch-design.md +41 -0
  241. package/docs/zh/guide/plugins.md +1 -0
  242. package/extension/dist/background.js +1127 -0
  243. package/extension/src/background.test.ts +39 -0
  244. package/extension/src/background.ts +223 -34
  245. package/extension/src/cdp.ts +194 -4
  246. package/extension/src/protocol.ts +22 -1
  247. package/package.json +3 -2
  248. package/scripts/postinstall.js +1 -1
  249. package/skills/opencli-explorer/SKILL.md +1 -1
  250. package/skills/opencli-oneshot/SKILL.md +2 -2
  251. package/skills/opencli-operate/SKILL.md +120 -27
  252. package/skills/opencli-usage/SKILL.md +31 -20
  253. package/skills/opencli-usage/browser.md +114 -16
  254. package/skills/opencli-usage/public-api.md +32 -3
  255. package/skills/smart-search/SKILL.md +156 -0
  256. package/skills/smart-search/references/sources-ai.md +74 -0
  257. package/skills/smart-search/references/sources-info.md +43 -0
  258. package/skills/smart-search/references/sources-media.md +50 -0
  259. package/skills/smart-search/references/sources-other.md +42 -0
  260. package/skills/smart-search/references/sources-shopping.md +31 -0
  261. package/skills/smart-search/references/sources-social.md +51 -0
  262. package/skills/smart-search/references/sources-tech.md +42 -0
  263. package/skills/smart-search/references/sources-travel.md +20 -0
  264. package/src/browser/base-page.ts +41 -6
  265. package/src/browser/bridge.ts +11 -8
  266. package/src/browser/cdp.ts +1 -8
  267. package/src/browser/daemon-client.ts +11 -1
  268. package/src/browser/dom-helpers.ts +43 -31
  269. package/src/browser/dom-snapshot.ts +23 -1
  270. package/src/browser/page.ts +115 -31
  271. package/src/browser.test.ts +1 -1
  272. package/src/build-manifest.ts +2 -0
  273. package/src/cli.test.ts +133 -0
  274. package/src/cli.ts +73 -11
  275. package/src/clis/1688/item.test.ts +69 -0
  276. package/src/clis/1688/item.ts +282 -0
  277. package/src/clis/1688/search.test.ts +81 -0
  278. package/src/clis/1688/search.ts +402 -0
  279. package/src/clis/1688/shared.test.ts +75 -0
  280. package/src/clis/1688/shared.ts +623 -0
  281. package/src/clis/1688/store.test.ts +69 -0
  282. package/src/clis/1688/store.ts +300 -0
  283. package/src/clis/amazon/bestsellers.test.ts +12 -3
  284. package/src/clis/amazon/bestsellers.ts +6 -178
  285. package/src/clis/amazon/movers-shakers.ts +8 -0
  286. package/src/clis/amazon/new-releases.ts +8 -0
  287. package/src/clis/amazon/rankings.test.ts +47 -0
  288. package/src/clis/amazon/rankings.ts +312 -0
  289. package/src/clis/amazon/shared.test.ts +16 -0
  290. package/src/clis/amazon/shared.ts +134 -12
  291. package/src/clis/bilibili/comments.test.ts +4 -3
  292. package/src/clis/bilibili/comments.ts +2 -2
  293. package/src/clis/bilibili/download.ts +2 -1
  294. package/src/clis/bilibili/subtitle.test.ts +2 -1
  295. package/src/clis/bilibili/subtitle.ts +4 -3
  296. package/src/clis/bilibili/utils.test.ts +21 -0
  297. package/src/clis/bilibili/utils.ts +27 -0
  298. package/src/clis/douban/marks.ts +1 -1
  299. package/src/clis/douban/subject.yaml +50 -19
  300. package/src/clis/doubao/utils.ts +32 -12
  301. package/src/clis/douyin/_shared/browser-fetch.test.ts +0 -1
  302. package/src/clis/douyin/_shared/transcode.test.ts +0 -2
  303. package/src/clis/douyin/draft.test.ts +0 -2
  304. package/src/clis/facebook/search.test.ts +0 -2
  305. package/src/clis/gemini/ask.test.ts +116 -0
  306. package/src/clis/gemini/ask.ts +10 -3
  307. package/src/clis/gemini/reply-state.test.ts +708 -0
  308. package/src/clis/gemini/utils.test.ts +184 -2
  309. package/src/clis/gemini/utils.ts +588 -60
  310. package/src/clis/hupu/detail.ts +126 -0
  311. package/src/clis/hupu/hot.yaml +43 -0
  312. package/src/clis/hupu/like.ts +76 -0
  313. package/src/clis/hupu/reply.ts +76 -0
  314. package/src/clis/hupu/search.ts +95 -0
  315. package/src/clis/hupu/unlike.ts +76 -0
  316. package/src/clis/hupu/utils.ts +381 -0
  317. package/src/clis/instagram/_shared/private-publish.test.ts +827 -0
  318. package/src/clis/instagram/_shared/private-publish.ts +1303 -0
  319. package/src/clis/instagram/_shared/protocol-capture.test.ts +148 -0
  320. package/src/clis/instagram/_shared/protocol-capture.ts +321 -0
  321. package/src/clis/instagram/_shared/runtime-info.ts +91 -0
  322. package/src/clis/instagram/note.test.ts +96 -0
  323. package/src/clis/instagram/note.ts +254 -0
  324. package/src/clis/instagram/post.test.ts +1716 -0
  325. package/src/clis/instagram/post.ts +1620 -0
  326. package/src/clis/instagram/reel.test.ts +191 -0
  327. package/src/clis/instagram/reel.ts +886 -0
  328. package/src/clis/instagram/story.test.ts +191 -0
  329. package/src/clis/instagram/story.ts +151 -0
  330. package/src/clis/sinafinance/stock-rank.ts +68 -0
  331. package/src/clis/substack/utils.test.ts +0 -2
  332. package/src/clis/twitter/post.test.ts +157 -0
  333. package/src/clis/twitter/post.ts +82 -48
  334. package/src/clis/twitter/reply.test.ts +177 -0
  335. package/src/clis/twitter/reply.ts +285 -39
  336. package/src/clis/xianyu/chat.test.ts +20 -0
  337. package/src/clis/xianyu/chat.ts +175 -0
  338. package/src/clis/xianyu/item.test.ts +67 -0
  339. package/src/clis/xianyu/item.ts +172 -0
  340. package/src/clis/xianyu/search.test.ts +22 -0
  341. package/src/clis/xianyu/search.ts +151 -0
  342. package/src/clis/xianyu/utils.ts +9 -0
  343. package/src/clis/xiaoe/catalog.yaml +129 -0
  344. package/src/clis/xiaoe/content.yaml +43 -0
  345. package/src/clis/xiaoe/courses.yaml +73 -0
  346. package/src/clis/xiaoe/detail.yaml +39 -0
  347. package/src/clis/xiaoe/play-url.yaml +124 -0
  348. package/src/clis/xiaohongshu/comments.test.ts +0 -2
  349. package/src/clis/xiaohongshu/creator-note-detail.test.ts +0 -2
  350. package/src/clis/xiaohongshu/creator-notes.test.ts +0 -2
  351. package/src/clis/xiaohongshu/download.test.ts +0 -2
  352. package/src/clis/xiaohongshu/note.test.ts +0 -2
  353. package/src/clis/xiaohongshu/publish.test.ts +0 -2
  354. package/src/clis/xiaohongshu/search.test.ts +59 -48
  355. package/src/clis/xiaohongshu/search.ts +31 -21
  356. package/src/clis/yuanbao/ask.test.ts +156 -0
  357. package/src/clis/yuanbao/ask.ts +522 -0
  358. package/src/clis/yuanbao/new.test.ts +36 -0
  359. package/src/clis/yuanbao/new.ts +81 -0
  360. package/src/clis/yuanbao/shared.ts +57 -0
  361. package/src/clis/zhihu/question.test.ts +42 -17
  362. package/src/clis/zhihu/question.ts +31 -26
  363. package/src/commanderAdapter.test.ts +51 -0
  364. package/src/commanderAdapter.ts +8 -4
  365. package/src/completion.test.ts +30 -0
  366. package/src/completion.ts +3 -1
  367. package/src/doctor.ts +1 -1
  368. package/src/electron-apps.ts +9 -1
  369. package/src/errors.ts +1 -1
  370. package/src/execution.ts +26 -30
  371. package/src/explore.ts +1 -1
  372. package/src/launcher.test.ts +121 -7
  373. package/src/launcher.ts +87 -9
  374. package/src/output.test.ts +50 -90
  375. package/src/output.ts +10 -1
  376. package/src/pipeline/executor.test.ts +0 -2
  377. package/src/pipeline/steps/download.test.ts +0 -2
  378. package/src/registry.ts +2 -0
  379. package/src/serialization.ts +2 -0
  380. package/src/types.ts +9 -2
  381. package/tests/e2e/browser-auth.test.ts +9 -0
  382. package/CLI-EXPLORER.md +0 -724
  383. package/CLI-ONESHOT.md +0 -216
  384. package/SKILL.md +0 -59
@@ -0,0 +1,848 @@
1
+ [
2
+ {
3
+ "_comment": "=== L1: Atomic Operations (10 tasks) ==="
4
+ },
5
+ {
6
+ "name": "zhihu-open-home",
7
+ "steps": [
8
+ "opencli operate open https://www.zhihu.com/"
9
+ ],
10
+ "judge": {
11
+ "type": "contains",
12
+ "value": "Navigated to"
13
+ }
14
+ },
15
+ {
16
+ "name": "zhihu-get-title",
17
+ "steps": [
18
+ "opencli operate open https://www.zhihu.com/",
19
+ "opencli operate eval \"document.title\""
20
+ ],
21
+ "judge": {
22
+ "type": "contains",
23
+ "value": "知乎"
24
+ }
25
+ },
26
+ {
27
+ "name": "zhihu-state",
28
+ "steps": [
29
+ "opencli operate open https://www.zhihu.com/",
30
+ "opencli operate state"
31
+ ],
32
+ "judge": {
33
+ "type": "matchesPattern",
34
+ "pattern": "\\[@?\\d+\\]"
35
+ }
36
+ },
37
+ {
38
+ "name": "zhihu-get-url",
39
+ "steps": [
40
+ "opencli operate open https://www.zhihu.com/hot",
41
+ "opencli operate get url"
42
+ ],
43
+ "judge": {
44
+ "type": "contains",
45
+ "value": "zhihu.com/hot"
46
+ }
47
+ },
48
+ {
49
+ "name": "zhihu-scroll-down",
50
+ "steps": [
51
+ "opencli operate open https://www.zhihu.com/",
52
+ "opencli operate scroll down --amount 500",
53
+ "opencli operate eval \"window.scrollY > 100 ? 'scrolled' : 'not scrolled'\""
54
+ ],
55
+ "judge": {
56
+ "type": "contains",
57
+ "value": "scrolled"
58
+ }
59
+ },
60
+ {
61
+ "name": "zhihu-click-tab-hot",
62
+ "steps": [
63
+ "opencli operate open https://www.zhihu.com/",
64
+ "opencli operate eval \"(function(){var a=document.querySelector('nav a[href*=hot]');if(a){a.click();return 'clicked';}return 'not found';})()\""
65
+ ],
66
+ "judge": {
67
+ "type": "contains",
68
+ "value": "clicked"
69
+ }
70
+ },
71
+ {
72
+ "name": "zhihu-back-navigation",
73
+ "steps": [
74
+ "opencli operate open https://www.zhihu.com/",
75
+ "opencli operate open https://www.zhihu.com/hot",
76
+ "opencli operate back",
77
+ "opencli operate get url"
78
+ ],
79
+ "judge": {
80
+ "type": "matchesPattern",
81
+ "pattern": "zhihu\\.com/?$"
82
+ }
83
+ },
84
+ {
85
+ "name": "zhihu-wait-page-load",
86
+ "steps": [
87
+ "opencli operate open https://www.zhihu.com/",
88
+ "opencli operate wait text 推荐",
89
+ "opencli operate eval \"document.querySelector('nav')?.textContent?.includes('推荐') ? 'loaded' : 'empty'\""
90
+ ],
91
+ "judge": {
92
+ "type": "contains",
93
+ "value": "loaded"
94
+ }
95
+ },
96
+ {
97
+ "name": "zhihu-keys-escape",
98
+ "steps": [
99
+ "opencli operate open https://www.zhihu.com/",
100
+ "opencli operate keys Escape"
101
+ ],
102
+ "judge": {
103
+ "type": "matchesPattern",
104
+ "pattern": "pressed|Pressed"
105
+ }
106
+ },
107
+ {
108
+ "name": "zhihu-screenshot",
109
+ "steps": [
110
+ "opencli operate open https://www.zhihu.com/",
111
+ "opencli operate screenshot /tmp/zhihu-test.png"
112
+ ],
113
+ "judge": {
114
+ "type": "nonEmpty"
115
+ }
116
+ },
117
+ {
118
+ "_comment": "=== L2: Homepage & Feed Extraction (8 tasks) ==="
119
+ },
120
+ {
121
+ "name": "zhihu-feed-titles",
122
+ "steps": [
123
+ "opencli operate open https://www.zhihu.com/",
124
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('h2.ContentItem-title a, .ContentItem-title a');var r=[];for(var i=0;i<Math.min(items.length,5);i++){r.push(items[i].textContent.trim().slice(0,60));}return JSON.stringify(r);})()\""
125
+ ],
126
+ "judge": {
127
+ "type": "arrayMinLength",
128
+ "minLength": 3
129
+ }
130
+ },
131
+ {
132
+ "name": "zhihu-hot-list",
133
+ "steps": [
134
+ "opencli operate open https://www.zhihu.com/hot",
135
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.HotItem-content a');var r=[];for(var i=0;i<Math.min(items.length,5);i++){r.push({title:items[i].textContent.trim().slice(0,50),href:items[i].pathname});}return JSON.stringify(r);})()\""
136
+ ],
137
+ "judge": {
138
+ "type": "arrayMinLength",
139
+ "minLength": 5
140
+ }
141
+ },
142
+ {
143
+ "name": "zhihu-hot-metrics",
144
+ "steps": [
145
+ "opencli operate open https://www.zhihu.com/hot",
146
+ "opencli operate eval \"(function(){var metrics=document.querySelectorAll('.HotItem-metrics');var r=[];for(var i=0;i<Math.min(metrics.length,5);i++){r.push(metrics[i].textContent.trim());}return JSON.stringify(r);})()\""
147
+ ],
148
+ "judge": {
149
+ "type": "arrayMinLength",
150
+ "minLength": 3
151
+ }
152
+ },
153
+ {
154
+ "name": "zhihu-nav-tabs",
155
+ "steps": [
156
+ "opencli operate open https://www.zhihu.com/",
157
+ "opencli operate eval \"(function(){var tabs=document.querySelectorAll('nav a');var r=[];for(var i=0;i<tabs.length;i++){r.push(tabs[i].textContent.trim());}return JSON.stringify(r);})()\""
158
+ ],
159
+ "judge": {
160
+ "type": "contains",
161
+ "value": "推荐"
162
+ }
163
+ },
164
+ {
165
+ "name": "zhihu-feed-with-authors",
166
+ "steps": [
167
+ "opencli operate open https://www.zhihu.com/",
168
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.ContentItem');var r=[];for(var i=0;i<Math.min(items.length,3);i++){var title=items[i].querySelector('h2 a')?.textContent?.trim()||'';var author=items[i].querySelector('.AuthorInfo-name')?.textContent?.trim()||'';if(title)r.push({title:title.slice(0,40),author:author});}return JSON.stringify(r);})()\""
169
+ ],
170
+ "judge": {
171
+ "type": "arrayMinLength",
172
+ "minLength": 2
173
+ }
174
+ },
175
+ {
176
+ "name": "zhihu-feed-types",
177
+ "steps": [
178
+ "opencli operate open https://www.zhihu.com/",
179
+ "opencli operate eval \"(function(){var links=document.querySelectorAll('h2.ContentItem-title a, .ContentItem-title a');var types={question:0,article:0,other:0};for(var i=0;i<links.length;i++){var h=links[i].pathname||'';if(h.includes('/question/'))types.question++;else if(h.includes('/p/'))types.article++;else types.other++;}return JSON.stringify(types);})()\""
180
+ ],
181
+ "judge": {
182
+ "type": "matchesPattern",
183
+ "pattern": "\"question\":\\d+"
184
+ }
185
+ },
186
+ {
187
+ "name": "zhihu-user-avatar",
188
+ "steps": [
189
+ "opencli operate open https://www.zhihu.com/",
190
+ "opencli operate eval \"(function(){var img=document.querySelector('img[alt*=\\\"头像\\\"],img[alt*=\\\"主页\\\"],img[class*=\\\"Avatar\\\"]');return img?img.src:'no avatar';})()\""
191
+ ],
192
+ "judge": {
193
+ "type": "nonEmpty"
194
+ }
195
+ },
196
+ {
197
+ "name": "zhihu-search-input-exists",
198
+ "steps": [
199
+ "opencli operate open https://www.zhihu.com/",
200
+ "opencli operate eval \"(function(){var input=document.querySelector('input[role=combobox],input[type=search]');return input?'search found':'no search';})()\""
201
+ ],
202
+ "judge": {
203
+ "type": "contains",
204
+ "value": "search found"
205
+ }
206
+ },
207
+ {
208
+ "_comment": "=== L3: Question Page Operations (8 tasks) ==="
209
+ },
210
+ {
211
+ "name": "zhihu-question-title",
212
+ "steps": [
213
+ "opencli operate open https://www.zhihu.com/hot",
214
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');return a?a.href:'none';})()\"",
215
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
216
+ "opencli operate wait time 2",
217
+ "opencli operate eval \"document.querySelector('.QuestionHeader-title')?.textContent?.trim()?.slice(0,80)||document.title\""
218
+ ],
219
+ "judge": {
220
+ "type": "nonEmpty"
221
+ }
222
+ },
223
+ {
224
+ "name": "zhihu-question-meta",
225
+ "steps": [
226
+ "opencli operate open https://www.zhihu.com/hot",
227
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
228
+ "opencli operate wait time 2",
229
+ "opencli operate eval \"(function(){var title=document.querySelector('.QuestionHeader-title')?.textContent?.trim()||'';var answerCount=document.querySelector('.List-headerText')?.textContent?.trim()||'';var followers=document.querySelector('[class*=FollowButton]')?.textContent?.trim()||'';return JSON.stringify({title:title.slice(0,60),answerCount:answerCount,followers:followers});})()\""
230
+ ],
231
+ "judge": {
232
+ "type": "matchesPattern",
233
+ "pattern": "\"title\":"
234
+ }
235
+ },
236
+ {
237
+ "name": "zhihu-first-answer",
238
+ "steps": [
239
+ "opencli operate open https://www.zhihu.com/hot",
240
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
241
+ "opencli operate wait time 2",
242
+ "opencli operate eval \"(function(){var content=document.querySelector('.RichContent-inner')?.textContent?.trim()?.slice(0,200)||'';var author=document.querySelector('.AuthorInfo-name')?.textContent?.trim()||'';return JSON.stringify({author:author,content:content});})()\""
243
+ ],
244
+ "judge": {
245
+ "type": "matchesPattern",
246
+ "pattern": "\"content\":"
247
+ }
248
+ },
249
+ {
250
+ "name": "zhihu-answer-votes",
251
+ "steps": [
252
+ "opencli operate open https://www.zhihu.com/hot",
253
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
254
+ "opencli operate wait time 2",
255
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button[class*=VoteButton]');var r=[];for(var i=0;i<Math.min(btns.length,6);i++){var label=btns[i].getAttribute('aria-label')||btns[i].textContent.trim();if(label)r.push(label.slice(0,30));}return JSON.stringify(r);})()\""
256
+ ],
257
+ "judge": {
258
+ "type": "arrayMinLength",
259
+ "minLength": 2
260
+ }
261
+ },
262
+ {
263
+ "name": "zhihu-question-buttons",
264
+ "steps": [
265
+ "opencli operate open https://www.zhihu.com/hot",
266
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
267
+ "opencli operate wait time 2",
268
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button');var r=[];for(var i=0;i<btns.length;i++){var t=btns[i].textContent.trim();if(t.length>0&&t.length<25)r.push(t);}return JSON.stringify(r.slice(0,15));})()\""
269
+ ],
270
+ "judge": {
271
+ "type": "arrayMinLength",
272
+ "minLength": 3
273
+ }
274
+ },
275
+ {
276
+ "name": "zhihu-multiple-answers",
277
+ "steps": [
278
+ "opencli operate open https://www.zhihu.com/hot",
279
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
280
+ "opencli operate wait time 2",
281
+ "opencli operate eval \"(function(){var answers=document.querySelectorAll('.List-item .RichContent-inner');var r=[];for(var i=0;i<Math.min(answers.length,3);i++){r.push(answers[i].textContent.trim().slice(0,80));}return JSON.stringify(r);})()\""
282
+ ],
283
+ "judge": {
284
+ "type": "arrayMinLength",
285
+ "minLength": 1
286
+ }
287
+ },
288
+ {
289
+ "name": "zhihu-question-description",
290
+ "steps": [
291
+ "opencli operate open https://www.zhihu.com/hot",
292
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
293
+ "opencli operate wait time 2",
294
+ "opencli operate eval \"(function(){var desc=document.querySelector('.QuestionRichText')?.textContent?.trim()?.slice(0,200)||'no description';return desc;})()\""
295
+ ],
296
+ "judge": {
297
+ "type": "nonEmpty"
298
+ }
299
+ },
300
+ {
301
+ "name": "zhihu-answer-count-number",
302
+ "steps": [
303
+ "opencli operate open https://www.zhihu.com/hot",
304
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
305
+ "opencli operate wait time 2",
306
+ "opencli operate eval \"(function(){var header=document.querySelector('.List-headerText');if(!header)return '0';var m=header.textContent.match(/\\\\d+/);return m?m[0]:'0';})()\""
307
+ ],
308
+ "judge": {
309
+ "type": "matchesPattern",
310
+ "pattern": "\\d+"
311
+ }
312
+ },
313
+ {
314
+ "_comment": "=== L4: Multi-Step Navigation (8 tasks) ==="
315
+ },
316
+ {
317
+ "name": "zhihu-hot-to-question",
318
+ "steps": [
319
+ "opencli operate open https://www.zhihu.com/hot",
320
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){a.click();return 'clicked: '+a.textContent.trim().slice(0,30);}return 'none';})()\"",
321
+ "opencli operate wait time 2",
322
+ "opencli operate eval \"document.querySelector('.QuestionHeader-title')?.textContent?.trim()?.slice(0,80)||document.title\""
323
+ ],
324
+ "judge": {
325
+ "type": "nonEmpty"
326
+ }
327
+ },
328
+ {
329
+ "name": "zhihu-feed-to-question",
330
+ "steps": [
331
+ "opencli operate open https://www.zhihu.com/",
332
+ "opencli operate eval \"(function(){var a=document.querySelector('h2.ContentItem-title a');if(a){a.click();return 'clicked';}return 'none';})()\"",
333
+ "opencli operate wait time 3",
334
+ "opencli operate eval \"document.querySelector('.QuestionHeader-title')?.textContent?.trim()?.slice(0,80)||document.title\""
335
+ ],
336
+ "judge": {
337
+ "type": "nonEmpty"
338
+ }
339
+ },
340
+ {
341
+ "name": "zhihu-question-to-author",
342
+ "steps": [
343
+ "opencli operate open https://www.zhihu.com/hot",
344
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
345
+ "opencli operate wait time 2",
346
+ "opencli operate eval \"(function(){var author=document.querySelector('.AuthorInfo-name a, .UserLink-link');if(author){var name=author.textContent.trim();window.location.href=author.href;return name;}return 'no author';})()\"",
347
+ "opencli operate wait time 2",
348
+ "opencli operate eval \"document.title\""
349
+ ],
350
+ "judge": {
351
+ "type": "nonEmpty"
352
+ }
353
+ },
354
+ {
355
+ "name": "zhihu-search-navigate",
356
+ "steps": [
357
+ "opencli operate open https://www.zhihu.com/search?type=content&q=TypeScript",
358
+ "opencli operate wait time 5",
359
+ "opencli operate scroll down --amount 300",
360
+ "opencli operate wait time 1",
361
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('h2 a');var r=[];var seen={};for(var i=0;i<items.length;i++){var t=items[i].textContent.trim();if(t.length>5&&t.length<100&&!seen[t]){seen[t]=1;r.push(t.slice(0,50));}}return JSON.stringify(r.slice(0,5));})()\""
362
+ ],
363
+ "judge": {
364
+ "type": "nonEmpty"
365
+ }
366
+ },
367
+ {
368
+ "name": "zhihu-topic-page",
369
+ "steps": [
370
+ "opencli operate open https://www.zhihu.com/topic/19552832/hot",
371
+ "opencli operate wait time 2",
372
+ "opencli operate eval \"(function(){var title=document.querySelector('.TopicName, .ContentItem-title, h1')?.textContent?.trim()||document.title;return title;})()\""
373
+ ],
374
+ "judge": {
375
+ "type": "nonEmpty"
376
+ }
377
+ },
378
+ {
379
+ "name": "zhihu-user-profile",
380
+ "steps": [
381
+ "opencli operate open https://www.zhihu.com/people/excited-vczh",
382
+ "opencli operate wait time 2",
383
+ "opencli operate eval \"(function(){var name=document.querySelector('.ProfileHeader-title .ProfileHeader-name')?.textContent?.trim()||document.querySelector('h1')?.textContent?.trim()||'';var bio=document.querySelector('.ProfileHeader-headline')?.textContent?.trim()||'';return JSON.stringify({name:name,bio:bio.slice(0,100)});})()\""
384
+ ],
385
+ "judge": {
386
+ "type": "matchesPattern",
387
+ "pattern": "\"name\":"
388
+ }
389
+ },
390
+ {
391
+ "name": "zhihu-question-and-back",
392
+ "steps": [
393
+ "opencli operate open https://www.zhihu.com/hot",
394
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){a.click();return 'clicked';}return 'none';})()\"",
395
+ "opencli operate wait time 3",
396
+ "opencli operate open https://www.zhihu.com/hot",
397
+ "opencli operate get url"
398
+ ],
399
+ "judge": {
400
+ "type": "contains",
401
+ "value": "zhihu.com/hot"
402
+ }
403
+ },
404
+ {
405
+ "name": "zhihu-scroll-load-more",
406
+ "steps": [
407
+ "opencli operate open https://www.zhihu.com/hot",
408
+ "opencli operate eval \"document.querySelectorAll('.HotItem-content').length\"",
409
+ "opencli operate scroll down --amount 2000",
410
+ "opencli operate wait time 1",
411
+ "opencli operate eval \"document.querySelectorAll('.HotItem-content').length\""
412
+ ],
413
+ "judge": {
414
+ "type": "matchesPattern",
415
+ "pattern": "\\d+"
416
+ }
417
+ },
418
+ {
419
+ "_comment": "=== L5: Write Operations (6 tasks, requires login) ==="
420
+ },
421
+ {
422
+ "name": "zhihu-upvote-button-find",
423
+ "steps": [
424
+ "opencli operate open https://www.zhihu.com/hot",
425
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
426
+ "opencli operate wait time 2",
427
+ "opencli operate eval \"(function(){var btn=document.querySelector('button[aria-label*=赞同]');return btn?JSON.stringify({text:btn.textContent.trim(),ariaLabel:btn.getAttribute('aria-label')}):'no upvote button';})()\""
428
+ ],
429
+ "judge": {
430
+ "type": "contains",
431
+ "value": "赞同"
432
+ },
433
+ "note": "Finds upvote button but does NOT click"
434
+ },
435
+ {
436
+ "name": "zhihu-follow-question-find",
437
+ "steps": [
438
+ "opencli operate open https://www.zhihu.com/hot",
439
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
440
+ "opencli operate wait time 2",
441
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button');for(var i=0;i<btns.length;i++){if(btns[i].textContent.includes('关注问题'))return 'found: '+btns[i].textContent.trim();}return 'not found';})()\""
442
+ ],
443
+ "judge": {
444
+ "type": "contains",
445
+ "value": "关注问题"
446
+ },
447
+ "note": "Finds follow button but does NOT click"
448
+ },
449
+ {
450
+ "name": "zhihu-comment-button-find",
451
+ "steps": [
452
+ "opencli operate open https://www.zhihu.com/hot",
453
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
454
+ "opencli operate wait time 2",
455
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button');for(var i=0;i<btns.length;i++){if(btns[i].textContent.includes('评论'))return 'found: '+btns[i].textContent.trim();}return 'not found';})()\""
456
+ ],
457
+ "judge": {
458
+ "type": "matchesPattern",
459
+ "pattern": "评论"
460
+ },
461
+ "note": "Finds comment button but does NOT click"
462
+ },
463
+ {
464
+ "name": "zhihu-bookmark-find",
465
+ "steps": [
466
+ "opencli operate open https://www.zhihu.com/hot",
467
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
468
+ "opencli operate wait time 2",
469
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button');for(var i=0;i<btns.length;i++){var t=btns[i].textContent.trim();if(t.includes('收藏')||t.includes('Bookmark'))return 'found: '+t;}return 'not found';})()\""
470
+ ],
471
+ "judge": {
472
+ "type": "matchesPattern",
473
+ "pattern": "收藏|found"
474
+ },
475
+ "note": "Finds bookmark button but does NOT click"
476
+ },
477
+ {
478
+ "name": "zhihu-write-answer-btn",
479
+ "steps": [
480
+ "opencli operate open https://www.zhihu.com/hot",
481
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
482
+ "opencli operate wait time 2",
483
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button');for(var i=0;i<btns.length;i++){if(btns[i].textContent.includes('写回答'))return 'found: '+btns[i].textContent.trim();}return 'not found';})()\""
484
+ ],
485
+ "judge": {
486
+ "type": "contains",
487
+ "value": "写回答"
488
+ },
489
+ "note": "Finds write answer button but does NOT click"
490
+ },
491
+ {
492
+ "name": "zhihu-share-find",
493
+ "steps": [
494
+ "opencli operate open https://www.zhihu.com/hot",
495
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
496
+ "opencli operate wait time 2",
497
+ "opencli operate eval \"(function(){var btns=document.querySelectorAll('button');for(var i=0;i<btns.length;i++){if(btns[i].textContent.includes('分享'))return 'found: '+btns[i].textContent.trim();}return 'not found';})()\""
498
+ ],
499
+ "judge": {
500
+ "type": "contains",
501
+ "value": "分享"
502
+ },
503
+ "note": "Finds share button but does NOT click"
504
+ },
505
+ {
506
+ "_comment": "=== L6: Long Chain Workflows (8 tasks) ==="
507
+ },
508
+ {
509
+ "name": "zhihu-hot-read-answer-author",
510
+ "steps": [
511
+ "opencli operate open https://www.zhihu.com/hot",
512
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){a.click();return 'clicked';}return 'none';})()\"",
513
+ "opencli operate wait time 2",
514
+ "opencli operate eval \"(function(){var author=document.querySelector('.AuthorInfo-name')?.textContent?.trim()||'';var content=document.querySelector('.RichContent-inner')?.textContent?.trim()?.slice(0,100)||'';return JSON.stringify({author:author,content:content});})()\""
515
+ ],
516
+ "judge": {
517
+ "type": "matchesPattern",
518
+ "pattern": "\"author\":"
519
+ }
520
+ },
521
+ {
522
+ "name": "zhihu-hot-to-author-profile",
523
+ "steps": [
524
+ "opencli operate open https://www.zhihu.com/hot",
525
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
526
+ "opencli operate wait time 2",
527
+ "opencli operate eval \"(function(){var link=document.querySelector('.AuthorInfo-name a, .UserLink-link');if(link){window.location.href=link.href;return 'going to author';}return 'no author link';})()\"",
528
+ "opencli operate wait time 2",
529
+ "opencli operate eval \"(function(){var name=document.querySelector('h1, .ProfileHeader-name')?.textContent?.trim()||document.title;return name;})()\""
530
+ ],
531
+ "judge": {
532
+ "type": "nonEmpty"
533
+ }
534
+ },
535
+ {
536
+ "name": "zhihu-multi-hot-topics",
537
+ "steps": [
538
+ "opencli operate open https://www.zhihu.com/hot",
539
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.HotItem-content a');var r=[];for(var i=0;i<Math.min(items.length,3);i++){r.push(items[i].textContent.trim().slice(0,40));}return JSON.stringify(r);})()\""
540
+ ],
541
+ "judge": {
542
+ "type": "arrayMinLength",
543
+ "minLength": 3
544
+ }
545
+ },
546
+ {
547
+ "name": "zhihu-search-then-read",
548
+ "steps": [
549
+ "opencli operate open https://www.zhihu.com/search?type=content&q=Python",
550
+ "opencli operate wait time 2",
551
+ "opencli operate eval \"(function(){var a=document.querySelector('.ContentItem-title a, .SearchResult-Card h2 a');if(a){a.click();return 'clicked';}return 'none';})()\"",
552
+ "opencli operate wait time 3",
553
+ "opencli operate eval \"document.querySelector('.QuestionHeader-title, h1')?.textContent?.trim()?.slice(0,80)||document.title\""
554
+ ],
555
+ "judge": {
556
+ "type": "nonEmpty"
557
+ }
558
+ },
559
+ {
560
+ "name": "zhihu-question-scroll-answers",
561
+ "steps": [
562
+ "opencli operate open https://www.zhihu.com/hot",
563
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
564
+ "opencli operate wait time 2",
565
+ "opencli operate scroll down --amount 1000",
566
+ "opencli operate wait time 1",
567
+ "opencli operate eval \"document.querySelectorAll('.RichContent-inner').length\""
568
+ ],
569
+ "judge": {
570
+ "type": "matchesPattern",
571
+ "pattern": "\\d+"
572
+ }
573
+ },
574
+ {
575
+ "name": "zhihu-compare-tabs",
576
+ "steps": [
577
+ "opencli operate open https://www.zhihu.com/",
578
+ "opencli operate eval \"(function(){var a=document.querySelector('h2.ContentItem-title a');return a?a.textContent.trim().slice(0,40):'none';})()\"",
579
+ "opencli operate open https://www.zhihu.com/hot",
580
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');return a?a.textContent.trim().slice(0,40):'none';})()\""
581
+ ],
582
+ "judge": {
583
+ "type": "nonEmpty"
584
+ }
585
+ },
586
+ {
587
+ "name": "zhihu-user-answers",
588
+ "steps": [
589
+ "opencli operate open https://www.zhihu.com/people/excited-vczh/answers",
590
+ "opencli operate wait time 4",
591
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('h2 a, [class*=title] a, [class*=Title] a');var r=[];for(var i=0;i<items.length;i++){var t=items[i].textContent.trim();if(t.length>10&&t.length<100)r.push(t.slice(0,50));}return JSON.stringify(r.slice(0,3));})()\""
592
+ ],
593
+ "judge": {
594
+ "type": "nonEmpty"
595
+ }
596
+ },
597
+ {
598
+ "name": "zhihu-topic-questions",
599
+ "steps": [
600
+ "opencli operate open https://www.zhihu.com/topic/19552832/hot",
601
+ "opencli operate wait time 2",
602
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.ContentItem-title a, h2 a');var r=[];for(var i=0;i<Math.min(items.length,3);i++){var t=items[i].textContent.trim();if(t.length>5)r.push(t.slice(0,50));}return JSON.stringify(r);})()\""
603
+ ],
604
+ "judge": {
605
+ "type": "arrayMinLength",
606
+ "minLength": 1
607
+ }
608
+ },
609
+ {
610
+ "_comment": "=== L7: Search Workflows (6 tasks) ==="
611
+ },
612
+ {
613
+ "name": "zhihu-search-basic",
614
+ "steps": [
615
+ "opencli operate open https://www.zhihu.com/search?type=content&q=AI",
616
+ "opencli operate wait time 5",
617
+ "opencli operate scroll down --amount 300",
618
+ "opencli operate wait time 1",
619
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('h2 a');var r=[];var seen={};for(var i=0;i<items.length;i++){var t=items[i].textContent.trim();if(t.length>5&&t.length<100&&!seen[t]){seen[t]=1;r.push(t.slice(0,50));}}return JSON.stringify(r.slice(0,5));})()\""
620
+ ],
621
+ "judge": {
622
+ "type": "nonEmpty"
623
+ }
624
+ },
625
+ {
626
+ "name": "zhihu-search-people",
627
+ "steps": [
628
+ "opencli operate open https://www.zhihu.com/search?type=people&q=Python",
629
+ "opencli operate wait time 3",
630
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('[class*=UserItem] a, [class*=user] a, .List-item a');var r=[];for(var i=0;i<Math.min(items.length,10);i++){var t=items[i].textContent.trim();if(t.length>1&&t.length<30)r.push(t);}return JSON.stringify(r.slice(0,3));})()\""
631
+ ],
632
+ "judge": {
633
+ "type": "nonEmpty"
634
+ }
635
+ },
636
+ {
637
+ "name": "zhihu-search-topic",
638
+ "steps": [
639
+ "opencli operate open https://www.zhihu.com/search?type=topic&q=编程",
640
+ "opencli operate wait time 3",
641
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('a');var r=[];for(var i=0;i<items.length;i++){var t=items[i].textContent.trim();if(t.length>2&&t.length<30&&(t.includes('编程')||items[i].pathname?.includes('/topic/')))r.push(t);}return JSON.stringify(r.slice(0,3));})()\""
642
+ ],
643
+ "judge": {
644
+ "type": "nonEmpty"
645
+ }
646
+ },
647
+ {
648
+ "name": "zhihu-search-click-result",
649
+ "steps": [
650
+ "opencli operate open https://www.zhihu.com/search?type=content&q=Rust编程",
651
+ "opencli operate wait time 2",
652
+ "opencli operate eval \"(function(){var a=document.querySelector('.ContentItem-title a, h2 a');if(a){a.click();return 'clicked';}return 'none';})()\"",
653
+ "opencli operate wait time 3",
654
+ "opencli operate eval \"document.title\""
655
+ ],
656
+ "judge": {
657
+ "type": "nonEmpty"
658
+ }
659
+ },
660
+ {
661
+ "name": "zhihu-search-filter-answers",
662
+ "steps": [
663
+ "opencli operate open https://www.zhihu.com/search?type=content&q=Docker",
664
+ "opencli operate wait time 2",
665
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.ContentItem');return JSON.stringify({total:items.length,hasAnswers:items.length>0});})()\""
666
+ ],
667
+ "judge": {
668
+ "type": "matchesPattern",
669
+ "pattern": "\"total\":\\d+"
670
+ }
671
+ },
672
+ {
673
+ "name": "zhihu-search-and-back",
674
+ "steps": [
675
+ "opencli operate open https://www.zhihu.com/search?type=content&q=前端开发",
676
+ "opencli operate wait time 5",
677
+ "opencli operate eval \"(function(){var a=document.querySelector('h2 a, [class*=title] a');if(a){a.click();return 'clicked';}return 'none';})()\"",
678
+ "opencli operate wait time 2",
679
+ "opencli operate open https://www.zhihu.com/search?type=content&q=前端开发",
680
+ "opencli operate wait time 3",
681
+ "opencli operate get url"
682
+ ],
683
+ "judge": {
684
+ "type": "contains",
685
+ "value": "search"
686
+ }
687
+ },
688
+ {
689
+ "_comment": "=== L8: Complex Long Chain (6 tasks) ==="
690
+ },
691
+ {
692
+ "name": "zhihu-full-browse-workflow",
693
+ "steps": [
694
+ "opencli operate open https://www.zhihu.com/hot",
695
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.HotItem-content a');var r=[];for(var i=0;i<Math.min(items.length,3);i++){r.push(items[i].textContent.trim().slice(0,30));}return JSON.stringify(r);})()\"",
696
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){a.click();return 'clicked';}return 'none';})()\"",
697
+ "opencli operate wait time 2",
698
+ "opencli operate eval \"(function(){var title=document.querySelector('.QuestionHeader-title')?.textContent?.trim()?.slice(0,60)||'';var answers=document.querySelectorAll('.RichContent-inner').length;return JSON.stringify({title:title,answers:answers});})()\""
699
+ ],
700
+ "judge": {
701
+ "type": "matchesPattern",
702
+ "pattern": "\"title\":"
703
+ }
704
+ },
705
+ {
706
+ "name": "zhihu-deep-author-chain",
707
+ "steps": [
708
+ "opencli operate open https://www.zhihu.com/hot",
709
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'step1';}return 'none';})()\"",
710
+ "opencli operate wait time 2",
711
+ "opencli operate eval \"(function(){var link=document.querySelector('.AuthorInfo-name a');if(link){var name=link.textContent.trim();window.location.href=link.href;return 'step2: '+name;}return 'no author';})()\"",
712
+ "opencli operate wait time 2",
713
+ "opencli operate eval \"(function(){var answers=document.querySelectorAll('.ContentItem-title a');var r=[];for(var i=0;i<Math.min(answers.length,2);i++){r.push(answers[i].textContent.trim().slice(0,40));}return JSON.stringify({profile:document.title,recentAnswers:r});})()\""
714
+ ],
715
+ "judge": {
716
+ "type": "matchesPattern",
717
+ "pattern": "\"profile\":"
718
+ }
719
+ },
720
+ {
721
+ "name": "zhihu-cross-question-compare",
722
+ "steps": [
723
+ "opencli operate open https://www.zhihu.com/hot",
724
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.HotItem-content a');return items.length>=2?JSON.stringify([items[0].textContent.trim().slice(0,30),items[1].textContent.trim().slice(0,30)]):'not enough';})()\"",
725
+ "opencli operate eval \"(function(){var a=document.querySelectorAll('.HotItem-content a')[0];if(a){window.location.href=a.href;return 'q1';}return 'none';})()\"",
726
+ "opencli operate wait time 2",
727
+ "opencli operate eval \"(function(){return JSON.stringify({q1_title:document.querySelector('.QuestionHeader-title')?.textContent?.trim()?.slice(0,40)||'',q1_answers:document.querySelectorAll('.RichContent-inner').length});})()\""
728
+ ],
729
+ "judge": {
730
+ "type": "matchesPattern",
731
+ "pattern": "\"q1_title\":"
732
+ }
733
+ },
734
+ {
735
+ "name": "zhihu-search-read-chain",
736
+ "steps": [
737
+ "opencli operate open https://www.zhihu.com/search?type=content&q=Claude",
738
+ "opencli operate wait time 2",
739
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.ContentItem-title a, h2 a');var r=[];for(var i=0;i<Math.min(items.length,3);i++){r.push(items[i].textContent.trim().slice(0,40));}return JSON.stringify(r);})()\"",
740
+ "opencli operate eval \"(function(){var a=document.querySelector('.ContentItem-title a, h2 a');if(a){a.click();return 'clicked';}return 'none';})()\"",
741
+ "opencli operate wait time 3",
742
+ "opencli operate eval \"document.querySelector('.QuestionHeader-title, h1')?.textContent?.trim()?.slice(0,60)||document.title\""
743
+ ],
744
+ "judge": {
745
+ "type": "nonEmpty"
746
+ }
747
+ },
748
+ {
749
+ "name": "zhihu-3-page-chain",
750
+ "steps": [
751
+ "opencli operate open https://www.zhihu.com/",
752
+ "opencli operate eval \"document.title\"",
753
+ "opencli operate open https://www.zhihu.com/hot",
754
+ "opencli operate eval \"document.querySelectorAll('.HotItem-content').length\"",
755
+ "opencli operate open https://www.zhihu.com/people/excited-vczh",
756
+ "opencli operate wait time 2",
757
+ "opencli operate eval \"document.title\""
758
+ ],
759
+ "judge": {
760
+ "type": "nonEmpty"
761
+ }
762
+ },
763
+ {
764
+ "name": "zhihu-hot-scroll-deep-read",
765
+ "steps": [
766
+ "opencli operate open https://www.zhihu.com/hot",
767
+ "opencli operate scroll down --amount 1000",
768
+ "opencli operate eval \"document.querySelectorAll('.HotItem-content a').length\"",
769
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.HotItem-content a');var last=items[items.length-1];if(last){last.click();return 'clicked last';}return 'none';})()\"",
770
+ "opencli operate wait time 2",
771
+ "opencli operate eval \"(function(){var title=document.querySelector('.QuestionHeader-title')?.textContent?.trim()||document.title;var firstAnswer=document.querySelector('.RichContent-inner')?.textContent?.trim()?.slice(0,100)||'';return JSON.stringify({title:title.slice(0,60),firstAnswer:firstAnswer});})()\""
772
+ ],
773
+ "judge": {
774
+ "type": "matchesPattern",
775
+ "pattern": "\"title\":"
776
+ }
777
+ },
778
+ {
779
+ "_comment": "=== Edge Cases: SPA lazy load, dynamic content ==="
780
+ },
781
+ {
782
+ "name": "zhihu-rapid-navigate",
783
+ "steps": [
784
+ "opencli operate open https://www.zhihu.com/",
785
+ "opencli operate open https://www.zhihu.com/hot",
786
+ "opencli operate open https://www.zhihu.com/people/excited-vczh",
787
+ "opencli operate wait time 2",
788
+ "opencli operate eval \"location.pathname\""
789
+ ],
790
+ "judge": {
791
+ "type": "contains",
792
+ "value": "/people/"
793
+ }
794
+ },
795
+ {
796
+ "name": "zhihu-hot-click-verify-url",
797
+ "steps": [
798
+ "opencli operate open https://www.zhihu.com/hot",
799
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
800
+ "opencli operate wait time 3",
801
+ "opencli operate eval \"location.pathname.startsWith('/question/') ? 'on question page' : 'wrong: '+location.pathname\""
802
+ ],
803
+ "judge": {
804
+ "type": "contains",
805
+ "value": "on question page"
806
+ }
807
+ },
808
+ {
809
+ "name": "zhihu-scroll-lazy-answers",
810
+ "steps": [
811
+ "opencli operate open https://www.zhihu.com/hot",
812
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
813
+ "opencli operate wait time 3",
814
+ "opencli operate eval \"document.querySelectorAll('.RichContent-inner').length\"",
815
+ "opencli operate scroll down --amount 2000",
816
+ "opencli operate wait time 2",
817
+ "opencli operate eval \"document.querySelectorAll('.RichContent-inner').length\""
818
+ ],
819
+ "judge": {
820
+ "type": "matchesPattern",
821
+ "pattern": "\\d+"
822
+ }
823
+ },
824
+ {
825
+ "name": "zhihu-extract-structured",
826
+ "steps": [
827
+ "opencli operate open https://www.zhihu.com/hot",
828
+ "opencli operate eval \"(function(){var items=document.querySelectorAll('.HotItem-content');var r=[];for(var i=0;i<Math.min(items.length,3);i++){var a=items[i].querySelector('a');var m=items[i].closest('[class*=HotItem]')?.querySelector('[class*=metrics]');r.push({title:(a?.textContent||'').trim().slice(0,40),heat:(m?.textContent||'').trim()});}return JSON.stringify(r);})()\""
829
+ ],
830
+ "judge": {
831
+ "type": "arrayMinLength",
832
+ "minLength": 3
833
+ }
834
+ },
835
+ {
836
+ "name": "zhihu-question-answer-chain",
837
+ "steps": [
838
+ "opencli operate open https://www.zhihu.com/hot",
839
+ "opencli operate eval \"(function(){var a=document.querySelector('.HotItem-content a');if(a){window.location.href=a.href;return 'navigating';}return 'none';})()\"",
840
+ "opencli operate wait time 3",
841
+ "opencli operate eval \"(function(){var title=document.querySelector('.QuestionHeader-title')?.textContent?.trim()||'';var answers=document.querySelectorAll('.RichContent-inner');var first=answers[0]?.textContent?.trim()?.slice(0,100)||'';var count=answers.length;return JSON.stringify({title:title.slice(0,50),firstAnswer:first,answerCount:count});})()\""
842
+ ],
843
+ "judge": {
844
+ "type": "matchesPattern",
845
+ "pattern": "\"answerCount\":\\d+"
846
+ }
847
+ }
848
+ ]