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.
- package/README-es.md +3 -3
- package/README-hi.md +3 -3
- package/README-pt.md +3 -3
- package/README-zh.md +5 -3
- package/README.md +5 -3
- package/SKILL.md +21 -8
- package/dist/dsh-plugin-dev.js +93 -18
- package/guide/family-toolchain.md +260 -0
- package/guide/links.md +3 -2
- package/guide/migration-0.2.md +64 -8
- package/guide/plugin-dev-guide.md +8 -6
- package/guide/quick-reference.es.md +3 -2
- package/guide/quick-reference.hi.md +4 -3
- package/guide/quick-reference.md +6 -5
- package/guide/quick-reference.pt.md +4 -3
- package/guide/quick-reference.zh-CN.md +6 -5
- package/guide/release-engineering.md +4 -2
- package/guide/release-engineering.zh-CN.md +4 -2
- package/guide/unfixed-issues.md +7 -0
- package/guide/version-matrix.md +309 -0
- package/guide/when-to-retire-a-plugin.md +5 -5
- package/guide/when-to-retire-a-plugin.zh-CN.md +5 -5
- package/index.d.ts +32 -0
- package/index.js +24 -9
- package/package.json +19 -11
- package/references/community-ecosystem.md +2 -1
- package/references/dev-resource-landscape.md +294 -0
- package/references/official-docs/AGENTS.md +4 -5
- package/references/official-docs/SNAPSHOT.md +3 -3
- package/references/official-docs/THIRD_PARTY_NOTICES.md +2 -1
- package/references/official-docs/docs/AGENTS.md +1 -1
- package/references/official-docs/docs/architecture.i18n.yaml +14 -14
- package/references/official-docs/docs/architecture.md +11 -12
- package/references/official-docs/docs/architecture.zh.md +11 -12
- package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
- package/references/official-docs/docs/capability-seams.md +48 -23
- package/references/official-docs/docs/capability-seams.zh.md +48 -23
- package/references/official-docs/docs/cli-help.i18n.yaml +34 -0
- package/references/official-docs/docs/cli-help.md +203 -0
- package/references/official-docs/docs/cli-help.zh.md +205 -0
- package/references/official-docs/docs/config-catalog.md +305 -145
- package/references/official-docs/docs/config-catalog.zh.md +305 -145
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +6 -6
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +7 -5
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +7 -5
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +6 -6
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +11 -9
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +11 -9
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +4 -4
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +5 -5
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +5 -5
- package/references/official-docs/docs/defensive-patterns.i18n.yaml +2 -2
- package/references/official-docs/docs/defensive-patterns.md +1 -1
- package/references/official-docs/docs/defensive-patterns.zh.md +1 -1
- package/references/official-docs/docs/development.i18n.yaml +6 -6
- package/references/official-docs/docs/development.md +4 -2
- package/references/official-docs/docs/development.zh.md +4 -2
- package/references/official-docs/docs/event-producer-consumer.md +33 -33
- package/references/official-docs/docs/event-producer-consumer.zh.md +33 -33
- package/references/official-docs/docs/experimental-persistence-catalog.i18n.yaml +10 -0
- package/references/official-docs/docs/experimental-persistence-catalog.md +17 -0
- package/references/official-docs/docs/experimental-persistence-catalog.zh.md +17 -0
- package/references/official-docs/docs/module-graph.md +202 -131
- package/references/official-docs/docs/module-graph.zh.md +202 -131
- package/references/official-docs/docs/persistence-catalog.i18n.yaml +185 -158
- package/references/official-docs/docs/persistence-catalog.md +213 -112
- package/references/official-docs/docs/persistence-catalog.zh.md +213 -112
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.schema.json +76 -0
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +4 -4
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +2 -2
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +2 -2
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.schema.json +290 -0
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.schema.json +457 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.md +60 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.schema.json +11474 -0
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md +60 -0
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.schema.json +2990 -0
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/README.i18n.yaml +4 -4
- package/references/official-docs/docs/persistence-changes/README.md +12 -10
- package/references/official-docs/docs/persistence-changes/README.zh.md +12 -10
- package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/historical-formats/README.md +1 -1
- package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +1 -1
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +50 -50
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +50 -50
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +14 -14
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +14 -14
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +3 -3
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +3 -3
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +10 -10
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +10 -10
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +3 -3
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +3 -3
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +13 -13
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +13 -13
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +63 -63
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +63 -63
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +54 -54
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +54 -54
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +7 -7
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +7 -7
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +27 -27
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +27 -27
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +4 -4
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +4 -4
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +27 -27
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +27 -27
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +7 -7
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +7 -7
- package/references/official-docs/docs/persistence-schema.json +2084 -1827
- package/references/official-docs/docs/session-format-status.i18n.yaml +6 -6
- package/references/official-docs/docs/session-format-status.md +6 -6
- package/references/official-docs/docs/session-format-status.zh.md +6 -6
- package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/README.md +4 -1
- package/references/official-docs/docs/subsystems/README.zh.md +4 -1
- package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +7 -7
- package/references/official-docs/docs/subsystems/agent-team.md +10 -10
- package/references/official-docs/docs/subsystems/agent-team.zh.md +10 -10
- package/references/official-docs/docs/subsystems/boot.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/boot.md +4 -4
- package/references/official-docs/docs/subsystems/boot.zh.md +4 -4
- package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/claude-code-mods.md +1 -1
- package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +1 -1
- package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/jobs.md +2 -3
- package/references/official-docs/docs/subsystems/jobs.zh.md +2 -3
- package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +4 -4
- package/references/official-docs/docs/subsystems/llm-streaming.md +41 -14
- package/references/official-docs/docs/subsystems/llm-streaming.zh.md +41 -14
- package/references/official-docs/docs/subsystems/persistence.md +2 -0
- package/references/official-docs/docs/subsystems/persistence.zh.md +2 -0
- package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/plan.md +1 -1
- package/references/official-docs/docs/subsystems/plan.zh.md +1 -1
- package/references/official-docs/docs/subsystems/session-query.md +2 -0
- package/references/official-docs/docs/subsystems/session-query.zh.md +2 -0
- package/references/official-docs/docs/subsystems/session-title.i18n.yaml +6 -6
- package/references/official-docs/docs/subsystems/session-title.md +14 -5
- package/references/official-docs/docs/subsystems/session-title.zh.md +14 -5
- package/references/official-docs/docs/subsystems/session.i18n.yaml +3 -0
- package/references/official-docs/docs/subsystems/session.md +48 -5
- package/references/official-docs/docs/subsystems/session.zh.md +48 -5
- package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/skills.md +2 -2
- package/references/official-docs/docs/subsystems/skills.zh.md +2 -2
- package/references/official-docs/docs/subsystems/slots.md +10 -8
- package/references/official-docs/docs/subsystems/slots.zh.md +10 -8
- package/references/official-docs/docs/subsystems/ssh.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/ssh.md +22 -11
- package/references/official-docs/docs/subsystems/ssh.zh.md +22 -11
- package/references/official-docs/docs/subsystems/subagent.i18n.yaml +24 -27
- package/references/official-docs/docs/subsystems/subagent.md +165 -229
- package/references/official-docs/docs/subsystems/subagent.zh.md +167 -233
- package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/system-prompt.md +32 -2
- package/references/official-docs/docs/subsystems/system-prompt.zh.md +32 -2
- package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/tools.md +3 -3
- package/references/official-docs/docs/subsystems/tools.zh.md +3 -3
- package/references/official-docs/docs/subsystems/translation.i18n.yaml +19 -0
- package/references/official-docs/docs/subsystems/translation.md +103 -0
- package/references/official-docs/docs/subsystems/translation.zh.md +103 -0
- package/references/official-docs/docs/subsystems/web-server.i18n.yaml +8 -8
- package/references/official-docs/docs/subsystems/web-server.md +43 -8
- package/references/official-docs/docs/subsystems/web-server.zh.md +43 -8
- package/references/official-docs/docs/subsystems/webhook.md +1 -1
- package/references/official-docs/docs/subsystems/webhook.zh.md +1 -1
- package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/workflow.md +1 -1
- package/references/official-docs/docs/subsystems/workflow.zh.md +1 -1
- package/references/official-docs/docs/subsystems/working-directory.i18n.yaml +13 -0
- package/references/official-docs/docs/subsystems/working-directory.md +64 -0
- package/references/official-docs/docs/subsystems/working-directory.zh.md +64 -0
- package/references/official-docs/docs/subsystems/workspace.md +2 -2
- package/references/official-docs/docs/subsystems/workspace.zh.md +2 -2
- package/references/official-docs/docs/subsystems/worktrees.i18n.yaml +13 -0
- package/references/official-docs/docs/subsystems/worktrees.md +76 -0
- package/references/official-docs/docs/subsystems/worktrees.zh.md +76 -0
- package/references/official-docs/docs/testing.i18n.yaml +2 -2
- package/references/official-docs/docs/testing.md +1 -1
- package/references/official-docs/docs/testing.zh.md +1 -1
- package/references/official-docs/docs/tool-catalog.i18n.yaml +57 -45
- package/references/official-docs/docs/tool-catalog.md +95 -41
- package/references/official-docs/docs/tool-catalog.zh.md +99 -45
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +17 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +17 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +28 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +28 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +17 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +17 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +31 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +31 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +20 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +19 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +19 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +59 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +59 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +21 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +21 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +21 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +21 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +36 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +36 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +25 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +25 -0
- package/references/official-docs/docs/user/guide/github-review.i18n.yaml +4 -4
- package/references/official-docs/docs/user/guide/github-review.md +7 -10
- package/references/official-docs/docs/user/guide/github-review.zh.md +7 -10
- package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +8 -8
- package/references/official-docs/docs/user/guide/public-deployments.md +9 -5
- package/references/official-docs/docs/user/guide/public-deployments.zh.md +9 -5
- package/references/official-docs/packages/README.md +4 -6
- package/references/official-docs/website-docs.ts +1 -0
- package/references/official-plugin-dev-skill.md +2 -2
- package/references/sources.md +2 -1
- package/scripts/archive-discussions.ps1 +162 -162
- package/scripts/build-llms-full.mjs +8 -0
- package/scripts/check-docs-drift.ps1 +55 -55
- package/scripts/check-ps1-bom.mjs +68 -0
- package/scripts/download-community-articles.ps1 +188 -188
- package/scripts/download-community-repos.ps1 +232 -232
- package/scripts/download-sources.ps1 +195 -195
- package/scripts/gen-topic-snapshot.ps1 +91 -91
- package/scripts/install-skill.ps1 +63 -63
- package/scripts/sync-official-docs.ps1 +138 -138
- package/scripts/verify-artifacts.mjs +26 -0
- package/scripts/verify-kit.ps1 +197 -187
- package/templates/js/README-es.md +1 -1
- package/templates/js/README-hi.md +1 -1
- package/templates/js/README-pt.md +1 -1
- package/templates/js/README-zh.md +1 -1
- package/templates/js/README.md +1 -1
- package/templates/ts/README-es.md +1 -1
- package/templates/ts/README-hi.md +1 -1
- package/templates/ts/README-pt.md +1 -1
- package/templates/ts/README-zh.md +1 -1
- package/templates/ts/README.md +1 -1
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
# dsh-plugin-guide official-docs freshness probe.
|
|
2
|
-
# Purpose: detect drift between the KB mirror (references/official-docs) and the
|
|
3
|
-
# upstream deepseek-harness repository WITHOUT a local checkout. It compares the
|
|
4
|
-
# upstream branch tip SHA (git ls-remote) against the pinned "Source commit" SHA
|
|
5
|
-
# recorded in references/official-docs/SNAPSHOT.md — the SHA-locked authority the
|
|
6
|
-
# mirror was synced from. It never edits the mirror; drift is only reported.
|
|
7
|
-
# Usage: pwsh -File scripts/check-docs-drift.ps1 [-Repo <url>] [-Branch <name>] [-Snapshot <path>] [-FailOnDrift]
|
|
8
|
-
# Exit codes: 0 = FRESH, 1 = DRIFT (with -FailOnDrift), 2 = probe could not run (snapshot/parse/fetch failure).
|
|
9
|
-
# In CI it also writes `drift=yes|no|error` to $env:GITHUB_OUTPUT when that variable is set.
|
|
10
|
-
param(
|
|
11
|
-
[string]$Repo = 'https://github.com/deepseek-ai/deepseek-harness.git',
|
|
12
|
-
[string]$Branch = 'master',
|
|
13
|
-
[string]$Snapshot = 'references/official-docs/SNAPSHOT.md',
|
|
14
|
-
[switch]$FailOnDrift
|
|
15
|
-
)
|
|
16
|
-
$ErrorActionPreference = 'Stop'
|
|
17
|
-
$kit = Split-Path $PSScriptRoot -Parent
|
|
18
|
-
$snapshotPath = Join-Path $kit $Snapshot
|
|
19
|
-
|
|
20
|
-
# ---- 1) Read the pinned source commit SHA from SNAPSHOT.md ----
|
|
21
|
-
$pinned = $null
|
|
22
|
-
if (-not (Test-Path $snapshotPath)) { Write-Error "snapshot not found: $snapshotPath"; exit 2 }
|
|
23
|
-
foreach ($line in Get-Content $snapshotPath -Encoding UTF8) {
|
|
24
|
-
if ($line -match '^\|\s*Source commit\s*\|\s*`([0-9a-f]{40})`\s*\|') {
|
|
25
|
-
$pinned = $Matches[1]
|
|
26
|
-
break
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (-not $pinned) { Write-Error "cannot parse the pinned 'Source commit' SHA from $Snapshot"; exit 2 }
|
|
30
|
-
|
|
31
|
-
# ---- 2) Fetch the upstream branch tip SHA (no clone required) ----
|
|
32
|
-
$remoteLine = (& git ls-remote $Repo "refs/heads/$Branch" 2>$null | Select-Object -First 1)
|
|
33
|
-
if (-not $remoteLine -or $remoteLine -notmatch '^([0-9a-f]{40})\s') {
|
|
34
|
-
$message = "cannot reach upstream $Repo (branch $Branch)"
|
|
35
|
-
Write-Output "ERROR: $message"
|
|
36
|
-
if ($env:GITHUB_OUTPUT) { Add-Content -Path $env:GITHUB_OUTPUT -Value 'drift=error' }
|
|
37
|
-
exit 2
|
|
38
|
-
}
|
|
39
|
-
$upstream = $Matches[1]
|
|
40
|
-
|
|
41
|
-
# ---- 3) Compare and report ----
|
|
42
|
-
$fresh = ($upstream -eq $pinned)
|
|
43
|
-
Write-Output "pinned (SNAPSHOT.md): $pinned"
|
|
44
|
-
Write-Output "upstream ($Branch): $upstream"
|
|
45
|
-
if ($fresh) {
|
|
46
|
-
Write-Output 'FRESH: references/official-docs matches the upstream branch tip'
|
|
47
|
-
} else {
|
|
48
|
-
Write-Output "DRIFT: references/official-docs is pinned to $pinned but upstream is at $upstream"
|
|
49
|
-
Write-Output 'Action: run pwsh -File scripts/sync-official-docs.ps1 to refresh the mirror (do not hand-edit the mirror).'
|
|
50
|
-
}
|
|
51
|
-
if ($env:GITHUB_OUTPUT) {
|
|
52
|
-
Add-Content -Path $env:GITHUB_OUTPUT -Value ($(if ($fresh) { 'drift=no' } else { 'drift=yes' }))
|
|
53
|
-
}
|
|
54
|
-
if (-not $fresh -and $FailOnDrift) { exit 1 }
|
|
55
|
-
exit 0
|
|
1
|
+
# dsh-plugin-guide official-docs freshness probe.
|
|
2
|
+
# Purpose: detect drift between the KB mirror (references/official-docs) and the
|
|
3
|
+
# upstream deepseek-harness repository WITHOUT a local checkout. It compares the
|
|
4
|
+
# upstream branch tip SHA (git ls-remote) against the pinned "Source commit" SHA
|
|
5
|
+
# recorded in references/official-docs/SNAPSHOT.md — the SHA-locked authority the
|
|
6
|
+
# mirror was synced from. It never edits the mirror; drift is only reported.
|
|
7
|
+
# Usage: pwsh -File scripts/check-docs-drift.ps1 [-Repo <url>] [-Branch <name>] [-Snapshot <path>] [-FailOnDrift]
|
|
8
|
+
# Exit codes: 0 = FRESH, 1 = DRIFT (with -FailOnDrift), 2 = probe could not run (snapshot/parse/fetch failure).
|
|
9
|
+
# In CI it also writes `drift=yes|no|error` to $env:GITHUB_OUTPUT when that variable is set.
|
|
10
|
+
param(
|
|
11
|
+
[string]$Repo = 'https://github.com/deepseek-ai/deepseek-harness.git',
|
|
12
|
+
[string]$Branch = 'master',
|
|
13
|
+
[string]$Snapshot = 'references/official-docs/SNAPSHOT.md',
|
|
14
|
+
[switch]$FailOnDrift
|
|
15
|
+
)
|
|
16
|
+
$ErrorActionPreference = 'Stop'
|
|
17
|
+
$kit = Split-Path $PSScriptRoot -Parent
|
|
18
|
+
$snapshotPath = Join-Path $kit $Snapshot
|
|
19
|
+
|
|
20
|
+
# ---- 1) Read the pinned source commit SHA from SNAPSHOT.md ----
|
|
21
|
+
$pinned = $null
|
|
22
|
+
if (-not (Test-Path $snapshotPath)) { Write-Error "snapshot not found: $snapshotPath"; exit 2 }
|
|
23
|
+
foreach ($line in Get-Content $snapshotPath -Encoding UTF8) {
|
|
24
|
+
if ($line -match '^\|\s*Source commit\s*\|\s*`([0-9a-f]{40})`\s*\|') {
|
|
25
|
+
$pinned = $Matches[1]
|
|
26
|
+
break
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (-not $pinned) { Write-Error "cannot parse the pinned 'Source commit' SHA from $Snapshot"; exit 2 }
|
|
30
|
+
|
|
31
|
+
# ---- 2) Fetch the upstream branch tip SHA (no clone required) ----
|
|
32
|
+
$remoteLine = (& git ls-remote $Repo "refs/heads/$Branch" 2>$null | Select-Object -First 1)
|
|
33
|
+
if (-not $remoteLine -or $remoteLine -notmatch '^([0-9a-f]{40})\s') {
|
|
34
|
+
$message = "cannot reach upstream $Repo (branch $Branch)"
|
|
35
|
+
Write-Output "ERROR: $message"
|
|
36
|
+
if ($env:GITHUB_OUTPUT) { Add-Content -Path $env:GITHUB_OUTPUT -Value 'drift=error' }
|
|
37
|
+
exit 2
|
|
38
|
+
}
|
|
39
|
+
$upstream = $Matches[1]
|
|
40
|
+
|
|
41
|
+
# ---- 3) Compare and report ----
|
|
42
|
+
$fresh = ($upstream -eq $pinned)
|
|
43
|
+
Write-Output "pinned (SNAPSHOT.md): $pinned"
|
|
44
|
+
Write-Output "upstream ($Branch): $upstream"
|
|
45
|
+
if ($fresh) {
|
|
46
|
+
Write-Output 'FRESH: references/official-docs matches the upstream branch tip'
|
|
47
|
+
} else {
|
|
48
|
+
Write-Output "DRIFT: references/official-docs is pinned to $pinned but upstream is at $upstream"
|
|
49
|
+
Write-Output 'Action: run pwsh -File scripts/sync-official-docs.ps1 to refresh the mirror (do not hand-edit the mirror).'
|
|
50
|
+
}
|
|
51
|
+
if ($env:GITHUB_OUTPUT) {
|
|
52
|
+
Add-Content -Path $env:GITHUB_OUTPUT -Value ($(if ($fresh) { 'drift=no' } else { 'drift=yes' }))
|
|
53
|
+
}
|
|
54
|
+
if (-not $fresh -and $FailOnDrift) { exit 1 }
|
|
55
|
+
exit 0
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Assert every PowerShell script under scripts/ keeps its UTF-8 BOM.
|
|
2
|
+
//
|
|
3
|
+
// Why this exists: PowerShell 5.1 (Windows PowerShell - the only shell on a
|
|
4
|
+
// machine without pwsh) decodes a BOM-less script as ANSI/CP936. `verify-kit.ps1`
|
|
5
|
+
// carries ~1.6 KB of Chinese comments and messages, so the mis-decode corrupts
|
|
6
|
+
// the source and the parser fails with "Missing ')' in method call". That is the
|
|
7
|
+
// repository's own recorded convention (`references/sources.md`), and on
|
|
8
|
+
// 2026-10-13 `verify-kit.ps1` was found to be the only one of nine scripts
|
|
9
|
+
// missing its BOM - and therefore unusable on PowerShell 5.1, which was
|
|
10
|
+
// invisible to CI because CI runs it under `pwsh`, where a missing BOM is
|
|
11
|
+
// harmless.
|
|
12
|
+
//
|
|
13
|
+
// Deliberately implemented in Node, not PowerShell: it must run on the Linux CI
|
|
14
|
+
// runner and on a machine whose only PowerShell is the 5.1 that cannot read the
|
|
15
|
+
// file in the first place.
|
|
16
|
+
|
|
17
|
+
import { readdirSync, readFileSync } from 'node:fs'
|
|
18
|
+
import { join } from 'node:path'
|
|
19
|
+
|
|
20
|
+
const dir = join(process.cwd(), 'scripts')
|
|
21
|
+
const BOM = [0xef, 0xbb, 0xbf]
|
|
22
|
+
|
|
23
|
+
/** True when the buffer starts with a UTF-8 BOM. */
|
|
24
|
+
function hasBom(buf) {
|
|
25
|
+
return buf.length >= 3 && buf[0] === BOM[0] && buf[1] === BOM[1] && buf[2] === BOM[2]
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Count bytes above ASCII, i.e. how much a mis-decode could corrupt. */
|
|
29
|
+
function nonAsciiBytes(buf) {
|
|
30
|
+
let n = 0
|
|
31
|
+
for (const b of buf) if (b > 127) n++
|
|
32
|
+
return n
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const scripts = readdirSync(dir)
|
|
36
|
+
.filter((f) => f.toLowerCase().endsWith('.ps1'))
|
|
37
|
+
.sort()
|
|
38
|
+
|
|
39
|
+
const problems = []
|
|
40
|
+
const rows = []
|
|
41
|
+
|
|
42
|
+
for (const file of scripts) {
|
|
43
|
+
const buf = readFileSync(join(dir, file))
|
|
44
|
+
const bom = hasBom(buf)
|
|
45
|
+
const nonAscii = nonAsciiBytes(buf)
|
|
46
|
+
rows.push({ file, bom, nonAscii, bytes: buf.length })
|
|
47
|
+
// A BOM matters most when the file contains non-ASCII text; for a pure-ASCII
|
|
48
|
+
// script a missing BOM is harmless, so report it without failing.
|
|
49
|
+
if (!bom && nonAscii > 0) {
|
|
50
|
+
problems.push(
|
|
51
|
+
`${file}: ${nonAscii} non-ASCII bytes but no UTF-8 BOM - PowerShell 5.1 will mis-decode this script`,
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
for (const r of rows) {
|
|
57
|
+
const flag = !r.bom && r.nonAscii > 0 ? 'FAIL' : r.bom ? 'ok ' : 'warn'
|
|
58
|
+
console.log(`${flag} ${r.file.padEnd(34)} bom=${String(r.bom).padEnd(5)} nonAscii=${String(r.nonAscii).padEnd(5)} bytes=${r.bytes}`)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (problems.length > 0) {
|
|
62
|
+
console.error('\nps1-bom: FAIL')
|
|
63
|
+
for (const p of problems) console.error(' ' + p)
|
|
64
|
+
console.error('\nFix: prepend EF BB BF to the file (keep the content byte-identical otherwise).')
|
|
65
|
+
process.exit(1)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
console.log(`\nps1-bom OK (${scripts.length} scripts; every non-ASCII one carries a BOM)`)
|
|
@@ -1,188 +1,188 @@
|
|
|
1
|
-
# dsh-plugin-guide 社区文章归档脚本(幂等:已存在且非空则跳过)
|
|
2
|
-
# 输出: downloads/web/community-articles/{zh,en,hn}/<slug>.html + _download.log + README.md
|
|
3
|
-
# 来源: downloads/_research/{chinese,english}-community-scan.md 中标 200 的 URL + 08-15 增量扫描线索。
|
|
4
|
-
# 已知反爬站(知乎/InfoQ/venturebeat/thenextweb/twitter/youtube/reddit/腾讯新闻 501 等)不在清单内,记录见两份扫描报告。
|
|
5
|
-
# 注意: PS 5.1 下 curl 的 -A/-o 参数若经变量数组传入会被拆词;本脚本用 Invoke-Expression
|
|
6
|
-
# 拼完整命令行字符串,引号在字符串内显式给出,规避该坑。
|
|
7
|
-
# 参数: -Force 强制全部重下; -Lang zh|en|hn 只处理某语言段。
|
|
8
|
-
param([switch]$Force, [string]$Lang = '')
|
|
9
|
-
$ErrorActionPreference = 'Continue'
|
|
10
|
-
$ProgressPreference = 'SilentlyContinue'
|
|
11
|
-
|
|
12
|
-
$kb = Split-Path $PSScriptRoot -Parent
|
|
13
|
-
$out = Join-Path $kb 'downloads\web\community-articles'
|
|
14
|
-
$ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36'
|
|
15
|
-
$curl = Get-Command curl.exe -ErrorAction SilentlyContinue
|
|
16
|
-
if (-not $curl) { $curl = "$env:SystemRoot\System32\curl.exe" } else { $curl = $curl.Source }
|
|
17
|
-
|
|
18
|
-
# slug => url(语言段前缀 zh:/en:/hn: 决定落盘目录)
|
|
19
|
-
$list = @(
|
|
20
|
-
# ---------- zh ----------
|
|
21
|
-
'zh:cnblogs-pc2005-npm-publish = https://www.cnblogs.com/pc2005/p/22477987',
|
|
22
|
-
'zh:cnblogs-qq8864-session-export = https://www.cnblogs.com/qq8864/articles/22476471',
|
|
23
|
-
'zh:cnblogs-qq8864-plugin-vs-tool = https://www.cnblogs.com/qq8864/articles/22478648',
|
|
24
|
-
'zh:csdn-yuqingteck-hello-tool = https://yuqingteck.blog.csdn.net/article/details/163735126',
|
|
25
|
-
'zh:cnblogs-sing1ee-agent-loop = https://www.cnblogs.com/sing1ee/p/22479295',
|
|
26
|
-
'zh:cnblogs-sing1ee-guide = https://www.cnblogs.com/sing1ee/p/22455466',
|
|
27
|
-
'zh:cnblogs-knqiufan-context = https://www.cnblogs.com/knqiufan/p/22472410',
|
|
28
|
-
'zh:cnblogs-foxcharon-install = https://www.cnblogs.com/foxcharon/p/22467976',
|
|
29
|
-
'zh:cnblogs-pc2005-getting-started = https://www.cnblogs.com/pc2005/p/22477984',
|
|
30
|
-
'zh:cnblogs-adgine-ai-engineering = https://www.cnblogs.com/adgine-ai/articles/22473232',
|
|
31
|
-
'zh:cnblogs-itech-architecture = https://www.cnblogs.com/itech/p/22460843',
|
|
32
|
-
'zh:cnblogs-isLinXu-analysis = https://www.cnblogs.com/isLinXu/p/22457058',
|
|
33
|
-
'zh:csdn-damodev-monorepo = https://damodev.csdn.net/6a7dd787662f9a54cb9c6da0.html',
|
|
34
|
-
'zh:51cto-v4pro-runtime = https://www.51cto.com/article/852965.html',
|
|
35
|
-
'zh:51cto-blog-observability = https://blog.51cto.com/u_16175471/14797309',
|
|
36
|
-
'zh:aliyun-first-tutorial = https://developer.aliyun.com/article/1755786',
|
|
37
|
-
'zh:aliyun-everything-plugin = https://developer.aliyun.com/article/1755877',
|
|
38
|
-
'zh:bibigpt-skill-video = https://bibigpt.co/zh/blog/posts/deepseek-harness-skill-ai-video-summary',
|
|
39
|
-
'zh:aixq-visual-tutorial = https://www.aixq.cc/62178.html',
|
|
40
|
-
'zh:qbitai-review = https://www.qbitai.com/2026/08/472208.html',
|
|
41
|
-
'zh:zhidx-review = https://www.zhidx.com/p/584897.html',
|
|
42
|
-
'zh:pingwest-review = https://www.pingwest.com/a/316436',
|
|
43
|
-
'zh:dtinsight-review = https://www.dtinsight.com.cn/sys-nd/4072.html',
|
|
44
|
-
'zh:v2ex-1234341-quickref = https://global.v2ex.co/t/1234341',
|
|
45
|
-
'zh:v2ex-1234203 = https://global.v2ex.co/t/1234203',
|
|
46
|
-
'zh:v2ex-1234320-tools-limit = https://global.v2ex.co/t/1234320',
|
|
47
|
-
'zh:v2ex-1234424-shell = https://global.v2ex.co/t/1234424',
|
|
48
|
-
'zh:v2ex-1234521-v4flash = https://global.v2ex.co/t/1234521',
|
|
49
|
-
'zh:v2ex-1231389-pre-release = https://global.v2ex.co/t/1231389',
|
|
50
|
-
'zh:v2ex-1214141-hiring = https://global.v2ex.co/t/1214141',
|
|
51
|
-
'zh:36kr-black-whale = https://www.36kr.com/p/3938566998834308',
|
|
52
|
-
'zh:jiemian-lego = https://www.jiemian.com/article/14922169.html',
|
|
53
|
-
'zh:80aj-doc-reader = https://www.80aj.com/2026/08/14/agent-doc-reader-plugin/',
|
|
54
|
-
'zh:80aj-vscode-search = https://www.80aj.com/2026/08/14/deepseek-vscode-plugin-search/',
|
|
55
|
-
'zh:locdd-80299 = https://locdd.com/t/topic/80299/7',
|
|
56
|
-
'zh:locdd-80207 = https://locdd.com/t/topic/80207',
|
|
57
|
-
'zh:53ai-first-test = https://www.53ai.com/news/LargeLanguageModel/2026081423497.html',
|
|
58
|
-
'zh:53ai-plugin-tutorial-0815 = https://www.53ai.com/news/OpenSourceLLM/2026081561375.html',
|
|
59
|
-
'zh:csdn-zhuosj-black-whale = https://zhuosj.blog.csdn.net/article/details/163757323',
|
|
60
|
-
'zh:csdn-aiutools-install = https://aiutools.blog.csdn.net/article/details/163758630',
|
|
61
|
-
'zh:csdn-qq8864-plugin-tool = https://blog.csdn.net/qq8864/article/details/163760812',
|
|
62
|
-
'zh:163-architecture = https://www.163.com/dy/article/L4AHS9B70518R7MO.html',
|
|
63
|
-
'zh:163-install-tutorial = https://www.163.com/dy/article/L4AUJ7A305568W0A.html',
|
|
64
|
-
'zh:qq-news-hot = https://news.qq.com/rain/a/20260814A048HD00',
|
|
65
|
-
'zh:csdnnews-28k-star = https://csdnnews.blog.csdn.net/article/details/163747298',
|
|
66
|
-
'zh:geekpark-50k = https://w.geekpark.net/news/368809',
|
|
67
|
-
'zh:pedaily-investment = https://news.pedaily.cn/202608/567694.shtml',
|
|
68
|
-
'zh:weibo-beta-share = https://weibo.com/2/detail/5331613565062839',
|
|
69
|
-
'zh:csdn-aicoding-roles = https://aicoding.csdn.net/6a23863d662f9a54cb7a4fed.html',
|
|
70
|
-
'zh:aitop100-v01 = https://www.aitop100.cn/infomation/details/34468.html',
|
|
71
|
-
'zh:bilibili-BV1WmgF6qEMn = https://www.bilibili.com/video/BV1WmgF6qEMn/',
|
|
72
|
-
'zh:bilibili-BV1iAgc6xEj7 = https://www.bilibili.com/video/BV1iAgc6xEj7/',
|
|
73
|
-
'zh:bilibili-BV1KFgF6zEtk = https://www.bilibili.com/video/BV1KFgF6zEtk/',
|
|
74
|
-
'zh:bilibili-BV1NKgw6VErB = https://www.bilibili.com/video/BV1NKgw6VErB/',
|
|
75
|
-
'zh:bilibili-BV1o4gP6iEeo = https://www.bilibili.com/video/BV1o4gP6iEeo/',
|
|
76
|
-
'zh:bilibili-BV1vugA6FERZ = https://www.bilibili.com/video/BV1vugA6FERZ/',
|
|
77
|
-
'zh:bilibili-BV1VkgK6NEZS = https://www.bilibili.com/video/BV1VkgK6NEZS/',
|
|
78
|
-
'zh:bilibili-BV1eDgW6QEFx = https://www.bilibili.com/video/BV1eDgW6QEFx/',
|
|
79
|
-
'zh:bilibili-BV17ygc6tEE1 = https://www.bilibili.com/video/BV17ygc6tEE1/',
|
|
80
|
-
'zh:21jingji-jiazi = https://www.21jingji.com/article/20260521/herald/d706e7b6130739114b8761d933f7e546.html',
|
|
81
|
-
'zh:21jingji-wechat = https://m.21jingji.com/article/20260813/b78d3f9cd177ec3974c227ca1e9f7672.html',
|
|
82
|
-
'zh:ithome-beta-plugins = https://www.ithome.com/0/989/446.htm',
|
|
83
|
-
'zh:ai-indeed-timeline = https://www.ai-indeed.com/encyclopedia/29653.html',
|
|
84
|
-
'zh:yijunzhao-guide = https://yijunzhao.cn/archives/deepseek-harness-getting-started-guide-first-agent-framework',
|
|
85
|
-
'zh:gm7-install = https://www.gm7.org/archives/141339',
|
|
86
|
-
'zh:zol-v01 = https://ai.zol.com.cn/1231/12318730.html',
|
|
87
|
-
'zh:thepaper-three = https://www.thepaper.cn/newsDetail_forward_33785032',
|
|
88
|
-
'zh:donews = https://www.donews.com/news/detail/1/6670751.html',
|
|
89
|
-
'zh:chinaz-plugin = https://www.chinaz.com/ainews/30334.shtml',
|
|
90
|
-
'zh:wsisp-80k = https://www.wsisp.com/helps/94702.html',
|
|
91
|
-
'zh:eastmoney-black-whale = https://finance.eastmoney.com/a/202608123839370860.html',
|
|
92
|
-
'zh:sina-whale = https://www.sina.cn/news/detail/5331578031178880.html',
|
|
93
|
-
'zh:sina-wechat-account = https://www.sina.cn/news/detail/5331415036067930.html',
|
|
94
|
-
'zh:tmtpost-beta = https://www.tmtpost.com/8083615.html',
|
|
95
|
-
'zh:aihot-community = https://aihot.virxact.com/items/cmst6pn4b06aqro06xbl1wusy',
|
|
96
|
-
'zh:aihot-openrouter-ori = https://aihot.virxact.com/items/cmstacm1202dzro0xv735yk7c',
|
|
97
|
-
'zh:chaincatcher-beta = https://www.chaincatcher.com/article/2278625',
|
|
98
|
-
'zh:baijing-harness = https://jishuzhan.baijing.cn/article/3251',
|
|
99
|
-
'zh:sohu-28k = https://www.sohu.com/a/1062527577_115128',
|
|
100
|
-
'zh:locdd-80821-qqbot = https://locdd.com/t/topic/80821',
|
|
101
|
-
# ---------- en ----------
|
|
102
|
-
'en:rits-cordis = http://rits.shanghai.nyu.edu/ai/deepseek-harness-cordis-everything-is-a-plugin/',
|
|
103
|
-
'en:devto-onsen-guide = https://dev.to/onsen/deepseek-harness-developer-preview-full-guide-ocm',
|
|
104
|
-
'en:devto-reidmarlow-price = https://dev.to/reidmarlow/deepseeks-harness-is-the-price-signal-17bl',
|
|
105
|
-
'en:agentpedia-v01 = https://agentpedia.codes/blog/deepseek-harness-v0-1-plugin-agent-guide',
|
|
106
|
-
'en:explainx = https://explainx.ai/blog/deepseek-harness-v0-1-plugin-first-agent-stack-august-2026',
|
|
107
|
-
'en:agentbreaking = https://agentbreaking.com/blog/deepseek-harness-open-source-agent-framework/',
|
|
108
|
-
'en:xcmd-install = https://www.x-cmd.com/install/deepseek-harness/',
|
|
109
|
-
'en:dsh-index = https://dsh-index.xlings.org',
|
|
110
|
-
'en:xlings-dsh = https://openxlings.github.io/xim-pkgindex/en/packages/dsh/',
|
|
111
|
-
'en:36kr-en-minecraft = https://eu.36kr.com/en/p/3938774780263814',
|
|
112
|
-
'en:36kr-en-blackwhale = https://eu.36kr.com/en/p/3938566998834308',
|
|
113
|
-
'en:36kr-en-selfevolution = https://eu.36kr.com/en/p/3938795963137411',
|
|
114
|
-
'en:ollama-integration = https://docs.ollama.com/integrations/deepseek-harness',
|
|
115
|
-
'en:aiengineerguide = https://aiengineerguide.com/til/deepseek-harness/',
|
|
116
|
-
'en:julian-goldie = https://aisuccesslabjuliangoldie.com/blog/deepseek-harness/',
|
|
117
|
-
'en:gigazine-en = https://gigazine.net/gsc_news/en/20260814-deepseek-harness-v0-1',
|
|
118
|
-
'en:aibase-en = https://www.aibase.com/news/30334',
|
|
119
|
-
'en:pandaily-preview = https://pandaily.com/deepseek-harness-developer-preview-everything-is-a-plugin-black-whale-aug2026',
|
|
120
|
-
'en:edgen-300plugins = https://www.edgen.tech/en/news/post/deepseek-harness-enters-agent-market-with-300-plugins-challenging-codex',
|
|
121
|
-
'en:tmtpost-en = https://en.tmtpost.com/news/7995741',
|
|
122
|
-
'en:pandaily-funding = https://pandaily.com/deepseek-funding-expansion-hiring-harness',
|
|
123
|
-
'en:essamamdani = https://essamamdani.com/blog/deepseek-harness-plugin-first-agent-stack-2026',
|
|
124
|
-
'en:openrouter-ori = https://openrouter.ai/docs/guides/ori/harness',
|
|
125
|
-
'en:digg-webui-x = https://digg.com/tech/7fx4ofvh',
|
|
126
|
-
'en:digg-devs-beta = https://digg.com/tech/silt5bft',
|
|
127
|
-
'en:news-eink = https://news.e-ink.me/en/archive/2026-08-13/article/deepseek-harness-developer-preview',
|
|
128
|
-
'en:tipranks-openrouter = https://fastly.tipranks.com/news/private-companies/openrouter-expands-ai-model-orchestration-with-ori-deepseek-harness-integration',
|
|
129
|
-
'en:webgate-mit = https://web.gate.it/zh/news/detail/deepseek-open-sources-harness-v01-under-the-mit-license-rivaling-claude-23440280',
|
|
130
|
-
'en:blockbeats-v4pro = https://en.theblockbeats.news/flash/361500',
|
|
131
|
-
'en:runtimewire-harness = https://runtimewire.com/article/deepseek-open-sources-agent-harness-v4-pro-api-price-hike',
|
|
132
|
-
'en:digitalapplied-harness = https://www.digitalapplied.com/blog/deepseek-harness-open-source-agent-framework-2026',
|
|
133
|
-
'en:digitalapplied-v4pro-ga = https://www.digitalapplied.com/blog/deepseek-v4-pro-ga-official-release-2026',
|
|
134
|
-
'en:afbytes-venturebeat-mirror = https://afbytes.com/news/article/rss:f2c63a396b39d3537b5fd16ac4f5ca04f9574ad53febab5a97db5852c6/deepseek-harness-launches-as-open-source-rival-to-claude-code-alongside-v4-pro-on-api-with-higher-prices',
|
|
135
|
-
# ---------- hn ----------
|
|
136
|
-
'hn:49286003-cordis = https://hn.edgecompute.app/item/49286003',
|
|
137
|
-
'hn:49287821-xcmd = https://hn.edgecompute.app/item/49287821',
|
|
138
|
-
'hn:49294357-dshindex = https://hn.edgecompute.app/item/49294357',
|
|
139
|
-
'hn:49291049-xlings = https://hn.edgecompute.app/item/49291049',
|
|
140
|
-
'hn:49291893-jellyball = https://hn.edgecompute.app/item/49291893',
|
|
141
|
-
'hn:49285244-main = https://hn.edgecompute.app/item/49285244',
|
|
142
|
-
'hn:49285620-twitter-post = https://hn.edgecompute.app/item/49285620'
|
|
143
|
-
)
|
|
144
|
-
|
|
145
|
-
$log = New-Object System.Collections.Generic.List[string]
|
|
146
|
-
$counts = @{}
|
|
147
|
-
foreach ($entry in $list) {
|
|
148
|
-
$lang, $rest = $entry -split ':', 2
|
|
149
|
-
$slug, $url = $rest -split '=', 2
|
|
150
|
-
$slug = $slug.Trim(); $url = $url.Trim()
|
|
151
|
-
if ($Lang -and $lang -ne $Lang) { continue }
|
|
152
|
-
$dir = Join-Path $out $lang
|
|
153
|
-
New-Item -ItemType Directory -Force -Path $dir | Out-Null
|
|
154
|
-
$file = Join-Path $dir ($slug + '.html')
|
|
155
|
-
if (-not $Force -and (Test-Path $file) -and (Get-Item $file).Length -gt 500) {
|
|
156
|
-
$log.Add("SKIP`t$lang/$slug"); continue
|
|
157
|
-
}
|
|
158
|
-
$cmd = "& '$curl' -sSL --connect-timeout 10 --max-time 30 -A `"$ua`" -o `"$file`" `"$url`""
|
|
159
|
-
try { Invoke-Expression $cmd | Out-Null } catch { $log.Add("FAIL`t$lang/$slug`tinvoke-error"); continue }
|
|
160
|
-
if (Test-Path $file) {
|
|
161
|
-
$len = (Get-Item $file).Length
|
|
162
|
-
if ($len -gt 500) { $log.Add("OK`t$lang/$slug`t$len bytes") }
|
|
163
|
-
else { Remove-Item $file -Force; $log.Add("FAIL`t$lang/$slug`ttoo-small($len)") }
|
|
164
|
-
} else { $log.Add("FAIL`t$lang/$slug`tno-file") }
|
|
165
|
-
}
|
|
166
|
-
foreach ($l in @('zh','en','hn')) {
|
|
167
|
-
$d = Join-Path $out $l
|
|
168
|
-
if (Test-Path $d) { $counts[$l] = (Get-ChildItem $d -Filter *.html -File).Count }
|
|
169
|
-
}
|
|
170
|
-
$log | Set-Content (Join-Path $out '_download.log') -Encoding UTF8
|
|
171
|
-
|
|
172
|
-
$utc = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mmZ')
|
|
173
|
-
$L = @()
|
|
174
|
-
$L += '# 社区文章归档(HTML 快照)'
|
|
175
|
-
$L += ''
|
|
176
|
-
$L += "> 抓取: $utc (UTC) via scripts/download-community-articles.ps1(幂等,-Force 全量重下)。"
|
|
177
|
-
$L += '> 反爬/需浏览器站点(知乎/InfoQ/venturebeat/TNW/Twitter/YouTube/Reddit 等)不在清单,线索见 downloads/_research/*-community-scan.md。'
|
|
178
|
-
$L += ''
|
|
179
|
-
$L += '| 语言段 | 篇数 |'
|
|
180
|
-
$L += '|---|---|'
|
|
181
|
-
foreach ($l in @('zh','en','hn')) { $L += "| $l/ | $($counts[$l]) |" }
|
|
182
|
-
$L += ''
|
|
183
|
-
$L += '## 归档明细'
|
|
184
|
-
$L += ''
|
|
185
|
-
$L += '见 _download.log(OK/SKIP/FAIL + 字节数)。'
|
|
186
|
-
Set-Content -Path (Join-Path $out 'README.md') -Value ($L -join "`r`n") -Encoding UTF8
|
|
187
|
-
Write-Output ("DONE: zh={0} en={1} hn={2} -> {3}" -f $counts['zh'], $counts['en'], $counts['hn'], $out)
|
|
188
|
-
$log | Write-Output
|
|
1
|
+
# dsh-plugin-guide 社区文章归档脚本(幂等:已存在且非空则跳过)
|
|
2
|
+
# 输出: downloads/web/community-articles/{zh,en,hn}/<slug>.html + _download.log + README.md
|
|
3
|
+
# 来源: downloads/_research/{chinese,english}-community-scan.md 中标 200 的 URL + 08-15 增量扫描线索。
|
|
4
|
+
# 已知反爬站(知乎/InfoQ/venturebeat/thenextweb/twitter/youtube/reddit/腾讯新闻 501 等)不在清单内,记录见两份扫描报告。
|
|
5
|
+
# 注意: PS 5.1 下 curl 的 -A/-o 参数若经变量数组传入会被拆词;本脚本用 Invoke-Expression
|
|
6
|
+
# 拼完整命令行字符串,引号在字符串内显式给出,规避该坑。
|
|
7
|
+
# 参数: -Force 强制全部重下; -Lang zh|en|hn 只处理某语言段。
|
|
8
|
+
param([switch]$Force, [string]$Lang = '')
|
|
9
|
+
$ErrorActionPreference = 'Continue'
|
|
10
|
+
$ProgressPreference = 'SilentlyContinue'
|
|
11
|
+
|
|
12
|
+
$kb = Split-Path $PSScriptRoot -Parent
|
|
13
|
+
$out = Join-Path $kb 'downloads\web\community-articles'
|
|
14
|
+
$ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36'
|
|
15
|
+
$curl = Get-Command curl.exe -ErrorAction SilentlyContinue
|
|
16
|
+
if (-not $curl) { $curl = "$env:SystemRoot\System32\curl.exe" } else { $curl = $curl.Source }
|
|
17
|
+
|
|
18
|
+
# slug => url(语言段前缀 zh:/en:/hn: 决定落盘目录)
|
|
19
|
+
$list = @(
|
|
20
|
+
# ---------- zh ----------
|
|
21
|
+
'zh:cnblogs-pc2005-npm-publish = https://www.cnblogs.com/pc2005/p/22477987',
|
|
22
|
+
'zh:cnblogs-qq8864-session-export = https://www.cnblogs.com/qq8864/articles/22476471',
|
|
23
|
+
'zh:cnblogs-qq8864-plugin-vs-tool = https://www.cnblogs.com/qq8864/articles/22478648',
|
|
24
|
+
'zh:csdn-yuqingteck-hello-tool = https://yuqingteck.blog.csdn.net/article/details/163735126',
|
|
25
|
+
'zh:cnblogs-sing1ee-agent-loop = https://www.cnblogs.com/sing1ee/p/22479295',
|
|
26
|
+
'zh:cnblogs-sing1ee-guide = https://www.cnblogs.com/sing1ee/p/22455466',
|
|
27
|
+
'zh:cnblogs-knqiufan-context = https://www.cnblogs.com/knqiufan/p/22472410',
|
|
28
|
+
'zh:cnblogs-foxcharon-install = https://www.cnblogs.com/foxcharon/p/22467976',
|
|
29
|
+
'zh:cnblogs-pc2005-getting-started = https://www.cnblogs.com/pc2005/p/22477984',
|
|
30
|
+
'zh:cnblogs-adgine-ai-engineering = https://www.cnblogs.com/adgine-ai/articles/22473232',
|
|
31
|
+
'zh:cnblogs-itech-architecture = https://www.cnblogs.com/itech/p/22460843',
|
|
32
|
+
'zh:cnblogs-isLinXu-analysis = https://www.cnblogs.com/isLinXu/p/22457058',
|
|
33
|
+
'zh:csdn-damodev-monorepo = https://damodev.csdn.net/6a7dd787662f9a54cb9c6da0.html',
|
|
34
|
+
'zh:51cto-v4pro-runtime = https://www.51cto.com/article/852965.html',
|
|
35
|
+
'zh:51cto-blog-observability = https://blog.51cto.com/u_16175471/14797309',
|
|
36
|
+
'zh:aliyun-first-tutorial = https://developer.aliyun.com/article/1755786',
|
|
37
|
+
'zh:aliyun-everything-plugin = https://developer.aliyun.com/article/1755877',
|
|
38
|
+
'zh:bibigpt-skill-video = https://bibigpt.co/zh/blog/posts/deepseek-harness-skill-ai-video-summary',
|
|
39
|
+
'zh:aixq-visual-tutorial = https://www.aixq.cc/62178.html',
|
|
40
|
+
'zh:qbitai-review = https://www.qbitai.com/2026/08/472208.html',
|
|
41
|
+
'zh:zhidx-review = https://www.zhidx.com/p/584897.html',
|
|
42
|
+
'zh:pingwest-review = https://www.pingwest.com/a/316436',
|
|
43
|
+
'zh:dtinsight-review = https://www.dtinsight.com.cn/sys-nd/4072.html',
|
|
44
|
+
'zh:v2ex-1234341-quickref = https://global.v2ex.co/t/1234341',
|
|
45
|
+
'zh:v2ex-1234203 = https://global.v2ex.co/t/1234203',
|
|
46
|
+
'zh:v2ex-1234320-tools-limit = https://global.v2ex.co/t/1234320',
|
|
47
|
+
'zh:v2ex-1234424-shell = https://global.v2ex.co/t/1234424',
|
|
48
|
+
'zh:v2ex-1234521-v4flash = https://global.v2ex.co/t/1234521',
|
|
49
|
+
'zh:v2ex-1231389-pre-release = https://global.v2ex.co/t/1231389',
|
|
50
|
+
'zh:v2ex-1214141-hiring = https://global.v2ex.co/t/1214141',
|
|
51
|
+
'zh:36kr-black-whale = https://www.36kr.com/p/3938566998834308',
|
|
52
|
+
'zh:jiemian-lego = https://www.jiemian.com/article/14922169.html',
|
|
53
|
+
'zh:80aj-doc-reader = https://www.80aj.com/2026/08/14/agent-doc-reader-plugin/',
|
|
54
|
+
'zh:80aj-vscode-search = https://www.80aj.com/2026/08/14/deepseek-vscode-plugin-search/',
|
|
55
|
+
'zh:locdd-80299 = https://locdd.com/t/topic/80299/7',
|
|
56
|
+
'zh:locdd-80207 = https://locdd.com/t/topic/80207',
|
|
57
|
+
'zh:53ai-first-test = https://www.53ai.com/news/LargeLanguageModel/2026081423497.html',
|
|
58
|
+
'zh:53ai-plugin-tutorial-0815 = https://www.53ai.com/news/OpenSourceLLM/2026081561375.html',
|
|
59
|
+
'zh:csdn-zhuosj-black-whale = https://zhuosj.blog.csdn.net/article/details/163757323',
|
|
60
|
+
'zh:csdn-aiutools-install = https://aiutools.blog.csdn.net/article/details/163758630',
|
|
61
|
+
'zh:csdn-qq8864-plugin-tool = https://blog.csdn.net/qq8864/article/details/163760812',
|
|
62
|
+
'zh:163-architecture = https://www.163.com/dy/article/L4AHS9B70518R7MO.html',
|
|
63
|
+
'zh:163-install-tutorial = https://www.163.com/dy/article/L4AUJ7A305568W0A.html',
|
|
64
|
+
'zh:qq-news-hot = https://news.qq.com/rain/a/20260814A048HD00',
|
|
65
|
+
'zh:csdnnews-28k-star = https://csdnnews.blog.csdn.net/article/details/163747298',
|
|
66
|
+
'zh:geekpark-50k = https://w.geekpark.net/news/368809',
|
|
67
|
+
'zh:pedaily-investment = https://news.pedaily.cn/202608/567694.shtml',
|
|
68
|
+
'zh:weibo-beta-share = https://weibo.com/2/detail/5331613565062839',
|
|
69
|
+
'zh:csdn-aicoding-roles = https://aicoding.csdn.net/6a23863d662f9a54cb7a4fed.html',
|
|
70
|
+
'zh:aitop100-v01 = https://www.aitop100.cn/infomation/details/34468.html',
|
|
71
|
+
'zh:bilibili-BV1WmgF6qEMn = https://www.bilibili.com/video/BV1WmgF6qEMn/',
|
|
72
|
+
'zh:bilibili-BV1iAgc6xEj7 = https://www.bilibili.com/video/BV1iAgc6xEj7/',
|
|
73
|
+
'zh:bilibili-BV1KFgF6zEtk = https://www.bilibili.com/video/BV1KFgF6zEtk/',
|
|
74
|
+
'zh:bilibili-BV1NKgw6VErB = https://www.bilibili.com/video/BV1NKgw6VErB/',
|
|
75
|
+
'zh:bilibili-BV1o4gP6iEeo = https://www.bilibili.com/video/BV1o4gP6iEeo/',
|
|
76
|
+
'zh:bilibili-BV1vugA6FERZ = https://www.bilibili.com/video/BV1vugA6FERZ/',
|
|
77
|
+
'zh:bilibili-BV1VkgK6NEZS = https://www.bilibili.com/video/BV1VkgK6NEZS/',
|
|
78
|
+
'zh:bilibili-BV1eDgW6QEFx = https://www.bilibili.com/video/BV1eDgW6QEFx/',
|
|
79
|
+
'zh:bilibili-BV17ygc6tEE1 = https://www.bilibili.com/video/BV17ygc6tEE1/',
|
|
80
|
+
'zh:21jingji-jiazi = https://www.21jingji.com/article/20260521/herald/d706e7b6130739114b8761d933f7e546.html',
|
|
81
|
+
'zh:21jingji-wechat = https://m.21jingji.com/article/20260813/b78d3f9cd177ec3974c227ca1e9f7672.html',
|
|
82
|
+
'zh:ithome-beta-plugins = https://www.ithome.com/0/989/446.htm',
|
|
83
|
+
'zh:ai-indeed-timeline = https://www.ai-indeed.com/encyclopedia/29653.html',
|
|
84
|
+
'zh:yijunzhao-guide = https://yijunzhao.cn/archives/deepseek-harness-getting-started-guide-first-agent-framework',
|
|
85
|
+
'zh:gm7-install = https://www.gm7.org/archives/141339',
|
|
86
|
+
'zh:zol-v01 = https://ai.zol.com.cn/1231/12318730.html',
|
|
87
|
+
'zh:thepaper-three = https://www.thepaper.cn/newsDetail_forward_33785032',
|
|
88
|
+
'zh:donews = https://www.donews.com/news/detail/1/6670751.html',
|
|
89
|
+
'zh:chinaz-plugin = https://www.chinaz.com/ainews/30334.shtml',
|
|
90
|
+
'zh:wsisp-80k = https://www.wsisp.com/helps/94702.html',
|
|
91
|
+
'zh:eastmoney-black-whale = https://finance.eastmoney.com/a/202608123839370860.html',
|
|
92
|
+
'zh:sina-whale = https://www.sina.cn/news/detail/5331578031178880.html',
|
|
93
|
+
'zh:sina-wechat-account = https://www.sina.cn/news/detail/5331415036067930.html',
|
|
94
|
+
'zh:tmtpost-beta = https://www.tmtpost.com/8083615.html',
|
|
95
|
+
'zh:aihot-community = https://aihot.virxact.com/items/cmst6pn4b06aqro06xbl1wusy',
|
|
96
|
+
'zh:aihot-openrouter-ori = https://aihot.virxact.com/items/cmstacm1202dzro0xv735yk7c',
|
|
97
|
+
'zh:chaincatcher-beta = https://www.chaincatcher.com/article/2278625',
|
|
98
|
+
'zh:baijing-harness = https://jishuzhan.baijing.cn/article/3251',
|
|
99
|
+
'zh:sohu-28k = https://www.sohu.com/a/1062527577_115128',
|
|
100
|
+
'zh:locdd-80821-qqbot = https://locdd.com/t/topic/80821',
|
|
101
|
+
# ---------- en ----------
|
|
102
|
+
'en:rits-cordis = http://rits.shanghai.nyu.edu/ai/deepseek-harness-cordis-everything-is-a-plugin/',
|
|
103
|
+
'en:devto-onsen-guide = https://dev.to/onsen/deepseek-harness-developer-preview-full-guide-ocm',
|
|
104
|
+
'en:devto-reidmarlow-price = https://dev.to/reidmarlow/deepseeks-harness-is-the-price-signal-17bl',
|
|
105
|
+
'en:agentpedia-v01 = https://agentpedia.codes/blog/deepseek-harness-v0-1-plugin-agent-guide',
|
|
106
|
+
'en:explainx = https://explainx.ai/blog/deepseek-harness-v0-1-plugin-first-agent-stack-august-2026',
|
|
107
|
+
'en:agentbreaking = https://agentbreaking.com/blog/deepseek-harness-open-source-agent-framework/',
|
|
108
|
+
'en:xcmd-install = https://www.x-cmd.com/install/deepseek-harness/',
|
|
109
|
+
'en:dsh-index = https://dsh-index.xlings.org',
|
|
110
|
+
'en:xlings-dsh = https://openxlings.github.io/xim-pkgindex/en/packages/dsh/',
|
|
111
|
+
'en:36kr-en-minecraft = https://eu.36kr.com/en/p/3938774780263814',
|
|
112
|
+
'en:36kr-en-blackwhale = https://eu.36kr.com/en/p/3938566998834308',
|
|
113
|
+
'en:36kr-en-selfevolution = https://eu.36kr.com/en/p/3938795963137411',
|
|
114
|
+
'en:ollama-integration = https://docs.ollama.com/integrations/deepseek-harness',
|
|
115
|
+
'en:aiengineerguide = https://aiengineerguide.com/til/deepseek-harness/',
|
|
116
|
+
'en:julian-goldie = https://aisuccesslabjuliangoldie.com/blog/deepseek-harness/',
|
|
117
|
+
'en:gigazine-en = https://gigazine.net/gsc_news/en/20260814-deepseek-harness-v0-1',
|
|
118
|
+
'en:aibase-en = https://www.aibase.com/news/30334',
|
|
119
|
+
'en:pandaily-preview = https://pandaily.com/deepseek-harness-developer-preview-everything-is-a-plugin-black-whale-aug2026',
|
|
120
|
+
'en:edgen-300plugins = https://www.edgen.tech/en/news/post/deepseek-harness-enters-agent-market-with-300-plugins-challenging-codex',
|
|
121
|
+
'en:tmtpost-en = https://en.tmtpost.com/news/7995741',
|
|
122
|
+
'en:pandaily-funding = https://pandaily.com/deepseek-funding-expansion-hiring-harness',
|
|
123
|
+
'en:essamamdani = https://essamamdani.com/blog/deepseek-harness-plugin-first-agent-stack-2026',
|
|
124
|
+
'en:openrouter-ori = https://openrouter.ai/docs/guides/ori/harness',
|
|
125
|
+
'en:digg-webui-x = https://digg.com/tech/7fx4ofvh',
|
|
126
|
+
'en:digg-devs-beta = https://digg.com/tech/silt5bft',
|
|
127
|
+
'en:news-eink = https://news.e-ink.me/en/archive/2026-08-13/article/deepseek-harness-developer-preview',
|
|
128
|
+
'en:tipranks-openrouter = https://fastly.tipranks.com/news/private-companies/openrouter-expands-ai-model-orchestration-with-ori-deepseek-harness-integration',
|
|
129
|
+
'en:webgate-mit = https://web.gate.it/zh/news/detail/deepseek-open-sources-harness-v01-under-the-mit-license-rivaling-claude-23440280',
|
|
130
|
+
'en:blockbeats-v4pro = https://en.theblockbeats.news/flash/361500',
|
|
131
|
+
'en:runtimewire-harness = https://runtimewire.com/article/deepseek-open-sources-agent-harness-v4-pro-api-price-hike',
|
|
132
|
+
'en:digitalapplied-harness = https://www.digitalapplied.com/blog/deepseek-harness-open-source-agent-framework-2026',
|
|
133
|
+
'en:digitalapplied-v4pro-ga = https://www.digitalapplied.com/blog/deepseek-v4-pro-ga-official-release-2026',
|
|
134
|
+
'en:afbytes-venturebeat-mirror = https://afbytes.com/news/article/rss:f2c63a396b39d3537b5fd16ac4f5ca04f9574ad53febab5a97db5852c6/deepseek-harness-launches-as-open-source-rival-to-claude-code-alongside-v4-pro-on-api-with-higher-prices',
|
|
135
|
+
# ---------- hn ----------
|
|
136
|
+
'hn:49286003-cordis = https://hn.edgecompute.app/item/49286003',
|
|
137
|
+
'hn:49287821-xcmd = https://hn.edgecompute.app/item/49287821',
|
|
138
|
+
'hn:49294357-dshindex = https://hn.edgecompute.app/item/49294357',
|
|
139
|
+
'hn:49291049-xlings = https://hn.edgecompute.app/item/49291049',
|
|
140
|
+
'hn:49291893-jellyball = https://hn.edgecompute.app/item/49291893',
|
|
141
|
+
'hn:49285244-main = https://hn.edgecompute.app/item/49285244',
|
|
142
|
+
'hn:49285620-twitter-post = https://hn.edgecompute.app/item/49285620'
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
$log = New-Object System.Collections.Generic.List[string]
|
|
146
|
+
$counts = @{}
|
|
147
|
+
foreach ($entry in $list) {
|
|
148
|
+
$lang, $rest = $entry -split ':', 2
|
|
149
|
+
$slug, $url = $rest -split '=', 2
|
|
150
|
+
$slug = $slug.Trim(); $url = $url.Trim()
|
|
151
|
+
if ($Lang -and $lang -ne $Lang) { continue }
|
|
152
|
+
$dir = Join-Path $out $lang
|
|
153
|
+
New-Item -ItemType Directory -Force -Path $dir | Out-Null
|
|
154
|
+
$file = Join-Path $dir ($slug + '.html')
|
|
155
|
+
if (-not $Force -and (Test-Path $file) -and (Get-Item $file).Length -gt 500) {
|
|
156
|
+
$log.Add("SKIP`t$lang/$slug"); continue
|
|
157
|
+
}
|
|
158
|
+
$cmd = "& '$curl' -sSL --connect-timeout 10 --max-time 30 -A `"$ua`" -o `"$file`" `"$url`""
|
|
159
|
+
try { Invoke-Expression $cmd | Out-Null } catch { $log.Add("FAIL`t$lang/$slug`tinvoke-error"); continue }
|
|
160
|
+
if (Test-Path $file) {
|
|
161
|
+
$len = (Get-Item $file).Length
|
|
162
|
+
if ($len -gt 500) { $log.Add("OK`t$lang/$slug`t$len bytes") }
|
|
163
|
+
else { Remove-Item $file -Force; $log.Add("FAIL`t$lang/$slug`ttoo-small($len)") }
|
|
164
|
+
} else { $log.Add("FAIL`t$lang/$slug`tno-file") }
|
|
165
|
+
}
|
|
166
|
+
foreach ($l in @('zh','en','hn')) {
|
|
167
|
+
$d = Join-Path $out $l
|
|
168
|
+
if (Test-Path $d) { $counts[$l] = (Get-ChildItem $d -Filter *.html -File).Count }
|
|
169
|
+
}
|
|
170
|
+
$log | Set-Content (Join-Path $out '_download.log') -Encoding UTF8
|
|
171
|
+
|
|
172
|
+
$utc = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mmZ')
|
|
173
|
+
$L = @()
|
|
174
|
+
$L += '# 社区文章归档(HTML 快照)'
|
|
175
|
+
$L += ''
|
|
176
|
+
$L += "> 抓取: $utc (UTC) via scripts/download-community-articles.ps1(幂等,-Force 全量重下)。"
|
|
177
|
+
$L += '> 反爬/需浏览器站点(知乎/InfoQ/venturebeat/TNW/Twitter/YouTube/Reddit 等)不在清单,线索见 downloads/_research/*-community-scan.md。'
|
|
178
|
+
$L += ''
|
|
179
|
+
$L += '| 语言段 | 篇数 |'
|
|
180
|
+
$L += '|---|---|'
|
|
181
|
+
foreach ($l in @('zh','en','hn')) { $L += "| $l/ | $($counts[$l]) |" }
|
|
182
|
+
$L += ''
|
|
183
|
+
$L += '## 归档明细'
|
|
184
|
+
$L += ''
|
|
185
|
+
$L += '见 _download.log(OK/SKIP/FAIL + 字节数)。'
|
|
186
|
+
Set-Content -Path (Join-Path $out 'README.md') -Value ($L -join "`r`n") -Encoding UTF8
|
|
187
|
+
Write-Output ("DONE: zh={0} en={1} hn={2} -> {3}" -f $counts['zh'], $counts['en'], $counts['hn'], $out)
|
|
188
|
+
$log | Write-Output
|