@xdxer/dingtalk-agent 0.1.4-beta.8 → 0.1.4

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 (254) hide show
  1. package/CHANGELOG.md +233 -0
  2. package/README.en.md +167 -0
  3. package/README.md +101 -248
  4. package/dist/bin/dingtalk-agent.js +1255 -25
  5. package/dist/bin/dingtalk-agent.js.map +1 -1
  6. package/dist/src/actions.js +98 -14
  7. package/dist/src/actions.js.map +1 -1
  8. package/dist/src/agent-audit.js +1385 -0
  9. package/dist/src/agent-audit.js.map +1 -0
  10. package/dist/src/agent-bindings.js +132 -0
  11. package/dist/src/agent-bindings.js.map +1 -0
  12. package/dist/src/agent-definition.js +182 -0
  13. package/dist/src/agent-definition.js.map +1 -0
  14. package/dist/src/agent-enhance.js +711 -0
  15. package/dist/src/agent-enhance.js.map +1 -0
  16. package/dist/src/agent-platform.js +299 -0
  17. package/dist/src/agent-platform.js.map +1 -0
  18. package/dist/src/bootstrap.js +125 -17
  19. package/dist/src/bootstrap.js.map +1 -1
  20. package/dist/src/config.js +1 -7
  21. package/dist/src/config.js.map +1 -1
  22. package/dist/src/development-workspace.js +755 -0
  23. package/dist/src/development-workspace.js.map +1 -0
  24. package/dist/src/doctor.js +74 -15
  25. package/dist/src/doctor.js.map +1 -1
  26. package/dist/src/dws.js +145 -0
  27. package/dist/src/dws.js.map +1 -1
  28. package/dist/src/eval-evidence.js +193 -0
  29. package/dist/src/eval-evidence.js.map +1 -0
  30. package/dist/src/host-detect.js +146 -0
  31. package/dist/src/host-detect.js.map +1 -0
  32. package/dist/src/instruction-path.js +270 -0
  33. package/dist/src/instruction-path.js.map +1 -0
  34. package/dist/src/invocation.js +36 -0
  35. package/dist/src/invocation.js.map +1 -0
  36. package/dist/src/lab.js +679 -0
  37. package/dist/src/lab.js.map +1 -0
  38. package/dist/src/lease.js +100 -0
  39. package/dist/src/lease.js.map +1 -0
  40. package/dist/src/map.js +157 -0
  41. package/dist/src/map.js.map +1 -0
  42. package/dist/src/memory/candidates.js +451 -0
  43. package/dist/src/memory/candidates.js.map +1 -0
  44. package/dist/src/memory/completion-evidence.js +536 -0
  45. package/dist/src/memory/completion-evidence.js.map +1 -0
  46. package/dist/src/memory/operational.js +263 -0
  47. package/dist/src/memory/operational.js.map +1 -0
  48. package/dist/src/memory/remote-state.js +478 -0
  49. package/dist/src/memory/remote-state.js.map +1 -0
  50. package/dist/src/memory/task-checkpoints.js +204 -0
  51. package/dist/src/memory/task-checkpoints.js.map +1 -0
  52. package/dist/src/multica-deploy.js +1538 -0
  53. package/dist/src/multica-deploy.js.map +1 -0
  54. package/dist/src/multica-provider.js +685 -0
  55. package/dist/src/multica-provider.js.map +1 -0
  56. package/dist/src/opencode-evals.js +1547 -0
  57. package/dist/src/opencode-evals.js.map +1 -0
  58. package/dist/src/opencode-isolation.js +124 -0
  59. package/dist/src/opencode-isolation.js.map +1 -0
  60. package/dist/src/opencode-provider.js +532 -0
  61. package/dist/src/opencode-provider.js.map +1 -0
  62. package/dist/src/opencode-workspace.js +208 -0
  63. package/dist/src/opencode-workspace.js.map +1 -0
  64. package/dist/src/perception.js +225 -0
  65. package/dist/src/perception.js.map +1 -0
  66. package/dist/src/personal-event-evals.js +595 -0
  67. package/dist/src/personal-event-evals.js.map +1 -0
  68. package/dist/src/promotion.js +786 -0
  69. package/dist/src/promotion.js.map +1 -0
  70. package/dist/src/remote-semantic-state-live-evals.js +888 -0
  71. package/dist/src/remote-semantic-state-live-evals.js.map +1 -0
  72. package/dist/src/remote-semantic-state-worker.js +38 -0
  73. package/dist/src/remote-semantic-state-worker.js.map +1 -0
  74. package/dist/src/remote-state-evals.js +502 -0
  75. package/dist/src/remote-state-evals.js.map +1 -0
  76. package/dist/src/response-gate.js +51 -0
  77. package/dist/src/response-gate.js.map +1 -0
  78. package/dist/src/robot-evals.js +771 -0
  79. package/dist/src/robot-evals.js.map +1 -0
  80. package/dist/src/sessions.js +66 -105
  81. package/dist/src/sessions.js.map +1 -1
  82. package/dist/src/setup.js +6 -5
  83. package/dist/src/setup.js.map +1 -1
  84. package/dist/src/skill-manager.js +162 -24
  85. package/dist/src/skill-manager.js.map +1 -1
  86. package/dist/src/skills.js +2 -1
  87. package/dist/src/skills.js.map +1 -1
  88. package/dist/src/storage-evals.js +26 -0
  89. package/dist/src/storage-evals.js.map +1 -0
  90. package/dist/src/types.js.map +1 -1
  91. package/dist/src/upgrade.js +23 -27
  92. package/dist/src/upgrade.js.map +1 -1
  93. package/dist/src/version.js +73 -0
  94. package/dist/src/version.js.map +1 -0
  95. package/dist/src/waits.js +5 -1
  96. package/dist/src/waits.js.map +1 -1
  97. package/dist/src/workspace.js +28 -3
  98. package/dist/src/workspace.js.map +1 -1
  99. package/docs/INSTALLATION.md +50 -3
  100. package/docs/SECOND-AGENT-ACCEPTANCE.md +62 -0
  101. package/docs/architecture/agent-memory-topology.png +0 -0
  102. package/docs/architecture/agent-memory-topology.svg +132 -0
  103. package/docs/architecture/general-agent-kernel-topology.png +0 -0
  104. package/docs/architecture/general-agent-kernel-topology.svg +149 -0
  105. package/docs/architecture/provider-bound-development-workspace.png +0 -0
  106. package/docs/architecture/provider-bound-development-workspace.svg +141 -0
  107. package/docs/architecture/task-completion-gate.png +0 -0
  108. package/docs/architecture/task-completion-gate.svg +191 -0
  109. package/docs/assets/agent-delivery-lifecycle.svg +103 -0
  110. package/docs/schemas/agent-audit-load-evidence.schema.json +14 -0
  111. package/docs/schemas/agent-audit.schema.json +92 -0
  112. package/docs/schemas/agent-bindings.schema.json +54 -0
  113. package/docs/schemas/agent-definition.schema.json +78 -0
  114. package/docs/schemas/agent-enhancement-plan.schema.json +88 -0
  115. package/docs/schemas/agent-enhancement-receipt.schema.json +37 -0
  116. package/docs/schemas/agent-platform.schema.json +13 -0
  117. package/docs/schemas/enriched-invocation.schema.json +46 -0
  118. package/docs/schemas/eval-candidate-plan.schema.json +28 -0
  119. package/docs/schemas/eval-candidate-result.schema.json +20 -0
  120. package/docs/schemas/eval-candidate.schema.json +30 -0
  121. package/docs/schemas/invocation.schema.json +19 -0
  122. package/docs/schemas/memory-candidate-proposal.schema.json +18 -0
  123. package/docs/schemas/memory-candidate.schema.json +76 -0
  124. package/docs/schemas/memory-publish-target.schema.json +25 -0
  125. package/docs/schemas/multica-deployment-list.schema.json +29 -0
  126. package/docs/schemas/multica-deployment-operation.schema.json +51 -0
  127. package/docs/schemas/multica-deployment-plan.schema.json +70 -0
  128. package/docs/schemas/multica-deployment-receipt.schema.json +87 -0
  129. package/docs/schemas/multica-deployment-status.schema.json +23 -0
  130. package/docs/schemas/multica-workspace-inspection.schema.json +77 -0
  131. package/docs/schemas/multica-workspace-plan.schema.json +68 -0
  132. package/docs/schemas/multica-workspace-resource-list.schema.json +27 -0
  133. package/docs/schemas/multica-workspace-status.schema.json +34 -0
  134. package/docs/schemas/observation.schema.json +21 -0
  135. package/docs/schemas/operational-memory-provider.schema.json +36 -0
  136. package/docs/schemas/operational-memory-record.schema.json +24 -0
  137. package/docs/schemas/perception-input.schema.json +56 -0
  138. package/docs/schemas/project.schema.json +115 -0
  139. package/docs/schemas/promotion-list.schema.json +36 -0
  140. package/docs/schemas/promotion-plan.schema.json +60 -0
  141. package/docs/schemas/promotion-policy.schema.json +29 -0
  142. package/docs/schemas/promotion-receipt.schema.json +43 -0
  143. package/docs/schemas/promotion-status.schema.json +23 -0
  144. package/docs/schemas/release-readiness.schema.json +66 -0
  145. package/docs/schemas/remote-semantic-state-live-eval.schema.json +60 -0
  146. package/docs/schemas/remote-semantic-state-manifest.schema.json +79 -0
  147. package/docs/schemas/remote-semantic-state-provider.schema.json +98 -0
  148. package/docs/schemas/response-gate.schema.json +20 -0
  149. package/docs/schemas/task-checkpoint.schema.json +71 -0
  150. package/docs/schemas/task-completion-evidence.schema.json +154 -0
  151. package/docs/schemas/workspace-doctor.schema.json +56 -0
  152. package/docs/schemas/workspace-state.schema.json +39 -0
  153. package/evals/README.md +17 -0
  154. package/evals/baselines/2026-07-16/opencode-basic-010-completion-summary.json +123 -0
  155. package/evals/baselines/2026-07-16/opencode-basic-skill-required-summary.json +69 -0
  156. package/evals/baselines/2026-07-16/opencode-multi-surface-summary.json +63 -0
  157. package/evals/baselines/2026-07-16/remote-state-live-summary.json +70 -0
  158. package/evals/baselines/2026-07-17/agent-enhance-opencode-dogfood-summary.json +98 -0
  159. package/evals/baselines/2026-07-17/personal-event-live-readiness-summary.json +68 -0
  160. package/examples/agents/fde-coach/AGENTS.md +26 -0
  161. package/examples/agents/fde-coach/MEMORY.md +3 -0
  162. package/examples/agents/fde-coach/fields/default/field.json +24 -0
  163. package/examples/agents/fde-coach/knowledge/INDEX.md +4 -0
  164. package/examples/agents/fde-coach/skills/fde-coach/SKILL.md +13 -0
  165. package/examples/agents/release-manager/AGENTS.md +26 -0
  166. package/examples/agents/release-manager/MEMORY.md +3 -0
  167. package/examples/agents/release-manager/fields/default/field.json +24 -0
  168. package/examples/agents/release-manager/knowledge/INDEX.md +4 -0
  169. package/examples/agents/release-manager/skills/release-manager/SKILL.md +13 -0
  170. package/lab/README.md +109 -0
  171. package/lab/agent-eval/catalog.json +91 -0
  172. package/lab/agent-eval/classic-failures.json +177 -0
  173. package/lab/agent-eval/completion-gate-regression.json +99 -0
  174. package/lab/agent-eval/personal-event-live.example.json +94 -0
  175. package/lab/agent-eval/remote-semantic-state-live.example.json +70 -0
  176. package/lab/agent-eval/remote-semantic-state-provider.fixture.json +47 -0
  177. package/lab/agent-eval/remote-state-workspace/AGENTS.md +8 -0
  178. package/lab/agent-eval/remote-state-workspace/opencode.json +7 -0
  179. package/lab/agent-eval/remote-state-workspace/skills/remote-state-operator/SKILL.md +13 -0
  180. package/lab/agent-eval/remote-state.example.json +31 -0
  181. package/lab/agent-eval/workspace/AGENTS.md +7 -0
  182. package/lab/agent-eval/workspace/MEMORY.md +4 -0
  183. package/lab/agent-eval/workspace/artifacts/pending-review.md +3 -0
  184. package/lab/agent-eval/workspace/knowledge/INDEX.md +4 -0
  185. package/lab/agent-eval/workspace/opencode.json +20 -0
  186. package/lab/manifest.example.json +27 -0
  187. package/lab/manifest.personal-event.example.json +27 -0
  188. package/lab/project-workspace/README.md +11 -0
  189. package/lab/project-workspace/fake-multica-provider.mjs +277 -0
  190. package/lab/project-workspace/multica-deploy.fixture.json +29 -0
  191. package/lab/project-workspace/multica-readonly.fixture.json +69 -0
  192. package/lab/project-workspace/observation.fixture.json +14 -0
  193. package/lab/project-workspace/opencode-provider-suite.json +65 -0
  194. package/lab/project-workspace/project.fixture.json +44 -0
  195. package/lab/project-workspace/promotion-policy.fixture.json +15 -0
  196. package/lab/robot-eval/pool.example.json +30 -0
  197. package/lab/robot-eval/suite.json +123 -0
  198. package/lab/robot-eval/workspace/AGENTS.md +21 -0
  199. package/lab/robot-eval/workspace/MEMORY.md +3 -0
  200. package/lab/robot-eval/workspace/knowledge/INDEX.md +5 -0
  201. package/lab/robot-eval/workspace/opencode.json +22 -0
  202. package/lab/schemas/agent-eval-catalog.schema.json +47 -0
  203. package/lab/schemas/lab-manifest.schema.json +70 -0
  204. package/lab/schemas/personal-event-eval.schema.json +91 -0
  205. package/lab/schemas/remote-state-eval.schema.json +66 -0
  206. package/lab/schemas/robot-eval-suite.schema.json +184 -0
  207. package/lab/schemas/robot-pool.schema.json +56 -0
  208. package/package.json +28 -9
  209. package/skills/README.md +23 -0
  210. package/skills/core/dingtalk-agent-compose/SKILL.md +151 -0
  211. package/skills/core/dingtalk-agent-compose/assets/AGENTS.template.md +35 -0
  212. package/skills/core/dingtalk-agent-compose/assets/agent.bindings.dingtalk-doc.template.json +13 -0
  213. package/skills/core/dingtalk-agent-compose/assets/agent.bindings.local.template.json +13 -0
  214. package/skills/core/dingtalk-agent-compose/assets/hosts/opencode/opencode.template.json +12 -0
  215. package/skills/core/dingtalk-agent-compose/assets/role-skill.template.md +32 -0
  216. package/skills/core/dingtalk-agent-compose/evals/evals.json +129 -0
  217. package/skills/core/dingtalk-agent-compose/references/agent-definition-contract.md +55 -0
  218. package/skills/core/dingtalk-agent-compose/references/host-loading-contract.md +58 -0
  219. package/skills/core/dingtalk-agent-compose/references/hosts/claude-code.md +48 -0
  220. package/skills/core/dingtalk-agent-compose/references/hosts/opencode.md +77 -0
  221. package/skills/core/dingtalk-agent-compose/references/storage-routing.md +20 -0
  222. package/skills/core/dingtalk-agent-eval/SKILL.md +140 -0
  223. package/skills/core/dingtalk-agent-eval/assets/eval-catalog.template.json +18 -0
  224. package/skills/core/dingtalk-agent-eval/evals/evals.json +83 -0
  225. package/skills/core/dingtalk-agent-eval/references/eval-topology.md +48 -0
  226. package/skills/core/dingtalk-agent-eval/references/evidence-contract.md +52 -0
  227. package/skills/core/dingtalk-agent-eval/references/failure-to-case.md +35 -0
  228. package/skills/core/dingtalk-agent-eval/references/interactive-debug-channels.md +93 -0
  229. package/skills/core/dingtalk-agent-eval/references/local-connector-smoke.md +75 -0
  230. package/skills/core/dingtalk-agent-eval/references/scenario-taxonomy.md +25 -0
  231. package/skills/core/dingtalk-agent-eval/references/storage-modes.md +75 -0
  232. package/skills/core/dingtalk-basic-behavior/SKILL.md +87 -0
  233. package/skills/core/dingtalk-basic-behavior/assets/memory-candidate-proposal.json +10 -0
  234. package/skills/{dingtalk-basic-behavior/assets/task-checkpoint.md → core/dingtalk-basic-behavior/assets/task-checkpoint.json} +2 -21
  235. package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/action-contract.md +2 -0
  236. package/skills/core/dingtalk-basic-behavior/references/memory-and-evolution.md +53 -0
  237. package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +28 -0
  238. package/skills/core/dingtalk-basic-behavior/references/risk-authority-and-privacy.md +62 -0
  239. package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/task-lifecycle.md +47 -10
  240. package/skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md +65 -0
  241. package/skills/platforms/deap/PLATFORM.md +3 -0
  242. package/skills/platforms/deap/README.md +3 -0
  243. package/skills/platforms/multica-dingtalk/PLATFORM.md +40 -0
  244. package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +40 -0
  245. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/SKILL.md +60 -0
  246. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +49 -0
  247. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/promotion-observation-contract.md +49 -0
  248. package/skills/platforms/multica-dingtalk/multica-external/SKILL.md +282 -0
  249. package/skills/platforms/multica-dingtalk/multica-external/scripts/bootstrap.sh +78 -0
  250. package/skills/platforms/multica-dingtalk/multica-external/scripts/multica_ext.py +1180 -0
  251. package/skills/dingtalk-basic-behavior/SKILL.md +0 -86
  252. package/skills/dingtalk-basic-behavior/references/memory-and-evolution.md +0 -27
  253. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/event-to-behavior.md +0 -0
  254. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/runtime-modes.md +0 -0
@@ -0,0 +1,141 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 820" width="1200" height="820" role="img" aria-labelledby="title desc">
2
+ <title id="title">dingtalk-agent Provider-bound Development Workspace 拓扑</title>
3
+ <desc id="desc">一个可移植 Agent Project 可以解析成多个开发 Workspace;每个 Workspace 只绑定一个 Host Provider,但可以独立绑定不同的语义 Storage。Session 和 Run 位于 Workspace 内,实际状态和回执与期望 Manifest 分开。</desc>
4
+ <style>
5
+ text { font-family: 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Microsoft YaHei', sans-serif; }
6
+ .title { font-size: 23px; font-weight: 700; fill: #111827; }
7
+ .subtitle { font-size: 13px; fill: #6b7280; }
8
+ .layer-title { font-size: 13px; font-weight: 700; fill: #374151; letter-spacing: .4px; }
9
+ .node-title { font-size: 15px; font-weight: 700; fill: #111827; }
10
+ .node-sub { font-size: 12px; fill: #6b7280; }
11
+ .tiny { font-size: 11px; fill: #6b7280; }
12
+ .edge-label { font-size: 11px; font-weight: 600; fill: #4b5563; }
13
+ </style>
14
+ <defs>
15
+ <marker id="arrow-blue" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
16
+ <polygon points="0 0, 10 3.5, 0 7" fill="#2563eb"/>
17
+ </marker>
18
+ <marker id="arrow-green" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
19
+ <polygon points="0 0, 10 3.5, 0 7" fill="#16a34a"/>
20
+ </marker>
21
+ <marker id="arrow-purple" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
22
+ <polygon points="0 0, 10 3.5, 0 7" fill="#9333ea"/>
23
+ </marker>
24
+ <filter id="shadow" x="-10%" y="-10%" width="120%" height="130%">
25
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#111827" flood-opacity="0.10"/>
26
+ </filter>
27
+ </defs>
28
+
29
+ <rect width="1200" height="820" fill="#ffffff"/>
30
+ <text x="40" y="43" class="title">Provider-bound Development Workspace</text>
31
+ <text x="40" y="67" class="subtitle">Project 定义“要开发成什么”;Workspace 定义“在哪里、以什么 Provider 状态开发”;Session / Run 定义“正在做哪件事”。</text>
32
+
33
+ <!-- Developer control plane -->
34
+ <rect x="40" y="92" width="1120" height="108" rx="12" fill="#f9fafb" stroke="#d1d5db" stroke-width="1.5" stroke-dasharray="6 4"/>
35
+ <text x="58" y="116" class="layer-title">开发控制面</text>
36
+ <rect x="80" y="132" width="220" height="48" rx="9" fill="#eff6ff" stroke="#bfdbfe" stroke-width="1.5"/>
37
+ <text x="190" y="153" text-anchor="middle" class="node-title">Coding Agent / Developer</text>
38
+ <text x="190" y="170" text-anchor="middle" class="node-sub">Codex · OpenCode · 人</text>
39
+ <rect x="430" y="122" width="330" height="66" rx="10" fill="#fff7ed" stroke="#fed7aa" stroke-width="1.5" filter="url(#shadow)"/>
40
+ <text x="595" y="147" text-anchor="middle" class="node-title">dta Workflow Skills + CLI</text>
41
+ <text x="595" y="167" text-anchor="middle" class="node-sub">compose · info · eval · deploy · status</text>
42
+ <rect x="890" y="132" width="220" height="48" rx="9" fill="#faf5ff" stroke="#e9d5ff" stroke-width="1.5"/>
43
+ <text x="1000" y="153" text-anchor="middle" class="node-title">Plan / Receipt</text>
44
+ <text x="1000" y="170" text-anchor="middle" class="node-sub">稳定机器合同,无 Secret</text>
45
+ <path d="M 300 156 L 420 156" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
46
+ <path d="M 760 156 L 880 156" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
47
+
48
+ <!-- Project -->
49
+ <rect x="40" y="224" width="800" height="138" rx="12" fill="#f9fafb" stroke="#d1d5db" stroke-width="1.5" stroke-dasharray="6 4"/>
50
+ <text x="58" y="248" class="layer-title">可移植 Agent Project · 进入 Git</text>
51
+ <rect x="80" y="270" width="210" height="66" rx="9" fill="#eff6ff" stroke="#bfdbfe" stroke-width="1.5"/>
52
+ <text x="185" y="296" text-anchor="middle" class="node-title">dingtalk-agent.json</text>
53
+ <text x="185" y="317" text-anchor="middle" class="node-sub">Project + Workspace 期望状态</text>
54
+ <rect x="325" y="270" width="210" height="66" rx="9" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1.5"/>
55
+ <text x="430" y="296" text-anchor="middle" class="node-title">AGENTS.md + Skills</text>
56
+ <text x="430" y="317" text-anchor="middle" class="node-sub">本体、Basic、岗位能力</text>
57
+ <rect x="570" y="270" width="220" height="66" rx="9" fill="#faf5ff" stroke="#e9d5ff" stroke-width="1.5"/>
58
+ <text x="680" y="296" text-anchor="middle" class="node-title">Eval Suites</text>
59
+ <text x="680" y="317" text-anchor="middle" class="node-sub">成功标准与晋级门禁</text>
60
+ <path d="M 595 188 L 595 214 L 430 214 L 430 260" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
61
+
62
+ <!-- Storage providers -->
63
+ <rect x="870" y="224" width="290" height="338" rx="12" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1.5" stroke-dasharray="6 4"/>
64
+ <text x="890" y="248" class="layer-title">独立 Storage Providers</text>
65
+ <text x="890" y="269" class="tiny">只决定语义内容放哪里,不决定 Agent 在哪里运行</text>
66
+ <rect x="910" y="296" width="210" height="54" rx="9" fill="#ffffff" stroke="#86efac" stroke-width="1.5"/>
67
+ <text x="1015" y="319" text-anchor="middle" class="node-title">local-md / local-dir</text>
68
+ <text x="1015" y="337" text-anchor="middle" class="node-sub">本地本体、记忆、产物</text>
69
+ <rect x="910" y="374" width="210" height="54" rx="9" fill="#ffffff" stroke="#86efac" stroke-width="1.5"/>
70
+ <text x="1015" y="397" text-anchor="middle" class="node-title">dingtalk-doc</text>
71
+ <text x="1015" y="415" text-anchor="middle" class="node-sub">远端记忆与知识</text>
72
+ <rect x="910" y="452" width="210" height="54" rx="9" fill="#ffffff" stroke="#86efac" stroke-width="1.5"/>
73
+ <text x="1015" y="475" text-anchor="middle" class="node-title">Future typed stores</text>
74
+ <text x="1015" y="493" text-anchor="middle" class="node-sub">AI 表格 · Artifact store</text>
75
+ <text x="1015" y="538" text-anchor="middle" class="tiny">锁 / Wait / generation / Receipt 不进入这些介质</text>
76
+
77
+ <!-- Workspaces -->
78
+ <rect x="40" y="388" width="800" height="174" rx="12" fill="#f9fafb" stroke="#d1d5db" stroke-width="1.5" stroke-dasharray="6 4"/>
79
+ <text x="58" y="412" class="layer-title">Development Workspaces · 一个 Workspace 只绑定一个 Host Provider</text>
80
+ <rect x="75" y="436" width="220" height="94" rx="10" fill="#eff6ff" stroke="#93c5fd" stroke-width="1.8" filter="url(#shadow)"/>
81
+ <text x="185" y="462" text-anchor="middle" class="node-title">local-dev</text>
82
+ <text x="185" y="483" text-anchor="middle" class="node-sub">provider = opencode</text>
83
+ <text x="185" y="503" text-anchor="middle" class="node-sub">model · Basic load · local state</text>
84
+ <text x="185" y="519" text-anchor="middle" class="tiny">stage = dev</text>
85
+ <rect x="330" y="436" width="220" height="94" rx="10" fill="#fff7ed" stroke="#fdba74" stroke-width="1.8" filter="url(#shadow)"/>
86
+ <text x="440" y="462" text-anchor="middle" class="node-title">multica-dev</text>
87
+ <text x="440" y="483" text-anchor="middle" class="node-sub">provider = multica</text>
88
+ <text x="440" y="503" text-anchor="middle" class="node-sub">profile · scope · runtime · agentId</text>
89
+ <text x="440" y="519" text-anchor="middle" class="tiny">stage = dev</text>
90
+ <rect x="585" y="436" width="220" height="94" rx="10" fill="#faf5ff" stroke="#d8b4fe" stroke-width="1.8"/>
91
+ <text x="695" y="462" text-anchor="middle" class="node-title">future-workspace</text>
92
+ <text x="695" y="483" text-anchor="middle" class="node-sub">provider = future</text>
93
+ <text x="695" y="503" text-anchor="middle" class="node-sub">同一最小 Provider 合同</text>
94
+ <text x="695" y="519" text-anchor="middle" class="tiny">optional</text>
95
+ <path d="M 185 362 L 185 426" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
96
+ <path d="M 430 362 L 430 406 L 440 406 L 440 426" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
97
+ <path d="M 680 362 L 680 406 L 695 406 L 695 426" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
98
+ <rect x="360" y="374" width="157" height="20" rx="4" fill="#ffffff" opacity="0.96"/>
99
+ <text x="438" y="388" text-anchor="middle" class="edge-label">Project + Workspace overlay</text>
100
+
101
+ <!-- Storage binding arrows -->
102
+ <path d="M 840 454 L 856 454 L 856 323 L 900 323" fill="none" stroke="#16a34a" stroke-width="1.8" stroke-dasharray="6 4" marker-end="url(#arrow-green)"/>
103
+ <path d="M 840 522 L 872 522 L 872 401 L 900 401" fill="none" stroke="#16a34a" stroke-width="1.8" stroke-dasharray="6 4" marker-end="url(#arrow-green)"/>
104
+ <rect x="752" y="418" width="98" height="20" rx="4" fill="#ffffff" opacity="0.96"/>
105
+ <text x="801" y="432" text-anchor="middle" class="edge-label">storage binding</text>
106
+
107
+ <!-- Runtime actual state -->
108
+ <rect x="40" y="588" width="1120" height="158" rx="12" fill="#f9fafb" stroke="#d1d5db" stroke-width="1.5" stroke-dasharray="6 4"/>
109
+ <text x="58" y="612" class="layer-title">Provider 实际状态 · 回读后写入 gitignored state / Receipt</text>
110
+ <rect x="75" y="634" width="220" height="84" rx="10" fill="#111827" stroke="#374151" stroke-width="1.5"/>
111
+ <text x="185" y="660" text-anchor="middle" font-size="15" font-weight="700" fill="#ffffff">OpenCode Sandbox</text>
112
+ <text x="185" y="681" text-anchor="middle" font-size="12" fill="#d1d5db">invoke · eval · files/artifacts</text>
113
+ <text x="185" y="700" text-anchor="middle" font-size="11" fill="#9ca3af">Sessions → Runs → Evidence</text>
114
+ <rect x="330" y="634" width="220" height="84" rx="10" fill="#fff7ed" stroke="#fdba74" stroke-width="1.5"/>
115
+ <text x="440" y="660" text-anchor="middle" class="node-title">Multica Managed Agent</text>
116
+ <text x="440" y="681" text-anchor="middle" class="node-sub">Boot → Basic → Role Skills</text>
117
+ <text x="440" y="700" text-anchor="middle" class="tiny">agent get · skills · status · smoke</text>
118
+ <rect x="585" y="634" width="220" height="84" rx="10" fill="#faf5ff" stroke="#d8b4fe" stroke-width="1.5"/>
119
+ <text x="695" y="660" text-anchor="middle" class="node-title">Future Provider</text>
120
+ <text x="695" y="681" text-anchor="middle" class="node-sub">doctor · plan · apply</text>
121
+ <text x="695" y="700" text-anchor="middle" class="tiny">inspect · invoke · status</text>
122
+ <rect x="890" y="634" width="230" height="84" rx="10" fill="#f0fdfa" stroke="#99f6e4" stroke-width="1.5"/>
123
+ <text x="1005" y="660" text-anchor="middle" class="node-title">Workspace State / Receipt</text>
124
+ <text x="1005" y="681" text-anchor="middle" class="node-sub">desiredHash · observedHash</text>
125
+ <text x="1005" y="700" text-anchor="middle" class="tiny">operationId · evalId · no secrets</text>
126
+ <path d="M 185 530 L 185 624" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
127
+ <path d="M 440 530 L 440 624" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
128
+ <path d="M 695 530 L 695 624" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
129
+ <path d="M 805 676 L 880 676" fill="none" stroke="#9333ea" stroke-width="1.8" marker-end="url(#arrow-purple)"/>
130
+
131
+ <!-- Legend and invariant -->
132
+ <line x1="55" y1="780" x2="90" y2="780" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
133
+ <text x="100" y="784" class="tiny">开发/解析/执行主路径</text>
134
+ <line x1="265" y1="780" x2="300" y2="780" stroke="#16a34a" stroke-width="1.8" stroke-dasharray="6 4" marker-end="url(#arrow-green)"/>
135
+ <text x="310" y="784" class="tiny">语义 Storage 绑定</text>
136
+ <line x1="455" y1="780" x2="490" y2="780" stroke="#9333ea" stroke-width="1.8" marker-end="url(#arrow-purple)"/>
137
+ <text x="500" y="784" class="tiny">Provider 回读与证据</text>
138
+ <rect x="760" y="759" width="400" height="38" rx="8" fill="#fef2f2" stroke="#fecaca"/>
139
+ <text x="960" y="775" text-anchor="middle" font-size="12" font-weight="700" fill="#991b1b">不变量:Provider 不从正文猜身份/目标,不拥有 Trigger</text>
140
+ <text x="960" y="790" text-anchor="middle" font-size="11" fill="#b91c1c">一个 Workspace 不原地改绑 Provider;新环境创建新 Workspace</text>
141
+ </svg>
@@ -0,0 +1,191 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 840" role="img" aria-labelledby="title desc">
2
+ <title id="title">数字员工任务闭环与完成闸门</title>
3
+ <desc id="desc">展示任务从可信上下文、理解、条件澄清、计划、执行、验证到完成闸门的流程,以及运行时状态约束和四类证据。</desc>
4
+ <defs>
5
+ <style>
6
+ text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; fill: #0f172a; }
7
+ .title { font-size: 28px; font-weight: 750; }
8
+ .subtitle { font-size: 14px; fill: #475569; }
9
+ .section { font-size: 13px; font-weight: 700; letter-spacing: .8px; fill: #475569; }
10
+ .node-title { font-size: 15px; font-weight: 750; }
11
+ .node-sub { font-size: 12px; fill: #475569; }
12
+ .small { font-size: 11px; fill: #64748b; }
13
+ .label { font-size: 12px; font-weight: 650; }
14
+ </style>
15
+ <filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
16
+ <feDropShadow dx="0" dy="3" stdDeviation="5" flood-color="#0f172a" flood-opacity="0.10"/>
17
+ </filter>
18
+ <marker id="arrow-blue" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
19
+ <path d="M0,0 L10,4 L0,8 Z" fill="#2563eb"/>
20
+ </marker>
21
+ <marker id="arrow-orange" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
22
+ <path d="M0,0 L10,4 L0,8 Z" fill="#ea580c"/>
23
+ </marker>
24
+ <marker id="arrow-green" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
25
+ <path d="M0,0 L10,4 L0,8 Z" fill="#059669"/>
26
+ </marker>
27
+ <marker id="arrow-stop" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
28
+ <path d="M0,0 L10,4 L0,8 Z" fill="#dc2626"/>
29
+ </marker>
30
+ </defs>
31
+
32
+ <rect width="1200" height="840" fill="#f8fafc"/>
33
+ <text x="54" y="48" class="title">数字员工任务闭环与完成闸门</text>
34
+ <text x="54" y="76" class="subtitle">澄清是条件分支;完成是证据结论。Skill 引导语义判断,CLI 固定状态边界,DWS / 文件系统提供可回读事实。</text>
35
+
36
+ <rect x="50" y="104" width="1100" height="106" rx="18" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5" stroke-dasharray="7 5"/>
37
+ <text x="72" y="130" class="section">可信现场 · TRUSTED CONTEXT</text>
38
+
39
+ <rect x="72" y="146" width="304" height="46" rx="12" fill="#eff6ff" stroke="#93c5fd"/>
40
+ <circle cx="98" cy="169" r="10" fill="#2563eb"/>
41
+ <path d="M93 169 l4 4 l7 -8" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
42
+ <text x="118" y="166" class="node-title">Origin + Continuation</text>
43
+ <text x="118" y="182" class="small">当前消息、线程与明确续接</text>
44
+
45
+ <rect x="448" y="146" width="304" height="46" rx="12" fill="#fff7ed" stroke="#fdba74"/>
46
+ <path d="M470 160 h18 v18 h-18 z M474 156 h10 v5 h-10 z" fill="none" stroke="#ea580c" stroke-width="1.8"/>
47
+ <text x="502" y="166" class="node-title">Definition + Authority</text>
48
+ <text x="502" y="182" class="small">身份、职责、作用域与权限</text>
49
+
50
+ <rect x="824" y="146" width="304" height="46" rx="12" fill="#f0fdf4" stroke="#86efac"/>
51
+ <path d="M848 158 h17 l6 6 v14 h-23 z M865 158 v7 h7" fill="none" stroke="#059669" stroke-width="1.8" stroke-linejoin="round"/>
52
+ <text x="884" y="166" class="node-title">Workspace + Role Skills</text>
53
+ <text x="884" y="182" class="small">附件、知识、已有 checkpoint</text>
54
+
55
+ <path d="M600 210 V236" fill="none" stroke="#ea580c" stroke-width="2" marker-end="url(#arrow-orange)"/>
56
+
57
+ <text x="50" y="251" class="section">员工任务主流程 · EMPLOYEE LOOP</text>
58
+
59
+ <rect x="50" y="272" width="146" height="78" rx="16" fill="#ffffff" stroke="#60a5fa" stroke-width="2" filter="url(#shadow)"/>
60
+ <circle cx="78" cy="298" r="13" fill="#dbeafe"/>
61
+ <path d="M72 298 h12 M78 292 v12" stroke="#2563eb" stroke-width="2" stroke-linecap="round"/>
62
+ <text x="101" y="299" class="node-title">UNDERSTAND</text>
63
+ <text x="73" y="326" class="node-sub">形成内部任务合同</text>
64
+ <text x="73" y="342" class="small">goal · deliverable · doneWhen</text>
65
+
66
+ <path d="M196 311 H228" fill="none" stroke="#2563eb" stroke-width="2.2" marker-end="url(#arrow-blue)"/>
67
+
68
+ <path d="M300 268 L370 311 L300 354 L230 311 Z" fill="#fff7ed" stroke="#fb923c" stroke-width="2" filter="url(#shadow)"/>
69
+ <text x="300" y="306" text-anchor="middle" class="node-title">存在阻塞缺口?</text>
70
+ <text x="300" y="326" text-anchor="middle" class="small">会改变结果 / 权限 / 副作用</text>
71
+
72
+ <path d="M370 311 H406" fill="none" stroke="#2563eb" stroke-width="2.2" marker-end="url(#arrow-blue)"/>
73
+ <rect x="374" y="288" width="28" height="18" rx="5" fill="#f8fafc" opacity="0.96"/>
74
+ <text x="388" y="301" text-anchor="middle" class="label" fill="#2563eb">否</text>
75
+
76
+ <rect x="406" y="272" width="132" height="78" rx="16" fill="#ffffff" stroke="#60a5fa" stroke-width="2"/>
77
+ <text x="472" y="301" text-anchor="middle" class="node-title">PLAN</text>
78
+ <text x="472" y="324" text-anchor="middle" class="node-sub">2–5 个检查点</text>
79
+ <text x="472" y="341" text-anchor="middle" class="small">单步任务可省略</text>
80
+
81
+ <path d="M538 311 H570" fill="none" stroke="#2563eb" stroke-width="2.2" marker-end="url(#arrow-blue)"/>
82
+
83
+ <rect x="570" y="272" width="132" height="78" rx="16" fill="#ffffff" stroke="#60a5fa" stroke-width="2"/>
84
+ <text x="636" y="301" text-anchor="middle" class="node-title">EXECUTE</text>
85
+ <text x="636" y="324" text-anchor="middle" class="node-sub">最小充分动作</text>
86
+ <text x="636" y="341" text-anchor="middle" class="small">副作用前重核对象</text>
87
+
88
+ <path d="M702 311 H734" fill="none" stroke="#2563eb" stroke-width="2.2" marker-end="url(#arrow-blue)"/>
89
+
90
+ <rect x="734" y="272" width="132" height="78" rx="16" fill="#ffffff" stroke="#34d399" stroke-width="2"/>
91
+ <text x="800" y="301" text-anchor="middle" class="node-title">VERIFY</text>
92
+ <text x="800" y="324" text-anchor="middle" class="node-sub">检查真实状态</text>
93
+ <text x="800" y="341" text-anchor="middle" class="small">生成 ≠ 保存 ≠ 送达</text>
94
+
95
+ <path d="M866 311 H898" fill="none" stroke="#2563eb" stroke-width="2.2" marker-end="url(#arrow-blue)"/>
96
+
97
+ <rect x="898" y="252" width="252" height="118" rx="18" fill="#fffbeb" stroke="#f59e0b" stroke-width="2.5" filter="url(#shadow)"/>
98
+ <rect x="918" y="270" width="52" height="24" rx="12" fill="#f59e0b"/>
99
+ <text x="944" y="287" text-anchor="middle" font-size="11" font-weight="750" fill="#ffffff">CLI GATE</text>
100
+ <text x="1024" y="289" class="node-title">COMPLETION GATE</text>
101
+ <text x="920" y="316" class="small">① status = verifying</text>
102
+ <text x="1038" y="316" class="small">② doneWhen 有证据</text>
103
+ <text x="920" y="337" class="small">③ waitingFor = null</text>
104
+ <text x="1038" y="337" class="small">④ nextAction 为空</text>
105
+ <text x="920" y="356" class="small">回复正文不能证明自己的完成声明</text>
106
+
107
+ <path d="M1024 370 V412" fill="none" stroke="#2563eb" stroke-width="2.4" marker-end="url(#arrow-blue)"/>
108
+ <rect x="1032" y="383" width="58" height="20" rx="6" fill="#f8fafc" opacity="0.96"/>
109
+ <text x="1061" y="398" text-anchor="middle" class="label" fill="#2563eb">全部通过</text>
110
+
111
+ <rect x="940" y="414" width="168" height="70" rx="18" fill="#ecfdf5" stroke="#10b981" stroke-width="2.5" filter="url(#shadow)"/>
112
+ <circle cx="972" cy="443" r="14" fill="#10b981"/>
113
+ <path d="M965 443 l5 5 l9 -11" fill="none" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
114
+ <text x="1041" y="442" text-anchor="middle" class="node-title">COMPLETE</text>
115
+ <text x="1024" y="466" text-anchor="middle" class="node-sub">结果 · 证据 · 遗留 · owner</text>
116
+
117
+ <path d="M300 354 V396 H196" fill="none" stroke="#ea580c" stroke-width="2" marker-end="url(#arrow-orange)"/>
118
+ <rect x="306" y="366" width="28" height="18" rx="5" fill="#f8fafc" opacity="0.96"/>
119
+ <text x="320" y="379" text-anchor="middle" class="label" fill="#ea580c">是</text>
120
+
121
+ <rect x="50" y="396" width="146" height="72" rx="16" fill="#fff7ed" stroke="#fb923c" stroke-width="2"/>
122
+ <text x="123" y="425" text-anchor="middle" class="node-title">CLARIFY</text>
123
+ <text x="123" y="447" text-anchor="middle" class="node-sub">只问一个阻塞问题</text>
124
+ <text x="123" y="462" text-anchor="middle" class="small">信息足够时不出现</text>
125
+
126
+ <path d="M196 432 H230" fill="none" stroke="#ea580c" stroke-width="2" marker-end="url(#arrow-orange)"/>
127
+ <rect x="230" y="396" width="146" height="72" rx="16" fill="#fff7ed" stroke="#fb923c" stroke-width="2"/>
128
+ <text x="303" y="425" text-anchor="middle" class="node-title">WAIT</text>
129
+ <text x="303" y="447" text-anchor="middle" class="node-sub">记录恢复条件</text>
130
+ <text x="303" y="462" text-anchor="middle" class="small">释放沙箱,不轮询</text>
131
+
132
+ <path d="M303 468 V516 H78 V350" fill="none" stroke="#7c3aed" stroke-width="1.8" marker-end="url(#arrow-blue)"/>
133
+ <rect x="154" y="505" width="98" height="20" rx="6" fill="#f8fafc" opacity="0.96"/>
134
+ <text x="203" y="519" text-anchor="middle" class="small" fill="#7c3aed">新事件恢复原 Session</text>
135
+
136
+ <path d="M898 338 H884 V448 H836" fill="none" stroke="#dc2626" stroke-width="2" marker-end="url(#arrow-stop)"/>
137
+ <rect x="846" y="424" width="26" height="18" rx="5" fill="#f8fafc" opacity="0.96"/>
138
+ <text x="859" y="437" text-anchor="middle" class="label" fill="#dc2626">失败</text>
139
+ <rect x="646" y="414" width="190" height="70" rx="16" fill="#fef2f2" stroke="#f87171" stroke-width="2"/>
140
+ <text x="741" y="441" text-anchor="middle" class="node-title">返工 / 等待 / 阻塞</text>
141
+ <text x="741" y="463" text-anchor="middle" class="node-sub">准确报告,不说“已完成”</text>
142
+ <path d="M646 449 H620 V350" fill="none" stroke="#dc2626" stroke-width="1.8" marker-end="url(#arrow-stop)"/>
143
+
144
+ <rect x="50" y="550" width="1100" height="222" rx="20" fill="#ffffff" stroke="#bbf7d0" stroke-width="1.5" stroke-dasharray="7 5"/>
145
+ <text x="72" y="579" class="section">证据平面 · EVIDENCE PLANE</text>
146
+ <text x="72" y="600" class="small">每条 doneWhen 绑定至少一种可定位事实;质量分不能覆盖缺失证据。</text>
147
+
148
+ <rect x="72" y="624" width="230" height="104" rx="16" fill="#f0fdf4" stroke="#86efac"/>
149
+ <path d="M94 643 h24 l7 7 v24 h-31 z M118 643 v8 h8" fill="none" stroke="#059669" stroke-width="2" stroke-linejoin="round"/>
150
+ <text x="140" y="654" class="node-title">文件系统</text>
151
+ <text x="94" y="684" class="node-sub">路径存在 · 内容匹配</text>
152
+ <text x="94" y="705" class="node-sub">大小 / sha256 可核验</text>
153
+
154
+ <rect x="328" y="624" width="230" height="104" rx="16" fill="#f0fdf4" stroke="#86efac"/>
155
+ <rect x="350" y="643" width="32" height="25" rx="3" fill="none" stroke="#059669" stroke-width="2"/>
156
+ <path d="M350 651 h32 M357 647 h2 M363 647 h2" stroke="#059669" stroke-width="1.5" stroke-linecap="round"/>
157
+ <text x="396" y="654" class="node-title">Workspace / Artifact</text>
158
+ <text x="350" y="684" class="node-sub">Definition / manifest 有效</text>
159
+ <text x="350" y="705" class="node-sub">声明产物逐项存在</text>
160
+
161
+ <rect x="584" y="624" width="230" height="104" rx="16" fill="#f0fdf4" stroke="#86efac"/>
162
+ <circle cx="610" cy="656" r="14" fill="none" stroke="#059669" stroke-width="2"/>
163
+ <path d="M603 656 l5 5 l10 -12" fill="none" stroke="#059669" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
164
+ <text x="636" y="654" class="node-title">Receipt + Readback</text>
165
+ <text x="606" y="684" class="node-sub">Intent / Attempt / Verification</text>
166
+ <text x="606" y="705" class="node-sub">平台独立回读可见</text>
167
+
168
+ <rect x="840" y="624" width="230" height="104" rx="16" fill="#f0fdf4" stroke="#86efac"/>
169
+ <circle cx="866" cy="652" r="9" fill="none" stroke="#059669" stroke-width="2"/>
170
+ <path d="M850 672 c2 -11 30 -11 32 0" fill="none" stroke="#059669" stroke-width="2" stroke-linecap="round"/>
171
+ <text x="896" y="654" class="node-title">人工确认 / 审批</text>
172
+ <text x="862" y="684" class="node-sub">明确接受或业务状态变更</text>
173
+ <text x="862" y="705" class="node-sub">未确认时保持 verifying</text>
174
+
175
+ <path d="M187 624 V606 H1168 V325 H1150" fill="none" stroke="#059669" stroke-width="1.8" marker-end="url(#arrow-green)"/>
176
+ <path d="M443 624 V606" fill="none" stroke="#059669" stroke-width="1.8"/>
177
+ <path d="M699 624 V606" fill="none" stroke="#059669" stroke-width="1.8"/>
178
+ <path d="M955 624 V606" fill="none" stroke="#059669" stroke-width="1.8"/>
179
+ <rect x="1006" y="590" width="82" height="20" rx="6" fill="#ffffff" opacity="0.96"/>
180
+ <text x="1047" y="604" text-anchor="middle" class="small" fill="#059669">证据汇入 Gate</text>
181
+
182
+ <line x1="72" y1="805" x2="106" y2="805" stroke="#2563eb" stroke-width="2.2" marker-end="url(#arrow-blue)"/>
183
+ <text x="116" y="809" class="small">主流程</text>
184
+ <line x1="198" y1="805" x2="232" y2="805" stroke="#ea580c" stroke-width="2" marker-end="url(#arrow-orange)"/>
185
+ <text x="242" y="809" class="small">条件 / 控制</text>
186
+ <line x1="354" y1="805" x2="388" y2="805" stroke="#059669" stroke-width="2" marker-end="url(#arrow-green)"/>
187
+ <text x="398" y="809" class="small">独立证据</text>
188
+ <line x1="500" y1="805" x2="534" y2="805" stroke="#dc2626" stroke-width="2" marker-end="url(#arrow-stop)"/>
189
+ <text x="544" y="809" class="small">闸门失败 / 返回</text>
190
+ <text x="1128" y="809" text-anchor="end" class="small">Skill 劝 · CLI 拦 · DWS 做</text>
191
+ </svg>
@@ -0,0 +1,103 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="520" viewBox="0 0 1200 520" role="img" aria-labelledby="title desc">
2
+ <title id="title">dingtalk-agent 从定义到交付的生命周期</title>
3
+ <desc id="desc">AGENTS.md、Basic Behavior 和 Role Skills 组成 Agent Project,经本地或云上 Harness 测试,通过 Gate 和 Receipt 后发布到 Managed Agent Platform,最终以数字员工账号或机器人身份交付。</desc>
4
+ <defs>
5
+ <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
6
+ <stop offset="0" stop-color="#0a1020"/>
7
+ <stop offset="1" stop-color="#111a31"/>
8
+ </linearGradient>
9
+ <linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
10
+ <stop offset="0" stop-color="#39c6f4"/>
11
+ <stop offset="1" stop-color="#7777ff"/>
12
+ </linearGradient>
13
+ <filter id="shadow" x="-20%" y="-30%" width="140%" height="160%">
14
+ <feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#020617" flood-opacity=".34"/>
15
+ </filter>
16
+ <style>
17
+ .eyebrow { font: 600 13px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: 1.6px; fill: #7dd3fc; }
18
+ .title { font: 700 22px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; fill: #f8fafc; }
19
+ .body { font: 500 15px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; fill: #cbd5e1; }
20
+ .small { font: 500 13px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; fill: #94a3b8; }
21
+ .chip { font: 600 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; fill: #dbeafe; }
22
+ .number { font: 700 14px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; fill: #08111f; }
23
+ </style>
24
+ </defs>
25
+
26
+ <rect width="1200" height="520" rx="28" fill="url(#bg)"/>
27
+ <path d="M52 90H1148" stroke="#23304a"/>
28
+ <text x="52" y="55" class="eyebrow">ONE AGENT PROJECT · ONE VERIFIABLE CONTRACT</text>
29
+ <text x="52" y="82" class="title">同一份定义,完成创建、测试、发布和交付</text>
30
+
31
+ <!-- Step 1 -->
32
+ <g filter="url(#shadow)">
33
+ <rect x="52" y="132" width="272" height="232" rx="22" fill="#111c33" stroke="#2b3b59"/>
34
+ <circle cx="86" cy="168" r="16" fill="#67e8f9"/>
35
+ <text x="86" y="173" text-anchor="middle" class="number">1</text>
36
+ <text x="112" y="175" class="title">定义 Agent</text>
37
+ <rect x="76" y="208" width="224" height="38" rx="9" fill="#172643"/>
38
+ <text x="92" y="232" class="body">AGENTS.md</text>
39
+ <rect x="76" y="256" width="224" height="38" rx="9" fill="#172643"/>
40
+ <text x="92" y="280" class="body">Basic Behavior</text>
41
+ <rect x="76" y="304" width="224" height="38" rx="9" fill="#172643"/>
42
+ <text x="92" y="328" class="body">Role Skills</text>
43
+ </g>
44
+
45
+ <!-- Arrow 1 -->
46
+ <path d="M340 248H386" stroke="url(#accent)" stroke-width="3" stroke-linecap="round"/>
47
+ <path d="m378 240 10 8-10 8" fill="none" stroke="#7777ff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
48
+
49
+ <!-- Step 2 -->
50
+ <g filter="url(#shadow)">
51
+ <rect x="404" y="132" width="292" height="232" rx="22" fill="#111c33" stroke="#2b3b59"/>
52
+ <circle cx="438" cy="168" r="16" fill="#67e8f9"/>
53
+ <text x="438" y="173" text-anchor="middle" class="number">2</text>
54
+ <text x="464" y="175" class="title">Harness 测试</text>
55
+ <text x="428" y="219" class="body">加载 · 隔离 · 执行 · 回读</text>
56
+ <rect x="428" y="246" width="112" height="30" rx="15" fill="#17314b" stroke="#275779"/>
57
+ <text x="484" y="266" text-anchor="middle" class="chip">本地 Runtime</text>
58
+ <rect x="552" y="246" width="120" height="30" rx="15" fill="#2a254f" stroke="#4f46a5"/>
59
+ <text x="612" y="266" text-anchor="middle" class="chip">云上 Runtime</text>
60
+ <path d="M428 304H672" stroke="#263956"/>
61
+ <circle cx="440" cy="329" r="7" fill="#4ade80"/>
62
+ <text x="456" y="334" class="small">Gate 通过,Receipt 可核验</text>
63
+ </g>
64
+
65
+ <!-- Arrow 2 -->
66
+ <path d="M712 248H758" stroke="url(#accent)" stroke-width="3" stroke-linecap="round"/>
67
+ <path d="m750 240 10 8-10 8" fill="none" stroke="#7777ff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
68
+
69
+ <!-- Step 3 -->
70
+ <g filter="url(#shadow)">
71
+ <rect x="776" y="132" width="228" height="232" rx="22" fill="#111c33" stroke="#2b3b59"/>
72
+ <circle cx="810" cy="168" r="16" fill="#67e8f9"/>
73
+ <text x="810" y="173" text-anchor="middle" class="number">3</text>
74
+ <text x="836" y="175" class="title">发布到平台</text>
75
+ <text x="800" y="219" class="body">Managed Agent Platform</text>
76
+ <rect x="800" y="246" width="180" height="38" rx="9" fill="#172643"/>
77
+ <text x="890" y="270" text-anchor="middle" class="body">Multica · 已支持</text>
78
+ <rect x="800" y="294" width="180" height="38" rx="9" fill="#172643"/>
79
+ <text x="890" y="318" text-anchor="middle" class="body">更多 Adapter</text>
80
+ </g>
81
+
82
+ <!-- Delivery branches -->
83
+ <path d="M1004 220H1030Q1048 220 1048 202V182Q1048 164 1066 164H1080" fill="none" stroke="#586985" stroke-width="2"/>
84
+ <path d="M1004 276H1030Q1048 276 1048 294V314Q1048 332 1066 332H1080" fill="none" stroke="#586985" stroke-width="2"/>
85
+ <g filter="url(#shadow)">
86
+ <rect x="1080" y="126" width="82" height="112" rx="18" fill="#14213b" stroke="#38678b"/>
87
+ <circle cx="1121" cy="159" r="13" fill="#7dd3fc"/>
88
+ <path d="M1099 200c2-19 10-28 22-28s20 9 22 28" fill="#7dd3fc" opacity=".9"/>
89
+ <text x="1121" y="223" text-anchor="middle" class="small">数字员工</text>
90
+ </g>
91
+ <g filter="url(#shadow)">
92
+ <rect x="1080" y="276" width="82" height="112" rx="18" fill="#14213b" stroke="#554fb0"/>
93
+ <rect x="1100" y="309" width="42" height="34" rx="10" fill="#a5b4fc"/>
94
+ <circle cx="1112" cy="325" r="4" fill="#14213b"/>
95
+ <circle cx="1130" cy="325" r="4" fill="#14213b"/>
96
+ <path d="M1121 298v11M1115 298h12" stroke="#a5b4fc" stroke-width="4" stroke-linecap="round"/>
97
+ <text x="1121" y="373" text-anchor="middle" class="small">机器人</text>
98
+ </g>
99
+
100
+ <text x="52" y="432" class="body">继承不靠自述:Definition / Skill hash、运行轨迹、平台回读与 Receipt 共同证明。</text>
101
+ <rect x="52" y="458" width="1096" height="1" fill="#23304a"/>
102
+ <text x="52" y="491" class="small">身份、目标、权限、预算和副作用始终由可信宿主与 Gate 固定。</text>
103
+ </svg>
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/D1-2004/dingtalk-agent/docs/schemas/agent-audit-load-evidence.schema.json",
4
+ "title": "dingtalk-agent Agent Audit Load Evidence",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["$schema", "targetHash", "reportPath", "reportHash"],
8
+ "properties": {
9
+ "$schema": { "const": "dingtalk-agent/agent-audit-load-evidence@1" },
10
+ "targetHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
11
+ "reportPath": { "type": "string", "minLength": 1 },
12
+ "reportHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
13
+ }
14
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/D1-2004/dingtalk-agent/docs/schemas/agent-audit.schema.json",
4
+ "title": "dingtalk-agent Agent Audit Report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "$schema", "status", "ready", "sideEffect", "dingtalkSideEffect", "root",
9
+ "bindings", "definition", "storageMode", "requiredSkills", "checks", "missing",
10
+ "repairs", "verification"
11
+ ],
12
+ "properties": {
13
+ "$schema": { "const": "dingtalk-agent/agent-audit@1" },
14
+ "status": { "enum": ["ready", "partial"] },
15
+ "ready": { "type": "boolean" },
16
+ "sideEffect": { "enum": [false, "local-opencode-eval"] },
17
+ "dingtalkSideEffect": { "const": false },
18
+ "root": { "type": "string", "minLength": 1 },
19
+ "bindings": {
20
+ "oneOf": [
21
+ { "type": "null" },
22
+ {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["path", "hash"],
26
+ "properties": {
27
+ "path": { "type": "string" },
28
+ "hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
29
+ }
30
+ }
31
+ ]
32
+ },
33
+ "definition": { "type": "object" },
34
+ "storageMode": { "enum": ["local", "remote", "mixed"] },
35
+ "requiredSkills": {
36
+ "type": "array",
37
+ "uniqueItems": true,
38
+ "items": { "type": "string", "minLength": 1 }
39
+ },
40
+ "checks": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "required": ["id", "surface", "level", "blocking", "summary", "evidence"],
46
+ "properties": {
47
+ "id": { "type": "string", "minLength": 1 },
48
+ "surface": { "enum": ["definition", "skills", "storage", "authority", "host", "load"] },
49
+ "level": { "enum": ["pass", "warn", "fail"] },
50
+ "blocking": { "type": "boolean" },
51
+ "summary": { "type": "string", "minLength": 1 },
52
+ "evidence": { "type": "object" }
53
+ }
54
+ }
55
+ },
56
+ "missing": {
57
+ "type": "array",
58
+ "uniqueItems": true,
59
+ "items": { "type": "string", "minLength": 1 }
60
+ },
61
+ "repairs": {
62
+ "type": "array",
63
+ "items": {
64
+ "type": "object",
65
+ "additionalProperties": false,
66
+ "required": ["id", "why", "actions"],
67
+ "properties": {
68
+ "id": { "type": "string", "minLength": 1 },
69
+ "why": { "type": "string", "minLength": 1 },
70
+ "actions": {
71
+ "type": "array",
72
+ "minItems": 1,
73
+ "items": { "type": "string", "minLength": 1 }
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "verification": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "required": ["loadReport", "remoteReport", "commands"],
82
+ "properties": {
83
+ "loadReport": { "type": "string" },
84
+ "remoteReport": { "type": "string" },
85
+ "commands": {
86
+ "type": "array",
87
+ "items": { "type": "string", "minLength": 1 }
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }