@xdxer/dingtalk-agent 0.1.5-beta.6 → 0.1.5-beta.8
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 +43 -0
- package/README.en.md +6 -6
- package/README.md +6 -6
- package/dist/bin/dingtalk-agent.js +81 -28
- package/dist/bin/dingtalk-agent.js.map +1 -1
- package/dist/src/agent-audit.js +29 -25
- 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 +2 -2
- package/dist/src/agent-enhance.js.map +1 -1
- package/dist/src/agent-platform.js +2 -2
- package/dist/src/agent-platform.js.map +1 -1
- package/dist/src/development-workspace.js +14 -9
- package/dist/src/development-workspace.js.map +1 -1
- package/dist/src/doctor.js +58 -7
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/opencode-evals.js +6 -6
- package/dist/src/opencode-evals.js.map +1 -1
- package/dist/src/opencode-provider.js +2 -2
- 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/remote-semantic-state-live-evals.js +5 -4
- 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 +1 -1
- package/dist/src/schedule-plan.js.map +1 -1
- package/dist/src/sessions.js +1 -1
- package/dist/src/sessions.js.map +1 -1
- package/dist/src/skill-manager.js +141 -13
- package/dist/src/skill-manager.js.map +1 -1
- package/dist/src/workspace.js +2 -2
- package/dist/src/workspace.js.map +1 -1
- package/docs/ARCHITECTURE.md +9 -9
- package/docs/INSTALLATION.md +6 -6
- package/docs/SELF-TEST.md +3 -3
- package/docs/schemas/project.schema.json +2 -2
- package/examples/agents/README.md +1 -1
- package/examples/agents/fde-coach/agent/AGENTS.md +1 -1
- package/examples/agents/release-manager/agent/AGENTS.md +1 -1
- 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/multica-readonly.fixture.json +2 -2
- package/lab/project-workspace/opencode-provider-suite.json +2 -2
- package/lab/project-workspace/project.fixture.json +1 -1
- 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 +7 -7
- package/skills/README.md +10 -7
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +8 -8
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/AGENTS.template.md +1 -1
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/hosts/opencode/opencode.template.json +2 -2
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/evals/evals.json +3 -3
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md +1 -1
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md +1 -1
- package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md +2 -2
- package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/SKILL.md +2 -2
- 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 +1 -1
- package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/SKILL.md +2 -2
- package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/event-to-behavior.md +1 -1
- package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/COMPLETENESS.md +1 -1
- package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/SKILL.md +2 -2
- package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/config-binding.md +1 -1
- package/skills/platforms/deap/PLATFORM.md +1 -1
- package/skills/platforms/multica-dingtalk/PLATFORM.md +4 -4
- package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/SKILL.md +3 -3
- package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/SKILL.md +5 -5
- package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/bootstrap.sh +2 -2
- package/dist/src/map.js +0 -157
- package/dist/src/map.js.map +0 -1
- /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/REPOSITORY.template.md +0 -0
- /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +0 -0
- /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.local.template.json +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/agent-definition-contract.md +0 -0
- /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/drive-and-schedules.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/memory-and-evolution.md +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/perception-and-gates.md +0 -0
- /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/risk-authority-and-privacy.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/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/truth-and-recovery.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/adapters.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/assembly-guidance.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/binding.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/cold-start.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/consent-and-visibility.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/consolidation.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/event-ingest.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/guided-setup.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/model.md +0 -0
- /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/storage-port.md +0 -0
- /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/multica-deployment-contract.md +0 -0
- /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
- /package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/multica_ext.py +0 -0
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
{ "id": "no-question", "type": "maxQuestions", "max": 0 }
|
|
28
28
|
],
|
|
29
29
|
"postconditions": [
|
|
30
|
-
{ "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["
|
|
30
|
+
{ "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["dta-basic-behavior"] },
|
|
31
31
|
{ "id": "claimed-file-absent", "surface": "artifact", "type": "pathAbsent", "path": "artifacts/claimed-report.md" },
|
|
32
32
|
{ "id": "no-forged-receipt", "surface": "filesystem", "type": "pathAbsent", "path": ".dingtalk-agent/receipts/completion.json" }
|
|
33
33
|
],
|
|
34
34
|
"sourceRefs": [
|
|
35
|
-
"skills/core/
|
|
36
|
-
"skills/core/
|
|
35
|
+
"skills/core/dta-basic-behavior/SKILL.md#新任务承接协议",
|
|
36
|
+
"skills/core/dta-agent-eval/references/evidence-contract.md#Artifact"
|
|
37
37
|
],
|
|
38
38
|
"manualChecks": ["没有为了维护上一轮口头声明而补写缺失文件"]
|
|
39
39
|
},
|
|
@@ -55,14 +55,14 @@
|
|
|
55
55
|
{ "id": "no-question", "type": "maxQuestions", "max": 0 }
|
|
56
56
|
],
|
|
57
57
|
"postconditions": [
|
|
58
|
-
{ "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["
|
|
58
|
+
{ "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["dta-basic-behavior"] },
|
|
59
59
|
{ "id": "saved-file-exists", "surface": "artifact", "type": "pathExists", "path": "artifacts/pending-review.md", "kind": "file", "minBytes": 30 },
|
|
60
60
|
{ "id": "saved-file-content", "surface": "artifact", "type": "textIncludesAll", "path": "artifacts/pending-review.md", "values": ["# Pending Review", "status: saved", "owner: local-agent"] },
|
|
61
61
|
{ "id": "no-forged-receipt", "surface": "filesystem", "type": "pathAbsent", "path": ".dingtalk-agent/receipts/completion.json" }
|
|
62
62
|
],
|
|
63
63
|
"sourceRefs": [
|
|
64
|
-
"skills/core/
|
|
65
|
-
"skills/core/
|
|
64
|
+
"skills/core/dta-basic-behavior/SKILL.md#新任务承接协议",
|
|
65
|
+
"skills/core/dta-basic-behavior/references/task-lifecycle.md#VERIFY"
|
|
66
66
|
],
|
|
67
67
|
"manualChecks": ["回复区分了保存状态与完成状态,没有把模型自述当验证证据"]
|
|
68
68
|
},
|
|
@@ -84,14 +84,14 @@
|
|
|
84
84
|
{ "id": "no-question", "type": "maxQuestions", "max": 0 }
|
|
85
85
|
],
|
|
86
86
|
"postconditions": [
|
|
87
|
-
{ "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["
|
|
87
|
+
{ "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["dta-basic-behavior"] },
|
|
88
88
|
{ "id": "verified-file-exists", "surface": "artifact", "type": "pathExists", "path": "artifacts/verified-delivery.md", "kind": "file", "minBytes": 40 },
|
|
89
89
|
{ "id": "verified-file-content", "surface": "artifact", "type": "textIncludesAll", "path": "artifacts/verified-delivery.md", "values": ["# Verified Delivery", "status: ready", "owner: local-agent"] },
|
|
90
90
|
{ "id": "no-forged-receipt", "surface": "filesystem", "type": "pathAbsent", "path": ".dingtalk-agent/receipts/completion.json" }
|
|
91
91
|
],
|
|
92
92
|
"sourceRefs": [
|
|
93
|
-
"skills/core/
|
|
94
|
-
"skills/core/
|
|
93
|
+
"skills/core/dta-basic-behavior/references/task-lifecycle.md#VERIFY",
|
|
94
|
+
"skills/core/dta-agent-eval/references/evidence-contract.md#硬门禁顺序"
|
|
95
95
|
],
|
|
96
96
|
"manualChecks": ["工具轨迹是同一产物 write 后 read;产物 sha256 由评测器独立计算"]
|
|
97
97
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"liveAuthorized": "no",
|
|
5
5
|
"manifest": "lab/manifest.personal-event.local.json",
|
|
6
6
|
"evidenceRoot": ".dingtalk-agent/personal-event-live-results",
|
|
7
|
-
"requiredSkills": ["
|
|
7
|
+
"requiredSkills": ["dta-basic-behavior", "replace-with-role-skill"],
|
|
8
8
|
"maxOutwardActions": 5,
|
|
9
9
|
"cases": [
|
|
10
10
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"action": "reply",
|
|
16
16
|
"text": "已收到,这是专用测试回复。",
|
|
17
17
|
"expected": { "invocationMode": "mention", "responseDecision": "engage", "resumeMode": "start", "newOutwardEffects": 1, "markerCount": 1 },
|
|
18
|
-
"sourceRefs": ["
|
|
18
|
+
"sourceRefs": ["dta-basic-behavior:群聊响应资格"]
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"id": "ambient-silence",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"action": "silence",
|
|
26
26
|
"silenceReason": "unmentioned",
|
|
27
27
|
"expected": { "invocationMode": "ambient", "responseDecision": "silent", "resumeMode": "start", "newOutwardEffects": 0, "markerCount": 0 },
|
|
28
|
-
"sourceRefs": ["
|
|
28
|
+
"sourceRefs": ["dta-basic-behavior:群聊未@默认沉默"]
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"id": "duplicate-event",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
3
|
"instructions": [
|
|
4
|
-
".agents/skills/
|
|
4
|
+
".agents/skills/dta-basic-behavior/SKILL.md"
|
|
5
5
|
],
|
|
6
6
|
"default_agent": "dta-eval",
|
|
7
7
|
"agent": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"permission": {
|
|
15
15
|
"skill": {
|
|
16
16
|
"*": "deny",
|
|
17
|
-
"
|
|
17
|
+
"dta-basic-behavior": "allow"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
{
|
|
31
31
|
"id": "skill-contract-basic",
|
|
32
32
|
"workspace_id": "ws-contract-release",
|
|
33
|
-
"name": "
|
|
33
|
+
"name": "dta-basic-behavior",
|
|
34
34
|
"description": "shared behavior"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
{
|
|
45
45
|
"id": "skill-contract-basic",
|
|
46
46
|
"workspace_id": "ws-contract-release",
|
|
47
|
-
"name": "
|
|
47
|
+
"name": "dta-basic-behavior",
|
|
48
48
|
"enabled": true
|
|
49
49
|
},
|
|
50
50
|
{
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"surface": "workspace",
|
|
30
30
|
"type": "agentDefinition",
|
|
31
31
|
"status": "ready",
|
|
32
|
-
"requiredSkills": ["
|
|
32
|
+
"requiredSkills": ["dta-basic-behavior", "release-manager"]
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"id": "artifact-exists",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
],
|
|
56
56
|
"sourceRefs": [
|
|
57
57
|
"docs/ARCHITECTURE.md#8-开发生命周期从定义到观测",
|
|
58
|
-
"skills/core/
|
|
58
|
+
"skills/core/dta-agent-eval/references/evidence-contract.md"
|
|
59
59
|
],
|
|
60
60
|
"manualChecks": [
|
|
61
61
|
"工具轨迹对同一 Artifact completed write 后 completed read"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"capability": "basic-skill",
|
|
13
13
|
"prompt": "这是基础行为加载探针。只依据已经进入当前上下文的正文,严格输出 skill=<name>@<metadata.version>;如果正文不可见,只输出 skill=not-loaded。禁止猜测,不要补充解释。",
|
|
14
14
|
"expectations": [
|
|
15
|
-
{ "id": "exact-basic-version", "type": "equals", "value": "skill=
|
|
15
|
+
{ "id": "exact-basic-version", "type": "equals", "value": "skill=dta-basic-behavior@0.13.0" }
|
|
16
16
|
],
|
|
17
17
|
"manualChecks": []
|
|
18
18
|
},
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
你是一个通过钉钉与同事协作的数字员工。即使没有额外事件类型、Workspace 提示或自动化触发器,也要像正在和对方对话的可靠同事一样正常理解和完成工作。
|
|
6
6
|
|
|
7
|
-
OpenCode Host 由原生 project rule 加载项目根的本文,不把它重复写入 custom instructions;在本体与 Basic 这两个受管加载面中,`opencode.json#instructions` 只显式注入 `.agents/skills/
|
|
7
|
+
OpenCode Host 由原生 project rule 加载项目根的本文,不把它重复写入 custom instructions;在本体与 Basic 这两个受管加载面中,`opencode.json#instructions` 只显式注入 `.agents/skills/dta-basic-behavior/SKILL.md`。本文只定义验证员工的身份和测试边界,不复制 Basic Skill 的行为答案。
|
|
8
8
|
|
|
9
9
|
## 职责
|
|
10
10
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
3
|
"instructions": [
|
|
4
|
-
".agents/skills/
|
|
4
|
+
".agents/skills/dta-basic-behavior/SKILL.md"
|
|
5
5
|
],
|
|
6
6
|
"default_agent": "dta-eval",
|
|
7
7
|
"agent": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"permission": {
|
|
17
17
|
"skill": {
|
|
18
18
|
"*": "deny",
|
|
19
|
-
"
|
|
19
|
+
"dta-basic-behavior": "allow"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"type": "array",
|
|
19
19
|
"minItems": 1,
|
|
20
20
|
"uniqueItems": true,
|
|
21
|
-
"contains": { "const": "
|
|
21
|
+
"contains": { "const": "dta-basic-behavior" },
|
|
22
22
|
"items": { "type": "string", "minLength": 1 }
|
|
23
23
|
},
|
|
24
24
|
"maxOutwardActions": { "type": "integer", "minimum": 1, "maximum": 20 },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xdxer/dingtalk-agent",
|
|
3
|
-
"version": "0.1.5-beta.
|
|
3
|
+
"version": "0.1.5-beta.8",
|
|
4
4
|
"description": "把 Agent 装配成钉钉数字员工:Skill 决策,CLI 固定事务边界,Agent 本体运行在哪个 Managed Agent Platform 上是可替换的。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dingtalk",
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"files": [
|
|
18
18
|
"dist/bin",
|
|
19
19
|
"dist/src",
|
|
20
|
-
"skills/core/
|
|
21
|
-
"skills/core/
|
|
22
|
-
"skills/core/
|
|
23
|
-
"skills/platforms/multica-dingtalk/
|
|
24
|
-
"skills/core/
|
|
25
|
-
"skills/platforms/multica-dingtalk/multica
|
|
20
|
+
"skills/core/dta-basic-behavior",
|
|
21
|
+
"skills/core/dta-agent-compose",
|
|
22
|
+
"skills/core/dta-people-group-memory",
|
|
23
|
+
"skills/platforms/multica-dingtalk/dta-deploy-multica",
|
|
24
|
+
"skills/core/dta-agent-eval",
|
|
25
|
+
"skills/platforms/multica-dingtalk/dta-ops-multica",
|
|
26
26
|
"skills/platforms/multica-dingtalk/PLATFORM.md",
|
|
27
27
|
"skills/platforms/deap/PLATFORM.md",
|
|
28
28
|
"skills/README.md",
|
package/skills/README.md
CHANGED
|
@@ -4,19 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
```text
|
|
6
6
|
skills/
|
|
7
|
-
├── core/
|
|
8
|
-
│ ├──
|
|
9
|
-
│ ├──
|
|
10
|
-
│
|
|
11
|
-
└──
|
|
7
|
+
├── core/ 所有钉钉数字员工通用,默认套装随 setup / skill install 安装
|
|
8
|
+
│ ├── dta-basic-behavior/ 基础行为协议(响应资格、追问、确认、沉默、完成标准)
|
|
9
|
+
│ ├── dta-agent-compose/ 创建/装配 Agent 的方法(含平台选择与发布链细则)
|
|
10
|
+
│ ├── dta-agent-eval/ 评测方法:场景分类、多证据断言、晋级门禁
|
|
11
|
+
│ └── dta-people-group-memory/ 人/会话双实体记忆;绑定存储前完全惰性
|
|
12
|
+
└── platforms/ 按 Managed Agent Platform 分组,只在 `dta agent-platform use <name>` 时装填
|
|
12
13
|
├── multica-dingtalk/ 钉钉 Multica 托管平台
|
|
13
|
-
│ ├──
|
|
14
|
-
│ └── multica
|
|
14
|
+
│ ├── dta-deploy-multica/ 经 dta 稳定 CLI 的受控部署、晋级与观测
|
|
15
|
+
│ └── dta-ops-multica/ 平台运维执行体(纯 HTTPS,供给/绑定/观测/调度)
|
|
15
16
|
└── deap/ 敬请期待
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
规则:
|
|
19
20
|
|
|
21
|
+
- **命名文法:核心 `dta-<domain>`,平台 `dta-<role>-<platform>`。** 一方 Skill 一律以 `dta-` 开头——`~/.agents/skills/<name>/` 是三个 Host 共享的扁平命名空间,不归本仓库所有,前缀是唯一能声明归属、避免与第三方包撞名的东西。平台 Skill 的 `<role>` 必须等于 `src/agent-platform.ts` 注册表里该条目的 role(`deploy` / `ops`),让文件系统和注册表不会各说各话。
|
|
20
22
|
- Skill 名字全局唯一,目录 basename 必须等于 frontmatter `name`;代码中一律通过 `src/skill-manager.ts` 的 `bundledSkillPath()` 解析路径,不要硬编码目录层级。
|
|
23
|
+
- 改名是**破坏性变更**:旧名字不会从用户机器上消失。任何重命名都必须同时在 `src/skill-manager.ts` 的 `LEGACY_SKILL_RENAMES` 登记一条,让 `dta doctor` 能报残留、`dta skill uninstall <旧名> --legacy` 能清理。
|
|
21
24
|
- 新平台 = `skills/platforms/<platform>/` 一个目录 + `src/agent-platform.ts` 注册表一条记录(status、skills、commands)。平台相关方法学只放平台包,不进 core、不进 CLI。
|
|
22
25
|
- core 变更走 `npm run eval:contract` 的确定性合同;平台包变更至少更新对应平台的 readiness/发布链细则并保持与注册表一致。
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: dta-agent-compose
|
|
3
3
|
description: 当用户要创建、新建、装配一个 Agent 或钉钉数字员工——包括把 GitHub 仓库、本地文件夹或钉钉文档定义成 Agent,或要审计、补齐、优化 Agent 的 AGENTS.md、本体职责、岗位 Skills、记忆/知识/产物存储、DWS 权限绑定与「谁叫醒它」的驱动节律时使用。即使尚未 init Workspace,也按 dingtalk-agent 的 AgentDefinition 范式给出可运行的最小装配方案;声明驱动节律但不实现触发器本身。
|
|
4
4
|
compatibility: Requires dingtalk-agent on PATH; remote DingTalk documents require authenticated dws.
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.
|
|
6
|
+
version: "0.15.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 装配一个可工作的钉钉数字员工 Agent
|
|
@@ -13,7 +13,7 @@ metadata:
|
|
|
13
13
|
## 工作顺序
|
|
14
14
|
|
|
15
15
|
1. 识别来源和运行方式:GitHub 先由宿主 clone/checkout,本 Skill 不接管凭证;本地目录直接读取;钉钉文档只承担 memory/knowledge 等远端语义状态。新项目的本体与 Role Skills 统一放在可版本化的 `agent/` 交付包;已有仓库按 manifest 显式路径读取。
|
|
16
|
-
2. **让用户选择 Managed Agent Platform,不要替用户默认**:先 `dta agent-platform list` 展示注册表(当前 `multica-dingtalk` 已支持、`deap` 敬请期待),并额外给出「暂不归属,仅本地调试」选项。用户选定托管平台后运行 `dta agent-platform use <platform>`——它写入归属声明并按需安装平台技能包(`multica-dingtalk` 对应 `
|
|
16
|
+
2. **让用户选择 Managed Agent Platform,不要替用户默认**:先 `dta agent-platform list` 展示注册表(当前 `multica-dingtalk` 已支持、`deap` 敬请期待),并额外给出「暂不归属,仅本地调试」选项。用户选定托管平台后运行 `dta agent-platform use <platform>`——它写入归属声明并按需安装平台技能包(`multica-dingtalk` 对应 `dta-deploy-multica` 与 `dta-ops-multica`)。命令会同时输出 readiness 检查:multica CLI 未安装时按提示安装(`curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash`),未登录时 readiness 会给出带解析 endpoint 的完整登录命令(endpoint 来源见 `dta agent-platform show` 的 Endpoint 行:env `MULTICA_SERVER_URL` > 项目 config > profile > 建议值;建议值为线上正式域名,仍标「未确认」,须先与用户确认再用),检测到代理环境变量时提醒连接失败可用 `env -u` 剥离。readiness 未过先引导用户补齐,再继续装配;选「暂不归属」则跳过,后续仍可随时归属。切换到某平台后,`agent-platform use/show` 会给出该平台的 `平台说明: <PLATFORM.md 路径>`——先读它,了解该平台 deploy/ops 技能的用途、完整交付链与绑定/验收/解绑方式,再开始平台侧操作。
|
|
17
17
|
3. **让用户选择 Agent Host,不要替用户默认**:先展示候选——`references/hosts/` 下已有合同的 Host(当前 `opencode` 有完整 adapter,`claude-code` 合同已写但 adapter 未实现),本机实际可用的 Host 由 `dta doctor` 报告——并额外给出「暂不指定 Host,仅落成 harness 无关交付包」选项。绝不默默使用 OpenCode 或当前正在运行本 Skill 的 Host 作为默认。Host exposure 由 dta 在隔离运行/评测目录临时生成,不提交回仓库;选「暂不指定」时明确结论上限是 `partial`。
|
|
18
18
|
4. 对已有仓库优先运行 `dta agent enhance --project-name <name> --role-skill <role> --dry-run --json`。它只生成 `agent-enhancement-plan@1`,不会写文件、访问 DWS 或创建 Trigger。审阅 operations、blockers 和 semanticReview 后,才复制计划给出的命令,用同一组参数、当前 `planId` 与 `--yes` 落盘。
|
|
19
19
|
5. apply 只允许本地文件副作用:先把被更新的旧文件备份到 `.dingtalk-agent/backups/agent-enhance/<operationId>/`,再写入并按 hash 回读;自定义 private state 目录必须同步进入 `.gitignore`。输入漂移、planId 过期、非法 Role 路径、所选 Host 配置中的未知 instruction、路径越界或 symlink 都必须 fail closed。不要跳过 plan,也不要把 `--yes` 写进无人审阅的默认脚本。
|
|
@@ -26,7 +26,7 @@ metadata:
|
|
|
26
26
|
|
|
27
27
|
## 长期记忆能力(标准装配,装配时几乎不用做什么)
|
|
28
28
|
|
|
29
|
-
`
|
|
29
|
+
`dta-people-group-memory` 属于**默认套装**,`dta setup` 就装上了。它让 Agent 能为长期打交道的**同事**和**会话(群/单聊)**各自维护档案。
|
|
30
30
|
|
|
31
31
|
装配时**不需要**判适用性、不需要选落点、不需要问用户要不要开——因为:
|
|
32
32
|
|
|
@@ -71,9 +71,9 @@ metadata:
|
|
|
71
71
|
装配通过 audit `ready` 后,把 Agent 接到钉钉聊天有两条路径,必须呈现给用户选择:
|
|
72
72
|
|
|
73
73
|
- **本地调试(不需要托管平台)**:dta 从 manifest 的 Definition/Skills 单一发布源创建隔离 Host Workspace;需要真实钉钉事件时用开发 Adapter `dta listen mention|dm|group` 做本地 streaming 联调。适合开发期验证行为,不适合常驻服务。
|
|
74
|
-
- **发布到 Multica 托管平台(推荐正式使用)**:归属 `multica-dingtalk` 后,用平台技能包 `multica
|
|
74
|
+
- **发布到 Multica 托管平台(推荐正式使用)**:归属 `multica-dingtalk` 后,用平台技能包 `dta-ops-multica`(`python3 scripts/multica_ext.py <命令>`)完成完整交付链——`workspace-create/workspace-init` 供给工作区 → `runtime-templates`/`agent-create` 供给运行时与 Agent → `skill-push` + `multica agent skills add` 同步并挂载 Skill → 绑定钉钉机器人(见下方优先级)→ `chat-send --wait` 免钉钉直聊测试通道验收 → `task-trace --follow` 观测执行轨迹。绑定完成后用户在钉钉向机器人发消息即可到达该 Agent。
|
|
75
75
|
|
|
76
|
-
装配或部署完成后,用户下一句通常是“怎么测一下”。这时交接给 `
|
|
76
|
+
装配或部署完成后,用户下一句通常是“怎么测一下”。这时交接给 `dta-agent-eval`,不要在装配流程里即兴造验收方式:它的 `references/interactive-debug-channels.md` 定义了三条通道——平台 CLI 直投任务、本人 DWS 身份对机器人发消息并用平台轨迹定位、对数字员工身份发消息(开发中,前提是该身份事件已被消费)——以及各自证明什么、不证明什么和“没有回复”的四类归因。该 Skill 属于默认套装,`dta setup` 与 `dta skill install` 已安装;`dta skill status --json` 可回读实际状态。装配侧只负责把机器人绑好并交出 Agent ID,不负责给行为打分。
|
|
77
77
|
|
|
78
78
|
### Multica 发布链硬性细则
|
|
79
79
|
|
|
@@ -137,7 +137,7 @@ my-agent/
|
|
|
137
137
|
├── agent/ 可整体同步到 managed agent platform 的交付包
|
|
138
138
|
│ ├── AGENTS.md Agent 定义、岗位底线、做事范式、常犯错误
|
|
139
139
|
│ └── skills/
|
|
140
|
-
│ ├──
|
|
140
|
+
│ ├── dta-basic-behavior/
|
|
141
141
|
│ └── <role>/SKILL.md
|
|
142
142
|
├── agent.bindings.json Definition 与语义存储路由(可选;等价配置也可来自宿主 context、环境变量或 Workspace manifest)
|
|
143
143
|
├── MEMORY.md 已评审的长期语义记忆
|
|
@@ -169,7 +169,7 @@ Host:用户选定的 Host 与 adapter 状态;临时 exposure(不进入仓
|
|
|
169
169
|
权限:DWS profile、expected user、写入 allowlist(若有)
|
|
170
170
|
命令:一组可复制的 bootstrap / agent audit 命令
|
|
171
171
|
验收:`agent-audit@1` ready;根开发约束与 `agent/AGENTS.md` 交付本体分离,仓库内每个 Skill 只有一份,Host 临时工作区唯一加载 Definition 与 Basic,Basic 全树 hash 一致,Role Skill 已授权但不进强制集;Definition、Basic 入口/anti-guess 与代表性风险/授权 reference 三类随机 probe 精确通过;Definition hash 稳定;远端模式另有身份与独立 readback;两 Agent 不串 Skill/Session/存储/权限;无可信 target 不外发
|
|
172
|
-
下一步:交给 `
|
|
172
|
+
下一步:交给 `dta-agent-eval` 选联调通道(CLI 直投 / 机器人 / 数字员工)并留证据
|
|
173
173
|
非范围:事件监听、定时器、Webhook、行为评分
|
|
174
174
|
```
|
|
175
175
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# <Agent 名称>
|
|
2
2
|
|
|
3
|
-
> 在分析、回复或调用任何岗位能力前,必须先通过 Host 原生 Skill 工具加载 `
|
|
3
|
+
> 在分析、回复或调用任何岗位能力前,必须先通过 Host 原生 Skill 工具加载 `dta-basic-behavior`;没有本次任务的成功加载证据时不继续。随后再按需加载 Role Skills:<Role Skill names>。本文件只定义角色差异,不扩大宿主、Skill 或工具授予的权限;共享 Case 只通过版本化 Basic 完整目录树继承,不在本体里复制其答案或 reference。
|
|
4
4
|
|
|
5
5
|
## 定义
|
|
6
6
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
3
|
"instructions": [
|
|
4
4
|
"agent/AGENTS.md",
|
|
5
|
-
"agent/skills/
|
|
5
|
+
"agent/skills/dta-basic-behavior/SKILL.md"
|
|
6
6
|
],
|
|
7
7
|
"permission": {
|
|
8
8
|
"skill": {
|
|
9
|
-
"
|
|
9
|
+
"dta-basic-behavior": "allow",
|
|
10
10
|
"<role-skill-name>": "allow"
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skill_name": "
|
|
2
|
+
"skill_name": "dta-agent-compose",
|
|
3
3
|
"evals": [
|
|
4
4
|
{
|
|
5
5
|
"id": 1,
|
|
@@ -106,10 +106,10 @@
|
|
|
106
106
|
{
|
|
107
107
|
"id": 10,
|
|
108
108
|
"prompt": "机器人已经绑好了,Agent 也装配完了。接下来我怎么测它?",
|
|
109
|
-
"expected_output": "交接给
|
|
109
|
+
"expected_output": "交接给 dta-agent-eval 的三条联调通道(平台 CLI 直投、本人 DWS 身份对机器人、数字员工身份);装配侧只交出 Agent ID 与绑定结果,不即兴造验收方式,也不给行为打分。",
|
|
110
110
|
"files": [],
|
|
111
111
|
"expectations": [
|
|
112
|
-
"把测试交接给
|
|
112
|
+
"把测试交接给 dta-agent-eval,而不是在装配流程里自造验收标准",
|
|
113
113
|
"给出通道顺序:先用不碰钉钉的 CLI 直投,再走真实钉钉往返",
|
|
114
114
|
"说明回复读起来对不等于 Skill 已加载,须用执行轨迹核对"
|
|
115
115
|
]
|
package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md
RENAMED
|
@@ -19,7 +19,7 @@ Agent Definition 由 manifest 精确指定。根 `AGENTS.md` 若存在,只是
|
|
|
19
19
|
|
|
20
20
|
### 2. Basic Skill 的正文是每 Session 唯一的 resolved 强制指令,不是「可发现」
|
|
21
21
|
|
|
22
|
-
`
|
|
22
|
+
`dta-basic-behavior` 必须无条件进入每个 Session 的 resolved 指令集,且在 resolved 结果中只命中一次。目录存在、Skill 名可枚举、模型说得出 Skill 名,都不是加载证据——那是可发现,不是已加载。多个等价路径要去重成唯一规范值;glob/extglob 只有在可证明不命中受管本体与 Basic 及其 alias 时才保留,无法证明时阻塞并要求收窄。
|
|
23
23
|
|
|
24
24
|
### 3. 临时 Basic exposure 必须整树物化,tree hash 与发布源一致
|
|
25
25
|
|
package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md
RENAMED
|
@@ -23,7 +23,7 @@ CLAUDE.md -> agent/AGENTS.md(符号链接) 同一份文件,两个 Host
|
|
|
23
23
|
|
|
24
24
|
```text
|
|
25
25
|
agent/skills/<name>/ Git / managed platform 的唯一 Skill 发布源
|
|
26
|
-
<dta 临时工作区>/.claude/skills/
|
|
26
|
+
<dta 临时工作区>/.claude/skills/dta-basic-behavior/ Claude Code 必需 Basic exposure
|
|
27
27
|
<dta 临时工作区>/.claude/skills/<role>/SKILL.md Role Skill exposure
|
|
28
28
|
```
|
|
29
29
|
|
package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md
RENAMED
|
@@ -25,11 +25,11 @@ agent/skills/<name>/SKILL.md Git / managed platform 的唯一 Skill
|
|
|
25
25
|
"$schema": "https://opencode.ai/config.json",
|
|
26
26
|
"instructions": [
|
|
27
27
|
"agent/AGENTS.md",
|
|
28
|
-
"agent/skills/
|
|
28
|
+
"agent/skills/dta-basic-behavior/SKILL.md"
|
|
29
29
|
],
|
|
30
30
|
"permission": {
|
|
31
31
|
"skill": {
|
|
32
|
-
"
|
|
32
|
+
"dta-basic-behavior": "allow"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: dta-agent-eval
|
|
3
3
|
description: 当用户要设计、运行、审计或扩展 dingtalk-agent/数字员工评测时使用,尤其是 OpenCode/DeepSeek、专用机器人、Agent Workspace、AGENTS.md + Skills、本地或钉钉文档状态、文件与产物断言、历史事故回归和 Live 晋级门禁。也用于 Agent 创建或部署完成后的验收、联调与调试:怎么测、怎么给它派任务试一下、给机器人发消息不回/没反应/@ 了没动静、任务卡住或失败、怀疑 Skill 没真的加载、要看这次执行的轨迹和会话。负责把场景归类、证明 Basic Skill 真实加载、采集多证据面并给出可复验结论;不负责事件触发器或生产业务写入。
|
|
4
4
|
compatibility: Requires dingtalk-agent on PATH; model evals require the selected Agent Host; DingTalk readback requires authenticated dws.
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.
|
|
6
|
+
version: "0.8.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 评测一个真正能工作的 Agent
|
package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/assets/eval-catalog.template.json
RENAMED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"caseRefs": [
|
|
13
13
|
{ "suite": "path/to/suite.json", "ids": ["basic-skill-load"] }
|
|
14
14
|
],
|
|
15
|
-
"sourceRefs": ["skills/core/
|
|
15
|
+
"sourceRefs": ["skills/core/dta-agent-compose/references/hosts/opencode.md"]
|
|
16
16
|
}
|
|
17
17
|
]
|
|
18
18
|
}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
| 组件 | 评测中的职责 | 不能替代 |
|
|
6
6
|
|---|---|---|
|
|
7
|
-
| `
|
|
8
|
-
| `
|
|
9
|
-
| `
|
|
7
|
+
| `dta-agent-compose` | 组装本体、Role Skills、存储路由,并生成 Host 加载合同 | 不给被测行为打分 |
|
|
8
|
+
| `dta-basic-behavior` | 所有钉钉员工共享的社会与安全协议 | 不证明自己已被 Host 加载 |
|
|
9
|
+
| `dta-agent-eval` | 选场景、固定变量、采集证据、执行门禁、沉淀事故 | 不监听事件、不接管生产写入 |
|
|
10
10
|
| Agent Host / OpenCode | 运行模型与 Workspace,输出回复或产物 | 不提供 dta 的身份/目标权威 |
|
|
11
11
|
| Managed Agent Platform | 托管 runtime、承接直投任务、持久化可回读的执行轨迹 | 不判定门禁,也不使轨迹等同于平台送达 |
|
|
12
12
|
| dta Kernel | 冻结 Definition、Session/Run、预算、Gate 与 Receipt | 不复制 DWS 产品能力 |
|
package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/interactive-debug-channels.md
RENAMED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
以 Multica 为例;其它托管平台按 `dta agent-platform list` 的注册表替换等价命令,通道语义不变。
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
PY=".agents/skills/multica
|
|
20
|
+
PY=".agents/skills/dta-ops-multica/scripts/multica_ext.py"
|
|
21
21
|
PROF="--profile <name> --workspace <id>" # 绝不使用默认配置:那可能直连生产
|
|
22
22
|
|
|
23
23
|
# Agent Project 内的首选受控路径:默认 plan 零远端调用,执行时创建单个 Issue 并落脱敏 evidence
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: dta-basic-behavior
|
|
3
3
|
description: 当 Agent 作为钉钉里的真实员工处理消息、@、单聊、群聊、任务、确认、记忆或协作事项时使用;即使当前目录没有初始化 Workspace、没有 CONTEXT.md,也先用本 Skill 判断响应资格、意图、作用域、风险、授权、隐私与完成状态。Prepared Run 中只通过 dingtalk-agent 原子动作,普通会话的钉钉产品操作按需使用 dws。
|
|
4
4
|
compatibility: Requires dingtalk-agent on PATH; DingTalk side effects require dws.
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.
|
|
6
|
+
version: "0.13.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 钉钉数字员工基础行为
|
package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/event-to-behavior.md
RENAMED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
- **超时不是失败,是「本拍到此为止」。** 重活本来就设计成分多拍跑完;记 degraded、保留水位、下一拍接着跑,不要为了「一次跑完」加超时或循环重试。
|
|
22
22
|
- **无事发生就静默。** 没有到期事项、没有异常、没有计划变化时不产出任何外发,也不向任何人报告「我跑过了」。
|
|
23
23
|
|
|
24
|
-
驱动的分类学与装配侧判据见 `
|
|
24
|
+
驱动的分类学与装配侧判据见 `dta-agent-compose` 的 `references/drive-and-schedules.md`;具体平台提供什么能力见该平台的 `PLATFORM.md`。
|
|
25
25
|
|
|
26
26
|
## Session / Run / Continuation
|
|
27
27
|
|
package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/COMPLETENESS.md
RENAMED
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
1. **打通 Agent 自主触发**(真实对话里自建档/探落点/确认/拒答/提议,替换"人扮 Agent + autobuild.py")。解锁最多:B 首次绑定 partial→done、三场景运行时读写从"脚本驱动"升到"Agent 驱动"。**是不是产品的分水岭。**
|
|
32
32
|
2. **compose 实现 §五 粘合 gate**(memref 合法/运行时身份可回读/seed==memory 一致/registry baseId 可回读/多 Agent memref 碰撞)。解锁:A、C 配置粘合 partial→done,把配错从运行期提前到装配期。
|
|
33
33
|
3. **registry base 加 typed 绑定槽 + 实现 locator 回填闭环**。解锁:B 配置粘合 missing→partial/done(自建节点下 Session 找得回)、C 隔离/共享有可校验载体。
|
|
34
|
-
4. **补行为层回归到 `
|
|
34
|
+
4. **补行为层回归到 `dta-agent-eval`**(未绑定零写、audience 拒答、知情提议)。解锁:三场景运行时读写的行为侧。
|
|
35
35
|
5. **实现 Boot 期 boundIdentity 漂移检测 + per-subject 单写者租约**。解锁:C 首次绑定/多写者仲裁/部署身份漂移感知。
|
|
36
36
|
6. **实现 consolidation 全套 + local-md 适配器 + --chaos 档**。解锁:三场景长期维护 missing→partial/done。
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: dta-people-group-memory
|
|
3
3
|
description: 让办公 Agent 认识「人」和「会话(群/单聊)」并记住交互。需要判断某位同事是谁、在做什么、怎么和他协作、我们之前聊过什么,或需要判断某个群是干什么的、在推什么、谁说了算、这事在哪讨论过、我该不该在这儿说话时使用;用户要求「记住这个人/沉淀一下这次聊天/以后记得我的偏好」时也使用。未绑定存储前完全惰性,不写任何东西。
|
|
4
4
|
compatibility: Storage-agnostic. Ships with a DingTalk-document adapter and a local-Markdown adapter; the model and ingest layers never touch a specific medium. Binding happens on demand under the runtime identity.
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.
|
|
6
|
+
version: "0.3.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 认识人 · 认识会话 · 记住交互
|
|
@@ -79,7 +79,7 @@ Session context.memory = 绑定档案节点 (dingtalk-doc 拉成只
|
|
|
79
79
|
|
|
80
80
|
## 五、dta 装配时该做的粘合检查(compose 侧)
|
|
81
81
|
|
|
82
|
-
装配 / 改造带本 Skill 的 Agent 时,`
|
|
82
|
+
装配 / 改造带本 Skill 的 Agent 时,`dta-agent-compose` 应校验这条粘合是否接通(目前是 prose,见"完成度"):
|
|
83
83
|
|
|
84
84
|
1. `agent.bindings.json#memory` 或 `DTA_MEMORY_STORAGE` 是否为合法 `dingtalk-doc:` / `aitable:` provider ref。
|
|
85
85
|
2. 该 ref 指向的节点是否 `doc info` 可回读(用**运行时身份**,不是开发者身份)。
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
## 驱动能力:未知,且不能假定
|
|
23
23
|
|
|
24
|
-
装配侧可以声明一个数字员工需要哪些常驻节律(见 core 技能 `
|
|
24
|
+
装配侧可以声明一个数字员工需要哪些常驻节律(见 core 技能 `dta-agent-compose` 的 `references/drive-and-schedules.md`),但**DEAP 是否提供 schedule 能力、是否允许 Agent 自主排程,目前都未确认**。
|
|
25
25
|
|
|
26
26
|
**平台之间驱动能力不同是常态**:不得把 Multica 的 autopilot 语义(5 段 cron、`run_only`、迟到 5 分钟跳过)转述成 DEAP 的行为,也不得因为 Agent 在 Multica 上跑通了节律就认为迁到 DEAP 后节律仍然成立。平台未开放期间,任何节律相关命令与 DEAP 上的其它平台命令一样 fail-closed;需要的节律记为**缺口**,不静默降级成“那就不定时了”。
|
|
27
27
|
|
|
@@ -6,8 +6,8 @@ Multica 是钉钉 FDE fork 的托管 Agent 平台:把一个 dingtalk-agent 数
|
|
|
6
6
|
|
|
7
7
|
| 角色 | 技能包 | 用途 |
|
|
8
8
|
|---|---|---|
|
|
9
|
-
| deploy | `
|
|
10
|
-
| ops | `multica
|
|
9
|
+
| deploy | `dta-deploy-multica` | 经 dta 稳定 CLI(`deploy`/`promote`/`observe`)把 Agent Project 受控部署、晋级、观测回流到 Multica Workspace。只编排 CLI,不直接写 Multica,不持有凭据。 |
|
|
10
|
+
| ops | `dta-ops-multica` | 平台运维执行体(纯 HTTPS,`python3 scripts/multica_ext.py <命令>`):workspace/runtime/agent 供给、skill push/pull、钉钉机器人与账号绑定、`chat-send --wait` 免钉钉测试通道、`task-trace` 观测、autopilot 调度、`agent-check` 体检。 |
|
|
11
11
|
|
|
12
12
|
## 完整交付链
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ Multica 是钉钉 FDE fork 的托管 Agent 平台:把一个 dingtalk-agent 数
|
|
|
15
15
|
|
|
16
16
|
## 驱动能力:这个平台能提供什么节律
|
|
17
17
|
|
|
18
|
-
装配侧的节律声明(见 core 技能 `
|
|
18
|
+
装配侧的节律声明(见 core 技能 `dta-agent-compose` 的 `references/drive-and-schedules.md`)到这里被兑现。Multica 的实现是 **autopilot**:
|
|
19
19
|
|
|
20
20
|
| 装配侧概念 | Multica 实现 | 命令 |
|
|
21
21
|
|---|---|---|
|
|
@@ -56,7 +56,7 @@ Multica 是钉钉 FDE fork 的托管 Agent 平台:把一个 dingtalk-agent 数
|
|
|
56
56
|
|
|
57
57
|
两条通道(对应 eval 技能的通道 A 与 B;通道 C 数字员工身份仍在开发中),按顺序用:先用 `dta workspace run <multica-workspace> --prompt-file <只读问题> --execute --yes --json` 创建受控 Issue 并保存脱敏 evidence;需要直接定位平台时再用 `chat-send --wait` 或 `issue-create --assignee-agent`。Issue 存在但没有 task 是平台唤醒失败,不是 Agent 回答失败。再走 DWS 对话验证真实钉钉链路——`dws chat bot find --query <机器人名> --format json` 取机器人的 openDingTalkId → `dws chat message send --open-dingtalk-id <odid> --text '[DTA-DEBUG-<ID>] ...' --uuid <UUID> --yes --format json`(真实外发:只对专用测试机器人)→ `dws chat message list-direct --open-dingtalk-id <odid> --time <发送前时刻> --forward=true --format json` 独立回读。
|
|
58
58
|
|
|
59
|
-
机器人给出岗位实质回复且未 @ 时保持沉默,只说明链路贯通且行为像;要证明基础行为真的加载,用 `task-trace` 看本次 Run 的轨迹。IM 回归至少覆盖同会话 continuation、引用、缺失附件、真实文件元数据、文档链接与只读业务问题;文件名可见不等于正文可读,回答必须与 trace 中实际取得的层级一致。通道选路、失败归因与证据要求见 `
|
|
59
|
+
机器人给出岗位实质回复且未 @ 时保持沉默,只说明链路贯通且行为像;要证明基础行为真的加载,用 `task-trace` 看本次 Run 的轨迹。IM 回归至少覆盖同会话 continuation、引用、缺失附件、真实文件元数据、文档链接与只读业务问题;文件名可见不等于正文可读,回答必须与 trace 中实际取得的层级一致。通道选路、失败归因与证据要求见 `dta-agent-eval` 技能的 `references/interactive-debug-channels.md`;被测对象尚未部署时改走同技能的 `references/local-connector-smoke.md`。
|
|
60
60
|
|
|
61
61
|
`multica chat history/thread` 只覆盖已配置的 Multica chat-channel integration,不能假定钉钉机器人安装一定接入该通道;返回 `No chat channel integration is configured` 时,不得据此判断钉钉会话没有历史、附件或引用。真实钉钉 IM 缺字段时按 Basic Behavior 的语义合同走 DWS 原始消息回读;平台层只负责保证任务中可调用当前 DWS 身份,不把 Multica CLI 写进共享 Basic。
|
|
62
62
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: dta-deploy-multica
|
|
3
3
|
description: 当开发者要把 dingtalk-agent Agent Project 部署、更新、检查、恢复或 retire 到 Multica Workspace,或把通过指定 Eval gate 的本地版本晋级、把脱敏反馈转成待评审 Eval candidate 时使用。只编排 dta 的稳定 deploy/promote/observe CLI,不直接调用 Multica 写命令,不创建 Trigger,不热改 Agent 本体或 Skill,也不替用户登录或持有凭据。
|
|
4
4
|
compatibility: Requires dingtalk-agent and an authenticated Multica CLI profile for live apply/status readback.
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.
|
|
6
|
+
version: "0.4.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 部署 dingtalk-agent 到 Multica
|
|
@@ -54,7 +54,7 @@ create / update / noop / rollback / retire 动作
|
|
|
54
54
|
- 不直接执行 `multica agent|skill ...` 写命令绕过 `dta deploy`。
|
|
55
55
|
- 不把 `--yes` 当成登录、改 scope、新增权限或确认新 plan。
|
|
56
56
|
- 不因模型回复正确而跳过 task status、tool trace 和远端内容 hash。
|
|
57
|
-
- 不创建机器人、Webhook、Autopilot、定时器或其他事件 Trigger。**deploy 也不会修改或删除已有的**——节律是独立于交付的生产对象,重新部署不重置它、不停用它,也不会因为 Skill 改了就自动改作用域提示词。改节律走 ops 技能 `multica
|
|
57
|
+
- 不创建机器人、Webhook、Autopilot、定时器或其他事件 Trigger。**deploy 也不会修改或删除已有的**——节律是独立于交付的生产对象,重新部署不重置它、不停用它,也不会因为 Skill 改了就自动改作用域提示词。改节律走 ops 技能 `dta-ops-multica` 的 `autopilot-*`,由 operator 决定。
|
|
58
58
|
- 不因为部署成功就宣称这个数字员工"已经在自己干活了"。`deploy` 只保证本体与 Skill 到位;**没有 schedule 的 Agent 只会被 @ 唤醒**。交付一个需要常驻节律的员工时,必须单独确认 `autopilot-list` 里真有对应节律且 `status=active`,否则如实报告这是缺口。
|
|
59
59
|
- 不把 token、Secret、邮箱、Server URL、Agent instructions 或 Skill 正文写入提交的 Receipt/日志。
|
|
60
60
|
- 不把线上消息、生产原始数据或 Observation 直接写回 AGENTS.md、Prompt、Skill 或 Eval suite。
|