dsh-crwu-workbench 0.0.10

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 (479) hide show
  1. package/CHANGELOG.md +1516 -0
  2. package/LICENSE +26 -0
  3. package/README.en.md +204 -0
  4. package/README.md +521 -0
  5. package/SECURITY.md +39 -0
  6. package/bin/darwin-arm64/crwu +0 -0
  7. package/bin/darwin-arm64/dws +0 -0
  8. package/bin/darwin-arm64/ossutil +0 -0
  9. package/bin/manifest.json +82 -0
  10. package/bin/win32-x64/crwu.exe +0 -0
  11. package/bin/win32-x64/dws.exe +4 -0
  12. package/bin/win32-x64/ossutil.exe +0 -0
  13. package/common/skills/.synced.json +8 -0
  14. package/common/skills/crwu-dws/SKILL.md +208 -0
  15. package/common/skills/crwu-dws/references/00-/347/233/256/345/275/225/345/277/253/347/205/247schema.md +113 -0
  16. package/common/skills/crwu-dws/references/01-/345/256/241/346/240/270/344/270/213/350/275/275/344/270/216manifest/350/247/204/350/214/203.md +115 -0
  17. package/common/skills/crwu-dws/references/02-/347/274/223/345/255/230/344/270/216/345/205/234/345/272/225/346/237/245/346/211/276/350/247/204/350/214/203.md +119 -0
  18. package/common/skills/crwu-dws/scripts/test_dws_source_contract.py +493 -0
  19. package/common/skills/crwu-h3yun-login/SKILL.md +130 -0
  20. package/common/skills/crwu-h3yun-query/SKILL.md +192 -0
  21. package/config/crwu-workbench.yml +26 -0
  22. package/cordis.patch.yml +46 -0
  23. package/lib/client.js +10346 -0
  24. package/lib/index.js +11584 -0
  25. package/package.json +119 -0
  26. package/scripts/prepare.mjs +59 -0
  27. package/skills/README.md +26 -0
  28. package/skills/crwu/crwu-audit/SKILL.md +152 -0
  29. package/skills/crwu/crwu-audit/references/00-input-and-route-profile.md +232 -0
  30. package/skills/crwu/crwu-audit/references/01-report-id-resolution.md +13 -0
  31. package/skills/crwu/crwu-audit/references/02-scope-classification.md +25 -0
  32. package/skills/crwu/crwu-audit/references/03-asset-classification.md +27 -0
  33. package/skills/crwu/crwu-audit/references/04-business-classification.md +63 -0
  34. package/skills/crwu/crwu-audit/references/05-method-classification.md +66 -0
  35. package/skills/crwu/crwu-audit/references/06-overlay-classification.md +42 -0
  36. package/skills/crwu/crwu-audit/references/07-skill-registry.md +57 -0
  37. package/skills/crwu/crwu-audit/references/08-union-dispatch-rules.md +142 -0
  38. package/skills/crwu/crwu-audit/references/09-review-risk-classification.md +85 -0
  39. package/skills/crwu/crwu-audit/references/10-capability-gap-proposal.md +68 -0
  40. package/skills/crwu/crwu-audit/references/11-html-delivery-spec.md +881 -0
  41. package/skills/crwu/crwu-audit/references/12-leaf-common-contract.md +202 -0
  42. package/skills/crwu/crwu-audit/references/13-dingtalk-result-publish.md +88 -0
  43. package/skills/crwu/crwu-audit/references/14-orchestration-workflow.md +52 -0
  44. package/skills/crwu/crwu-audit/references/99-maintenance.md +62 -0
  45. package/skills/crwu/crwu-audit/scripts/README.md +157 -0
  46. package/skills/crwu/crwu-audit/scripts/audit_delivery.py +2736 -0
  47. package/skills/crwu/crwu-audit/scripts/audit_result.schema.json +1659 -0
  48. package/skills/crwu/crwu-audit/scripts/examples/audit-result.sample.json +739 -0
  49. package/skills/crwu/crwu-audit/scripts/fetch_review_records.py +85 -0
  50. package/skills/crwu/crwu-audit/scripts/media_extract.py +513 -0
  51. package/skills/crwu/crwu-audit/scripts/prepare_materials.py +1252 -0
  52. package/skills/crwu/crwu-audit/scripts/test_audit_delivery.py +1678 -0
  53. package/skills/crwu/crwu-audit/scripts/test_audit_multiaxis_router.py +1339 -0
  54. package/skills/crwu/crwu-audit/scripts/test_fetch_review_records.py +77 -0
  55. package/skills/crwu/crwu-audit/scripts/test_media_extract.py +332 -0
  56. package/skills/crwu/crwu-audit/scripts/test_prepare_materials.py +1081 -0
  57. package/skills/crwu/crwu-audit/template/audit-report.html +435 -0
  58. package/skills/crwu/crwu-audit-asset-asset-group-goodwill/SKILL.md +38 -0
  59. package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/00-applicability.md +28 -0
  60. package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/01-kb-assembly.md +31 -0
  61. package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/02-review-focus.md +21 -0
  62. package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/03-common-contract.md +202 -0
  63. package/skills/crwu/crwu-audit-asset-debt/SKILL.md +38 -0
  64. package/skills/crwu/crwu-audit-asset-debt/references/00-applicability.md +40 -0
  65. package/skills/crwu/crwu-audit-asset-debt/references/01-kb-assembly.md +41 -0
  66. package/skills/crwu/crwu-audit-asset-debt/references/02-review-focus.md +54 -0
  67. package/skills/crwu/crwu-audit-asset-debt/references/03-common-contract.md +202 -0
  68. package/skills/crwu/crwu-audit-asset-enterprise-value/SKILL.md +38 -0
  69. package/skills/crwu/crwu-audit-asset-enterprise-value/references/00-applicability.md +31 -0
  70. package/skills/crwu/crwu-audit-asset-enterprise-value/references/01-kb-assembly.md +35 -0
  71. package/skills/crwu/crwu-audit-asset-enterprise-value/references/02-review-focus.md +33 -0
  72. package/skills/crwu/crwu-audit-asset-enterprise-value/references/03-common-contract.md +202 -0
  73. package/skills/crwu/crwu-audit-asset-equipment/SKILL.md +38 -0
  74. package/skills/crwu/crwu-audit-asset-equipment/references/00-applicability.md +40 -0
  75. package/skills/crwu/crwu-audit-asset-equipment/references/01-kb-assembly.md +39 -0
  76. package/skills/crwu/crwu-audit-asset-equipment/references/02-review-focus.md +52 -0
  77. package/skills/crwu/crwu-audit-asset-equipment/references/03-common-contract.md +202 -0
  78. package/skills/crwu/crwu-audit-asset-intangible/SKILL.md +38 -0
  79. package/skills/crwu/crwu-audit-asset-intangible/references/00-applicability.md +36 -0
  80. package/skills/crwu/crwu-audit-asset-intangible/references/01-kb-assembly.md +40 -0
  81. package/skills/crwu/crwu-audit-asset-intangible/references/02-review-focus.md +68 -0
  82. package/skills/crwu/crwu-audit-asset-intangible/references/03-common-contract.md +202 -0
  83. package/skills/crwu/crwu-audit-asset-inventory/SKILL.md +38 -0
  84. package/skills/crwu/crwu-audit-asset-inventory/references/00-applicability.md +28 -0
  85. package/skills/crwu/crwu-audit-asset-inventory/references/01-kb-assembly.md +31 -0
  86. package/skills/crwu/crwu-audit-asset-inventory/references/02-review-focus.md +21 -0
  87. package/skills/crwu/crwu-audit-asset-inventory/references/03-common-contract.md +202 -0
  88. package/skills/crwu/crwu-audit-asset-mining-right/SKILL.md +38 -0
  89. package/skills/crwu/crwu-audit-asset-mining-right/references/00-applicability.md +31 -0
  90. package/skills/crwu/crwu-audit-asset-mining-right/references/01-kb-assembly.md +35 -0
  91. package/skills/crwu/crwu-audit-asset-mining-right/references/02-review-focus.md +33 -0
  92. package/skills/crwu/crwu-audit-asset-mining-right/references/03-common-contract.md +202 -0
  93. package/skills/crwu/crwu-audit-asset-other/SKILL.md +38 -0
  94. package/skills/crwu/crwu-audit-asset-other/references/00-applicability.md +28 -0
  95. package/skills/crwu/crwu-audit-asset-other/references/01-kb-assembly.md +31 -0
  96. package/skills/crwu/crwu-audit-asset-other/references/02-review-focus.md +21 -0
  97. package/skills/crwu/crwu-audit-asset-other/references/03-common-contract.md +202 -0
  98. package/skills/crwu/crwu-audit-asset-portfolio/SKILL.md +38 -0
  99. package/skills/crwu/crwu-audit-asset-portfolio/references/00-applicability.md +28 -0
  100. package/skills/crwu/crwu-audit-asset-portfolio/references/01-kb-assembly.md +31 -0
  101. package/skills/crwu/crwu-audit-asset-portfolio/references/02-review-focus.md +21 -0
  102. package/skills/crwu/crwu-audit-asset-portfolio/references/03-common-contract.md +202 -0
  103. package/skills/crwu/crwu-audit-asset-realestate/SKILL.md +38 -0
  104. package/skills/crwu/crwu-audit-asset-realestate/references/00-applicability.md +43 -0
  105. package/skills/crwu/crwu-audit-asset-realestate/references/01-kb-assembly.md +75 -0
  106. package/skills/crwu/crwu-audit-asset-realestate/references/02-review-focus.md +93 -0
  107. package/skills/crwu/crwu-audit-asset-realestate/references/03-common-contract.md +202 -0
  108. package/skills/crwu/crwu-audit-asset-scrap-materials/SKILL.md +38 -0
  109. package/skills/crwu/crwu-audit-asset-scrap-materials/references/00-applicability.md +28 -0
  110. package/skills/crwu/crwu-audit-asset-scrap-materials/references/01-kb-assembly.md +31 -0
  111. package/skills/crwu/crwu-audit-asset-scrap-materials/references/02-review-focus.md +21 -0
  112. package/skills/crwu/crwu-audit-asset-scrap-materials/references/03-common-contract.md +202 -0
  113. package/skills/crwu/crwu-audit-asset-transport-equipment/SKILL.md +38 -0
  114. package/skills/crwu/crwu-audit-asset-transport-equipment/references/00-applicability.md +31 -0
  115. package/skills/crwu/crwu-audit-asset-transport-equipment/references/01-kb-assembly.md +35 -0
  116. package/skills/crwu/crwu-audit-asset-transport-equipment/references/02-review-focus.md +33 -0
  117. package/skills/crwu/crwu-audit-asset-transport-equipment/references/03-common-contract.md +202 -0
  118. package/skills/crwu/crwu-audit-biz-asset-operation/SKILL.md +38 -0
  119. package/skills/crwu/crwu-audit-biz-asset-operation/references/00-applicability.md +30 -0
  120. package/skills/crwu/crwu-audit-biz-asset-operation/references/01-kb-assembly.md +32 -0
  121. package/skills/crwu/crwu-audit-biz-asset-operation/references/02-review-focus.md +42 -0
  122. package/skills/crwu/crwu-audit-biz-asset-operation/references/03-common-contract.md +202 -0
  123. package/skills/crwu/crwu-audit-biz-consulting-review/SKILL.md +38 -0
  124. package/skills/crwu/crwu-audit-biz-consulting-review/references/00-applicability.md +30 -0
  125. package/skills/crwu/crwu-audit-biz-consulting-review/references/01-kb-assembly.md +32 -0
  126. package/skills/crwu/crwu-audit-biz-consulting-review/references/02-review-focus.md +40 -0
  127. package/skills/crwu/crwu-audit-biz-consulting-review/references/03-common-contract.md +202 -0
  128. package/skills/crwu/crwu-audit-biz-financial-reporting/SKILL.md +38 -0
  129. package/skills/crwu/crwu-audit-biz-financial-reporting/references/00-applicability.md +41 -0
  130. package/skills/crwu/crwu-audit-biz-financial-reporting/references/01-kb-assembly.md +40 -0
  131. package/skills/crwu/crwu-audit-biz-financial-reporting/references/02-review-focus.md +64 -0
  132. package/skills/crwu/crwu-audit-biz-financial-reporting/references/03-common-contract.md +202 -0
  133. package/skills/crwu/crwu-audit-biz-financing-debt/SKILL.md +38 -0
  134. package/skills/crwu/crwu-audit-biz-financing-debt/references/00-applicability.md +31 -0
  135. package/skills/crwu/crwu-audit-biz-financing-debt/references/01-kb-assembly.md +34 -0
  136. package/skills/crwu/crwu-audit-biz-financing-debt/references/02-review-focus.md +47 -0
  137. package/skills/crwu/crwu-audit-biz-financing-debt/references/03-common-contract.md +202 -0
  138. package/skills/crwu/crwu-audit-biz-investment-capital/SKILL.md +38 -0
  139. package/skills/crwu/crwu-audit-biz-investment-capital/references/00-applicability.md +31 -0
  140. package/skills/crwu/crwu-audit-biz-investment-capital/references/01-kb-assembly.md +34 -0
  141. package/skills/crwu/crwu-audit-biz-investment-capital/references/02-review-focus.md +47 -0
  142. package/skills/crwu/crwu-audit-biz-investment-capital/references/03-common-contract.md +202 -0
  143. package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/SKILL.md +38 -0
  144. package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/00-applicability.md +30 -0
  145. package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/01-kb-assembly.md +32 -0
  146. package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/02-review-focus.md +40 -0
  147. package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/03-common-contract.md +202 -0
  148. package/skills/crwu/crwu-audit-biz-tax-history/SKILL.md +38 -0
  149. package/skills/crwu/crwu-audit-biz-tax-history/references/00-applicability.md +29 -0
  150. package/skills/crwu/crwu-audit-biz-tax-history/references/01-kb-assembly.md +30 -0
  151. package/skills/crwu/crwu-audit-biz-tax-history/references/02-review-focus.md +33 -0
  152. package/skills/crwu/crwu-audit-biz-tax-history/references/03-common-contract.md +202 -0
  153. package/skills/crwu/crwu-audit-biz-transaction-disposal/SKILL.md +38 -0
  154. package/skills/crwu/crwu-audit-biz-transaction-disposal/references/00-applicability.md +31 -0
  155. package/skills/crwu/crwu-audit-biz-transaction-disposal/references/01-kb-assembly.md +34 -0
  156. package/skills/crwu/crwu-audit-biz-transaction-disposal/references/02-review-focus.md +47 -0
  157. package/skills/crwu/crwu-audit-biz-transaction-disposal/references/03-common-contract.md +202 -0
  158. package/skills/crwu/crwu-audit-datacheck/SKILL.md +59 -0
  159. package/skills/crwu/crwu-audit-datacheck/references/00-KB/350/243/205/351/205/215/350/241/250.md +25 -0
  160. package/skills/crwu/crwu-audit-datacheck/references/01-runtime-and-check-catalog.md +139 -0
  161. package/skills/crwu/crwu-audit-datacheck/scripts/recalc_check.py +521 -0
  162. package/skills/crwu/crwu-audit-datacheck/scripts/test_recalc_check.py +419 -0
  163. package/skills/crwu/crwu-audit-datacheck/scripts/test_skill_self_containment.py +44 -0
  164. package/skills/crwu/crwu-audit-external-data/SKILL.md +73 -0
  165. package/skills/crwu/crwu-audit-external-data/references/00-KB/350/243/205/351/205/215/350/241/250.md +38 -0
  166. package/skills/crwu/crwu-audit-external-data/references/01-connector-access.md +116 -0
  167. package/skills/crwu/crwu-audit-external-data/references/02-verification-workflow.md +78 -0
  168. package/skills/crwu/crwu-audit-external-data/scripts/connector_probe.py +374 -0
  169. package/skills/crwu/crwu-audit-external-data/scripts/test_connector_probe.py +264 -0
  170. package/skills/crwu/crwu-audit-output-filter/SKILL.md +34 -0
  171. package/skills/crwu/crwu-audit-output-filter/references/00-applicability.md +7 -0
  172. package/skills/crwu/crwu-audit-output-filter/references/01-kb-assembly.md +11 -0
  173. package/skills/crwu/crwu-audit-output-filter/references/02-review-focus.md +25 -0
  174. package/skills/crwu/crwu-audit-public-general-standards/SKILL.md +46 -0
  175. package/skills/crwu/crwu-audit-public-general-standards/references/00-applicability.md +41 -0
  176. package/skills/crwu/crwu-audit-public-general-standards/references/01-kb-assembly.md +66 -0
  177. package/skills/crwu/crwu-audit-public-general-standards/references/02-review-focus.md +111 -0
  178. package/skills/crwu/crwu-audit-public-general-standards/references/03-execution-contract.md +89 -0
  179. package/skills/crwu/crwu-dev-audit-optimize/SKILL.md +98 -0
  180. package/skills/crwu/crwu-dev-audit-optimize/references/00-/344/274/230/345/214/226/350/247/204/350/214/203/344/270/216/346/226/207/344/273/266/350/220/275/347/202/271.md +132 -0
  181. package/skills/crwu/crwu-dev-audit-optimize/references/01-/345/217/215/351/246/210/345/256/232/344/275/215/344/270/216/347/224/273/345/203/217/346/265/201/347/250/213.md +108 -0
  182. package/skills/crwu/crwu-dev-audit-optimize/references/02-/346/226/271/346/241/210/346/250/241/346/235/277/344/270/216/347/241/256/350/256/244/351/227/250/347/246/201.md +92 -0
  183. package/skills/crwu/crwu-dev-audit-optimize/references/03-AI/344/272/272/345/267/245/345/267/256/350/267/235/345/210/206/346/236/220/346/265/201/347/250/213.md +95 -0
  184. package/skills/crwu/crwu-dev-audit-optimize/scripts/examples/gap-analysis.sample.json +116 -0
  185. package/skills/crwu/crwu-dev-audit-optimize/scripts/gap_analysis.schema.json +33 -0
  186. package/skills/crwu/crwu-dev-audit-optimize/scripts/gap_analysis_delivery.py +475 -0
  187. package/skills/crwu/crwu-dev-audit-optimize/scripts/test_gap_analysis_delivery.py +855 -0
  188. package/skills/crwu/crwu-dev-audit-optimize/template/NOTICE.echarts.txt +7 -0
  189. package/skills/crwu/crwu-dev-audit-optimize/template/echarts.min.js +45 -0
  190. package/skills/crwu/crwu-dev-audit-optimize/template/gap-analysis-report.html +71 -0
  191. package/skills/crwu/crwu-dev-audit-skill-maintainer/SKILL.md +74 -0
  192. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/00-responsibility-and-modes.md +62 -0
  193. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/01-kb-source-discovery.md +89 -0
  194. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/02-child-skill-contract.md +99 -0
  195. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/03-review-item-execution-contract.md +51 -0
  196. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/04-registry-and-mapping-update.md +73 -0
  197. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/05-validation-and-delivery.md +127 -0
  198. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/06-live-routing-reconciliation.md +136 -0
  199. package/skills/crwu/crwu-dev-audit-skill-maintainer/references/07-kb-skill-map.md +411 -0
  200. package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/README.md +200 -0
  201. package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/check_audit_skill_mappings.py +2477 -0
  202. package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/kb_tool.py +577 -0
  203. package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/test_audit_skill_maintainer.py +5097 -0
  204. package/skills/dws/LICENSE +178 -0
  205. package/skills/dws/NOTICE +17 -0
  206. package/skills/dws/dingtalk-aisearch/SKILL.md +83 -0
  207. package/skills/dws/dingtalk-aisearch/references/aisearch.md +249 -0
  208. package/skills/dws/dingtalk-aisearch/references/intent-guide.md +15 -0
  209. package/skills/dws/dingtalk-aisearch/references/lite-recipes.md +31 -0
  210. package/skills/dws/dingtalk-aitable/SKILL.md +139 -0
  211. package/skills/dws/dingtalk-aitable/references/06-data-analytics.md +11 -0
  212. package/skills/dws/dingtalk-aitable/references/aitable/aitable-advperm.md +251 -0
  213. package/skills/dws/dingtalk-aitable/references/aitable/aitable-attachment.md +49 -0
  214. package/skills/dws/dingtalk-aitable/references/aitable/aitable-best-practices.md +48 -0
  215. package/skills/dws/dingtalk-aitable/references/aitable/aitable-cell-value.md +346 -0
  216. package/skills/dws/dingtalk-aitable/references/aitable/aitable-dashboard-chart.md +46 -0
  217. package/skills/dws/dingtalk-aitable/references/aitable/aitable-data-analysis-sop.md +131 -0
  218. package/skills/dws/dingtalk-aitable/references/aitable/aitable-datasource.md +272 -0
  219. package/skills/dws/dingtalk-aitable/references/aitable/aitable-error-recovery.md +128 -0
  220. package/skills/dws/dingtalk-aitable/references/aitable/aitable-export-import.md +113 -0
  221. package/skills/dws/dingtalk-aitable/references/aitable/aitable-field-properties.md +238 -0
  222. package/skills/dws/dingtalk-aitable/references/aitable/aitable-field.md +186 -0
  223. package/skills/dws/dingtalk-aitable/references/aitable/aitable-filter-sort.md +135 -0
  224. package/skills/dws/dingtalk-aitable/references/aitable/aitable-form.md +130 -0
  225. package/skills/dws/dingtalk-aitable/references/aitable/aitable-formula-guide.md +224 -0
  226. package/skills/dws/dingtalk-aitable/references/aitable/aitable-primary-doc.md +58 -0
  227. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-create.md +52 -0
  228. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-delete.md +20 -0
  229. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-history.md +97 -0
  230. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-name-key.md +47 -0
  231. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-query.md +120 -0
  232. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-share.md +54 -0
  233. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-stats.md +59 -0
  234. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-update.md +66 -0
  235. package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-upsert.md +89 -0
  236. package/skills/dws/dingtalk-aitable/references/aitable/aitable-view-config.md +140 -0
  237. package/skills/dws/dingtalk-aitable/references/aitable/aitable-view-extras.md +195 -0
  238. package/skills/dws/dingtalk-aitable/references/aitable/aitable-view-types.md +95 -0
  239. package/skills/dws/dingtalk-aitable/references/aitable/aitable-workflow.md +384 -0
  240. package/skills/dws/dingtalk-aitable/references/aitable-record-ops.md +80 -0
  241. package/skills/dws/dingtalk-aitable/references/aitable-section.md +30 -0
  242. package/skills/dws/dingtalk-aitable/references/aitable.md +59 -0
  243. package/skills/dws/dingtalk-aitable/references/field-rules.md +17 -0
  244. package/skills/dws/dingtalk-aitable/references/intent-guide.md +17 -0
  245. package/skills/dws/dingtalk-aitable/references/recipes/conventions.md +44 -0
  246. package/skills/dws/dingtalk-aitable/references/url-patterns.md +144 -0
  247. package/skills/dws/dingtalk-aitable/scripts/aitable_export_via_task.py +210 -0
  248. package/skills/dws/dingtalk-aitable/scripts/aitable_import_via_task.py +173 -0
  249. package/skills/dws/dingtalk-aitable/scripts/bulk_add_fields.py +273 -0
  250. package/skills/dws/dingtalk-aitable/scripts/import_records.py +333 -0
  251. package/skills/dws/dingtalk-aitable/scripts/upload_attachment.py +190 -0
  252. package/skills/dws/dingtalk-calendar/SKILL.md +137 -0
  253. package/skills/dws/dingtalk-calendar/references/03-meeting.md +56 -0
  254. package/skills/dws/dingtalk-calendar/references/calendar.md +760 -0
  255. package/skills/dws/dingtalk-calendar/references/intent-guide.md +9 -0
  256. package/skills/dws/dingtalk-calendar/references/lite-recipes.md +25 -0
  257. package/skills/dws/dingtalk-calendar/scripts/calendar_free_slot_finder.py +199 -0
  258. package/skills/dws/dingtalk-calendar/scripts/calendar_schedule_meeting.py +233 -0
  259. package/skills/dws/dingtalk-calendar/scripts/calendar_today_agenda.py +139 -0
  260. package/skills/dws/dingtalk-chat/SKILL.md +127 -0
  261. package/skills/dws/dingtalk-chat/references/01-messaging.md +103 -0
  262. package/skills/dws/dingtalk-chat/references/card/callback.md +10 -0
  263. package/skills/dws/dingtalk-chat/references/card/create.md +27 -0
  264. package/skills/dws/dingtalk-chat/references/card/schema.md +14 -0
  265. package/skills/dws/dingtalk-chat/references/card/update.md +13 -0
  266. package/skills/dws/dingtalk-chat/references/chat/chat-bot.md +187 -0
  267. package/skills/dws/dingtalk-chat/references/chat/chat-conversation.md +165 -0
  268. package/skills/dws/dingtalk-chat/references/chat/group-admin.md +144 -0
  269. package/skills/dws/dingtalk-chat/references/chat/group-discovery.md +121 -0
  270. package/skills/dws/dingtalk-chat/references/chat/message-actions.md +132 -0
  271. package/skills/dws/dingtalk-chat/references/chat/message-media.md +76 -0
  272. package/skills/dws/dingtalk-chat/references/chat/message-query.md +135 -0
  273. package/skills/dws/dingtalk-chat/references/chat/thread.md +46 -0
  274. package/skills/dws/dingtalk-chat/references/chat-emoji-list.md +216 -0
  275. package/skills/dws/dingtalk-chat/references/chat.md +140 -0
  276. package/skills/dws/dingtalk-chat/references/contracts.md +70 -0
  277. package/skills/dws/dingtalk-chat/references/intent-guide.md +56 -0
  278. package/skills/dws/dingtalk-contact/SKILL.md +122 -0
  279. package/skills/dws/dingtalk-contact/references/08-directory.md +51 -0
  280. package/skills/dws/dingtalk-contact/references/contact.md +595 -0
  281. package/skills/dws/dingtalk-contact/references/intent-guide.md +14 -0
  282. package/skills/dws/dingtalk-contact/references/lite-recipes.md +30 -0
  283. package/skills/dws/dingtalk-contact/references/recipes/conventions.md +44 -0
  284. package/skills/dws/dingtalk-contact/scripts/contact_dept_members.py +130 -0
  285. package/skills/dws/dingtalk-doc/SKILL.md +112 -0
  286. package/skills/dws/dingtalk-doc/references/04-document.md +57 -0
  287. package/skills/dws/dingtalk-doc/references/contracts.md +40 -0
  288. package/skills/dws/dingtalk-doc/references/doc/doc-block.md +39 -0
  289. package/skills/dws/dingtalk-doc/references/doc/doc-comment.md +29 -0
  290. package/skills/dws/dingtalk-doc/references/doc/doc-create.md +54 -0
  291. package/skills/dws/dingtalk-doc/references/doc/doc-export.md +30 -0
  292. package/skills/dws/dingtalk-doc/references/doc/doc-import.md +28 -0
  293. package/skills/dws/dingtalk-doc/references/doc/doc-info.md +12 -0
  294. package/skills/dws/dingtalk-doc/references/doc/doc-media.md +46 -0
  295. package/skills/dws/dingtalk-doc/references/doc/doc-read.md +56 -0
  296. package/skills/dws/dingtalk-doc/references/doc/doc-update.md +87 -0
  297. package/skills/dws/dingtalk-doc/references/doc/format/doc-jsonml-cookbook.md +469 -0
  298. package/skills/dws/dingtalk-doc/references/doc/format/doc-jsonml-schema.json +526 -0
  299. package/skills/dws/dingtalk-doc/references/doc/format/doc-jsonml-schema.md +711 -0
  300. package/skills/dws/dingtalk-doc/references/doc/style/doc-create-workflow.md +414 -0
  301. package/skills/dws/dingtalk-doc/references/doc/style/doc-style-guideline.md +404 -0
  302. package/skills/dws/dingtalk-doc/references/doc/style/doc-update-workflow.md +316 -0
  303. package/skills/dws/dingtalk-doc/references/doc.md +82 -0
  304. package/skills/dws/dingtalk-doc/references/intent-guide.md +20 -0
  305. package/skills/dws/dingtalk-drive/SKILL.md +128 -0
  306. package/skills/dws/dingtalk-drive/references/drive.md +126 -0
  307. package/skills/dws/dingtalk-drive/references/folder-sync.md +40 -0
  308. package/skills/dws/dingtalk-drive/references/intent-guide.md +22 -0
  309. package/skills/dws/dingtalk-drive/references/lite-recipes.md +39 -0
  310. package/skills/dws/dingtalk-event/SKILL.md +106 -0
  311. package/skills/dws/dingtalk-event/references/event-im-keys.md +54 -0
  312. package/skills/dws/dingtalk-event/references/event-im-lifecycle.md +35 -0
  313. package/skills/dws/dingtalk-event/references/event-im-operations.md +52 -0
  314. package/skills/dws/dingtalk-event/references/event-im-output.md +39 -0
  315. package/skills/dws/dingtalk-event/references/event-im.md +58 -0
  316. package/skills/dws/dingtalk-event/references/event-oa.md +155 -0
  317. package/skills/dws/dingtalk-event/references/event-todo.md +50 -0
  318. package/skills/dws/dingtalk-event/references/event-voip.md +69 -0
  319. package/skills/dws/dingtalk-mail/SKILL.md +113 -0
  320. package/skills/dws/dingtalk-mail/references/09-mail.md +45 -0
  321. package/skills/dws/dingtalk-mail/references/intent-guide.md +8 -0
  322. package/skills/dws/dingtalk-mail/references/lite-recipes.md +45 -0
  323. package/skills/dws/dingtalk-mail/references/mail.md +1889 -0
  324. package/skills/dws/dingtalk-mail/references/recipes/conventions.md +44 -0
  325. package/skills/dws/dingtalk-mail/scripts/mail_send_with_cc.py +122 -0
  326. package/skills/dws/dingtalk-mail/scripts/mail_unread_summary.py +114 -0
  327. package/skills/dws/dingtalk-minutes/SKILL.md +116 -0
  328. package/skills/dws/dingtalk-minutes/references/07-minutes.md +149 -0
  329. package/skills/dws/dingtalk-minutes/references/10-minutes-speaker-match.md +32 -0
  330. package/skills/dws/dingtalk-minutes/references/11-minutes-speaker-correct.md +40 -0
  331. package/skills/dws/dingtalk-minutes/references/intent-guide.md +79 -0
  332. package/skills/dws/dingtalk-minutes/references/lite-recipes.md +25 -0
  333. package/skills/dws/dingtalk-minutes/references/minutes.md +210 -0
  334. package/skills/dws/dingtalk-minutes/references/recipes/conventions.md +33 -0
  335. package/skills/dws/dingtalk-minutes/scripts/minutes_recent_summary.py +196 -0
  336. package/skills/dws/dingtalk-minutes/scripts/test_minutes_scripts.py +222 -0
  337. package/skills/dws/dingtalk-misc/SKILL.md +55 -0
  338. package/skills/dws/dingtalk-misc/references/05-reporting.md +29 -0
  339. package/skills/dws/dingtalk-misc/references/agoal.md +302 -0
  340. package/skills/dws/dingtalk-misc/references/attendance-intent-guide.md +7 -0
  341. package/skills/dws/dingtalk-misc/references/attendance-report.md +109 -0
  342. package/skills/dws/dingtalk-misc/references/attendance-schedule.md +115 -0
  343. package/skills/dws/dingtalk-misc/references/attendance-vacation.md +129 -0
  344. package/skills/dws/dingtalk-misc/references/attendance.md +149 -0
  345. package/skills/dws/dingtalk-misc/references/dev/app.md +42 -0
  346. package/skills/dws/dingtalk-misc/references/dev/connect.md +108 -0
  347. package/skills/dws/dingtalk-misc/references/dev/credentials.md +26 -0
  348. package/skills/dws/dingtalk-misc/references/dev/dev-index.md +13 -0
  349. package/skills/dws/dingtalk-misc/references/dev/event.md +47 -0
  350. package/skills/dws/dingtalk-misc/references/dev/mcp.md +106 -0
  351. package/skills/dws/dingtalk-misc/references/dev/member.md +19 -0
  352. package/skills/dws/dingtalk-misc/references/dev/permission.md +56 -0
  353. package/skills/dws/dingtalk-misc/references/dev/recipes.md +58 -0
  354. package/skills/dws/dingtalk-misc/references/dev/robot.md +74 -0
  355. package/skills/dws/dingtalk-misc/references/dev/security.md +21 -0
  356. package/skills/dws/dingtalk-misc/references/dev/version.md +99 -0
  357. package/skills/dws/dingtalk-misc/references/dev/webapp.md +22 -0
  358. package/skills/dws/dingtalk-misc/references/devapp.md +148 -0
  359. package/skills/dws/dingtalk-misc/references/devdoc-intent-guide.md +7 -0
  360. package/skills/dws/dingtalk-misc/references/devdoc.md +42 -0
  361. package/skills/dws/dingtalk-misc/references/ding.md +184 -0
  362. package/skills/dws/dingtalk-misc/references/hrbrain.md +67 -0
  363. package/skills/dws/dingtalk-misc/references/live.md +23 -0
  364. package/skills/dws/dingtalk-misc/references/markdown.md +167 -0
  365. package/skills/dws/dingtalk-misc/references/oa/oa-form-components.md +345 -0
  366. package/skills/dws/dingtalk-misc/references/oa/oa-process-nodes.md +374 -0
  367. package/skills/dws/dingtalk-misc/references/oa.md +1014 -0
  368. package/skills/dws/dingtalk-misc/references/openapi-explorer.md +47 -0
  369. package/skills/dws/dingtalk-misc/references/pat.md +52 -0
  370. package/skills/dws/dingtalk-misc/references/profile.md +41 -0
  371. package/skills/dws/dingtalk-misc/references/recruit.md +89 -0
  372. package/skills/dws/dingtalk-misc/references/report-conventions.md +44 -0
  373. package/skills/dws/dingtalk-misc/references/report-intent-guide.md +11 -0
  374. package/skills/dws/dingtalk-misc/references/report-lite-recipes.md +25 -0
  375. package/skills/dws/dingtalk-misc/references/report.md +109 -0
  376. package/skills/dws/dingtalk-misc/references/sheet/sheet-batch-operations.md +104 -0
  377. package/skills/dws/dingtalk-misc/references/sheet/sheet-chart.md +69 -0
  378. package/skills/dws/dingtalk-misc/references/sheet/sheet-comment.md +166 -0
  379. package/skills/dws/dingtalk-misc/references/sheet/sheet-conditional-format.md +59 -0
  380. package/skills/dws/dingtalk-misc/references/sheet/sheet-dimension-operations.md +60 -0
  381. package/skills/dws/dingtalk-misc/references/sheet/sheet-dropdown.md +103 -0
  382. package/skills/dws/dingtalk-misc/references/sheet/sheet-export.md +135 -0
  383. package/skills/dws/dingtalk-misc/references/sheet/sheet-filter-view.md +51 -0
  384. package/skills/dws/dingtalk-misc/references/sheet/sheet-filter.md +181 -0
  385. package/skills/dws/dingtalk-misc/references/sheet/sheet-formula.md +192 -0
  386. package/skills/dws/dingtalk-misc/references/sheet/sheet-import.md +76 -0
  387. package/skills/dws/dingtalk-misc/references/sheet/sheet-media-image.md +263 -0
  388. package/skills/dws/dingtalk-misc/references/sheet/sheet-pivot-table.md +292 -0
  389. package/skills/dws/dingtalk-misc/references/sheet/sheet-range-operations.md +161 -0
  390. package/skills/dws/dingtalk-misc/references/sheet/sheet-read-data.md +60 -0
  391. package/skills/dws/dingtalk-misc/references/sheet/sheet-revision-changeset.md +46 -0
  392. package/skills/dws/dingtalk-misc/references/sheet/sheet-search-replace.md +120 -0
  393. package/skills/dws/dingtalk-misc/references/sheet/sheet-style-format.md +71 -0
  394. package/skills/dws/dingtalk-misc/references/sheet/sheet-version.md +84 -0
  395. package/skills/dws/dingtalk-misc/references/sheet/sheet-workbook.md +59 -0
  396. package/skills/dws/dingtalk-misc/references/sheet/sheet-write-data.md +93 -0
  397. package/skills/dws/dingtalk-misc/references/sheet-conventions.md +44 -0
  398. package/skills/dws/dingtalk-misc/references/sheet-intent-guide.md +12 -0
  399. package/skills/dws/dingtalk-misc/references/sheet.md +166 -0
  400. package/skills/dws/dingtalk-misc/references/skill.md +98 -0
  401. package/skills/dws/dingtalk-misc/references/unsupported-scripts.md +49 -0
  402. package/skills/dws/dingtalk-misc/references/url-patterns.md +144 -0
  403. package/skills/dws/dingtalk-misc/references/whiteboard/compose.md +200 -0
  404. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/01-overview.md +57 -0
  405. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/02-query.md +288 -0
  406. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/03-update.md +249 -0
  407. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/04-text-style.md +395 -0
  408. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/05-shape-frame-group-connector.md +186 -0
  409. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/06-vector-icon-path.md +313 -0
  410. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/07-examples-errors-write-support.md +270 -0
  411. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/08-catalogs.md +61 -0
  412. package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1.md +54 -0
  413. package/skills/dws/dingtalk-misc/references/whiteboard/replace.md +41 -0
  414. package/skills/dws/dingtalk-misc/references/whiteboard/vector.md +51 -0
  415. package/skills/dws/dingtalk-misc/references/whiteboard.md +115 -0
  416. package/skills/dws/dingtalk-misc/scripts/aiapp_create_and_poll.py +138 -0
  417. package/skills/dws/dingtalk-misc/scripts/attendance_my_record.py +91 -0
  418. package/skills/dws/dingtalk-misc/scripts/attendance_report_checkin.py +440 -0
  419. package/skills/dws/dingtalk-misc/scripts/attendance_report_common.py +1698 -0
  420. package/skills/dws/dingtalk-misc/scripts/attendance_report_daily.py +558 -0
  421. package/skills/dws/dingtalk-misc/scripts/attendance_report_detail.py +809 -0
  422. package/skills/dws/dingtalk-misc/scripts/attendance_report_monthly.py +758 -0
  423. package/skills/dws/dingtalk-misc/scripts/attendance_report_record.py +947 -0
  424. package/skills/dws/dingtalk-misc/scripts/attendance_schedule_export.py +344 -0
  425. package/skills/dws/dingtalk-misc/scripts/attendance_schedule_import.py +498 -0
  426. package/skills/dws/dingtalk-misc/scripts/attendance_team_shift.py +89 -0
  427. package/skills/dws/dingtalk-misc/scripts/attendance_vacation_balance.py +617 -0
  428. package/skills/dws/dingtalk-misc/scripts/finance_daily_cashflow.py +70 -0
  429. package/skills/dws/dingtalk-misc/scripts/finance_expense_flow.py +138 -0
  430. package/skills/dws/dingtalk-misc/scripts/oa_batch_approve.py +158 -0
  431. package/skills/dws/dingtalk-misc/scripts/oa_pending_review.py +132 -0
  432. package/skills/dws/dingtalk-misc/scripts/report_received_today.py +315 -0
  433. package/skills/dws/dingtalk-misc/scripts/yida_custom_page_update.py +401 -0
  434. package/skills/dws/dingtalk-misc/scripts/yida_form_builder.py +526 -0
  435. package/skills/dws/dingtalk-misc/scripts/yida_form_fields.py +315 -0
  436. package/skills/dws/dingtalk-misc/scripts/yida_form_inspector.py +311 -0
  437. package/skills/dws/dingtalk-misc/scripts/yida_form_update.py +185 -0
  438. package/skills/dws/dingtalk-misc/scripts/yida_jsx_pipeline.py +1588 -0
  439. package/skills/dws/dingtalk-misc/scripts/yida_page_compiler.py +1441 -0
  440. package/skills/dws/dingtalk-misc/scripts/yida_page_generate.py +514 -0
  441. package/skills/dws/dingtalk-misc/scripts/yida_page_schema.py +519 -0
  442. package/skills/dws/dingtalk-misc/scripts/yida_page_self_check.py +398 -0
  443. package/skills/dws/dingtalk-misc/scripts/yida_process_flow.py +1478 -0
  444. package/skills/dws/dingtalk-misc/scripts/yida_process_update.py +589 -0
  445. package/skills/dws/dingtalk-misc/scripts/yida_report_builder.py +494 -0
  446. package/skills/dws/dingtalk-misc/scripts/yida_report_charts.py +1434 -0
  447. package/skills/dws/dingtalk-misc/scripts/yida_report_update.py +244 -0
  448. package/skills/dws/dingtalk-misc/scripts/yida_schema_common.py +340 -0
  449. package/skills/dws/dingtalk-shared/SKILL.md +83 -0
  450. package/skills/dws/dingtalk-shared/references/capability-limits.md +31 -0
  451. package/skills/dws/dingtalk-shared/references/channel-login.md +26 -0
  452. package/skills/dws/dingtalk-shared/references/confirmation.md +59 -0
  453. package/skills/dws/dingtalk-shared/references/error-codes.md +155 -0
  454. package/skills/dws/dingtalk-shared/references/global-reference.md +122 -0
  455. package/skills/dws/dingtalk-shared/references/intent-guide.md +537 -0
  456. package/skills/dws/dingtalk-shared/references/recipes/conventions.md +45 -0
  457. package/skills/dws/dingtalk-shared/references/recipes/lite-catalog.md +275 -0
  458. package/skills/dws/dingtalk-shared/references/recipes/meta.md +67 -0
  459. package/skills/dws/dingtalk-shared/references/routing.md +52 -0
  460. package/skills/dws/dingtalk-shared/references/runtime-contract.md +11 -0
  461. package/skills/dws/dingtalk-shared/references/schema-usage.md +88 -0
  462. package/skills/dws/dingtalk-shared/references/url-patterns.md +144 -0
  463. package/skills/dws/dingtalk-shared/references/workflow-routing.md +45 -0
  464. package/skills/dws/dingtalk-todo/SKILL.md +119 -0
  465. package/skills/dws/dingtalk-todo/references/02-task.md +70 -0
  466. package/skills/dws/dingtalk-todo/references/intent-guide.md +15 -0
  467. package/skills/dws/dingtalk-todo/references/lite-recipes.md +68 -0
  468. package/skills/dws/dingtalk-todo/references/recipes/conventions.md +44 -0
  469. package/skills/dws/dingtalk-todo/references/todo.md +517 -0
  470. package/skills/dws/dingtalk-todo/scripts/todo_batch_create.py +354 -0
  471. package/skills/dws/dingtalk-todo/scripts/todo_daily_summary.py +153 -0
  472. package/skills/dws/dingtalk-todo/scripts/todo_overdue_check.py +101 -0
  473. package/skills/dws/dingtalk-wiki/SKILL.md +117 -0
  474. package/skills/dws/dingtalk-wiki/references/intent-guide.md +14 -0
  475. package/skills/dws/dingtalk-wiki/references/lite-recipes.md +44 -0
  476. package/skills/dws/dingtalk-wiki/references/wiki-members.md +32 -0
  477. package/skills/dws/dingtalk-wiki/references/wiki-node-ops.md +46 -0
  478. package/skills/dws/dingtalk-wiki/references/wiki.md +65 -0
  479. package/skills/dws/provenance.json +27 -0
@@ -0,0 +1,108 @@
1
+ # 本地建联(把机器人接到本地 agent)
2
+
3
+ > `dws dev connect` 是 dev 顶层命令,把一个现成机器人接到当前渠道的本地 agent CLI 做调试/值守——只建联、不建号。缺机器人时优先先创建应用并用 `robot config` 配置;若走无绑定的 `robot submit/result`,缺 `unifiedAppId` 时不能续写版本发布。
4
+
5
+ ## 起连接
6
+
7
+ ```bash
8
+ # 用现成机器人凭证起 Stream,接到当前渠道的本地 agent(前台运行,Ctrl-C 退出)
9
+ dws dev connect --channel auto --robot-client-id <clientId> --robot-client-secret <clientSecret>
10
+
11
+ # 用统一应用 ID,复用 credentials get 自动取凭证
12
+ dws dev connect --unified-app-id <unifiedAppId> --channel qoderwork
13
+
14
+ # 预览建联方案不实际起连接
15
+ dws dev connect --robot-client-id <clientId> --robot-client-secret <clientSecret> --dry-run --format json
16
+ ```
17
+
18
+ 正式 connect 是前台长驻进程:在对话里跑必须后台运行并告诉用户如何停止,或引导用户自己开终端跑。
19
+
20
+ `dev connect` 只做本地 Stream 调试/值守,不会创建版本、提交审批或发布应用。dry-run JSON 的 `invocation` 会声明 `scope=local_debug_only`、`doesNotPublish=true`、`completionState=LOCAL_DEBUG_ONLY`,真实前台/daemon 启动也会打印“本地调试,不代表线上发布完成”。完成态判定(建联成功不等于线上可用)以 [devapp.md](../devapp.md)「核心规则」为准。
21
+
22
+ | flag | 说明 |
23
+ |------|------|
24
+ | `--channel` | `auto`(默认,运行时信号自动识别) / openclaw / qoder / qoderwork / hermes / workbuddy / claudecode / codebuddy / codex / gemini / opencode |
25
+ | `--robot-client-id` / `--robot-client-secret` | 现成机器人凭证(clientId=AppKey, clientSecret=AppSecret)。命名带 `robot-` 前缀以避开全局 OAuth `--client-id` flag |
26
+ | `--unified-app-id` | 统一应用 ID,内部复用 `credentials get` 自动取凭证,替代手填 robot-client-id/secret。注意 clientSecret 仅建号时返回一次、未必可取,取不到时回退手填 |
27
+ | `--agent-memory` | 按会话续聊(默认开):同一群/单聊共享 agent 会话,追问保留上下文。codex 走 app-server thread;opencode 走 `opencode serve` 的 HTTP session/message API;qoder/qoderwork 走常驻 `qodercli --input-format stream-json` 并传 `session_id`;claudecode/codebuddy/workbuddy 走 CLI `--session-id`/`--resume`。会话映射按机器人落盘,重启后可继续;gemini 保持无状态。`--agent-memory=false` 关闭 |
28
+ | `--agent-model` | 覆盖本地 agent 模型(如 claudecode 默认锁 haiku 求快,可改 `claude-sonnet-4-6` 换聪明)。env: `DWS_AGENT_MODEL` |
29
+ | `--agent-workdir` | agent 运行目录:放知识文件(如 CLAUDE.md)可给机器人企业上下文。默认空白临时目录(冷启动快 ~4s vs 大目录 ~29s,慢了会错过钉钉响应窗口)。env: `DWS_AGENT_WORKDIR` |
30
+ | `--reply-card` | 富回复(默认开):🤔Thinking/🥳Done 表态永远生效;**卡片需配 `--card-template` 才启用**(同 hermes:没配模板=纯文字回复),失败自动回退文字;env `DWS_REPLY_CARD=0` 全关 |
31
+ | `--card-template` | AI 卡片模板 ID。**模板按应用授权**:去开发者后台→你的应用→AI 卡片设置注册/获取模板 ID,可去掉公共模板的第三方角标;默认用公共模板 best-effort。env `DWS_CARD_TEMPLATE` |
32
+ | `--allowed-groups` | 群白名单 openConversationId(逗号分隔),配置后只有名单内的群能触发机器人。env `DWS_ALLOWED_GROUPS` |
33
+ | `--allowed-users` | 用户白名单 staffId(逗号分隔),配置后只有名单内的用户能触发。env `DWS_ALLOWED_USERS` |
34
+ | `--knowledge-dir` | 答疑知识目录(.md/.txt):每条消息本地检索 top-k 片段拼进 prompt,agent 仍在空目录跑、不拖慢回复。env `DWS_KNOWLEDGE_DIR` |
35
+ | `--user-rate-limit` | 单用户每分钟消息上限(防刷,每条消息都是一次 LLM 调用),0 关闭,默认 20。env `DWS_USER_RATE_LIMIT` |
36
+
37
+ ## 建联前的依赖预检(agent 必做)
38
+
39
+ 渠道背后是本地 agent CLI,用户可能没装。先 `--dry-run` 看出参 `cli` 字段再决定下一步:
40
+
41
+ ```bash
42
+ dws dev connect --channel <ch> --robot-client-id x --robot-client-secret y --dry-run --format json
43
+ # 输出里的 cli 字段:
44
+ # "cli": {"required":"Claude Code","installed":false,"autoInstall":true,"installHint":"npm i -g @anthropic-ai/claude-code"}
45
+ ```
46
+
47
+ | cli 状态 | agent 应该做什么 |
48
+ |----------|----------------|
49
+ | `installed: true` | 直接建联 |
50
+ | `installed: false, autoInstall: true` | 告知用户缺哪个 CLI,说明启动建联时会自动 `npm` 安装(或先手动执行 installHint 里的命令再连);`DWS_CONNECT_NO_INSTALL=1` 可禁自动安装 |
51
+ | `installed: false, autoInstall: false` | **不要直接起连接**——桌面 App 渠道(qoder/qoderwork/workbuddy)需要用户先安装对应 App(installHint 是下载地址),装好后 CLI 随 App 自带;openclaw/hermes 引导用户走官方 onboarding |
52
+
53
+ dry-run 出参的完整建联预检结构(channel/detectedBy/credentialSource/agent/cli/connect)见 [devapp.md](../devapp.md)「通用出参约定」。
54
+
55
+ 必须检查 dry-run 顶层:
56
+
57
+ ```json
58
+ {
59
+ "invocation": {
60
+ "completionState": "LOCAL_DEBUG_ONLY",
61
+ "doesNotPublish": true,
62
+ "scope": "local_debug_only",
63
+ "terminal": false
64
+ }
65
+ }
66
+ ```
67
+
68
+ 这几个字段表示:连接器可以起本地调试,但版本发布闭环仍由 `robot result` 的 blocking `nextSteps` 或后续 `version status` 决定(完整门禁规则见 [devapp.md](../devapp.md)「核心规则」)。
69
+
70
+ ## Codex 渠道注意
71
+
72
+ ```bash
73
+ dws dev connect --unified-app-id <unifiedAppId> --channel codex --format json
74
+ ```
75
+
76
+ - `--channel codex` 只走 Codex app-server 的 thread/turn 协议,不再降级到 `codex exec`。
77
+ - `DWS_AGENT_CMD` 不覆盖 Codex 渠道;自研或未支持的 AI 工具请用 `--channel custom --agent-cmd "<命令>"`。
78
+ - 给 Codex 固定知识/项目上下文:使用 `--agent-workdir /path/to/repo`。
79
+
80
+ ## 机制与环境覆盖
81
+
82
+ - **stream-bridge 渠道**:Go 原生进程内 Stream 转发器,订阅 `TOPIC_ROBOT`。Claude/CodeBuddy/WorkBuddy/custom 每条 @机器人消息起一个无头 CLI 实例 → stdout 回钉钉;Qoder/QoderWork 会在 connect 生命周期内复用一个常驻 `qodercli --print --output-format stream-json --input-format stream-json` 子进程。
83
+ - **会话记忆**:Codex 记录 `conversationId -> threadId`;opencode 记录 `conversationId -> sessionId` 并通过本地 `opencode serve` 的 HTTP API 续聊;Qoder/QoderWork 记录 `conversationId -> Qoder session_id` 并在常驻 stream-json 子进程里续聊;Claude/CodeBuddy/WorkBuddy 使用 `--session-id`/`--resume`。映射按机器人落盘,重启后可继续。
84
+ - **会话指令 `/new` vs `/clear`**(对齐各渠道真实能力):`/new`(含 `/start`、`/reset`)开新会话——丢掉当前映射、下一条消息起新 session,**旧 session 保留**(opencode/Codex/Claude 侧仍可按 id 续);`/clear` 则**真正清掉当前会话**——能删的渠道调 agent 原生删除原语(opencode `DELETE /session/:id`),不暴露删除接口的渠道(Codex/Qoder/Claude 系)降级为与 `/new` 相同的重置。两者都只回 ack、不消耗 agent turn。
85
+ - **官方渠道**(openclaw/hermes):dws 不代建机器人,输出官方 onboarding 指引。
86
+ - 环境覆盖:`DWS_AGENT_CMD`(整条命令覆盖,覆盖时不再注入模型/会话参数) / `DWS_AGENT_MODEL` / `DWS_AGENT_WORKDIR` / `DWS_CONNECT_CMD` / `DWS_CONNECT_NO_INSTALL=1` / `DWS_AGENT_TIMEOUT_MS`。
87
+
88
+ ## 错误处理
89
+
90
+ | 情况 | 处理 |
91
+ |------|------|
92
+ | 缺凭证 | 优先用明确 `unifiedAppId` 走 `credentials get`;若只有 `robot submit/result` 的一次性 clientId/clientSecret,按敏感信息使用,缺 `unifiedAppId` 时不能续写版本发布 |
93
+ | Codex app-server 调用失败 | 检查本机 `codex` 是否可执行、是否已登录,以及 `--agent-workdir` 指向的目录是否可用;Codex 渠道不会降级到 `codex exec` |
94
+ | 桌面 App 渠道 `installed:false, autoInstall:false` | 引导用户先装对应 App(installHint 是下载地址),不要直接起连接 |
95
+
96
+ ## 发现命令
97
+
98
+ 起连接前先查清楚再敲:
99
+
100
+ ```
101
+ # 浏览 connect 的子命令与 flag
102
+ dws dev connect --help
103
+
104
+ # 查 connect 的必填参数、类型、默认值
105
+ dws dev <command-path> --help
106
+ ```
107
+
108
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,26 @@
1
+ # 应用凭证读取
2
+
3
+ > 凭证=应用调 OpenAPI 的身份(appKey=clientId / appSecret=clientSecret);见 [devapp.md](../devapp.md) 概念地图。
4
+
5
+ `dws dev app credentials get --unified-app-id <id>` 读取应用凭证。参数用对应命令的 `--help` 查询。
6
+
7
+ 返回字段:`clientId`/`appKey`(同值)、`clientSecret`/`appSecret`(同值)、`currentSecretStatus`、`hasPendingExpireTask`、`unifiedAppId` 等。
8
+
9
+ 规则:
10
+ - 该命令只需 `--unified-app-id`。
11
+ - 返回里 `clientSecret/appSecret` 是明文密钥,按敏感凭证处理,不写进回答文本。
12
+ - 不能用 `dev app get` 代替;`dev app get` 也会带密钥,同样只用于内部判断并脱敏,不向用户展开。
13
+
14
+ ## 发现命令
15
+
16
+ 调用任何方法前先查清楚再敲:
17
+
18
+ ```
19
+ # 浏览命令组下的子命令与 flag
20
+ dws dev app credentials --help
21
+
22
+ # 查某方法的必填参数、类型、默认值
23
+ dws dev <command-path> --help
24
+ ```
25
+
26
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,13 @@
1
+ # 开发者能力索引
2
+
3
+ | 主题 | 详见 |
4
+ |---|---|
5
+ | 应用管理 | [`app.md`](./app.md) |
6
+ | 凭证/鉴权 | [`credentials.md`](./credentials.md) |
7
+ | 权限管理 | [`permission.md`](./permission.md) |
8
+ | 机器人 | [`robot.md`](./robot.md) |
9
+ | 长连接 | [`connect.md`](./connect.md) |
10
+ | 事件订阅 | [`event.md`](./event.md) |
11
+ | 成员管理 | [`member.md`](./member.md) |
12
+ | MCP 服务与工具开发 | [`mcp.md`](./mcp.md) |
13
+ | 最佳实践 | [`recipes.md`](./recipes.md) |
@@ -0,0 +1,47 @@
1
+ # 事件订阅
2
+
3
+ > 把应用关心的事件推到回调地址;见 [devapp.md](../devapp.md) 概念地图。
4
+
5
+ `dws dev app event list/subscribe/unsubscribe`,按 `--unified-app-id` 定位,订阅/退订用 `--event-codes`(逗号分隔,一次多个)。参数用对应命令的 `--help` 查询。
6
+
7
+ 规则:
8
+ - 写操作先 `--dry-run` 预览,确认后 `--yes`。
9
+ - 一次可订阅多个事件码,共用同一回调。
10
+ - **事件码定位优先用 `event list --keyword <关键词>` 搜索**(按事件码或事件名称模糊匹配);只有用户明确要「全部事件」时才不带 `--keyword` 翻全量。
11
+ - 可订阅的事件码通过 `event list` 查询:返回 `events[]` 列出 `eventCode/eventName/subscribed`,不用查文档。
12
+ - 退订前先 `event list` 确认当前订阅,避免退不存在的。
13
+ - 翻全量时用 `--cursor/--page-size` 逐页处理;返回 `events/hasMore/nextCursor/pageSize`,翻页继续传 `nextCursor`。
14
+ - 批量或全量订阅前,先把候选 `eventCode` 列给用户确认,再 `--dry-run` → `--yes`。
15
+ - 返回看 `events[].subscribed` 和 `pushType=STREAM`(事件走 Stream 长连推送;connect 与事件订阅的关系见下方「Stream 长连」)。
16
+ - `subscribe/unsubscribe` 的 `--event-codes` 必填,返回 `success/operation/unifiedAppId/eventCodes/needsPublish/versionRequiredAction`;失败时补 `errorCode/errorMsg/reason/retryable/action`。
17
+ - `subscribe/unsubscribe` 返回 `needsPublish=true` 或非空 `versionRequiredAction` 时,按 [version.md](version.md) 继续 `version create → check-approval → publish → status`;进入 `RELEASE` 后重新 `event list`,确认目标 `events[].subscribed` 与本次操作一致。进入审核态则报告待审批;需要选择审批人时停下让用户选择。
18
+ - 如果订阅失败、返回提示长链接未在线(是泛化错误:`reason=business_error`、`message` 含「长链接未在线」、`server_error_code=-1`;没有 STREAM_NOT_CONNECTED 这类结构化错误码,也没有 action 字段),先执行 `dev connect` 建联,再重试订阅。
19
+
20
+ ## Stream 长连:connect 与事件订阅的关系
21
+
22
+ 钉钉一个应用就一条 Stream 长连(WebSocket),上面同时承载机器人消息、事件、卡片回调等多种 topic。connect 和 event 在这条长连上分工不同:
23
+
24
+ - `dev connect`:用应用凭证把这条长连建起来并保活,但只注册了机器人消息处理(收 @机器人 → 转发本地 agent),**不消费事件**。
25
+ - `event subscribe/unsubscribe`:只是**配置**操作(配应用订阅哪些事件码),自己不建长连、不收事件;服务端要求应用的 Stream 长连已在线,否则报错「长链接未在线」(泛化 business_error,不是结构化错误码)。
26
+ - 两者唯一关联:先 `dev connect` 把长连建在线,`event subscribe` 才能成功——connect 负责「让长连在线」,subscribe 负责「配置订阅」。
27
+ - 当前限制:connect 的长连不处理事件,dws 也没有「收/消费事件」的运行时命令,event 只到「配置订阅」为止。订阅成功后真正的事件推送 dws 暂不消费——要消费得用注册了事件 handler 的 SDK 自接(事件结构走 `dws devdoc article search --query` 查)。
28
+
29
+ ## Stream 长连怎么建的
30
+
31
+ `dev connect` 内部用 dingtalk-stream-sdk-go,凭 `clientId/clientSecret` 建一条 WebSocket 长连并保活——底层网关握手、ticket、加解密都由 SDK 封装,agent 跑 `dev connect` 即可,不用碰这些。
32
+
33
+ dws 当前只消费机器人消息、不消费事件。要自己写事件消费程序补这个 gap 时,SDK 用法以官方文档为准(走 `dws devdoc article search --query`,或看 github.com/open-dingtalk/dingtalk-stream-sdk-go)——注意事件用 `RegisterAllEventHandler`、connect 用的机器人是 `RegisterChatBotCallbackRouter`,两套别混;版本/接口会变,不在这里固化。
34
+
35
+ ## 发现命令
36
+
37
+ 调用任何方法前先查清楚再敲:
38
+
39
+ ```
40
+ # 浏览命令组下的子命令与 flag
41
+ dws dev app event --help
42
+
43
+ # 查某方法的必填参数、类型、默认值
44
+ dws dev <command-path> --help
45
+ ```
46
+
47
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,106 @@
1
+ # MCP 服务与工具开发
2
+
3
+ 命令分为两层:
4
+
5
+ - `dws dev mcp ...`:开发端,管理服务、工具、鉴权、凭证、协作者和 HSF 方法。
6
+ - `dws mcp published ...`:消费端,按 `mcpId` 查看或调用已发布工具。
7
+
8
+ 远端 `serverName` 和工具名不会注册成新的顶层命令,也不写入跨身份缓存。消费端每次按当前登录 profile、用户和组织身份解析服务地址;输出只展示脱敏地址。
9
+
10
+ ## MUST DO
11
+
12
+ 1. 先用对应分组或叶子的 `--help` 确认当前参数。
13
+ 2. 开发写操作先 `--dry-run --format json`,检查 invocation,再改为 `--yes`。
14
+ 3. 发布前执行 `tool get` 和 `tool debug`,核对输入、输出与映射。
15
+ 4. 调用已发布工具前先执行 `mcp published tools <mcpId>`,按返回的 `inputSchema` 构造 `--params`。
16
+ 5. `mcp published invoke` 无法静态判断远端工具副作用,真实调用一律需要 `--yes`;未明确影响时只做 dry-run。
17
+ 6. MCP URL、凭证内容、token 和密钥不得写入回答、日志、文档或代码仓库。
18
+
19
+ ## 服务
20
+
21
+ ```bash
22
+ dws dev mcp service list --format json
23
+ dws dev mcp service get --mcp-id <mcpId> --format json
24
+ dws dev mcp service create \
25
+ --name 示例服务 \
26
+ --description "服务用途" \
27
+ --server-name example-service \
28
+ --dry-run --format json
29
+ dws dev mcp service update --mcp-id <mcpId> --description "新描述" --dry-run --format json
30
+ dws dev mcp service delete --mcp-id <mcpId> --dry-run --format json
31
+ ```
32
+
33
+ `server-name` 使用 kebab-case,作为服务的稳定语义标识;它不再生成 DWS 顶层命令。
34
+
35
+ ## HTTP 工具
36
+
37
+ 创建和更新前先准备:
38
+
39
+ - `http-info`:HTTP method、URL 与 auth。
40
+ - `api-inputs` / `api-outputs`:下游接口真实字段树。
41
+ - `tool-inputs` / `tool-outputs`:暴露给 Agent 的字段树。
42
+ - `input-mappings` / `output-mappings`:工具字段与下游字段的映射。
43
+
44
+ HTTP 出参整体透传示例:
45
+
46
+ ```json
47
+ [{"target":"$","type":"reference","source":"$.node_service_activator.Body"}]
48
+ ```
49
+
50
+ 整体透传仍必须如实声明 `api-outputs.body`;未声明字段会被裁剪。字段级映射引用的路径必须存在于同批提交的字段树中。
51
+
52
+ ```bash
53
+ dws dev mcp tool list --mcp-id <mcpId> --format json
54
+ dws dev mcp tool get --mcp-id <mcpId> --tool-id <toolId> --format json
55
+ dws dev mcp tool debug --mcp-id <mcpId> --tool-id <toolId> \
56
+ --value '{"query":"example"}' --no-credential --dry-run --format json
57
+ dws dev mcp tool publish --mcp-id <mcpId> --tool-id <toolId> --dry-run --format json
58
+ ```
59
+
60
+ HTTP `tool update` 是全量提交:先 `tool get` 读回现状,再在完整定义上修改,不要只传单个字段。
61
+
62
+ ## HSF 工具
63
+
64
+ 先发现方法,再创建或部分更新:
65
+
66
+ ```bash
67
+ dws dev mcp hsf method-list --interface-name <fully.qualified.Interface> --format json
68
+ dws dev mcp tool create-hsf --help
69
+ dws dev mcp tool update-hsf --help
70
+ ```
71
+
72
+ HSF 的 `apiInputs/apiOutputs` 由服务端按方法 Schema 生成。映射 target 使用 `$.<DTO简名>.<字段>`;输出 source 使用 `$.node_service_activator.<字段>`,不带 HTTP 的 `.Body`。
73
+
74
+ ## 鉴权与凭证
75
+
76
+ ```bash
77
+ dws dev mcp auth get --mcp-id <mcpId> --format json
78
+ dws dev mcp auth save --mcp-id <mcpId> --auth-type NO_AUTH --dry-run --format json
79
+ dws dev mcp credential list --mcp-id <mcpId> --format json
80
+ dws dev mcp credential save --mcp-id <mcpId> --name 示例账号 \
81
+ --content-file <local-json-file> --dry-run --format json
82
+ dws dev mcp credential bind --mcp-id <mcpId> --credential-id <credentialId> --dry-run --format json
83
+ dws dev mcp credential unbind --mcp-id <mcpId> --dry-run --format json
84
+ ```
85
+
86
+ 敏感内容优先用 `--content-file` 或 stdin,不要放进 shell history。`credential debug` 会真实访问下游;`tool debug` 必须明确二选一:`--credential-id` 或 `--no-credential`。
87
+
88
+ ## 协作者
89
+
90
+ ```bash
91
+ dws dev mcp member list --mcp-id <mcpId> --format json
92
+ dws dev mcp member add --mcp-id <mcpId> --user-ids <staffId1,staffId2> --dry-run --format json
93
+ dws dev mcp member remove --mcp-id <mcpId> --user-ids <staffId> --dry-run --format json
94
+ ```
95
+
96
+ ## 调用已发布工具
97
+
98
+ ```bash
99
+ dws mcp published tools <mcpId> --format json
100
+ dws mcp published invoke <mcpId> <toolName> \
101
+ --params '{"query":"example"}' --dry-run --format json
102
+ ```
103
+
104
+ 检查 dry-run 后,只有用户明确同意本次真实调用,调用方才可在执行时追加确认标志;不要把确认标志固化进模板、脚本或可复制示例。
105
+
106
+ `tools` 返回当前身份看到的实时工具列表。`invoke` 不接受动态命令别名,不根据工具名猜读写属性,也不持久化含凭据的 endpoint。
@@ -0,0 +1,19 @@
1
+ # 成员管理
2
+
3
+ > 成员=谁能改这个应用(DEVELOPER 等角色);见 [devapp.md](../devapp.md) 概念地图。
4
+
5
+ `dws dev app member list/add/remove` 管理应用成员。参数用 `dws dev app member <method> --help` 查询。add/remove 需 `--user-ids` 列表 + `--member-type`,如 DEVELOPER;remove 也必须传 memberType,因为同一用户可能有多个成员身份。
6
+
7
+ ## 发现命令
8
+
9
+ 调用任何方法前先查清楚再敲:
10
+
11
+ ```
12
+ # 浏览命令组下的子命令与 flag
13
+ dws dev app member --help
14
+
15
+ # 查某方法的必填参数、类型、默认值
16
+ dws dev <command-path> --help
17
+ ```
18
+
19
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,56 @@
1
+ # 权限管理
2
+
3
+ > 权限点 scopeValue 是授权单元,一个权限点授权一组 OpenAPI;requiredApproval=true 的变更走版本通道生效(见 [devapp.md](../devapp.md) 生效模型)。
4
+
5
+ 查询、申请、取消开放平台应用的 APP 应用权限和 SNS 个人权限。参数用对应命令的 `--help` 查询。
6
+
7
+ ## 权限列表
8
+
9
+ `--scope-value` 传入即进单权限详情模式;`--scope-type` 取 `APP`/`SNS`,留空返回两者;一个应用可能 150+ 权限点,游标分页续翻、`--page-size` 不超过 50。
10
+
11
+ `--auth-status` 是查询过滤条件:
12
+
13
+ | authStatus | 含义 |
14
+ |------------|------|
15
+ | `ALL` | 不按授权状态过滤 |
16
+ | `AUTHED` | 只看已授权/已开通 |
17
+ | `UNAUTHED` | 只看未授权/未开通 |
18
+
19
+ 单个权限项的状态看这几个字段:
20
+
21
+ - `authed`(布尔):是否已授权/已开通。true=已开通,不要重复申请。
22
+ - `allowedActions`(数组):本权限点当前允许的动作,如 `["view","detail","apply"]`。含 `apply` 才能申请,含 `remove` 才能取消。
23
+ - `authedStatusDesc`(中文文案):状态的中文说明,如"已开通"/"未开通",直接展示给用户。
24
+ - `apiStatus`:权限点本身的开放状态,如 `FULLY_OPEN`。
25
+ - `requiredApproval`(布尔):申请是否需审批。true 的变更走版本通道,审批在版本发布时处理。
26
+ - `displayMessage`(中文文案):服务端给的提示语,能否申请的原因看它。
27
+
28
+ list 默认同时返回 APP 和 SNS 权限;列表模式和 `--scope-value` 详情模式,权限项里的 API 信息字段都叫 `apiPreview`。`permission search` 是 `list` 的别名。
29
+
30
+ scopeValue 选择顺序:
31
+ 1. 用户给了 `scopeValue`,精确匹配
32
+ 2. 给了 API 名,用 `keyword` 搜,匹配 `apiPreview.name`
33
+ 3. 给了权限名,匹配 `scopeName/scopeDesc`
34
+ 4. 多个候选,展示列表让用户选,不自动取第一条
35
+
36
+ ## 申请权限
37
+
38
+ `--scope-values` 传 `scopeValue`,多个逗号分隔,必须来自 `permission list` 返回。已开通跳过、不可编辑拒绝。`requiredApproval=true` 允许申请——写入版本变更,审批在版本发布时处理。不在此处选审批人。
39
+
40
+ ## 取消权限
41
+
42
+ `--scope-values` 多个逗号分隔。返回:`removed`(布尔,整体成败)、`removedScopeValues`(成功取消的)、`rejectedScopeValues`(被拒的)、`message`。逐条看 `removedScopeValues`/`rejectedScopeValues` 判断每个权限点的结果。
43
+
44
+ ## 发现命令
45
+
46
+ 调用任何方法前先查清楚再敲:
47
+
48
+ ```
49
+ # 浏览命令组下的子命令与 flag
50
+ dws dev app permission --help
51
+
52
+ # 查某方法的必填参数、类型、默认值
53
+ dws dev <command-path> --help
54
+ ```
55
+
56
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,58 @@
1
+ # 端到端链路(recipes)
2
+
3
+ dev 的端到端任务都是「定位应用,改容器某节点,按审批需要走版本生效,最后回读验证」。每步先 `--dry-run` 确认再 `--yes`,参数用对应命令的 `--help` 查询,细节进对应 reference。
4
+
5
+ ## 建一个钉钉里打开的网页应用
6
+
7
+ 1. `dev app create --name <名>` 建应用,拿 unifiedAppId
8
+ 2. `dev app webapp config` 配移动端/PC 首页(见 webapp.md)
9
+ 3. `dev app version create` 建版本
10
+ 4. `dev app version check-approval` 预检是否需审批
11
+ 5. `dev app version publish` 发布(需审批时让用户选审批人)
12
+ 6. 回读 `dev app version status` 到 `RELEASE` 才算生效
13
+
14
+ ## 权限从申请到生效
15
+
16
+ 1. `dev app permission list` 选 `scopeValue`(选择顺序见 permission.md)
17
+ 2. `dev app permission add --scope-values <值>` 申请
18
+ 3. 若是 `requiredApproval` 的权限,走版本:`version create`,再 `check-approval`,再 `publish --approver-user-id <用户选的>`,最后 `version status`
19
+ 4. 免审权限直接开通,不必发版本
20
+
21
+ ## 做一个答疑机器人并接到本地调试
22
+
23
+ 1. `dev app create --name <名>` 创建应用,拿明确 `unifiedAppId`
24
+ 2. `dev app robot config --unified-app-id <unifiedAppId>` 配置机器人能力;需要启用时再 `robot enable`
25
+ 3. 线上使用闭环:`version create` → `check-approval` → `publish` → `version status`;`SELECT_APPROVER` 时必须等用户选择审批人,不默认取第一个
26
+ 4. 本地调试/值守:`dev connect --unified-app-id <unifiedAppId>` 把机器人接到本地 agent(见 connect.md);注意订阅事件前要先建联长连(见 event.md)
27
+ 5. 若走无绑定的 `robot submit/result`,只有结果返回明确 `unifiedAppId` 才能继续版本发布
28
+ 6. 完成态与缺 `unifiedAppId`、`SELECT_APPROVER` 等门禁判定见 [devapp.md](../devapp.md)「核心规则」:建联成功 + 版本进入 `RELEASE`/`AUDIT`/`UNDER_REVIEW` 才算完成
29
+
30
+ ## 重启守护进程连接器(不存密钥)
31
+
32
+ 守护进程被 stop / kill / 崩溃后,通过持久化的 `unifiedAppId` 重新拉取密钥并重启,无需本地保存 AppSecret。
33
+
34
+ 1. `dev connect --daemon --unified-app-id <id> --channel <channel>` 首次启动(`unifiedAppId` 和 `channel` 会写入 `~/.dws/connect/<key>/daemon.pid`)
35
+ 2. `dev connect restart --unified-app-id <id>` 重启:自动 stop 旧进程 → 从 dev 平台拉取 AppKey/Secret → 重新建联
36
+ 3. `dev connect status --unified-app-id <id>` 确认恢复 `healthy`
37
+ 4. 若 daemon.pid 未持久化 `unifiedAppId`(如用 `--robot-client-id` 直接启动的),restart 会提示改用 `--unified-app-id` 启动
38
+
39
+ 注意:密钥不落盘,每次 restart 动态从开发者平台获取;`daemon.pid` 只存 `unifiedAppId`、`channel`、`clientId`(公开值)。
40
+
41
+ ## 上传图片拿 mediaId(应用图标 / 机器人图标)
42
+
43
+ 应用图标、机器人图标都靠 mediaId 指定,但 dev 命令集不含上传——mediaId 要调钉钉 OpenAPI 拿到:
44
+
45
+ 1. 拿凭证:`dev app credentials get --unified-app-id <id>` 取 `appKey/appSecret`(secret 按敏感处理,不写进回答)
46
+ 2. 换 access_token:`GET https://oapi.dingtalk.com/gettoken?appkey=<appKey>&appsecret=<appSecret>`,取返回的 `access_token`(有效期约 7200 秒、gettoken 有频控,缓存复用别每次上传都换)
47
+ 3. 上传图片:`POST https://oapi.dingtalk.com/media/upload?access_token=<token>&type=image`,multipart 表单字段名 `media`,返回 `media_id`(形如 `@lA...`)。图标用方形图(如 256×256 的 jpg/png)
48
+
49
+ ```
50
+ curl -F "media=@/path/to/img.png;type=image/png" \
51
+ "https://oapi.dingtalk.com/media/upload?access_token=<token>&type=image"
52
+ ```
53
+ 4. 用 mediaId 更新:机器人图标 `dev app robot config --unified-app-id <id> --icon-media-id <media_id>`;应用图标 `dev app update --unified-app-id <id> --icon-media-id <media_id>`。写操作先 `--dry-run` 再 `--yes`
54
+ 5. 回读:`dev app robot get` 看 `iconMediaId` 变为新值(应用图标看 `app get` 的 `icon`)
55
+
56
+ ## 查「为什么没生效 / 机器人搜不到 / 权限加了还报错」
57
+
58
+ 先 `dev app version status`——改配置不等于生效,未发到 `RELEASE` 就不生效。
@@ -0,0 +1,74 @@
1
+ # 机器人能力
2
+
3
+ > 机器人是应用的能力扩展之一;建号/配置在此,接到本地 agent 调试用 `dws dev connect`(见 connect.md)。
4
+
5
+ 为开放平台企业内部应用创建和配置机器人。参数用对应命令的 `--help` 查询。分两类场景:
6
+
7
+ 1. 新建智能体机器人:异步创建一个新的 Agent 应用 + 承载机器人(`submit` / `result`),当前不绑定已有开放平台应用。
8
+ 2. 现有应用配置机器人:在已存在的应用上配置/启用/停用机器人(`get` / `config`(upsert) / `enable` / `disable`),用 `--unified-app-id` 定位。
9
+
10
+ > `corpId` / `userId` 由系统上下文自动注入,CLI 不传。所有写操作先 `--dry-run`,确认后再 `--yes`。
11
+
12
+ ## 一、新建智能体机器人(异步建号)
13
+
14
+ `submit` 提交任务拿 `taskId`,`result --task-id <taskId>` 轮询。`submit` 返回 `taskId/status/expiresInSeconds/intervalSeconds/retryCount/bindsUnifiedApp`,提交成功通常是 `WAITING`,且 `bindsUnifiedApp=false` 表示异步建号任务不挂到现有应用。失败重试:把上次 `taskId` 通过 `--task-id` 传回 `submit`,避免重复创建。`result` 返回 `SUCCESS` 或 `APPROVAL_REQUIRED` 时可能带 `agentId/robotCode/clientId/clientSecret`;凭证可用于本地建联,但线上搜索、加群、路由消息必须等版本发布到 `RELEASE`。
15
+
16
+ 异步任务状态:
17
+
18
+ | status | 含义 | 下一步 |
19
+ |--------|------|--------|
20
+ | `WAITING` | 创建中 | 按 `intervalSeconds` 轮询 `robot result` |
21
+ | `SUCCESS` | 创建完成 | 保存 `robotCode/clientId/clientSecret`,凭据按敏感处理;若结果含明确 `unifiedAppId` 才继续版本发布,否则要求用户提供 |
22
+ | `APPROVAL_REQUIRED` | 已建号但线上使用需审核 | 不要重复建号;若结果含明确 `unifiedAppId` 才提交版本发布审核,否则要求用户提供 |
23
+ | `FAIL` | 创建失败 | 读 `errorCode/errorMsg/failReason`;可带原 `taskId` 重新 `submit` |
24
+ | `EXPIRED` | `taskId` 不存在或过期 | 重新 `submit` |
25
+
26
+ `robot result` 的 JSON 会额外补 `lifecycle` 与 `nextSteps`,用于把链路闭环到版本发布:
27
+
28
+ - 顶层 `completionState=BLOCKED_BY_VERSION_PUBLISH`、`mustContinue=true`、`terminal=false` 是硬门禁;看到它就继续执行 blocking `nextSteps`,不能把后续 `dev connect` 当完成。
29
+ - 顶层 `completionState=BLOCKED_BY_MISSING_UNIFIED_APP_ID`、`actionRequired=provide_unified_app_id` 时,说明缺少可安全写版本的应用主键;必须要求用户提供明确的 `unifiedAppId`,不能用 `clientId/appKey` 自动反查后继续写版本。
30
+ - 后续顺序是 `create_version` → `check_approval` → `publish_version` → `wait_release`。所有写操作仍先 `--dry-run`,确认后再 `--yes`。
31
+ - `check-approval` 若返回 `approvalMode=SELECT_APPROVER`,展示候选审批人的 `name/userId/mainAdmin`,等待用户选择后再把该 `userId` 传给 `publish --approver-user-id`;不要默认取第一个。
32
+ - `connect_local` 的命令只用 `<clientSecret-from-result>` 占位,不能把真实 `clientSecret` 写进回答或脚本;它是 `optional=true` / `scope=local_debug_only`,不能抵消版本发布审核。
33
+ - `lifecycle.overallComplete=false` 或版本未进入 `RELEASE` / `AUDIT` / `UNDER_REVIEW` 时,不要总结“全部完成”“机器人已创建并成功连接”“可以在钉钉中 @机器人使用”。只能说“本地建联成功,线上发布/审批未完成”或继续执行阻塞步骤。
34
+
35
+ 完成态门禁规则的完整说明见 [devapp.md](../devapp.md)「核心规则」。
36
+
37
+ ## 二、现有应用的机器人配置
38
+
39
+ `robot get` 返回机器人基础信息、回调、模式、状态、技能列表;应用尚未配置机器人时返回空态 `robotStatus=UNCONFIGURED`,不是业务错误。
40
+
41
+ 状态判断:
42
+ - `robotStatus=UNCONFIGURED`:应用未配置机器人,走 `robot config`。
43
+ - `robotStatus=OFFLINE`:配置存在但停用/下线,可走 `robot enable`。
44
+ - `robotStatus=ONLINE`:配置已启用;`robotCode` 可用于加群、机器人身份发消息或后续建联。
45
+ - `mode` 是字符串枚举:`HTTPS` / `STREAM` / `AISKILL`。
46
+ - `robot get` 正常返回是平铺字段(`configured`/`mode`/`robotStatus`/`robotCode`/`name`/`brief`/`desc`),没有 `success` 字段;拿到这组字段就是配置已落库,不是异步等待态。
47
+ - ONLINE 只代表能力已开启。要让机器人自动处理消息,还需配 `--outgoing-url`/`--event-callback-url`,或用 `dev connect` 接本地 Agent(见 connect.md)。
48
+
49
+ `config` 是 upsert:建或改都用它,不存在则建、存在则改,至少给一个配置字段。国际化字段(`--i18n-name` 等)传 JSON,如 `'{"en_US":"Bot"}'`。`enable` 是纯启用:只开启能力,不带配置字段(只传 `--unified-app-id`)。`config/enable/disable` 成功统一返回 `success/operation/unifiedAppId/robotCode/robotStatus/configured`;回读 `robot get` 看到 `robotStatus=ONLINE` 就别再误判"待生效"。
50
+
51
+ ## 错误处理
52
+
53
+ | 情况 | 处理 |
54
+ |------|------|
55
+ | `robotStatus=UNCONFIGURED` | 应用未配置机器人,先用 `robot config` 创建 |
56
+ | 应用名重复 | `app-name` 企业内需唯一,换名 |
57
+ | `ServiceResult.success=false` | 透传 `errorCode/errorMsg` |
58
+ | 创建任务 `EXPIRED` | 任务过期,重新 `submit`(可带原 taskId) |
59
+
60
+ > 把机器人接到本地 agent 调试/值守见 [connect.md](connect.md)。
61
+
62
+ ## 发现命令
63
+
64
+ 调用任何方法前先查清楚再敲:
65
+
66
+ ```
67
+ # 浏览命令组下的子命令与 flag
68
+ dws dev app robot --help
69
+
70
+ # 查某方法的必填参数、类型、默认值
71
+ dws dev <command-path> --help
72
+ ```
73
+
74
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,21 @@
1
+ # 安全配置
2
+
3
+ > 安全配置=应用的 IP 白名单 / 登录重定向 / 端内免登 URL;见 [devapp.md](../devapp.md) 概念地图。
4
+
5
+ `dws dev app security config` 配 IP 白名单(`--ip-whitelist`)、登录重定向(`--redirect-urls`)、端内免登(`--sso-urls`)。参数用 `dws dev app security config --help` 查询;至少给一个配置字段。
6
+
7
+ 覆盖语义:未提供的字段不动;显式提供的列表是整组覆盖(传入即全量替换该项,不是追加)——要保留旧值就把旧值一起带上。
8
+
9
+ ## 发现命令
10
+
11
+ 调用任何方法前先查清楚再敲:
12
+
13
+ ```
14
+ # 浏览命令组下的子命令与 flag
15
+ dws dev app security --help
16
+
17
+ # 查某方法的必填参数、类型、默认值
18
+ dws dev <command-path> --help
19
+ ```
20
+
21
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。
@@ -0,0 +1,99 @@
1
+ # 版本发布
2
+
3
+ > 版本是配置变更生效的唯一通道——改配置不等于上线,发布到 RELEASE 才生效(见 [devapp.md](../devapp.md) 生效模型)。
4
+
5
+ 管理应用版本:基于当前配置建版本、查列表/详情、预检审批、发布、查状态。参数用对应命令的 `--help` 查询。版本用 `--unified-app-id` 定位,单个版本再加 `--version-id`;`corpId`/`userId` 系统注入,CLI 不传。
6
+
7
+ ## 典型流程
8
+
9
+ ```text
10
+ permission add(requiredApproval=true 写入版本变更)
11
+ → version create 创建版本
12
+ → version check-approval 预检是否需审批 / 审批人
13
+ → version publish 发布(含高敏权限需 --confirmed-sensitive)
14
+ → version status 轮询发布/审批状态
15
+ ```
16
+
17
+ 新应用如果 `version list` 返回空,先 `version create`,用返回的 `versionId` 继续 check-approval/publish;不要因列表空误判无可发布内容。
18
+
19
+ ## 创建版本
20
+
21
+ 默认不要传 `--version`,不传时服务端基于最新已发布版本自动递增。只有用户明确要指定时才填 `--version`,且必须大于最新 `RELEASE` 版本,否则服务端返回 `62018`(版本号需高于上个版本号)。
22
+
23
+ 创建成功后,后续 `get`/`check-approval`/`publish` 必须用 `create` 返回的 `versionId`;不要通过 `list` 猜最新版本。如果创建没返回 `versionId`,停止并报错。
24
+
25
+ ## check-approval 与 publish
26
+
27
+ `check-approval` 只查审批要求和候选审批人,不发布。`publish` 是真实发布;含高敏权限要加 `--confirmed-sensitive`,灰度选人模式用 `--approver-user-id` 指定审批人。
28
+
29
+ 区分两个"预检":`--dry-run` 是 CLI 层的预览不调上游;`check-approval` 是服务端查审批要求不发布。发布前建议先 `check-approval`。
30
+
31
+ 发布/预检不返回动作枚举 `result`,看结构化字段判断下一步:
32
+
33
+ | 字段 | 含义 | 下一步 |
34
+ |------|------|--------|
35
+ | `requiresApproval=false` + `publishable=true` | 不需审批,`check-approval` 通过 | 可以执行 `version publish` |
36
+ | `requiresApproval=true` + `approvalMode=SELECT_APPROVER` | 需从候选人里选审批人 | 展示 `approvalOptions[].label`,让用户选后再 `publish --approver-user-id` |
37
+ | `requiresApproval=true` + `approvalMode=ENTERPRISE_SELF_BUILT` | 企业自建审核 | 不传 `--approver-user-id`,直接 `publish` 提交审批 |
38
+ | `published=true` | 本次 `publish` 已直接发布 | 回读 `version status/get` 验证 `versionStatus=RELEASE` |
39
+ | `approvalSubmitted=true` | 本次 `publish` 已提交审批 | 保存 `processId`,轮询 `version status` |
40
+
41
+ `SELECT_APPROVER` 时 CLI 会把原始 `approvalCandidates` 增强为更容易展示的字段:
42
+
43
+ - `approvalPromptText`:预渲染的成品选择文案(带 `A.`/`B.` 序号 + `姓名(userId: xxx)`);agent 原样展示这一段即可,无需自己遍历结构。
44
+ - `approvalOptions[]`:结构化选项数组,字段包括 `label/name/userId/mainAdmin/index/key`,供需要结构化数据时使用。
45
+ - `completionState=WAITING_FOR_APPROVER_SELECTION`、`actionRequired=select_approver`、`mustAskUser=true`:必须等待用户选择,不能默认取第一个。
46
+
47
+ 展示审批人时,优先原样展示 `approvalPromptText`;需结构化时用 `approvalOptions[].label`(格式 `姓名(userId: xxx)`,`mainAdmin=true` 时标注“主管理员”,仅 `name` 为空才退回 `userId: xxx`)。发布时把用户选中的 `userId` 传给 `--approver-user-id`。
48
+
49
+ 审批模式 `approvalMode`:
50
+
51
+ | approvalMode | 含义 | 下一步 |
52
+ |--------------|------|--------|
53
+ | `SELECT_APPROVER` | 灰度选人,需在候选审批人里选一个 | 展示候选,不自动取第一个 |
54
+ | `ENTERPRISE_SELF_BUILT` | 企业自建审核 | 不传 `--approver-user-id`,按企业自建流程等待 |
55
+
56
+ ## 版本状态
57
+
58
+ `version create/list/get/status` 统一返回 `versionStatus`:
59
+
60
+ | versionStatus | 含义 | 下一步 |
61
+ |---------------|------|--------|
62
+ | `INIT` | 已创建或有待发布变更,未发布 | 可 `check-approval`/`publish` |
63
+ | `AUDIT` | 发布审核中 | 不要重复发布;即使没返回 `processStatus` 也按审核中处理 |
64
+ | `RELEASE` | 已发布生效 | 完成,可验证权限/机器人/网页等能力 |
65
+ | `GRAY` | 灰度 | 按灰度流程,不要当全量已发布 |
66
+
67
+ `version status` 的 `processStatus` 只在存在审批流程且后端透出时有值。`versionStatus=AUDIT` 但没 `processStatus/processInstanceId` 时不要判失败,仍是审核中。
68
+
69
+ | processStatus | 含义 | 下一步 |
70
+ |---------------|------|--------|
71
+ | `UNDER_REVIEW` | 审批中 | 等待,必要时把 `processInstanceId` 给用户去钉钉客户端看 |
72
+ | `PASS` | 审批通过 | 继续回读,确认是否进 `RELEASE` |
73
+ | `FAIL` | 审批拒绝 | 展示 `processComment`,改后重新建/发版本 |
74
+ | `WITHDRAW` / `CANCEL` | 撤回或取消 | 回到发布前,重新 `check-approval`/`publish` |
75
+ | `PUBLISH_FAILED` | 审批后发布失败 | 展示错误,重查版本状态和后端错误 |
76
+
77
+ 遇到未列出的状态值,不要猜语义;原样展示,回读 `version get/status` 或查文档/后台。
78
+
79
+ ## 错误处理
80
+
81
+ | 情况 | 处理 |
82
+ |------|------|
83
+ | `check-approval` 提示需审批 | 按返回选审批人,再 `publish --approver-user-id` |
84
+ | 发布报高敏权限未确认 | 加 `--confirmed-sensitive` 重新发布 |
85
+ | `ServiceResult.success=false` | 透传 `errorCode/errorMsg` |
86
+
87
+ ## 发现命令
88
+
89
+ 调用任何方法前先查清楚再敲:
90
+
91
+ ```
92
+ # 浏览命令组下的子命令与 flag
93
+ dws dev app version --help
94
+
95
+ # 查某方法的必填参数、类型、默认值
96
+ dws dev <command-path> --help
97
+ ```
98
+
99
+ 按 `--help` 输出构造 flag;不要凭旧 schema 名称猜参数。