@xdxer/dingtalk-agent 0.1.4 → 0.1.5-beta.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.
- package/CHANGELOG.md +232 -0
- package/README.en.md +115 -89
- package/README.md +111 -86
- package/dist/bin/dingtalk-agent.js +742 -152
- package/dist/bin/dingtalk-agent.js.map +1 -1
- package/dist/src/actions.js +3 -2
- package/dist/src/actions.js.map +1 -1
- package/dist/src/agent-audit.js +202 -85
- package/dist/src/agent-audit.js.map +1 -1
- package/dist/src/agent-definition.js +7 -3
- package/dist/src/agent-definition.js.map +1 -1
- package/dist/src/agent-enhance.js +51 -32
- package/dist/src/agent-enhance.js.map +1 -1
- package/dist/src/agent-platform.js +4 -4
- package/dist/src/agent-platform.js.map +1 -1
- package/dist/src/bootstrap.js +6 -2
- package/dist/src/bootstrap.js.map +1 -1
- package/dist/src/development-workspace.js +210 -34
- package/dist/src/development-workspace.js.map +1 -1
- package/dist/src/doctor.js +65 -9
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/dws.js +67 -3
- package/dist/src/dws.js.map +1 -1
- package/dist/src/init.js +2 -1
- package/dist/src/init.js.map +1 -1
- package/dist/src/memory/noop-receipt.js +306 -0
- package/dist/src/memory/noop-receipt.js.map +1 -0
- package/dist/src/memory/operational.js +27 -3
- package/dist/src/memory/operational.js.map +1 -1
- package/dist/src/memory/remote-state.js +2 -1
- package/dist/src/memory/remote-state.js.map +1 -1
- package/dist/src/multica-deploy.js +692 -125
- package/dist/src/multica-deploy.js.map +1 -1
- package/dist/src/multica-provider.js +303 -25
- package/dist/src/multica-provider.js.map +1 -1
- package/dist/src/multica-runtime-vocabulary.js +110 -0
- package/dist/src/multica-runtime-vocabulary.js.map +1 -0
- package/dist/src/opencode-evals.js +6 -6
- package/dist/src/opencode-evals.js.map +1 -1
- package/dist/src/opencode-provider.js +21 -7
- package/dist/src/opencode-provider.js.map +1 -1
- package/dist/src/opencode-workspace.js +3 -3
- package/dist/src/opencode-workspace.js.map +1 -1
- package/dist/src/personal-event-evals.js +4 -2
- package/dist/src/personal-event-evals.js.map +1 -1
- package/dist/src/promotion.js +2 -1
- package/dist/src/promotion.js.map +1 -1
- package/dist/src/remote-semantic-state-live-evals.js +14 -8
- package/dist/src/remote-semantic-state-live-evals.js.map +1 -1
- package/dist/src/remote-state-evals.js +2 -2
- package/dist/src/remote-state-evals.js.map +1 -1
- package/dist/src/robot-evals.js +3 -3
- package/dist/src/robot-evals.js.map +1 -1
- package/dist/src/schedule-plan.js +380 -0
- package/dist/src/schedule-plan.js.map +1 -0
- package/dist/src/sessions.js +1 -1
- package/dist/src/sessions.js.map +1 -1
- package/dist/src/skill-manager.js +145 -13
- package/dist/src/skill-manager.js.map +1 -1
- package/dist/src/skills.js +2 -0
- package/dist/src/skills.js.map +1 -1
- package/dist/src/tui.js +369 -0
- package/dist/src/tui.js.map +1 -0
- package/dist/src/upgrade.js +113 -33
- package/dist/src/upgrade.js.map +1 -1
- package/dist/src/waits.js +2 -1
- package/dist/src/waits.js.map +1 -1
- package/dist/src/workspace.js +12 -7
- package/dist/src/workspace.js.map +1 -1
- package/docs/AGENT-IN-PRODUCTION.md +255 -0
- package/docs/ARCHITECTURE.md +366 -0
- package/docs/INSTALLATION.md +8 -8
- package/docs/PLATFORM-GUARDRAILS.md +188 -0
- package/docs/PRIOR-ART.md +126 -0
- package/docs/SELF-TEST.md +182 -0
- package/docs/architecture/agent-platform-connection-layer.svg +120 -0
- package/docs/architecture/digital-employee-composition.svg +92 -0
- package/docs/architecture/dingtalk-agent-architecture.svg +125 -0
- package/docs/assets/digital-employee-at-work.svg +77 -0
- package/docs/schemas/multica-deployment-plan.schema.json +3 -1
- package/docs/schemas/multica-deployment-receipt.schema.json +17 -3
- package/docs/schemas/multica-deployment-status.schema.json +6 -2
- package/docs/schemas/multica-workspace-inspection.schema.json +16 -0
- package/docs/schemas/multica-workspace-run-plan.schema.json +31 -0
- package/docs/schemas/multica-workspace-run.schema.json +161 -0
- package/docs/schemas/multica-workspace-status.schema.json +2 -0
- package/docs/schemas/project.schema.json +54 -3
- package/docs/schemas/workspace-scaffold.schema.json +38 -0
- package/examples/agents/README.md +45 -0
- package/examples/agents/fde-coach/AGENTS.md +2 -25
- package/examples/agents/fde-coach/agent/AGENTS.md +35 -0
- package/examples/agents/fde-coach/agent.bindings.json +10 -0
- package/examples/agents/release-manager/AGENTS.md +2 -25
- package/examples/agents/release-manager/agent/AGENTS.md +35 -0
- package/examples/agents/release-manager/agent.bindings.json +10 -0
- package/lab/agent-eval/catalog.json +5 -5
- package/lab/agent-eval/classic-failures.json +4 -4
- package/lab/agent-eval/completion-gate-regression.json +9 -9
- package/lab/agent-eval/personal-event-live.example.json +3 -3
- package/lab/agent-eval/remote-semantic-state-live.example.json +1 -1
- package/lab/agent-eval/workspace/opencode.json +2 -2
- package/lab/project-workspace/fake-multica-provider.mjs +171 -17
- package/lab/project-workspace/multica-deploy.fixture.json +2 -2
- package/lab/project-workspace/multica-readonly.fixture.json +4 -16
- package/lab/project-workspace/opencode-provider-suite.json +3 -3
- package/lab/project-workspace/project.fixture.json +2 -6
- package/lab/robot-eval/suite.json +1 -1
- package/lab/robot-eval/workspace/AGENTS.md +1 -1
- package/lab/robot-eval/workspace/opencode.json +2 -2
- package/lab/schemas/personal-event-eval.schema.json +1 -1
- package/package.json +18 -11
- package/skills/README.md +10 -8
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +49 -24
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/AGENTS.template.md +1 -1
- package/skills/core/dta-agent-compose/assets/REPOSITORY.template.md +10 -0
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +2 -2
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.local.template.json +2 -2
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/hosts/opencode/opencode.template.json +3 -2
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/evals/evals.json +4 -4
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/agent-definition-contract.md +7 -7
- package/skills/core/dta-agent-compose/references/drive-and-schedules.md +166 -0
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md +11 -13
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md +13 -12
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md +14 -13
- package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/SKILL.md +28 -3
- package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/assets/eval-catalog.template.json +1 -1
- package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/evals/evals.json +1 -1
- package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/eval-topology.md +3 -3
- package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/interactive-debug-channels.md +10 -4
- package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/SKILL.md +21 -5
- package/skills/core/dta-basic-behavior/references/event-to-behavior.md +38 -0
- package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/memory-and-evolution.md +3 -1
- package/skills/core/dta-basic-behavior/references/perception-and-gates.md +87 -0
- package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/risk-authority-and-privacy.md +12 -0
- package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/truth-and-recovery.md +4 -2
- package/skills/core/dta-people-group-memory/COMPLETENESS.md +36 -0
- package/skills/core/dta-people-group-memory/SKILL.md +69 -0
- package/skills/core/dta-people-group-memory/references/adapters.md +273 -0
- package/skills/core/dta-people-group-memory/references/assembly-guidance.md +40 -0
- package/skills/core/dta-people-group-memory/references/binding.md +110 -0
- package/skills/core/dta-people-group-memory/references/cold-start.md +70 -0
- package/skills/core/dta-people-group-memory/references/config-binding.md +89 -0
- package/skills/core/dta-people-group-memory/references/consent-and-visibility.md +83 -0
- package/skills/core/dta-people-group-memory/references/consolidation.md +162 -0
- package/skills/core/dta-people-group-memory/references/event-ingest.md +103 -0
- package/skills/core/dta-people-group-memory/references/guided-setup.md +70 -0
- package/skills/core/dta-people-group-memory/references/model.md +148 -0
- package/skills/core/dta-people-group-memory/references/storage-port.md +107 -0
- package/skills/platforms/deap/PLATFORM.md +30 -1
- package/skills/platforms/multica-dingtalk/PLATFORM.md +35 -9
- package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/SKILL.md +10 -8
- package/skills/platforms/multica-dingtalk/dta-deploy-multica/references/multica-deployment-contract.md +67 -0
- package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/SKILL.md +81 -11
- package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/bootstrap.sh +2 -2
- package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/multica_ext.py +264 -16
- package/dist/src/map.js +0 -157
- package/dist/src/map.js.map +0 -1
- package/docs/SECOND-AGENT-ACCEPTANCE.md +0 -62
- package/docs/architecture/agent-memory-topology.png +0 -0
- package/docs/architecture/agent-memory-topology.svg +0 -132
- package/docs/architecture/dingtalk-agent-blueprint.png +0 -0
- package/docs/architecture/durable-async-agent-runtime.png +0 -0
- package/docs/architecture/general-agent-kernel-topology.png +0 -0
- package/docs/architecture/provider-bound-development-workspace.png +0 -0
- package/docs/architecture/task-completion-gate.png +0 -0
- package/docs/assets/agent-delivery-lifecycle.svg +0 -103
- package/skills/core/dingtalk-basic-behavior/references/event-to-behavior.md +0 -24
- package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +0 -28
- package/skills/platforms/deap/README.md +0 -3
- package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +0 -40
- package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +0 -49
- /package/examples/agents/fde-coach/{skills → agent/skills}/fde-coach/SKILL.md +0 -0
- /package/examples/agents/release-manager/{skills → agent/skills}/release-manager/SKILL.md +0 -0
- /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/role-skill.template.md +0 -0
- /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/storage-routing.md +0 -0
- /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/evidence-contract.md +0 -0
- /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/failure-to-case.md +0 -0
- /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/local-connector-smoke.md +0 -0
- /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/scenario-taxonomy.md +0 -0
- /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/storage-modes.md +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/task-checkpoint.json +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/action-contract.md +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/runtime-modes.md +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/task-lifecycle.md +0 -0
- /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 880" width="1200" height="880" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">dingtalk-agent 架构:五个部件,五个权威</title>
|
|
3
|
+
<desc id="desc">一个数字员工由五个部件构成,编号一到五:部件一 Agent 本体由本仓库拥有,内含可信事件、响应闸门、Session Run Wait、动作闸门与 Receipt 回读的处理链,以及本体装配、状态记忆、评测证据三块支撑;部件二组织身份与场域授权、部件三感知通道由钉钉数字员工平台提供,当前尚未接入;部件四平台执行能力由 DWS 提供,执行全部真实钉钉操作并回读 Receipt;部件五运行位置由 Managed Agent Platform 或本地 Agent Host 提供,Multica 已支持、DEAP 敬请期待、更多平台需先在注册表登记并提供平台 Skill 包。最底层是钉钉组织。</desc>
|
|
4
|
+
<style>
|
|
5
|
+
text { font-family: 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Microsoft YaHei', 'Microsoft JhengHei', 'SimHei', sans-serif; }
|
|
6
|
+
.title { fill:#111827;font-size:22px;font-weight:700; }
|
|
7
|
+
.subtitle { fill:#6b7280;font-size:13px; }
|
|
8
|
+
.lane { fill:#475569;font-size:12px;font-weight:700;letter-spacing:.08em; }
|
|
9
|
+
.node-title { fill:#111827;font-size:15px;font-weight:700; }
|
|
10
|
+
.node-sub { fill:#4b5563;font-size:12px; }
|
|
11
|
+
.small { fill:#64748b;font-size:11px; }
|
|
12
|
+
.label { fill:#475569;font-size:11px;font-weight:600; }
|
|
13
|
+
.footer { fill:#ffffff;font-size:11px;font-weight:600; }
|
|
14
|
+
.badge-on { fill:#ffffff;font-size:12px;font-weight:700; }
|
|
15
|
+
</style>
|
|
16
|
+
<defs>
|
|
17
|
+
<marker id="arrow-blue" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#2563eb"/></marker>
|
|
18
|
+
<marker id="arrow-gray" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#64748b"/></marker>
|
|
19
|
+
<marker id="arrow-purple" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#7c3aed"/></marker>
|
|
20
|
+
<marker id="arrow-teal" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#0d9488"/></marker>
|
|
21
|
+
</defs>
|
|
22
|
+
<rect width="1200" height="880" fill="#ffffff"/>
|
|
23
|
+
<text x="40" y="46" class="title">dingtalk-agent 架构:五个部件,五个权威,本仓库只拥有一个</text>
|
|
24
|
+
<text x="40" y="70" class="subtitle">把 Agent 装配成合格的钉钉数字员工,并连接更广阔的 Agent 运行平台。实心编号 = 本仓库拥有;空心编号 = 外部提供。</text>
|
|
25
|
+
<rect x="40" y="92" width="1120" height="122" rx="8" fill="#f9fafb" stroke="#d1d5db" stroke-width="1.5" stroke-dasharray="7 5"/>
|
|
26
|
+
<circle cx="62" cy="110" r="11" fill="#ffffff" stroke="#64748b" stroke-width="1.6"/>
|
|
27
|
+
<text x="62" y="114" text-anchor="middle" fill="#64748b" font-size="12" font-weight="700">5</text>
|
|
28
|
+
<text x="82" y="115" class="lane">RUNTIME LOCATION · 运行位置(可替换)—— Agent 在哪里执行,本仓库不自建 Runtime</text>
|
|
29
|
+
<rect x="64" y="128" width="247" height="70" rx="8" fill="#f0fdf4" stroke="#86efac" stroke-width="1.5"/>
|
|
30
|
+
<text x="187" y="156" text-anchor="middle" class="node-title">Multica</text>
|
|
31
|
+
<text x="187" y="178" text-anchor="middle" class="node-sub">已支持</text>
|
|
32
|
+
<rect x="339" y="128" width="247" height="70" rx="8" fill="#faf5ff" stroke="#c084fc" stroke-width="1.5" stroke-dasharray="6 4"/>
|
|
33
|
+
<text x="462" y="156" text-anchor="middle" class="node-title">DEAP</text>
|
|
34
|
+
<text x="462" y="178" text-anchor="middle" class="node-sub">敬请期待 · 是否内建运行平台待确认</text>
|
|
35
|
+
<rect x="614" y="128" width="247" height="70" rx="8" fill="#f9fafb" stroke="#d1d5db" stroke-width="1.5" stroke-dasharray="6 4"/>
|
|
36
|
+
<text x="737" y="156" text-anchor="middle" class="node-title">更多平台</text>
|
|
37
|
+
<text x="737" y="178" text-anchor="middle" class="node-sub">注册表 + 平台 Skill 包</text>
|
|
38
|
+
<rect x="889" y="128" width="247" height="70" rx="8" fill="#ffffff" stroke="#d1d5db" stroke-width="1.5"/>
|
|
39
|
+
<text x="1012" y="156" text-anchor="middle" class="node-title">本地 Agent Host</text>
|
|
40
|
+
<text x="1012" y="178" text-anchor="middle" class="node-sub">Claude Code · Codex · OpenCode</text>
|
|
41
|
+
<path d="M 600,268 L 600,220" fill="none" stroke="#64748b" stroke-width="1.5" stroke-dasharray="5 4" marker-end="url(#arrow-gray)"/>
|
|
42
|
+
<rect x="610" y="232" width="190" height="19" rx="4" fill="#ffffff" opacity="0.95"/>
|
|
43
|
+
<text x="704" y="246" text-anchor="middle" class="label">部署 · Definition 与 Skill 树</text>
|
|
44
|
+
<rect x="40" y="268" width="1120" height="292" rx="8" fill="#f8fafc" stroke="#0f766e" stroke-width="2"/>
|
|
45
|
+
<circle cx="62" cy="288" r="11" fill="#0f766e"/>
|
|
46
|
+
<text x="62" y="292" text-anchor="middle" class="badge-on">1</text>
|
|
47
|
+
<text x="82" y="292" fill="#0f766e" font-size="12" font-weight="700" letter-spacing=".08em">DINGTALK-AGENT · 本仓库唯一拥有的一项:Agent 本体 · 公共行为 · 状态 · 效果证据</text>
|
|
48
|
+
<text x="82" y="312" class="small">Skill 劝(该不该做)· CLI 拦(身份 / 目标 / 预算 / 幂等 / 回读)· DWS 做(执行)</text>
|
|
49
|
+
<rect x="64" y="326" width="187" height="92" rx="8" fill="#eff6ff" stroke="#60a5fa" stroke-width="1.8"/>
|
|
50
|
+
<text x="157" y="356" text-anchor="middle" class="node-title">可信事件</text>
|
|
51
|
+
<text x="157" y="378" text-anchor="middle" class="node-sub">Invocation</text>
|
|
52
|
+
<text x="157" y="397" text-anchor="middle" class="small">谁 · 在哪 · 说了什么</text>
|
|
53
|
+
<rect x="285" y="326" width="187" height="92" rx="8" fill="#eff6ff" stroke="#60a5fa" stroke-width="1.8"/>
|
|
54
|
+
<text x="378" y="356" text-anchor="middle" class="node-title">Response Gate</text>
|
|
55
|
+
<text x="378" y="378" text-anchor="middle" class="node-sub">mention/DM 才处理</text>
|
|
56
|
+
<text x="378" y="397" text-anchor="middle" class="small">群聊未 @ 默认沉默</text>
|
|
57
|
+
<rect x="506" y="326" width="187" height="92" rx="8" fill="#eff6ff" stroke="#60a5fa" stroke-width="1.8"/>
|
|
58
|
+
<text x="599" y="356" text-anchor="middle" class="node-title">Session·Run·Wait</text>
|
|
59
|
+
<text x="599" y="378" text-anchor="middle" class="node-sub">一件事 · 一次唤醒</text>
|
|
60
|
+
<text x="599" y="397" text-anchor="middle" class="small">沙箱可丢弃,事情接着做</text>
|
|
61
|
+
<rect x="727" y="326" width="187" height="92" rx="8" fill="#eff6ff" stroke="#60a5fa" stroke-width="1.8"/>
|
|
62
|
+
<text x="820" y="356" text-anchor="middle" class="node-title">Action Gate</text>
|
|
63
|
+
<text x="820" y="378" text-anchor="middle" class="node-sub">冻结身份 · 目标 · 预算</text>
|
|
64
|
+
<text x="820" y="397" text-anchor="middle" class="small">幂等,不盲重试</text>
|
|
65
|
+
<rect x="948" y="326" width="187" height="92" rx="8" fill="#eff6ff" stroke="#60a5fa" stroke-width="1.8"/>
|
|
66
|
+
<text x="1041" y="356" text-anchor="middle" class="node-title">Receipt</text>
|
|
67
|
+
<text x="1041" y="378" text-anchor="middle" class="node-sub">独立回读</text>
|
|
68
|
+
<text x="1041" y="397" text-anchor="middle" class="small">无证据不声称完成</text>
|
|
69
|
+
<path d="M 251,372 L 285,372" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
|
|
70
|
+
<path d="M 472,372 L 506,372" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
|
|
71
|
+
<path d="M 693,372 L 727,372" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
|
|
72
|
+
<path d="M 914,372 L 948,372" fill="none" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow-blue)"/>
|
|
73
|
+
<rect x="64" y="440" width="337" height="92" rx="8" fill="#ffffff" stroke="#93c5fd" stroke-width="1.5"/>
|
|
74
|
+
<text x="232" y="468" text-anchor="middle" class="node-title">本体与装配</text>
|
|
75
|
+
<text x="232" y="490" text-anchor="middle" class="node-sub">Definition + Basic Behavior + Role Skills</text>
|
|
76
|
+
<text x="232" y="509" text-anchor="middle" class="small">agent enhance · agent audit --verify-load</text>
|
|
77
|
+
<rect x="431" y="440" width="337" height="92" rx="8" fill="#ffffff" stroke="#93c5fd" stroke-width="1.5"/>
|
|
78
|
+
<text x="599" y="468" text-anchor="middle" class="node-title">状态与记忆</text>
|
|
79
|
+
<text x="599" y="490" text-anchor="middle" class="node-sub">语义内容与控制状态分开</text>
|
|
80
|
+
<text x="599" y="509" text-anchor="middle" class="small">锁 · 幂等 · Receipt 不进 Markdown</text>
|
|
81
|
+
<rect x="798" y="440" width="337" height="92" rx="8" fill="#ffffff" stroke="#93c5fd" stroke-width="1.5"/>
|
|
82
|
+
<text x="966" y="468" text-anchor="middle" class="node-title">评测与证据</text>
|
|
83
|
+
<text x="966" y="490" text-anchor="middle" class="node-sub">上线前用最低成本证明它真会做事</text>
|
|
84
|
+
<text x="966" y="509" text-anchor="middle" class="small">lab · workspace eval · observe</text>
|
|
85
|
+
<path d="M 158,606 L 158,564" fill="none" stroke="#7c3aed" stroke-width="1.8" stroke-dasharray="6 4" marker-end="url(#arrow-purple)"/>
|
|
86
|
+
<rect x="169" y="572" width="136" height="19" rx="4" fill="#ffffff" opacity="0.95"/>
|
|
87
|
+
<text x="237" y="586" text-anchor="middle" class="label">签发的身份 · 可信事件</text>
|
|
88
|
+
<path d="M 821,564 L 821,606" fill="none" stroke="#0d9488" stroke-width="2" marker-end="url(#arrow-teal)"/>
|
|
89
|
+
<rect x="837" y="572" width="56" height="19" rx="4" fill="#ffffff" opacity="0.95"/>
|
|
90
|
+
<text x="865" y="586" text-anchor="middle" class="label">执行动作</text>
|
|
91
|
+
<path d="M 1042,606 L 1042,564" fill="none" stroke="#0d9488" stroke-width="2" marker-end="url(#arrow-teal)"/>
|
|
92
|
+
<rect x="1058" y="572" width="82" height="19" rx="4" fill="#ffffff" opacity="0.95"/>
|
|
93
|
+
<text x="1099" y="586" text-anchor="middle" class="label">Receipt 回读</text>
|
|
94
|
+
<rect x="40" y="606" width="540" height="140" rx="8" fill="#faf5ff" stroke="#c084fc" stroke-width="1.8" stroke-dasharray="7 5"/>
|
|
95
|
+
<text x="58" y="630" fill="#7c3aed" font-size="12" font-weight="700" letter-spacing=".08em">IDENTITY & PERCEPTION · 钉钉数字员工平台</text>
|
|
96
|
+
<rect x="60" y="646" width="245" height="64" rx="8" fill="#ffffff" stroke="#d8b4fe" stroke-width="1.5"/>
|
|
97
|
+
<circle cx="80" cy="666" r="11" fill="#ffffff" stroke="#7c3aed" stroke-width="1.6"/>
|
|
98
|
+
<text x="80" y="670" text-anchor="middle" fill="#7c3aed" font-size="12" font-weight="700">2</text>
|
|
99
|
+
<text x="183" y="673" text-anchor="middle" class="node-title">身份权限管控</text>
|
|
100
|
+
<text x="183" y="694" text-anchor="middle" class="node-sub">创建 · UID · 场域边界 · 生命周期</text>
|
|
101
|
+
<rect x="320" y="646" width="245" height="64" rx="8" fill="#ffffff" stroke="#d8b4fe" stroke-width="1.5"/>
|
|
102
|
+
<circle cx="340" cy="666" r="11" fill="#ffffff" stroke="#7c3aed" stroke-width="1.6"/>
|
|
103
|
+
<text x="340" y="670" text-anchor="middle" fill="#7c3aed" font-size="12" font-weight="700">3</text>
|
|
104
|
+
<text x="443" y="673" text-anchor="middle" class="node-title">感知与人机交互</text>
|
|
105
|
+
<text x="443" y="694" text-anchor="middle" class="node-sub">事件送达 · 统一展示</text>
|
|
106
|
+
<text x="60" y="730" class="small">DEAP 敬请期待,平台命令一律 fail-closed;事件信封的权威是钉钉事件中心与 DWS。</text>
|
|
107
|
+
<rect x="620" y="606" width="540" height="140" rx="8" fill="#f0fdfa" stroke="#0f766e" stroke-width="1.8"/>
|
|
108
|
+
<text x="638" y="630" fill="#0f766e" font-size="12" font-weight="700" letter-spacing=".08em">PLATFORM EXECUTION · DWS</text>
|
|
109
|
+
<rect x="640" y="646" width="500" height="64" rx="8" fill="#ffffff" stroke="#5eead4" stroke-width="1.5"/>
|
|
110
|
+
<circle cx="660" cy="666" r="11" fill="#ffffff" stroke="#0d9488" stroke-width="1.6"/>
|
|
111
|
+
<text x="660" y="670" text-anchor="middle" fill="#0d9488" font-size="12" font-weight="700">4</text>
|
|
112
|
+
<text x="890" y="673" text-anchor="middle" class="node-title">钉钉全部产品能力</text>
|
|
113
|
+
<text x="890" y="694" text-anchor="middle" class="node-sub">消息 · 文档 · 表格 · 日程 · 审批 · 通讯录</text>
|
|
114
|
+
<text x="640" y="730" class="small">所有真实钉钉操作最终都由 DWS 执行;src/dws.ts 是全仓库唯一 spawn dws 的地方。</text>
|
|
115
|
+
<rect x="40" y="764" width="1120" height="28" rx="6" fill="#0f172a"/>
|
|
116
|
+
<text x="600" y="783" text-anchor="middle" class="footer">钉钉组织 · 真实的人、群、日程、审批与文档 —— 身份与事件由钉钉签发,本仓库只冻结、审计和引用,不发证、不改写、不扩权</text>
|
|
117
|
+
<line x1="40" y1="828" x2="74" y2="828" stroke="#2563eb" stroke-width="1.8" marker-end="url(#arrow-blue)"/>
|
|
118
|
+
<text x="82" y="832" class="small">主处理流:事件 → 资格 → 动作</text>
|
|
119
|
+
<line x1="300" y1="828" x2="334" y2="828" stroke="#64748b" stroke-width="1.8" stroke-dasharray="5 4" marker-end="url(#arrow-gray)"/>
|
|
120
|
+
<text x="342" y="832" class="small">装配与部署(本仓库 → 运行平台)</text>
|
|
121
|
+
<line x1="560" y1="828" x2="594" y2="828" stroke="#7c3aed" stroke-width="1.8" stroke-dasharray="6 4" marker-end="url(#arrow-purple)"/>
|
|
122
|
+
<text x="602" y="832" class="small">钉钉签发的身份与可信事件(DEAP 待接入)</text>
|
|
123
|
+
<line x1="860" y1="828" x2="894" y2="828" stroke="#0d9488" stroke-width="1.8" marker-end="url(#arrow-teal)"/>
|
|
124
|
+
<text x="902" y="832" class="small">DWS 执行与 Receipt 回读</text>
|
|
125
|
+
</svg>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 430" width="1200" height="430" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">一个钉钉数字员工的一次协作</title>
|
|
3
|
+
<desc id="desc">群里有同事 @ 数字员工提出请求;它先确认自己是谁、被授权对谁做事;然后经 DWS 执行真实的钉钉操作;最后拿出可独立回读的回执与产物,才声称完成。全过程留在原来的群里,和真人同事走同一套协作界面。</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#0a1020"/><stop offset="1" stop-color="#111a31"/></linearGradient>
|
|
6
|
+
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#39c6f4"/><stop offset="1" stop-color="#7777ff"/></linearGradient>
|
|
7
|
+
<filter id="shadow" x="-20%" y="-30%" width="140%" height="160%"><feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#020617" flood-opacity=".34"/></filter>
|
|
8
|
+
<style>
|
|
9
|
+
text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; }
|
|
10
|
+
.eyebrow { font-size:13px;font-weight:600;letter-spacing:1.6px;fill:#7dd3fc; }
|
|
11
|
+
.title { font-size:22px;font-weight:700;fill:#f8fafc; }
|
|
12
|
+
.step { font-size:17px;font-weight:700;fill:#f8fafc; }
|
|
13
|
+
.body { font-size:14px;font-weight:500;fill:#cbd5e1; }
|
|
14
|
+
.small { font-size:12px;font-weight:500;fill:#94a3b8; }
|
|
15
|
+
.bubble { font-size:14px;font-weight:600;fill:#dbeafe; }
|
|
16
|
+
.num { font-size:13px;font-weight:700;fill:#08111f; }
|
|
17
|
+
</style>
|
|
18
|
+
</defs>
|
|
19
|
+
<rect width="1200" height="430" rx="28" fill="url(#bg)"/>
|
|
20
|
+
<path d="M52 96H1148" stroke="#23304a"/>
|
|
21
|
+
<text x="52" y="56" class="eyebrow">A DIGITAL EMPLOYEE AT WORK</text>
|
|
22
|
+
<text x="52" y="86" class="title">群里 @ 它一句话,它像同事一样把事办完——而且每一步都留得下痕迹</text>
|
|
23
|
+
<g filter="url(#shadow)">
|
|
24
|
+
<rect x="52" y="116" width="250" height="188" rx="22" fill="#111c33" stroke="#2b3b59"/>
|
|
25
|
+
<circle cx="84" cy="150" r="15" fill="#67e8f9"/>
|
|
26
|
+
<text x="84" y="155" text-anchor="middle" class="num">1</text>
|
|
27
|
+
<text x="110" y="156" class="step">有人在群里 @ 它</text>
|
|
28
|
+
<rect x="74" y="184" width="206" height="46" rx="10" fill="#172643"/>
|
|
29
|
+
<text x="90" y="204" class="body">真人同事,在原来的群里</text>
|
|
30
|
+
<text x="90" y="222" class="small">不用换工具、不用开新系统</text>
|
|
31
|
+
</g>
|
|
32
|
+
<g filter="url(#shadow)">
|
|
33
|
+
<rect x="340" y="116" width="250" height="188" rx="22" fill="#111c33" stroke="#2b3b59"/>
|
|
34
|
+
<circle cx="372" cy="150" r="15" fill="#67e8f9"/>
|
|
35
|
+
<text x="372" y="155" text-anchor="middle" class="num">2</text>
|
|
36
|
+
<text x="398" y="156" class="step">它先确认自己是谁</text>
|
|
37
|
+
<rect x="362" y="184" width="206" height="46" rx="10" fill="#172643"/>
|
|
38
|
+
<text x="378" y="204" class="body">工号 · 岗位 · 能对谁做事</text>
|
|
39
|
+
<text x="378" y="222" class="small">身份由钉钉签发,不看正文说什么</text>
|
|
40
|
+
</g>
|
|
41
|
+
<g filter="url(#shadow)">
|
|
42
|
+
<rect x="628" y="116" width="250" height="188" rx="22" fill="#111c33" stroke="#2b3b59"/>
|
|
43
|
+
<circle cx="660" cy="150" r="15" fill="#67e8f9"/>
|
|
44
|
+
<text x="660" y="155" text-anchor="middle" class="num">3</text>
|
|
45
|
+
<text x="686" y="156" class="step">它去把事情办了</text>
|
|
46
|
+
<rect x="650" y="184" width="206" height="46" rx="10" fill="#172643"/>
|
|
47
|
+
<text x="666" y="204" class="body">查状态 · 发通知 · 写文档</text>
|
|
48
|
+
<text x="666" y="222" class="small">每个动作都过一道闸门</text>
|
|
49
|
+
</g>
|
|
50
|
+
<g filter="url(#shadow)">
|
|
51
|
+
<rect x="916" y="116" width="232" height="188" rx="22" fill="#111c33" stroke="#2b3b59"/>
|
|
52
|
+
<circle cx="948" cy="150" r="15" fill="#67e8f9"/>
|
|
53
|
+
<text x="948" y="155" text-anchor="middle" class="num">4</text>
|
|
54
|
+
<text x="974" y="156" class="step">它拿得出做完的证据</text>
|
|
55
|
+
<rect x="938" y="184" width="188" height="46" rx="10" fill="#172643"/>
|
|
56
|
+
<text x="954" y="204" class="body">回执 · 产物 · 可独立回读</text>
|
|
57
|
+
<text x="954" y="222" class="small">没有证据,就不说「做完了」</text>
|
|
58
|
+
</g>
|
|
59
|
+
<rect x="74" y="248" width="206" height="40" rx="12" fill="#17314b" stroke="#275779"/>
|
|
60
|
+
<text x="90" y="273" class="bubble">「@发布助手 3.2 能发了吗」</text>
|
|
61
|
+
<rect x="362" y="248" width="206" height="40" rx="12" fill="#1c2a4d" stroke="#3a4f7a"/>
|
|
62
|
+
<text x="378" y="273" class="small" fill="#cbd5e1">授权范围外的人和群,不响应</text>
|
|
63
|
+
<rect x="650" y="248" width="206" height="40" rx="12" fill="#1c2a4d" stroke="#3a4f7a"/>
|
|
64
|
+
<text x="666" y="273" class="small" fill="#cbd5e1">回复目标只能来自这条消息</text>
|
|
65
|
+
<rect x="938" y="248" width="188" height="40" rx="12" fill="#14322a" stroke="#2f6b52"/>
|
|
66
|
+
<circle cx="958" cy="268" r="6" fill="#4ade80"/>
|
|
67
|
+
<text x="972" y="273" class="small" fill="#cbd5e1">回读通过才算完成</text>
|
|
68
|
+
<path d="M302 210H330" stroke="url(#accent)" stroke-width="3" stroke-linecap="round"/>
|
|
69
|
+
<path d="m320 202 10 8-10 8" fill="none" stroke="#7777ff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
70
|
+
<path d="M590 210H618" stroke="url(#accent)" stroke-width="3" stroke-linecap="round"/>
|
|
71
|
+
<path d="m608 202 10 8-10 8" fill="none" stroke="#7777ff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
72
|
+
<path d="M878 210H906" stroke="url(#accent)" stroke-width="3" stroke-linecap="round"/>
|
|
73
|
+
<path d="m896 202 10 8-10 8" fill="none" stroke="#7777ff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
74
|
+
<rect x="52" y="336" width="1096" height="1" fill="#23304a"/>
|
|
75
|
+
<text x="52" y="370" class="body">和真人同事走同一套协作界面——区别是,它的身份、边界和每一次副作用都可以被审计。</text>
|
|
76
|
+
<text x="52" y="398" class="small">未 @ 的群消息默认沉默 · 命令行不提供「发给谁」这个参数 · 说「完成」必须有宿主签发的证据——这三条由合同评测锁定。</text>
|
|
77
|
+
</svg>
|
|
@@ -40,9 +40,11 @@
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"definitionHash": { "$ref": "#/$defs/hash" },
|
|
43
|
-
"instructionsHash": { "$ref": "#/$defs/hash" }
|
|
43
|
+
"instructionsHash": { "$ref": "#/$defs/hash" },
|
|
44
|
+
"previousRuntimeId": { "type": "string" }
|
|
44
45
|
}
|
|
45
46
|
},
|
|
47
|
+
"rebindRuntime": { "type": "boolean" },
|
|
46
48
|
"operations": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
47
49
|
"writeBudget": {
|
|
48
50
|
"type": "object",
|
|
@@ -49,17 +49,23 @@
|
|
|
49
49
|
"calls": { "$ref": "multica-deployment-operation.schema.json#/$defs/calls" },
|
|
50
50
|
"smoke": {
|
|
51
51
|
"type": "object", "additionalProperties": false,
|
|
52
|
-
"required": ["status", "marker", "markerHash", "issueId", "taskId", "taskStatus", "requiredSkills", "loadedSkills", "toolTracePassed", "responsePassed", "responseHash", "failures"],
|
|
52
|
+
"required": ["status", "marker", "markerHash", "issueId", "taskId", "taskStatus", "taskDiagnostic", "requiredSkills", "loadedSkills", "toolTracePassed", "responsePassed", "responseHash", "failures"],
|
|
53
53
|
"properties": {
|
|
54
54
|
"status": { "enum": ["not-run", "pending", "passed", "failed"] },
|
|
55
55
|
"marker": { "type": "string" }, "markerHash": { "type": "string" },
|
|
56
56
|
"issueId": { "type": "string" }, "taskId": { "type": "string" },
|
|
57
|
-
"taskStatus": { "type": "string" },
|
|
57
|
+
"taskStatus": { "type": "string" }, "taskDiagnostic": { "type": "string" },
|
|
58
58
|
"requiredSkills": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/name" } },
|
|
59
59
|
"loadedSkills": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/name" } },
|
|
60
60
|
"toolTracePassed": { "type": "boolean" }, "responsePassed": { "type": "boolean" },
|
|
61
61
|
"responseHash": { "type": "string" },
|
|
62
|
-
"failures": { "type": "array", "items": { "type": "string" } }
|
|
62
|
+
"failures": { "type": "array", "items": { "type": "string" } },
|
|
63
|
+
"runtimeProvider": { "type": "string" },
|
|
64
|
+
"vocabularyIds": { "type": "array", "items": { "type": "string" } },
|
|
65
|
+
"toolNames": { "type": "array", "items": { "type": "string" } },
|
|
66
|
+
"unrecognizedTools": { "type": "array", "items": { "type": "string" } },
|
|
67
|
+
"classification": { "enum": ["", "skills-not-visible"] },
|
|
68
|
+
"failureDetails": { "$ref": "multica-workspace-inspection.schema.json#/$defs/failureDetails" }
|
|
63
69
|
}
|
|
64
70
|
},
|
|
65
71
|
"rollback": {
|
|
@@ -72,6 +78,14 @@
|
|
|
72
78
|
}
|
|
73
79
|
},
|
|
74
80
|
"failures": { "type": "array", "items": { "type": "string" } },
|
|
81
|
+
"failureDetails": { "$ref": "multica-workspace-inspection.schema.json#/$defs/failureDetails" },
|
|
82
|
+
"rebind": {
|
|
83
|
+
"type": "object", "additionalProperties": false,
|
|
84
|
+
"required": ["fromRuntimeId", "toRuntimeId"],
|
|
85
|
+
"properties": {
|
|
86
|
+
"fromRuntimeId": { "type": "string" }, "toRuntimeId": { "type": "string" }
|
|
87
|
+
}
|
|
88
|
+
},
|
|
75
89
|
"evidencePath": { "type": "string", "minLength": 1 },
|
|
76
90
|
"remoteRead": { "const": true }, "remoteWrite": { "type": "boolean" },
|
|
77
91
|
"triggerWrite": { "const": false },
|
|
@@ -14,10 +14,14 @@
|
|
|
14
14
|
"passed": { "type": "boolean" }, "providerReady": { "type": "boolean" },
|
|
15
15
|
"operationIntegrity": { "type": "boolean" }, "receiptIntegrity": { "type": "boolean" },
|
|
16
16
|
"reconciled": { "type": "boolean" },
|
|
17
|
+
"receiptFrozen": { "type": "boolean" },
|
|
18
|
+
"smokeStale": { "type": "boolean" },
|
|
19
|
+
"nextAction": { "type": "string" },
|
|
17
20
|
"failures": { "type": "array", "items": { "type": "string" } },
|
|
18
21
|
"receipt": { "oneOf": [{ "type": "null" }, { "$ref": "multica-deployment-receipt.schema.json" }] },
|
|
19
|
-
"remoteRead": { "type": "boolean" }, "remoteWrite": { "
|
|
20
|
-
"triggerWrite": { "const": false },
|
|
22
|
+
"remoteRead": { "type": "boolean" }, "remoteWrite": { "type": "boolean" },
|
|
23
|
+
"triggerWrite": { "const": false },
|
|
24
|
+
"sideEffect": { "enum": [false, "multica-read", "multica-read-write"] },
|
|
21
25
|
"dingtalkSideEffect": { "const": false }
|
|
22
26
|
}
|
|
23
27
|
}
|
|
@@ -36,6 +36,8 @@
|
|
|
36
36
|
"resources": { "$ref": "#/$defs/resources" },
|
|
37
37
|
"diff": { "type": "array", "items": { "type": "string" } },
|
|
38
38
|
"failures": { "type": "array", "items": { "type": "string" } },
|
|
39
|
+
"failureDetails": { "$ref": "#/$defs/failureDetails" },
|
|
40
|
+
"envSanitized": { "type": "array", "items": { "type": "string" } },
|
|
39
41
|
"calls": {
|
|
40
42
|
"type": "array",
|
|
41
43
|
"items": {
|
|
@@ -60,6 +62,20 @@
|
|
|
60
62
|
},
|
|
61
63
|
"$defs": {
|
|
62
64
|
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
65
|
+
"failureDetails": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"items": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"additionalProperties": false,
|
|
70
|
+
"required": ["code"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"code": { "type": "string", "minLength": 1 },
|
|
73
|
+
"expected": { "oneOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }] },
|
|
74
|
+
"actual": { "oneOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }] },
|
|
75
|
+
"hint": { "type": "string" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
63
79
|
"resources": {
|
|
64
80
|
"type": "object",
|
|
65
81
|
"additionalProperties": false,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/D1-2004/dingtalk-agent/docs/schemas/multica-workspace-run-plan.schema.json",
|
|
4
|
+
"title": "dingtalk-agent Multica Workspace Run Plan",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["$schema", "workspace", "provider", "profile", "workspaceId", "runtimeId", "agentId", "promptHash", "operations", "blocking", "requiresExecute", "requiresExplicitYes", "remoteRead", "remoteWrite", "triggerWrite", "sideEffect", "dingtalkSideEffect"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": { "const": "dingtalk-agent/multica-workspace-run-plan@1" },
|
|
10
|
+
"workspace": { "$ref": "#/$defs/name" },
|
|
11
|
+
"provider": { "const": "multica" },
|
|
12
|
+
"profile": { "type": "string", "minLength": 1 },
|
|
13
|
+
"workspaceId": { "type": "string", "minLength": 1 },
|
|
14
|
+
"runtimeId": { "type": "string", "minLength": 1 },
|
|
15
|
+
"agentId": { "type": "string", "minLength": 1 },
|
|
16
|
+
"promptHash": { "$ref": "#/$defs/hash" },
|
|
17
|
+
"operations": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
|
|
18
|
+
"blocking": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
19
|
+
"requiresExecute": { "const": true },
|
|
20
|
+
"requiresExplicitYes": { "const": true },
|
|
21
|
+
"remoteRead": { "const": false },
|
|
22
|
+
"remoteWrite": { "const": false },
|
|
23
|
+
"triggerWrite": { "const": false },
|
|
24
|
+
"sideEffect": { "const": false },
|
|
25
|
+
"dingtalkSideEffect": { "const": false }
|
|
26
|
+
},
|
|
27
|
+
"$defs": {
|
|
28
|
+
"name": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$" },
|
|
29
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/D1-2004/dingtalk-agent/docs/schemas/multica-workspace-run.schema.json",
|
|
4
|
+
"title": "dingtalk-agent Multica Workspace Run Report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"$schema",
|
|
9
|
+
"passed",
|
|
10
|
+
"runId",
|
|
11
|
+
"workspace",
|
|
12
|
+
"provider",
|
|
13
|
+
"profile",
|
|
14
|
+
"workspaceId",
|
|
15
|
+
"runtimeId",
|
|
16
|
+
"agentId",
|
|
17
|
+
"promptHash",
|
|
18
|
+
"issueId",
|
|
19
|
+
"issueStatus",
|
|
20
|
+
"taskId",
|
|
21
|
+
"taskStatus",
|
|
22
|
+
"taskDiagnostic",
|
|
23
|
+
"pollAttempts",
|
|
24
|
+
"pollIntervalMs",
|
|
25
|
+
"answer",
|
|
26
|
+
"answerHash",
|
|
27
|
+
"toolNames",
|
|
28
|
+
"loadedSkills",
|
|
29
|
+
"failures",
|
|
30
|
+
"calls",
|
|
31
|
+
"evidencePath",
|
|
32
|
+
"remoteRead",
|
|
33
|
+
"remoteWrite",
|
|
34
|
+
"triggerWrite",
|
|
35
|
+
"sideEffect",
|
|
36
|
+
"dingtalkSideEffect"
|
|
37
|
+
],
|
|
38
|
+
"properties": {
|
|
39
|
+
"$schema": {
|
|
40
|
+
"const": "dingtalk-agent/multica-workspace-run@1"
|
|
41
|
+
},
|
|
42
|
+
"passed": {
|
|
43
|
+
"type": "boolean"
|
|
44
|
+
},
|
|
45
|
+
"runId": {
|
|
46
|
+
"$ref": "#/$defs/id"
|
|
47
|
+
},
|
|
48
|
+
"workspace": {
|
|
49
|
+
"$ref": "#/$defs/name"
|
|
50
|
+
},
|
|
51
|
+
"provider": {
|
|
52
|
+
"const": "multica"
|
|
53
|
+
},
|
|
54
|
+
"profile": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"minLength": 1
|
|
57
|
+
},
|
|
58
|
+
"workspaceId": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"minLength": 1
|
|
61
|
+
},
|
|
62
|
+
"runtimeId": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"minLength": 1
|
|
65
|
+
},
|
|
66
|
+
"agentId": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"minLength": 1
|
|
69
|
+
},
|
|
70
|
+
"promptHash": {
|
|
71
|
+
"$ref": "#/$defs/hash"
|
|
72
|
+
},
|
|
73
|
+
"issueId": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"minLength": 1
|
|
76
|
+
},
|
|
77
|
+
"issueStatus": {
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
"taskId": {
|
|
81
|
+
"type": "string"
|
|
82
|
+
},
|
|
83
|
+
"taskStatus": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"minLength": 1
|
|
86
|
+
},
|
|
87
|
+
"taskDiagnostic": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
},
|
|
90
|
+
"pollAttempts": {
|
|
91
|
+
"type": "integer",
|
|
92
|
+
"minimum": 1
|
|
93
|
+
},
|
|
94
|
+
"pollIntervalMs": {
|
|
95
|
+
"type": "integer",
|
|
96
|
+
"minimum": 100
|
|
97
|
+
},
|
|
98
|
+
"answer": {
|
|
99
|
+
"type": "string"
|
|
100
|
+
},
|
|
101
|
+
"answerHash": {
|
|
102
|
+
"$ref": "#/$defs/hash"
|
|
103
|
+
},
|
|
104
|
+
"toolNames": {
|
|
105
|
+
"type": "array",
|
|
106
|
+
"items": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"minLength": 1
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"loadedSkills": {
|
|
112
|
+
"type": "array",
|
|
113
|
+
"items": {
|
|
114
|
+
"$ref": "#/$defs/name"
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"failures": {
|
|
118
|
+
"type": "array",
|
|
119
|
+
"items": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"minLength": 1
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"calls": {
|
|
125
|
+
"$ref": "multica-deployment-operation.schema.json#/$defs/calls"
|
|
126
|
+
},
|
|
127
|
+
"evidencePath": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"minLength": 1
|
|
130
|
+
},
|
|
131
|
+
"remoteRead": {
|
|
132
|
+
"const": true
|
|
133
|
+
},
|
|
134
|
+
"remoteWrite": {
|
|
135
|
+
"type": "boolean"
|
|
136
|
+
},
|
|
137
|
+
"triggerWrite": {
|
|
138
|
+
"const": false
|
|
139
|
+
},
|
|
140
|
+
"sideEffect": {
|
|
141
|
+
"const": "multica-issue-read-write"
|
|
142
|
+
},
|
|
143
|
+
"dingtalkSideEffect": {
|
|
144
|
+
"const": false
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"$defs": {
|
|
148
|
+
"id": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$"
|
|
151
|
+
},
|
|
152
|
+
"name": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"pattern": "^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$"
|
|
155
|
+
},
|
|
156
|
+
"hash": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
"observedHash": { "type": "string" },
|
|
27
27
|
"diff": { "type": "array", "items": { "type": "string" } },
|
|
28
28
|
"failures": { "type": "array", "items": { "type": "string" } },
|
|
29
|
+
"failureDetails": { "$ref": "multica-workspace-inspection.schema.json#/$defs/failureDetails" },
|
|
30
|
+
"observedAgentRuntimeId": { "type": "string" },
|
|
29
31
|
"remoteRead": { "const": false },
|
|
30
32
|
"remoteWrite": { "const": false },
|
|
31
33
|
"sideEffect": { "const": false },
|
|
@@ -17,16 +17,42 @@
|
|
|
17
17
|
"required": ["definition", "skills"],
|
|
18
18
|
"properties": {
|
|
19
19
|
"definition": { "type": "string", "minLength": 1 },
|
|
20
|
+
"skillsRoot": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1,
|
|
23
|
+
"description": "全部 Agent Skills 的单一版本化源码根;新项目默认 agent/skills,旧项目省略时沿用历史兼容布局"
|
|
24
|
+
},
|
|
20
25
|
"displayName": { "type": "string", "minLength": 1, "maxLength": 128 },
|
|
21
26
|
"skills": {
|
|
22
27
|
"type": "array",
|
|
23
28
|
"minItems": 1,
|
|
24
29
|
"uniqueItems": true,
|
|
25
|
-
"contains": { "const": "
|
|
30
|
+
"contains": { "const": "dta-basic-behavior" },
|
|
26
31
|
"items": { "$ref": "#/$defs/name" }
|
|
27
32
|
}
|
|
28
33
|
}
|
|
29
34
|
},
|
|
35
|
+
"predicates": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"description": "完成判据注册表:id → 判据。声明侧 completion 用 predicate:<id> 引用,运行路径(autopilot description 标记、Receipt)引用同一 id——两个求值方无法静默分叉。跨语言合同:注册表就在本 manifest JSON 里,Python 引擎读同一份文件引用同一 id。一旦声明注册表(包括显式空对象——那是「已进入引用模式」,不是未声明),所有 completion 必须是引用(自由文本判据可被一句话注入绕过)。",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"patternProperties": {
|
|
40
|
+
"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"required": ["description"],
|
|
44
|
+
"properties": {
|
|
45
|
+
"description": { "type": "string", "minLength": 1, "description": "人读判据:完成 = 数据里哪个可查状态" },
|
|
46
|
+
"source": { "type": "string", "minLength": 1, "description": "判据的数据来源/查询提示(表、字段、查询方式)" }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"schedules": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"description": "Agent 内化的常驻节律(internalized cron),声明式、版本化。clock 只开窗,作用域/完成判据由 Skill 状态驱动。部署由 provider adapter 映射(Multica→autopilot)。见 dta-agent-compose/references/drive-and-schedules.md",
|
|
54
|
+
"items": { "$ref": "#/$defs/schedule" }
|
|
55
|
+
},
|
|
30
56
|
"workspaces": {
|
|
31
57
|
"type": "object",
|
|
32
58
|
"propertyNames": {
|
|
@@ -39,6 +65,23 @@
|
|
|
39
65
|
}
|
|
40
66
|
},
|
|
41
67
|
"$defs": {
|
|
68
|
+
"schedule": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"additionalProperties": false,
|
|
71
|
+
"required": ["name", "cron", "timezone", "mode"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 128, "description": "人类标签,也作平台侧标题;同一 Project 内唯一" },
|
|
74
|
+
"cron": { "type": "string", "pattern": "^\\s*\\S+\\s+\\S+\\s+\\S+\\s+\\S+\\s+\\S+\\s*$", "description": "标准 5 段 cron(分 时 日 月 周),无秒、无 @macro" },
|
|
75
|
+
"timezone": { "type": "string", "minLength": 1, "description": "IANA 时区,如 Asia/Shanghai" },
|
|
76
|
+
"mode": { "enum": ["ephemeral", "work-item"], "description": "ephemeral=run-only;work-item=每次触发产生一个工作项(Multica create_issue)" },
|
|
77
|
+
"wake": { "type": "string", "minLength": 1, "description": "① 唤醒词/类别;Agent 读它给本拍定作用域,clock 不带工作清单" },
|
|
78
|
+
"purpose": { "type": "string", "minLength": 1 },
|
|
79
|
+
"completion": { "type": "string", "minLength": 1, "description": "② 从数据推得出的完成判据(level-triggered),不是「那一拍跑了没」。推荐 predicate:<id> 引用顶层 predicates 注册表(声明了注册表则强制引用)" },
|
|
80
|
+
"unit": { "type": "string", "minLength": 1, "description": "③ 每次触发的增量工作单元(折 delta,不重建)" },
|
|
81
|
+
"evidence": { "type": "string", "minLength": 1, "description": "④ 什么效果证明真做了(write/receipt/水位),不认自述" },
|
|
82
|
+
"supervision": { "type": "string", "minLength": 1, "description": "⑤ 谁盯这个循环收敛" }
|
|
83
|
+
}
|
|
84
|
+
},
|
|
42
85
|
"name": {
|
|
43
86
|
"type": "string",
|
|
44
87
|
"pattern": "^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$"
|
|
@@ -50,7 +93,6 @@
|
|
|
50
93
|
"storage": {
|
|
51
94
|
"type": "object",
|
|
52
95
|
"additionalProperties": false,
|
|
53
|
-
"required": ["memory", "knowledge"],
|
|
54
96
|
"properties": {
|
|
55
97
|
"memory": { "type": "string", "pattern": "^(local-md|dingtalk-doc):.+$" },
|
|
56
98
|
"knowledge": { "type": "string", "pattern": "^(local-md|dingtalk-doc):.+$" },
|
|
@@ -90,7 +132,7 @@
|
|
|
90
132
|
"workspace": {
|
|
91
133
|
"type": "object",
|
|
92
134
|
"additionalProperties": false,
|
|
93
|
-
"required": ["stage", "provider"
|
|
135
|
+
"required": ["stage", "provider"],
|
|
94
136
|
"properties": {
|
|
95
137
|
"stage": { "enum": ["dev", "test", "staging", "prod"] },
|
|
96
138
|
"provider": {
|
|
@@ -103,6 +145,15 @@
|
|
|
103
145
|
"authority": { "$ref": "#/$defs/authority" }
|
|
104
146
|
},
|
|
105
147
|
"allOf": [
|
|
148
|
+
{
|
|
149
|
+
"if": {
|
|
150
|
+
"properties": { "provider": { "properties": { "kind": { "const": "opencode" } } } }
|
|
151
|
+
},
|
|
152
|
+
"then": {
|
|
153
|
+
"required": ["storage"],
|
|
154
|
+
"properties": { "storage": { "required": ["memory", "knowledge"] } }
|
|
155
|
+
}
|
|
156
|
+
},
|
|
106
157
|
{
|
|
107
158
|
"if": {
|
|
108
159
|
"properties": { "provider": { "properties": { "kind": { "const": "multica" } } } }
|