dsh-plugin-guide 0.3.27 → 0.3.30

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 (304) hide show
  1. package/README-es.md +3 -3
  2. package/README-hi.md +3 -3
  3. package/README-pt.md +3 -3
  4. package/README-zh.md +5 -3
  5. package/README.md +5 -3
  6. package/SKILL.md +21 -8
  7. package/dist/dsh-plugin-dev.js +93 -18
  8. package/guide/family-toolchain.md +260 -0
  9. package/guide/links.md +3 -2
  10. package/guide/migration-0.2.md +64 -8
  11. package/guide/plugin-dev-guide.md +8 -6
  12. package/guide/quick-reference.es.md +3 -2
  13. package/guide/quick-reference.hi.md +4 -3
  14. package/guide/quick-reference.md +6 -5
  15. package/guide/quick-reference.pt.md +4 -3
  16. package/guide/quick-reference.zh-CN.md +6 -5
  17. package/guide/release-engineering.md +4 -2
  18. package/guide/release-engineering.zh-CN.md +4 -2
  19. package/guide/unfixed-issues.md +7 -0
  20. package/guide/version-matrix.md +309 -0
  21. package/guide/when-to-retire-a-plugin.md +5 -5
  22. package/guide/when-to-retire-a-plugin.zh-CN.md +5 -5
  23. package/index.d.ts +32 -0
  24. package/index.js +24 -9
  25. package/package.json +19 -11
  26. package/references/community-ecosystem.md +2 -1
  27. package/references/dev-resource-landscape.md +294 -0
  28. package/references/official-docs/AGENTS.md +4 -5
  29. package/references/official-docs/SNAPSHOT.md +3 -3
  30. package/references/official-docs/THIRD_PARTY_NOTICES.md +2 -1
  31. package/references/official-docs/docs/AGENTS.md +1 -1
  32. package/references/official-docs/docs/architecture.i18n.yaml +14 -14
  33. package/references/official-docs/docs/architecture.md +11 -12
  34. package/references/official-docs/docs/architecture.zh.md +11 -12
  35. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  36. package/references/official-docs/docs/capability-seams.md +48 -23
  37. package/references/official-docs/docs/capability-seams.zh.md +48 -23
  38. package/references/official-docs/docs/cli-help.i18n.yaml +34 -0
  39. package/references/official-docs/docs/cli-help.md +203 -0
  40. package/references/official-docs/docs/cli-help.zh.md +205 -0
  41. package/references/official-docs/docs/config-catalog.md +305 -145
  42. package/references/official-docs/docs/config-catalog.zh.md +305 -145
  43. package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +6 -6
  44. package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +7 -5
  45. package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +7 -5
  46. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +6 -6
  47. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +11 -9
  48. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +11 -9
  49. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +4 -4
  50. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +5 -5
  51. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +5 -5
  52. package/references/official-docs/docs/defensive-patterns.i18n.yaml +2 -2
  53. package/references/official-docs/docs/defensive-patterns.md +1 -1
  54. package/references/official-docs/docs/defensive-patterns.zh.md +1 -1
  55. package/references/official-docs/docs/development.i18n.yaml +6 -6
  56. package/references/official-docs/docs/development.md +4 -2
  57. package/references/official-docs/docs/development.zh.md +4 -2
  58. package/references/official-docs/docs/event-producer-consumer.md +33 -33
  59. package/references/official-docs/docs/event-producer-consumer.zh.md +33 -33
  60. package/references/official-docs/docs/experimental-persistence-catalog.i18n.yaml +10 -0
  61. package/references/official-docs/docs/experimental-persistence-catalog.md +17 -0
  62. package/references/official-docs/docs/experimental-persistence-catalog.zh.md +17 -0
  63. package/references/official-docs/docs/module-graph.md +202 -131
  64. package/references/official-docs/docs/module-graph.zh.md +202 -131
  65. package/references/official-docs/docs/persistence-catalog.i18n.yaml +185 -158
  66. package/references/official-docs/docs/persistence-catalog.md +213 -112
  67. package/references/official-docs/docs/persistence-catalog.zh.md +213 -112
  68. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.i18n.yaml +28 -0
  69. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.md +48 -0
  70. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.schema.json +76 -0
  71. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.zh.md +48 -0
  72. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +4 -4
  73. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +2 -2
  74. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +2 -2
  75. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.i18n.yaml +28 -0
  76. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.md +48 -0
  77. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.schema.json +290 -0
  78. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.zh.md +48 -0
  79. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.i18n.yaml +28 -0
  80. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.md +48 -0
  81. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.schema.json +457 -0
  82. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +48 -0
  83. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml +28 -0
  84. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.md +60 -0
  85. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.schema.json +11474 -0
  86. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md +60 -0
  87. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.i18n.yaml +28 -0
  88. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.md +48 -0
  89. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.schema.json +2990 -0
  90. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +48 -0
  91. package/references/official-docs/docs/persistence-changes/README.i18n.yaml +4 -4
  92. package/references/official-docs/docs/persistence-changes/README.md +12 -10
  93. package/references/official-docs/docs/persistence-changes/README.zh.md +12 -10
  94. package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +2 -2
  95. package/references/official-docs/docs/persistence-changes/historical-formats/README.md +1 -1
  96. package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +1 -1
  97. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +2 -2
  98. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +50 -50
  99. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +50 -50
  100. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +2 -2
  101. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +14 -14
  102. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +14 -14
  103. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +2 -2
  104. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +3 -3
  105. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +3 -3
  106. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +2 -2
  107. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +10 -10
  108. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +10 -10
  109. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +2 -2
  110. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +3 -3
  111. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +3 -3
  112. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +2 -2
  113. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +13 -13
  114. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +13 -13
  115. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +2 -2
  116. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +63 -63
  117. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +63 -63
  118. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +2 -2
  119. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +54 -54
  120. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +54 -54
  121. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +2 -2
  122. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +7 -7
  123. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +7 -7
  124. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +2 -2
  125. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +27 -27
  126. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +27 -27
  127. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +2 -2
  128. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +4 -4
  129. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +4 -4
  130. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +2 -2
  131. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +27 -27
  132. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +27 -27
  133. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +2 -2
  134. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +7 -7
  135. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +7 -7
  136. package/references/official-docs/docs/persistence-schema.json +2084 -1827
  137. package/references/official-docs/docs/session-format-status.i18n.yaml +6 -6
  138. package/references/official-docs/docs/session-format-status.md +6 -6
  139. package/references/official-docs/docs/session-format-status.zh.md +6 -6
  140. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  141. package/references/official-docs/docs/subsystems/README.md +4 -1
  142. package/references/official-docs/docs/subsystems/README.zh.md +4 -1
  143. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +7 -7
  144. package/references/official-docs/docs/subsystems/agent-team.md +10 -10
  145. package/references/official-docs/docs/subsystems/agent-team.zh.md +10 -10
  146. package/references/official-docs/docs/subsystems/boot.i18n.yaml +2 -2
  147. package/references/official-docs/docs/subsystems/boot.md +4 -4
  148. package/references/official-docs/docs/subsystems/boot.zh.md +4 -4
  149. package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +2 -2
  150. package/references/official-docs/docs/subsystems/claude-code-mods.md +1 -1
  151. package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +1 -1
  152. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
  153. package/references/official-docs/docs/subsystems/jobs.md +2 -3
  154. package/references/official-docs/docs/subsystems/jobs.zh.md +2 -3
  155. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +4 -4
  156. package/references/official-docs/docs/subsystems/llm-streaming.md +41 -14
  157. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +41 -14
  158. package/references/official-docs/docs/subsystems/persistence.md +2 -0
  159. package/references/official-docs/docs/subsystems/persistence.zh.md +2 -0
  160. package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
  161. package/references/official-docs/docs/subsystems/plan.md +1 -1
  162. package/references/official-docs/docs/subsystems/plan.zh.md +1 -1
  163. package/references/official-docs/docs/subsystems/session-query.md +2 -0
  164. package/references/official-docs/docs/subsystems/session-query.zh.md +2 -0
  165. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +6 -6
  166. package/references/official-docs/docs/subsystems/session-title.md +14 -5
  167. package/references/official-docs/docs/subsystems/session-title.zh.md +14 -5
  168. package/references/official-docs/docs/subsystems/session.i18n.yaml +3 -0
  169. package/references/official-docs/docs/subsystems/session.md +48 -5
  170. package/references/official-docs/docs/subsystems/session.zh.md +48 -5
  171. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  172. package/references/official-docs/docs/subsystems/skills.md +2 -2
  173. package/references/official-docs/docs/subsystems/skills.zh.md +2 -2
  174. package/references/official-docs/docs/subsystems/slots.md +10 -8
  175. package/references/official-docs/docs/subsystems/slots.zh.md +10 -8
  176. package/references/official-docs/docs/subsystems/ssh.i18n.yaml +2 -2
  177. package/references/official-docs/docs/subsystems/ssh.md +22 -11
  178. package/references/official-docs/docs/subsystems/ssh.zh.md +22 -11
  179. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +24 -27
  180. package/references/official-docs/docs/subsystems/subagent.md +165 -229
  181. package/references/official-docs/docs/subsystems/subagent.zh.md +167 -233
  182. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  183. package/references/official-docs/docs/subsystems/system-prompt.md +32 -2
  184. package/references/official-docs/docs/subsystems/system-prompt.zh.md +32 -2
  185. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  186. package/references/official-docs/docs/subsystems/tools.md +3 -3
  187. package/references/official-docs/docs/subsystems/tools.zh.md +3 -3
  188. package/references/official-docs/docs/subsystems/translation.i18n.yaml +19 -0
  189. package/references/official-docs/docs/subsystems/translation.md +103 -0
  190. package/references/official-docs/docs/subsystems/translation.zh.md +103 -0
  191. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +8 -8
  192. package/references/official-docs/docs/subsystems/web-server.md +43 -8
  193. package/references/official-docs/docs/subsystems/web-server.zh.md +43 -8
  194. package/references/official-docs/docs/subsystems/webhook.md +1 -1
  195. package/references/official-docs/docs/subsystems/webhook.zh.md +1 -1
  196. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  197. package/references/official-docs/docs/subsystems/workflow.md +1 -1
  198. package/references/official-docs/docs/subsystems/workflow.zh.md +1 -1
  199. package/references/official-docs/docs/subsystems/working-directory.i18n.yaml +13 -0
  200. package/references/official-docs/docs/subsystems/working-directory.md +64 -0
  201. package/references/official-docs/docs/subsystems/working-directory.zh.md +64 -0
  202. package/references/official-docs/docs/subsystems/workspace.md +2 -2
  203. package/references/official-docs/docs/subsystems/workspace.zh.md +2 -2
  204. package/references/official-docs/docs/subsystems/worktrees.i18n.yaml +13 -0
  205. package/references/official-docs/docs/subsystems/worktrees.md +76 -0
  206. package/references/official-docs/docs/subsystems/worktrees.zh.md +76 -0
  207. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  208. package/references/official-docs/docs/testing.md +1 -1
  209. package/references/official-docs/docs/testing.zh.md +1 -1
  210. package/references/official-docs/docs/tool-catalog.i18n.yaml +57 -45
  211. package/references/official-docs/docs/tool-catalog.md +95 -41
  212. package/references/official-docs/docs/tool-catalog.zh.md +99 -45
  213. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.i18n.yaml +16 -0
  214. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.md +18 -0
  215. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +18 -0
  216. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.i18n.yaml +16 -0
  217. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +17 -0
  218. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +17 -0
  219. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.i18n.yaml +16 -0
  220. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +18 -0
  221. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +18 -0
  222. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.i18n.yaml +16 -0
  223. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +28 -0
  224. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +28 -0
  225. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.i18n.yaml +16 -0
  226. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +20 -0
  227. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +20 -0
  228. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.i18n.yaml +16 -0
  229. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +17 -0
  230. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +17 -0
  231. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.i18n.yaml +16 -0
  232. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +31 -0
  233. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +31 -0
  234. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.i18n.yaml +16 -0
  235. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +20 -0
  236. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +20 -0
  237. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.i18n.yaml +16 -0
  238. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +20 -0
  239. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +20 -0
  240. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.i18n.yaml +16 -0
  241. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +18 -0
  242. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +18 -0
  243. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.i18n.yaml +16 -0
  244. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -0
  245. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -0
  246. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.i18n.yaml +16 -0
  247. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +18 -0
  248. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +18 -0
  249. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.i18n.yaml +16 -0
  250. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +20 -0
  251. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +20 -0
  252. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.i18n.yaml +16 -0
  253. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +19 -0
  254. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +19 -0
  255. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.i18n.yaml +16 -0
  256. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +59 -0
  257. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +59 -0
  258. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.i18n.yaml +16 -0
  259. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +21 -0
  260. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +21 -0
  261. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.i18n.yaml +16 -0
  262. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +18 -0
  263. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +18 -0
  264. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.i18n.yaml +16 -0
  265. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +21 -0
  266. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +21 -0
  267. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.i18n.yaml +16 -0
  268. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +36 -0
  269. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +36 -0
  270. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.i18n.yaml +16 -0
  271. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +25 -0
  272. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +25 -0
  273. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +4 -4
  274. package/references/official-docs/docs/user/guide/github-review.md +7 -10
  275. package/references/official-docs/docs/user/guide/github-review.zh.md +7 -10
  276. package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +8 -8
  277. package/references/official-docs/docs/user/guide/public-deployments.md +9 -5
  278. package/references/official-docs/docs/user/guide/public-deployments.zh.md +9 -5
  279. package/references/official-docs/packages/README.md +4 -6
  280. package/references/official-docs/website-docs.ts +1 -0
  281. package/references/official-plugin-dev-skill.md +2 -2
  282. package/references/sources.md +2 -1
  283. package/scripts/archive-discussions.ps1 +162 -162
  284. package/scripts/build-llms-full.mjs +8 -0
  285. package/scripts/check-docs-drift.ps1 +55 -55
  286. package/scripts/check-ps1-bom.mjs +68 -0
  287. package/scripts/download-community-articles.ps1 +188 -188
  288. package/scripts/download-community-repos.ps1 +232 -232
  289. package/scripts/download-sources.ps1 +195 -195
  290. package/scripts/gen-topic-snapshot.ps1 +91 -91
  291. package/scripts/install-skill.ps1 +63 -63
  292. package/scripts/sync-official-docs.ps1 +138 -138
  293. package/scripts/verify-artifacts.mjs +26 -0
  294. package/scripts/verify-kit.ps1 +197 -187
  295. package/templates/js/README-es.md +1 -1
  296. package/templates/js/README-hi.md +1 -1
  297. package/templates/js/README-pt.md +1 -1
  298. package/templates/js/README-zh.md +1 -1
  299. package/templates/js/README.md +1 -1
  300. package/templates/ts/README-es.md +1 -1
  301. package/templates/ts/README-hi.md +1 -1
  302. package/templates/ts/README-pt.md +1 -1
  303. package/templates/ts/README-zh.md +1 -1
  304. package/templates/ts/README.md +1 -1
@@ -1,232 +1,232 @@
1
- # 社区插件开发相关仓库全量下载(tarball)脚本
2
- # 输出: dsh-plugin-guide/downloads/community-repos/<repo>/
3
- # 刷新策略: codeload HEAD 请求的 ETag 对比(内容变更即重新下载);记录在 downloads/community-repos/_heads.tsv。
4
- # 传输: 纯 curl + codeload(main -> master -> HEAD 分支回退),不消耗 GitHub API 配额,也不依赖 git 进程。
5
- # 参数: -Force 忽略 ETag 对比,强制全部重下; -Slice <n> -Slices <m> 只处理第 n/m 段(1-based),
6
- # 此时日志与 heads 写入 _download.s<n>.log / _heads.s<n>.tsv,由调用方自行合并。
7
- param([switch]$Force, [int]$Slice = 0, [int]$Slices = 1, [switch]$OnlyMissing)
8
- $ErrorActionPreference = 'Continue'
9
- $ProgressPreference = 'SilentlyContinue'
10
-
11
- $kb = Split-Path $PSScriptRoot -Parent
12
- $dl = Join-Path $kb 'downloads\community-repos'
13
- New-Item -ItemType Directory -Force -Path $dl | Out-Null
14
-
15
- # 后台/受限环境 PATH 可能缺失 curl/tar:逐一下落
16
- $curl = Get-Command curl.exe -ErrorAction SilentlyContinue
17
- if (-not $curl) { if (Test-Path "$env:SystemRoot\System32\curl.exe") { $curl = "$env:SystemRoot\System32\curl.exe" } else { $curl = 'curl.exe' } }
18
- $tar = Get-Command tar.exe -ErrorAction SilentlyContinue
19
- if (-not $tar) { if (Test-Path "$env:SystemRoot\System32\tar.exe") { $tar = "$env:SystemRoot\System32\tar.exe" } else { $tar = 'tar.exe' } }
20
-
21
- $repos = @(
22
- # 第一批:08-13/14 首批深读的 15 个插件开发仓库
23
- 'omdsh-dev/plugin-template',
24
- 'omdsh-dev/dsh-plugin-skills',
25
- 'omdsh-dev/dsh-plugin-dev',
26
- 'vlln/plugin-registry',
27
- 'omdsh-dev/fabric',
28
- 'whyihaveyou/dsh-suite',
29
- 'omdsh-dev/dsh-plugin-check',
30
- 'Opr4Mp3r/deepseek-harness-plugin-from-scratch',
31
- 'randerous/dsh-turn-meta',
32
- 'bobleer/deepseek-harness-plugin-mcp',
33
- 'Nagi-ovo/dsh-find-plugins',
34
- 'omdsh-dev/dsh-hub-workshop',
35
- 'AdamPlatin123/awesome-dsh-plugins',
36
- 'bruc3van/awesome-dsh-plugin',
37
- 'Alex-Yanggg/awesome-DSH-plugin',
38
- # 第二批:08-14 上午清单(awesome/市场/候选,此前未归档)
39
- 'walkinglabs/awesome-deepseek-harness-plugins',
40
- 'vvlife/awesome-deepseek-harness-plugins',
41
- 'cccakeee/awesome-dsh-plugins',
42
- 'bradeGithub/DSH-Plugins-Marketplace',
43
- 'Toukaiteio/dsh-plugin-installer',
44
- 'Scorp1o117/dsh-plugin-marketplace',
45
- 'NanmiCoder/dsh-agent-teams',
46
- 'vibeinging/dsh-tool-search',
47
- 'zhu1090093659/dsh-web-ui',
48
- 'ccch1mneyyy/dsh-cc-tui',
49
- 'dataelement/dsh-desktop',
50
- 'hust-open-atom-club/oh-dsh-desktop',
51
- 'lhh010/dsh-bash-encoding',
52
- 'Nagi-ovo/dsh-visualize',
53
- # 第三批:08-14 晚间 GitHub 生态扫描(高优先级 26 个文档型仓库)
54
- 'flaqai/deepeseek-harness-guide',
55
- 'Electricitysheep/dsh-handbook',
56
- 'JingHao-Leon/deepseek-harness-guide',
57
- 'flysheep-ai/learn_deepseek_harness',
58
- 'pingfanfan/hello-dsh',
59
- 'LaplaceYoung/dsh-book-deepseek-harness',
60
- 'yanhua1010/dsh-harness-tutorial',
61
- 'hoco-scy/deepseek-harness-deep-dive',
62
- 'libukai/awesome-deepseek-harness',
63
- 'sandbaseai/deepseek-harness-handbook',
64
- 'openma-ai/deepseek-harness-typescript-sdk',
65
- 'h565656445/dsh-llm-agent-harness-guide',
66
- 'h565656445/dsh-agent-os-worker-protocol',
67
- 'cyanseek/dsh-native-playbook',
68
- 'whyihaveyou/dsh-plugin-tutorial',
69
- 'DumplingHuman/dsh-plugin-tutorial',
70
- 'anweat/dsh-plugin-dev-guide',
71
- 'Hubert-hwk/dsh-for-humans',
72
- 'yangl326-Dylan/learning-dsh',
73
- 'curtiseng/cordis-course',
74
- 'THU-MAIC/dsh-openmaic',
75
- 'qomob/DSHwiki',
76
- 'calderbuild/awesome-deepseek-harness',
77
- 'njdldkl666699/dsh-learning',
78
- 'Loner1024/deepseek-harness-sdk-rs',
79
- 'dshworks/howto-dsh',
80
- # 第四批:skill 集合/契约规范/含实质开发知识(中优先级 19 个)
81
- 'dhicoc/dsh-reverse-skill',
82
- 'phoenixlucky/zerotoken-skill',
83
- 'unknowbug/anchorlaw',
84
- 'w2112515/dsh-plugin-development',
85
- 'OneZero-Y/dsh-plugin-kit',
86
- 'akira399/dsh-plugin-publisher',
87
- 'LeslieWylie/dsh-plugin-release',
88
- 'LeslieWylie/dsh-benchmark-evidence',
89
- 'LeslieWylie/dsh-agent-orchestration',
90
- 'dongsheng123132/task-passport',
91
- 'Tostoevsky/TsienHsueShen',
92
- 'Whning0513/awesome-deepseek-skills',
93
- 'Jesse-njx/dsh-skillport',
94
- 'green-dalii/dsh-plugin-dev-skill',
95
- 'RayYeung1989/dsh-plugin-development',
96
- 'SmileTao/dsh-plugin-dev-skill',
97
- 'Leeaoyin/dr-agent-skills',
98
- 'KhalilYamber/hana-dsh-bridge',
99
- 'ieookm/agent-to-dsh-migration',
100
- # 第五批:目录/市场/awesome 索引(低优先级 20 个,README 即文档)
101
- 'kejixiaoliang/awesome-dsh-plugins',
102
- 'like-study1/Oh-My-DSH',
103
- 'zp-home/dsh-recommend',
104
- 'white0dew/awesome-dsh-plugins',
105
- 'wangshunnn/oh-my-dsh',
106
- 'billLiao/awesome-dsh-plugin',
107
- 'YYTbit/awesome-dsh-bridges',
108
- 'HackSing/dsh-plugins',
109
- 'xiaohai-78/Top',
110
- '2BingLing/dsh-market',
111
- 'lwmxiaobei/dsh-plugins',
112
- 'dshworks/awesome-dsh-themes',
113
- 'dshworks/awesome-dsh-plugins',
114
- 'dsh-pub/dsh-pub',
115
- 'cooljser/dsh-plugin-portal',
116
- 'WatchaAI/awesome-deepseek-harness-plugins',
117
- 'imsai-sh/awesome-deepseek-harness-plugins',
118
- 'xianyu110/awesome-deepseek-harness',
119
- 'openguardrails/openguardrails',
120
- 'Bandersnatch0x/amber-protocol',
121
- # 第六批:中英文社区扫描补充(教程仓库/Tauri 壳)
122
- 'onychen/learn-dsh',
123
- 'alchaincyf/deepseek-harness-orange-book',
124
- 'bobleer/deepseek-harness-gui',
125
- # 第七批:08-15 上午增量扫描(web_search 新线索:桌面端/QAT 桥接/安全 PoC/awesome/Python 移植/Termux)
126
- 'anywhere-labs/deepseek-harness-desktop',
127
- 'cc1252/deepseek-harness-desktop',
128
- 'LisiChen0/DeepSeek-Harness-Desktop',
129
- 'Skyearn/deepseek-harness-app',
130
- 'salathleizhang/deepseek-harness-desktop',
131
- 'ChisaAlter/Deepseek-Harness-Desktop',
132
- 'hairyf/deepseek-harness-desktop',
133
- 'banana770/dsh-qq-bridge',
134
- 'mishibeikejie/zat-dsh-engine',
135
- 'beancookie/awesome-dsh-plugin',
136
- 'Vengisk/deepseek-harness-termux',
137
- 'zzszmyf/dsh-security-pocs',
138
- 'HenryZ838978/deepseek-harness',
139
- 'Lyowisee/deepseek-harness',
140
- # 第八批:08-15 午间补充(主题注册表/WhaleHub 市场/dsh-market 组织)
141
- 'orxz/deepseek-harness-themes',
142
- 'vvlife/whalehub-dsh',
143
- 'dsh-market/dsh-market'
144
- )
145
-
146
- $headsFile = Join-Path $dl '_heads.tsv'
147
- $logFile = Join-Path $dl '_download.log'
148
-
149
- # 同名仓库消歧: 清单中多个 owner 有同名仓库(如 4 个 awesome-dsh-plugins、7 个 deepseek-harness-desktop),
150
- # 且 Windows 文件系统大小写不敏感——裸 repo 名互相覆盖会丢数据。规则: 首个出现者保留裸名
151
- # (兼容既有文档引用), 后续同名者用 "<owner>-<repo>" 目录名。
152
- # 必须在切片之前对全量清单计算: 切片后每片只见子集, 跨片的同名会误判(08-15 真实踩坑)。
153
- $seenNames = @{}
154
- $dirNames = @{}
155
- foreach ($r in $repos) {
156
- $owner, $repoName = $r -split '/'
157
- $repoKey = $repoName.ToLowerInvariant()
158
- if ($seenNames.ContainsKey($repoKey)) { $dirNames[$r] = "$owner-$repoName" } else { $seenNames[$repoKey] = $true; $dirNames[$r] = $repoName }
159
- }
160
-
161
- if ($Slice -gt 0 -and $Slices -gt 1) {
162
- $headsFile = Join-Path $dl ("_heads.s{0}.tsv" -f $Slice)
163
- $logFile = Join-Path $dl ("_download.s{0}.log" -f $Slice)
164
- # 注意: 切片数学必须先算进变量再传给 Select-Object——PS 5.1 会把裸的 [Math]::Ceiling(...)
165
- # 当成字符串参数导致绑定失败(切片失效, 多进程重跑全量互相踩踏, 08-15 真实踩坑)。
166
- $sliceSize = [Math]::Ceiling($repos.Count / $Slices)
167
- $sliceStart = ($Slice - 1) * $sliceSize
168
- $repos = @($repos | Select-Object -Skip $sliceStart -First $sliceSize)
169
- }
170
- $heads = @{}
171
- if ((Test-Path $headsFile) -and -not $Force) {
172
- Get-Content $headsFile -Encoding UTF8 | ForEach-Object {
173
- if ($_ -match '^(.+)\t(.+)$') { $heads[$matches[1]] = $matches[2] }
174
- }
175
- }
176
-
177
- $log = New-Object System.Collections.Generic.List[string]
178
- foreach ($r in $repos) {
179
- $owner, $repo = $r -split '/'
180
- $repoDir = Join-Path $dl $dirNames[$r]
181
- # -OnlyMissing: 只补清单中本地缺失的仓库(已有目录跳过下载;仍会探测 ETag 写入 heads,便于后续增量刷新)。
182
- $exists = (Test-Path $repoDir) -and (Get-ChildItem $repoDir -File -ErrorAction SilentlyContinue)
183
- if ($OnlyMissing -and $exists -and -not $Force) {
184
- $hdr2 = & $curl -sI --connect-timeout 10 --max-time 30 "https://codeload.github.com/$r/tar.gz/HEAD" 2>&1 | Out-String
185
- if ($hdr2 -match '(?i)etag:\s*"?((?:W/)?[0-9a-fA-F]+)"?') { $heads[$r] = $matches[1]; $log.Add("KEEP`t$r`tlocal-exists") }
186
- else { $log.Add("KEEP`t$r`tlocal-exists(etag-probe-miss)") }
187
- continue
188
- }
189
- # 全部走 curl + codeload(后台沙箱对 git 进程的对外连接不稳定,curl 带 connect/max 超时最可靠)。
190
- # 刷新标记用 codeload 的 ETag(内容变更即变化):分支探测 main -> master -> HEAD 三级回退。
191
- $branch = ''
192
- $etag = ''
193
- foreach ($cand in @('refs/heads/main','refs/heads/master','HEAD')) {
194
- $hdr = & $curl -sI --connect-timeout 10 --max-time 40 "https://codeload.github.com/$r/tar.gz/$cand" 2>&1 | Out-String
195
- if ($hdr -match 'HTTP/\S+\s+200') {
196
- $branch = $cand
197
- # ETag 形如 ETag: "abc..."(弱 ETag 为 W/"abc..."):正则可选跳过 W/ 前缀,完整捕获引号内十六进制值。
198
- # 修复历史: 旧正则带 ^ 锚点(-match 非多行,永远匹配不到中间行的 etag)且 W/ 前缀为必选,导致 etag 恒为空、Substring(0,12) 越界、heads 记录损坏——08-15 修复。
199
- if ($hdr -match '(?i)etag:\s*"?((?:W/)?[0-9a-fA-F]+)"?') { $etag = $matches[1] }
200
- break
201
- }
202
- }
203
- if (-not $branch) { $log.Add("FAIL`t$r`thead-request-failed(404?)"); continue }
204
- $etagShort = $etag
205
- if ($etagShort.Length -gt 12) { $etagShort = $etagShort.Substring(0, 12) }
206
- $downloaded = (Test-Path $repoDir) -and (Get-ChildItem $repoDir -File -ErrorAction SilentlyContinue)
207
- if (-not $Force -and $downloaded -and $heads.ContainsKey($r) -and $etag -and $heads[$r] -eq $etag) {
208
- $log.Add("SKIP`t$r`tup-to-date@$etagShort"); continue
209
- }
210
- $tgz = Join-Path $dl ($dirNames[$r] + '.tar.gz')
211
- $code = & $curl -sS -L --retry 1 --retry-delay 2 --connect-timeout 10 --max-time 120 -o $tgz -w '%{http_code}' "https://codeload.github.com/$r/tar.gz/$branch" 2>&1
212
- if ($code -match '^2' -and (Test-Path $tgz) -and (Get-Item $tgz).Length -gt 1024) {
213
- $tmp = Join-Path $dl ("_" + $dirNames[$r])
214
- if (Test-Path $tmp) { Remove-Item $tmp -Recurse -Force }
215
- New-Item -ItemType Directory -Force -Path $tmp | Out-Null
216
- & $tar -xzf $tgz -C $tmp 2>&1 | Out-Null
217
- $extracted = Get-ChildItem $tmp -Directory | Select-Object -First 1
218
- if ($extracted) {
219
- if (Test-Path $repoDir) { Remove-Item $repoDir -Recurse -Force }
220
- Move-Item $extracted.FullName $repoDir
221
- Remove-Item $tmp -Recurse -Force -ErrorAction SilentlyContinue
222
- $n = (Get-ChildItem $repoDir -Recurse -File | Measure-Object).Count
223
- $heads[$r] = $etag
224
- $log.Add("OK`t$r`tbranch=$branch`tfiles=$n`tetag=$etagShort")
225
- } else { $log.Add("FAIL`t$r`textract-empty") }
226
- } else { $log.Add("FAIL`t$r`thttp=$code") }
227
- if (Test-Path $tgz) { Remove-Item $tgz -Force }
228
- }
229
- $heads.GetEnumerator() | Sort-Object Key | ForEach-Object { "{0}`t{1}" -f $_.Key, $_.Value } | Set-Content $headsFile -Encoding UTF8
230
- $log | Set-Content $logFile -Encoding UTF8
231
- Write-Output ('DONE: ' + $log.Count + ' repos -> ' + $logFile)
232
- $log | Write-Output
1
+ # 社区插件开发相关仓库全量下载(tarball)脚本
2
+ # 输出: dsh-plugin-guide/downloads/community-repos/<repo>/
3
+ # 刷新策略: codeload HEAD 请求的 ETag 对比(内容变更即重新下载);记录在 downloads/community-repos/_heads.tsv。
4
+ # 传输: 纯 curl + codeload(main -> master -> HEAD 分支回退),不消耗 GitHub API 配额,也不依赖 git 进程。
5
+ # 参数: -Force 忽略 ETag 对比,强制全部重下; -Slice <n> -Slices <m> 只处理第 n/m 段(1-based),
6
+ # 此时日志与 heads 写入 _download.s<n>.log / _heads.s<n>.tsv,由调用方自行合并。
7
+ param([switch]$Force, [int]$Slice = 0, [int]$Slices = 1, [switch]$OnlyMissing)
8
+ $ErrorActionPreference = 'Continue'
9
+ $ProgressPreference = 'SilentlyContinue'
10
+
11
+ $kb = Split-Path $PSScriptRoot -Parent
12
+ $dl = Join-Path $kb 'downloads\community-repos'
13
+ New-Item -ItemType Directory -Force -Path $dl | Out-Null
14
+
15
+ # 后台/受限环境 PATH 可能缺失 curl/tar:逐一下落
16
+ $curl = Get-Command curl.exe -ErrorAction SilentlyContinue
17
+ if (-not $curl) { if (Test-Path "$env:SystemRoot\System32\curl.exe") { $curl = "$env:SystemRoot\System32\curl.exe" } else { $curl = 'curl.exe' } }
18
+ $tar = Get-Command tar.exe -ErrorAction SilentlyContinue
19
+ if (-not $tar) { if (Test-Path "$env:SystemRoot\System32\tar.exe") { $tar = "$env:SystemRoot\System32\tar.exe" } else { $tar = 'tar.exe' } }
20
+
21
+ $repos = @(
22
+ # 第一批:08-13/14 首批深读的 15 个插件开发仓库
23
+ 'omdsh-dev/plugin-template',
24
+ 'omdsh-dev/dsh-plugin-skills',
25
+ 'omdsh-dev/dsh-plugin-dev',
26
+ 'vlln/plugin-registry',
27
+ 'omdsh-dev/fabric',
28
+ 'whyihaveyou/dsh-suite',
29
+ 'omdsh-dev/dsh-plugin-check',
30
+ 'Opr4Mp3r/deepseek-harness-plugin-from-scratch',
31
+ 'randerous/dsh-turn-meta',
32
+ 'bobleer/deepseek-harness-plugin-mcp',
33
+ 'Nagi-ovo/dsh-find-plugins',
34
+ 'omdsh-dev/dsh-hub-workshop',
35
+ 'AdamPlatin123/awesome-dsh-plugins',
36
+ 'bruc3van/awesome-dsh-plugin',
37
+ 'Alex-Yanggg/awesome-DSH-plugin',
38
+ # 第二批:08-14 上午清单(awesome/市场/候选,此前未归档)
39
+ 'walkinglabs/awesome-deepseek-harness-plugins',
40
+ 'vvlife/awesome-deepseek-harness-plugins',
41
+ 'cccakeee/awesome-dsh-plugins',
42
+ 'bradeGithub/DSH-Plugins-Marketplace',
43
+ 'Toukaiteio/dsh-plugin-installer',
44
+ 'Scorp1o117/dsh-plugin-marketplace',
45
+ 'NanmiCoder/dsh-agent-teams',
46
+ 'vibeinging/dsh-tool-search',
47
+ 'zhu1090093659/dsh-web-ui',
48
+ 'ccch1mneyyy/dsh-cc-tui',
49
+ 'dataelement/dsh-desktop',
50
+ 'hust-open-atom-club/oh-dsh-desktop',
51
+ 'lhh010/dsh-bash-encoding',
52
+ 'Nagi-ovo/dsh-visualize',
53
+ # 第三批:08-14 晚间 GitHub 生态扫描(高优先级 26 个文档型仓库)
54
+ 'flaqai/deepeseek-harness-guide',
55
+ 'Electricitysheep/dsh-handbook',
56
+ 'JingHao-Leon/deepseek-harness-guide',
57
+ 'flysheep-ai/learn_deepseek_harness',
58
+ 'pingfanfan/hello-dsh',
59
+ 'LaplaceYoung/dsh-book-deepseek-harness',
60
+ 'yanhua1010/dsh-harness-tutorial',
61
+ 'hoco-scy/deepseek-harness-deep-dive',
62
+ 'libukai/awesome-deepseek-harness',
63
+ 'sandbaseai/deepseek-harness-handbook',
64
+ 'openma-ai/deepseek-harness-typescript-sdk',
65
+ 'h565656445/dsh-llm-agent-harness-guide',
66
+ 'h565656445/dsh-agent-os-worker-protocol',
67
+ 'cyanseek/dsh-native-playbook',
68
+ 'whyihaveyou/dsh-plugin-tutorial',
69
+ 'DumplingHuman/dsh-plugin-tutorial',
70
+ 'anweat/dsh-plugin-dev-guide',
71
+ 'Hubert-hwk/dsh-for-humans',
72
+ 'yangl326-Dylan/learning-dsh',
73
+ 'curtiseng/cordis-course',
74
+ 'THU-MAIC/dsh-openmaic',
75
+ 'qomob/DSHwiki',
76
+ 'calderbuild/awesome-deepseek-harness',
77
+ 'njdldkl666699/dsh-learning',
78
+ 'Loner1024/deepseek-harness-sdk-rs',
79
+ 'dshworks/howto-dsh',
80
+ # 第四批:skill 集合/契约规范/含实质开发知识(中优先级 19 个)
81
+ 'dhicoc/dsh-reverse-skill',
82
+ 'phoenixlucky/zerotoken-skill',
83
+ 'unknowbug/anchorlaw',
84
+ 'w2112515/dsh-plugin-development',
85
+ 'OneZero-Y/dsh-plugin-kit',
86
+ 'akira399/dsh-plugin-publisher',
87
+ 'LeslieWylie/dsh-plugin-release',
88
+ 'LeslieWylie/dsh-benchmark-evidence',
89
+ 'LeslieWylie/dsh-agent-orchestration',
90
+ 'dongsheng123132/task-passport',
91
+ 'Tostoevsky/TsienHsueShen',
92
+ 'Whning0513/awesome-deepseek-skills',
93
+ 'Jesse-njx/dsh-skillport',
94
+ 'green-dalii/dsh-plugin-dev-skill',
95
+ 'RayYeung1989/dsh-plugin-development',
96
+ 'SmileTao/dsh-plugin-dev-skill',
97
+ 'Leeaoyin/dr-agent-skills',
98
+ 'KhalilYamber/hana-dsh-bridge',
99
+ 'ieookm/agent-to-dsh-migration',
100
+ # 第五批:目录/市场/awesome 索引(低优先级 20 个,README 即文档)
101
+ 'kejixiaoliang/awesome-dsh-plugins',
102
+ 'like-study1/Oh-My-DSH',
103
+ 'zp-home/dsh-recommend',
104
+ 'white0dew/awesome-dsh-plugins',
105
+ 'wangshunnn/oh-my-dsh',
106
+ 'billLiao/awesome-dsh-plugin',
107
+ 'YYTbit/awesome-dsh-bridges',
108
+ 'HackSing/dsh-plugins',
109
+ 'xiaohai-78/Top',
110
+ '2BingLing/dsh-market',
111
+ 'lwmxiaobei/dsh-plugins',
112
+ 'dshworks/awesome-dsh-themes',
113
+ 'dshworks/awesome-dsh-plugins',
114
+ 'dsh-pub/dsh-pub',
115
+ 'cooljser/dsh-plugin-portal',
116
+ 'WatchaAI/awesome-deepseek-harness-plugins',
117
+ 'imsai-sh/awesome-deepseek-harness-plugins',
118
+ 'xianyu110/awesome-deepseek-harness',
119
+ 'openguardrails/openguardrails',
120
+ 'Bandersnatch0x/amber-protocol',
121
+ # 第六批:中英文社区扫描补充(教程仓库/Tauri 壳)
122
+ 'onychen/learn-dsh',
123
+ 'alchaincyf/deepseek-harness-orange-book',
124
+ 'bobleer/deepseek-harness-gui',
125
+ # 第七批:08-15 上午增量扫描(web_search 新线索:桌面端/QAT 桥接/安全 PoC/awesome/Python 移植/Termux)
126
+ 'anywhere-labs/deepseek-harness-desktop',
127
+ 'cc1252/deepseek-harness-desktop',
128
+ 'LisiChen0/DeepSeek-Harness-Desktop',
129
+ 'Skyearn/deepseek-harness-app',
130
+ 'salathleizhang/deepseek-harness-desktop',
131
+ 'ChisaAlter/Deepseek-Harness-Desktop',
132
+ 'hairyf/deepseek-harness-desktop',
133
+ 'banana770/dsh-qq-bridge',
134
+ 'mishibeikejie/zat-dsh-engine',
135
+ 'beancookie/awesome-dsh-plugin',
136
+ 'Vengisk/deepseek-harness-termux',
137
+ 'zzszmyf/dsh-security-pocs',
138
+ 'HenryZ838978/deepseek-harness',
139
+ 'Lyowisee/deepseek-harness',
140
+ # 第八批:08-15 午间补充(主题注册表/WhaleHub 市场/dsh-market 组织)
141
+ 'orxz/deepseek-harness-themes',
142
+ 'vvlife/whalehub-dsh',
143
+ 'dsh-market/dsh-market'
144
+ )
145
+
146
+ $headsFile = Join-Path $dl '_heads.tsv'
147
+ $logFile = Join-Path $dl '_download.log'
148
+
149
+ # 同名仓库消歧: 清单中多个 owner 有同名仓库(如 4 个 awesome-dsh-plugins、7 个 deepseek-harness-desktop),
150
+ # 且 Windows 文件系统大小写不敏感——裸 repo 名互相覆盖会丢数据。规则: 首个出现者保留裸名
151
+ # (兼容既有文档引用), 后续同名者用 "<owner>-<repo>" 目录名。
152
+ # 必须在切片之前对全量清单计算: 切片后每片只见子集, 跨片的同名会误判(08-15 真实踩坑)。
153
+ $seenNames = @{}
154
+ $dirNames = @{}
155
+ foreach ($r in $repos) {
156
+ $owner, $repoName = $r -split '/'
157
+ $repoKey = $repoName.ToLowerInvariant()
158
+ if ($seenNames.ContainsKey($repoKey)) { $dirNames[$r] = "$owner-$repoName" } else { $seenNames[$repoKey] = $true; $dirNames[$r] = $repoName }
159
+ }
160
+
161
+ if ($Slice -gt 0 -and $Slices -gt 1) {
162
+ $headsFile = Join-Path $dl ("_heads.s{0}.tsv" -f $Slice)
163
+ $logFile = Join-Path $dl ("_download.s{0}.log" -f $Slice)
164
+ # 注意: 切片数学必须先算进变量再传给 Select-Object——PS 5.1 会把裸的 [Math]::Ceiling(...)
165
+ # 当成字符串参数导致绑定失败(切片失效, 多进程重跑全量互相踩踏, 08-15 真实踩坑)。
166
+ $sliceSize = [Math]::Ceiling($repos.Count / $Slices)
167
+ $sliceStart = ($Slice - 1) * $sliceSize
168
+ $repos = @($repos | Select-Object -Skip $sliceStart -First $sliceSize)
169
+ }
170
+ $heads = @{}
171
+ if ((Test-Path $headsFile) -and -not $Force) {
172
+ Get-Content $headsFile -Encoding UTF8 | ForEach-Object {
173
+ if ($_ -match '^(.+)\t(.+)$') { $heads[$matches[1]] = $matches[2] }
174
+ }
175
+ }
176
+
177
+ $log = New-Object System.Collections.Generic.List[string]
178
+ foreach ($r in $repos) {
179
+ $owner, $repo = $r -split '/'
180
+ $repoDir = Join-Path $dl $dirNames[$r]
181
+ # -OnlyMissing: 只补清单中本地缺失的仓库(已有目录跳过下载;仍会探测 ETag 写入 heads,便于后续增量刷新)。
182
+ $exists = (Test-Path $repoDir) -and (Get-ChildItem $repoDir -File -ErrorAction SilentlyContinue)
183
+ if ($OnlyMissing -and $exists -and -not $Force) {
184
+ $hdr2 = & $curl -sI --connect-timeout 10 --max-time 30 "https://codeload.github.com/$r/tar.gz/HEAD" 2>&1 | Out-String
185
+ if ($hdr2 -match '(?i)etag:\s*"?((?:W/)?[0-9a-fA-F]+)"?') { $heads[$r] = $matches[1]; $log.Add("KEEP`t$r`tlocal-exists") }
186
+ else { $log.Add("KEEP`t$r`tlocal-exists(etag-probe-miss)") }
187
+ continue
188
+ }
189
+ # 全部走 curl + codeload(后台沙箱对 git 进程的对外连接不稳定,curl 带 connect/max 超时最可靠)。
190
+ # 刷新标记用 codeload 的 ETag(内容变更即变化):分支探测 main -> master -> HEAD 三级回退。
191
+ $branch = ''
192
+ $etag = ''
193
+ foreach ($cand in @('refs/heads/main','refs/heads/master','HEAD')) {
194
+ $hdr = & $curl -sI --connect-timeout 10 --max-time 40 "https://codeload.github.com/$r/tar.gz/$cand" 2>&1 | Out-String
195
+ if ($hdr -match 'HTTP/\S+\s+200') {
196
+ $branch = $cand
197
+ # ETag 形如 ETag: "abc..."(弱 ETag 为 W/"abc..."):正则可选跳过 W/ 前缀,完整捕获引号内十六进制值。
198
+ # 修复历史: 旧正则带 ^ 锚点(-match 非多行,永远匹配不到中间行的 etag)且 W/ 前缀为必选,导致 etag 恒为空、Substring(0,12) 越界、heads 记录损坏——08-15 修复。
199
+ if ($hdr -match '(?i)etag:\s*"?((?:W/)?[0-9a-fA-F]+)"?') { $etag = $matches[1] }
200
+ break
201
+ }
202
+ }
203
+ if (-not $branch) { $log.Add("FAIL`t$r`thead-request-failed(404?)"); continue }
204
+ $etagShort = $etag
205
+ if ($etagShort.Length -gt 12) { $etagShort = $etagShort.Substring(0, 12) }
206
+ $downloaded = (Test-Path $repoDir) -and (Get-ChildItem $repoDir -File -ErrorAction SilentlyContinue)
207
+ if (-not $Force -and $downloaded -and $heads.ContainsKey($r) -and $etag -and $heads[$r] -eq $etag) {
208
+ $log.Add("SKIP`t$r`tup-to-date@$etagShort"); continue
209
+ }
210
+ $tgz = Join-Path $dl ($dirNames[$r] + '.tar.gz')
211
+ $code = & $curl -sS -L --retry 1 --retry-delay 2 --connect-timeout 10 --max-time 120 -o $tgz -w '%{http_code}' "https://codeload.github.com/$r/tar.gz/$branch" 2>&1
212
+ if ($code -match '^2' -and (Test-Path $tgz) -and (Get-Item $tgz).Length -gt 1024) {
213
+ $tmp = Join-Path $dl ("_" + $dirNames[$r])
214
+ if (Test-Path $tmp) { Remove-Item $tmp -Recurse -Force }
215
+ New-Item -ItemType Directory -Force -Path $tmp | Out-Null
216
+ & $tar -xzf $tgz -C $tmp 2>&1 | Out-Null
217
+ $extracted = Get-ChildItem $tmp -Directory | Select-Object -First 1
218
+ if ($extracted) {
219
+ if (Test-Path $repoDir) { Remove-Item $repoDir -Recurse -Force }
220
+ Move-Item $extracted.FullName $repoDir
221
+ Remove-Item $tmp -Recurse -Force -ErrorAction SilentlyContinue
222
+ $n = (Get-ChildItem $repoDir -Recurse -File | Measure-Object).Count
223
+ $heads[$r] = $etag
224
+ $log.Add("OK`t$r`tbranch=$branch`tfiles=$n`tetag=$etagShort")
225
+ } else { $log.Add("FAIL`t$r`textract-empty") }
226
+ } else { $log.Add("FAIL`t$r`thttp=$code") }
227
+ if (Test-Path $tgz) { Remove-Item $tgz -Force }
228
+ }
229
+ $heads.GetEnumerator() | Sort-Object Key | ForEach-Object { "{0}`t{1}" -f $_.Key, $_.Value } | Set-Content $headsFile -Encoding UTF8
230
+ $log | Set-Content $logFile -Encoding UTF8
231
+ Write-Output ('DONE: ' + $log.Count + ' repos -> ' + $logFile)
232
+ $log | Write-Output