@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.
Files changed (186) hide show
  1. package/CHANGELOG.md +232 -0
  2. package/README.en.md +115 -89
  3. package/README.md +111 -86
  4. package/dist/bin/dingtalk-agent.js +742 -152
  5. package/dist/bin/dingtalk-agent.js.map +1 -1
  6. package/dist/src/actions.js +3 -2
  7. package/dist/src/actions.js.map +1 -1
  8. package/dist/src/agent-audit.js +202 -85
  9. package/dist/src/agent-audit.js.map +1 -1
  10. package/dist/src/agent-definition.js +7 -3
  11. package/dist/src/agent-definition.js.map +1 -1
  12. package/dist/src/agent-enhance.js +51 -32
  13. package/dist/src/agent-enhance.js.map +1 -1
  14. package/dist/src/agent-platform.js +4 -4
  15. package/dist/src/agent-platform.js.map +1 -1
  16. package/dist/src/bootstrap.js +6 -2
  17. package/dist/src/bootstrap.js.map +1 -1
  18. package/dist/src/development-workspace.js +210 -34
  19. package/dist/src/development-workspace.js.map +1 -1
  20. package/dist/src/doctor.js +65 -9
  21. package/dist/src/doctor.js.map +1 -1
  22. package/dist/src/dws.js +67 -3
  23. package/dist/src/dws.js.map +1 -1
  24. package/dist/src/init.js +2 -1
  25. package/dist/src/init.js.map +1 -1
  26. package/dist/src/memory/noop-receipt.js +306 -0
  27. package/dist/src/memory/noop-receipt.js.map +1 -0
  28. package/dist/src/memory/operational.js +27 -3
  29. package/dist/src/memory/operational.js.map +1 -1
  30. package/dist/src/memory/remote-state.js +2 -1
  31. package/dist/src/memory/remote-state.js.map +1 -1
  32. package/dist/src/multica-deploy.js +692 -125
  33. package/dist/src/multica-deploy.js.map +1 -1
  34. package/dist/src/multica-provider.js +303 -25
  35. package/dist/src/multica-provider.js.map +1 -1
  36. package/dist/src/multica-runtime-vocabulary.js +110 -0
  37. package/dist/src/multica-runtime-vocabulary.js.map +1 -0
  38. package/dist/src/opencode-evals.js +6 -6
  39. package/dist/src/opencode-evals.js.map +1 -1
  40. package/dist/src/opencode-provider.js +21 -7
  41. package/dist/src/opencode-provider.js.map +1 -1
  42. package/dist/src/opencode-workspace.js +3 -3
  43. package/dist/src/opencode-workspace.js.map +1 -1
  44. package/dist/src/personal-event-evals.js +4 -2
  45. package/dist/src/personal-event-evals.js.map +1 -1
  46. package/dist/src/promotion.js +2 -1
  47. package/dist/src/promotion.js.map +1 -1
  48. package/dist/src/remote-semantic-state-live-evals.js +14 -8
  49. package/dist/src/remote-semantic-state-live-evals.js.map +1 -1
  50. package/dist/src/remote-state-evals.js +2 -2
  51. package/dist/src/remote-state-evals.js.map +1 -1
  52. package/dist/src/robot-evals.js +3 -3
  53. package/dist/src/robot-evals.js.map +1 -1
  54. package/dist/src/schedule-plan.js +380 -0
  55. package/dist/src/schedule-plan.js.map +1 -0
  56. package/dist/src/sessions.js +1 -1
  57. package/dist/src/sessions.js.map +1 -1
  58. package/dist/src/skill-manager.js +145 -13
  59. package/dist/src/skill-manager.js.map +1 -1
  60. package/dist/src/skills.js +2 -0
  61. package/dist/src/skills.js.map +1 -1
  62. package/dist/src/tui.js +369 -0
  63. package/dist/src/tui.js.map +1 -0
  64. package/dist/src/upgrade.js +113 -33
  65. package/dist/src/upgrade.js.map +1 -1
  66. package/dist/src/waits.js +2 -1
  67. package/dist/src/waits.js.map +1 -1
  68. package/dist/src/workspace.js +12 -7
  69. package/dist/src/workspace.js.map +1 -1
  70. package/docs/AGENT-IN-PRODUCTION.md +255 -0
  71. package/docs/ARCHITECTURE.md +366 -0
  72. package/docs/INSTALLATION.md +8 -8
  73. package/docs/PLATFORM-GUARDRAILS.md +188 -0
  74. package/docs/PRIOR-ART.md +126 -0
  75. package/docs/SELF-TEST.md +182 -0
  76. package/docs/architecture/agent-platform-connection-layer.svg +120 -0
  77. package/docs/architecture/digital-employee-composition.svg +92 -0
  78. package/docs/architecture/dingtalk-agent-architecture.svg +125 -0
  79. package/docs/assets/digital-employee-at-work.svg +77 -0
  80. package/docs/schemas/multica-deployment-plan.schema.json +3 -1
  81. package/docs/schemas/multica-deployment-receipt.schema.json +17 -3
  82. package/docs/schemas/multica-deployment-status.schema.json +6 -2
  83. package/docs/schemas/multica-workspace-inspection.schema.json +16 -0
  84. package/docs/schemas/multica-workspace-run-plan.schema.json +31 -0
  85. package/docs/schemas/multica-workspace-run.schema.json +161 -0
  86. package/docs/schemas/multica-workspace-status.schema.json +2 -0
  87. package/docs/schemas/project.schema.json +54 -3
  88. package/docs/schemas/workspace-scaffold.schema.json +38 -0
  89. package/examples/agents/README.md +45 -0
  90. package/examples/agents/fde-coach/AGENTS.md +2 -25
  91. package/examples/agents/fde-coach/agent/AGENTS.md +35 -0
  92. package/examples/agents/fde-coach/agent.bindings.json +10 -0
  93. package/examples/agents/release-manager/AGENTS.md +2 -25
  94. package/examples/agents/release-manager/agent/AGENTS.md +35 -0
  95. package/examples/agents/release-manager/agent.bindings.json +10 -0
  96. package/lab/agent-eval/catalog.json +5 -5
  97. package/lab/agent-eval/classic-failures.json +4 -4
  98. package/lab/agent-eval/completion-gate-regression.json +9 -9
  99. package/lab/agent-eval/personal-event-live.example.json +3 -3
  100. package/lab/agent-eval/remote-semantic-state-live.example.json +1 -1
  101. package/lab/agent-eval/workspace/opencode.json +2 -2
  102. package/lab/project-workspace/fake-multica-provider.mjs +171 -17
  103. package/lab/project-workspace/multica-deploy.fixture.json +2 -2
  104. package/lab/project-workspace/multica-readonly.fixture.json +4 -16
  105. package/lab/project-workspace/opencode-provider-suite.json +3 -3
  106. package/lab/project-workspace/project.fixture.json +2 -6
  107. package/lab/robot-eval/suite.json +1 -1
  108. package/lab/robot-eval/workspace/AGENTS.md +1 -1
  109. package/lab/robot-eval/workspace/opencode.json +2 -2
  110. package/lab/schemas/personal-event-eval.schema.json +1 -1
  111. package/package.json +18 -11
  112. package/skills/README.md +10 -8
  113. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +49 -24
  114. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/AGENTS.template.md +1 -1
  115. package/skills/core/dta-agent-compose/assets/REPOSITORY.template.md +10 -0
  116. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +2 -2
  117. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.local.template.json +2 -2
  118. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/hosts/opencode/opencode.template.json +3 -2
  119. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/evals/evals.json +4 -4
  120. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/agent-definition-contract.md +7 -7
  121. package/skills/core/dta-agent-compose/references/drive-and-schedules.md +166 -0
  122. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md +11 -13
  123. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md +13 -12
  124. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md +14 -13
  125. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/SKILL.md +28 -3
  126. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/assets/eval-catalog.template.json +1 -1
  127. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/evals/evals.json +1 -1
  128. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/eval-topology.md +3 -3
  129. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/interactive-debug-channels.md +10 -4
  130. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/SKILL.md +21 -5
  131. package/skills/core/dta-basic-behavior/references/event-to-behavior.md +38 -0
  132. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/memory-and-evolution.md +3 -1
  133. package/skills/core/dta-basic-behavior/references/perception-and-gates.md +87 -0
  134. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/risk-authority-and-privacy.md +12 -0
  135. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/truth-and-recovery.md +4 -2
  136. package/skills/core/dta-people-group-memory/COMPLETENESS.md +36 -0
  137. package/skills/core/dta-people-group-memory/SKILL.md +69 -0
  138. package/skills/core/dta-people-group-memory/references/adapters.md +273 -0
  139. package/skills/core/dta-people-group-memory/references/assembly-guidance.md +40 -0
  140. package/skills/core/dta-people-group-memory/references/binding.md +110 -0
  141. package/skills/core/dta-people-group-memory/references/cold-start.md +70 -0
  142. package/skills/core/dta-people-group-memory/references/config-binding.md +89 -0
  143. package/skills/core/dta-people-group-memory/references/consent-and-visibility.md +83 -0
  144. package/skills/core/dta-people-group-memory/references/consolidation.md +162 -0
  145. package/skills/core/dta-people-group-memory/references/event-ingest.md +103 -0
  146. package/skills/core/dta-people-group-memory/references/guided-setup.md +70 -0
  147. package/skills/core/dta-people-group-memory/references/model.md +148 -0
  148. package/skills/core/dta-people-group-memory/references/storage-port.md +107 -0
  149. package/skills/platforms/deap/PLATFORM.md +30 -1
  150. package/skills/platforms/multica-dingtalk/PLATFORM.md +35 -9
  151. package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/SKILL.md +10 -8
  152. package/skills/platforms/multica-dingtalk/dta-deploy-multica/references/multica-deployment-contract.md +67 -0
  153. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/SKILL.md +81 -11
  154. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/bootstrap.sh +2 -2
  155. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/multica_ext.py +264 -16
  156. package/dist/src/map.js +0 -157
  157. package/dist/src/map.js.map +0 -1
  158. package/docs/SECOND-AGENT-ACCEPTANCE.md +0 -62
  159. package/docs/architecture/agent-memory-topology.png +0 -0
  160. package/docs/architecture/agent-memory-topology.svg +0 -132
  161. package/docs/architecture/dingtalk-agent-blueprint.png +0 -0
  162. package/docs/architecture/durable-async-agent-runtime.png +0 -0
  163. package/docs/architecture/general-agent-kernel-topology.png +0 -0
  164. package/docs/architecture/provider-bound-development-workspace.png +0 -0
  165. package/docs/architecture/task-completion-gate.png +0 -0
  166. package/docs/assets/agent-delivery-lifecycle.svg +0 -103
  167. package/skills/core/dingtalk-basic-behavior/references/event-to-behavior.md +0 -24
  168. package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +0 -28
  169. package/skills/platforms/deap/README.md +0 -3
  170. package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +0 -40
  171. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +0 -49
  172. /package/examples/agents/fde-coach/{skills → agent/skills}/fde-coach/SKILL.md +0 -0
  173. /package/examples/agents/release-manager/{skills → agent/skills}/release-manager/SKILL.md +0 -0
  174. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/role-skill.template.md +0 -0
  175. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/storage-routing.md +0 -0
  176. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/evidence-contract.md +0 -0
  177. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/failure-to-case.md +0 -0
  178. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/local-connector-smoke.md +0 -0
  179. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/scenario-taxonomy.md +0 -0
  180. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/storage-modes.md +0 -0
  181. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
  182. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/task-checkpoint.json +0 -0
  183. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/action-contract.md +0 -0
  184. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/runtime-modes.md +0 -0
  185. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/task-lifecycle.md +0 -0
  186. /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
package/README.md CHANGED
@@ -2,24 +2,30 @@
2
2
 
3
3
  # dingtalk-agent
4
4
 
5
- **让数字员工继承同一套可验证的行为底座。**
5
+ **让你的 Coding Agent 把现成的 Agent 装成钉钉数字员工。**
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/%40xdxer%2Fdingtalk-agent?logo=npm&color=cb3837)](https://www.npmjs.com/package/@xdxer/dingtalk-agent)
8
8
  [![CI](https://github.com/D1-2004/dingtalk-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/D1-2004/dingtalk-agent/actions/workflows/ci.yml)
9
9
  [![Node.js](https://img.shields.io/node/v/%40xdxer%2Fdingtalk-agent)](https://nodejs.org/)
10
10
  [![License](https://img.shields.io/badge/license-MIT-2ea44f)](LICENSE)
11
11
 
12
- [快速开始](#快速开始) · [工作方式](#工作方式) · [支持范围](#支持范围) · [文档](#文档)
12
+ 评估中?→ [它是什么](#它是什么) · [能做什么](#它能做什么) · [什么时候该用它](#什么时候该用它)  |  要动手?→ [快速开始](#快速开始)
13
13
 
14
14
  简体中文 · [English](README.en.md)
15
15
 
16
16
  </div>
17
17
 
18
- `dingtalk-agent`(`dta`)是钉钉数字员工的 **Skill-first 行为内核与交付工具链**。它把角色定义、公共行为、岗位能力和执行门禁装配成一个可创建、测试、发布和审计的 Agent Project。
18
+ ![在群里 @ 它,它会像同事一样把事做完,中间每一步都有记录](docs/assets/digital-employee-at-work.svg)
19
19
 
20
- > **Skill 劝,CLI 拦,DWS 做。** Skill 判断何时、为何行动;CLI 固定身份、目标、预算、幂等与回读;DWS 执行钉钉能力。
20
+ ## 它是什么
21
21
 
22
- ![从 Agent 定义到两类身份交付的完整路径](docs/assets/agent-delivery-lifecycle.svg)
22
+ dta 管的是把一个 Agent 做成钉钉数字员工这一路的开发工作,运行时的底座它不做。
23
+
24
+ 数字员工和聊天机器人的区别,是它有一个钉钉签发的组织身份,通讯录里查得到。它能被 @,但只在授权的群和会话里干活,干过什么都挂在它名下。
25
+
26
+ 一个能跑的 Agent 要做到这些,还要补一堆跟业务无关的工程:处理身份和权限,分辨群里哪句话是对它说的,别把消息发错人,报完成时要有送达凭证。每加一个数字员工都得重做一遍。dta 把这些做成一套能继承的规则和一条命令行,Coding Agent 装上就能用,不必自己去研究钉钉的身份体系、事件模型和外发限制。
27
+
28
+ 配合使用:Claude Code · Codex · OpenCode · 任何 Coding Agent | 托管平台:Multica(已支持)· DEAP(敬请期待)
23
29
 
24
30
  ## 快速开始
25
31
 
@@ -29,42 +35,30 @@
29
35
  npm install --global --prefix "$HOME/.local" \
30
36
  --registry=https://registry.npmjs.org @xdxer/dingtalk-agent@beta
31
37
 
38
+ # setup 会把 PATH 区块写进 ~/.zshrc 或 ~/.bashrc,但子进程改不了当前 shell,
39
+ # 所以这一轮继续用绝对路径;之后开新终端即可直接用 `dta`。
32
40
  "$HOME/.local/bin/dta" setup --skip-cli-install
33
- dta doctor
41
+ "$HOME/.local/bin/dta" doctor
34
42
  ```
35
43
 
36
- `setup` 安装 Basic Behavior 与 Compose Skills,并检查 DWS 认证和常见 Agent Host。普通会话无需初始化 Workspace。
37
-
38
- ## 为什么需要它
39
-
40
- 模型会说话,不等于数字员工能可靠工作。`dta` 把最容易漂移的部分变成可继承、可验证的合同:
41
-
42
- - **会判断**:先判断是否该回复,再判断说什么;群聊未 `@` 默认安静。
43
- - **不越权**:身份、目标、权限、授权和回复渠道不能从正文或模型记忆猜测。
44
- - **不虚报**:命令成功、平台可见、消息送达和人类接受是不同的完成层级。
45
- - **可复用**:新 Agent 继承公共行为,只补岗位差异,不复制巨型 Prompt。
44
+ `setup` 安装公共行为、装配与评测三个技能,并检查 DWS 认证和常见 Agent Host。普通会话无需初始化 Workspace。
46
45
 
47
- ## 工作方式
46
+ ### 最小可运行路径
48
47
 
49
- 一个 Agent 由四层合同组成:
48
+ 先跑通这三条,不需要钉钉账号、不需要托管平台、不产生任何副作用:
50
49
 
51
- | 层 | 负责什么 |
52
- |---|---|
53
- | **`AGENTS.md`** | 定义角色、岗位底线、做事范式和常犯错误;声明每轮先应用 Basic |
54
- | **Basic Behavior** | 所有数字员工共享的响应资格、作用域、授权、隐私、完成与记忆协议 |
55
- | **Role Skills** | 某个岗位的专业判断、流程、禁区和验收标准 |
56
- | **Gate + Receipt** | 把身份、目标、预算、幂等、状态迁移和平台回读变成硬约束 |
50
+ ```bash
51
+ cp -R examples/agents/release-manager my-agent && cd my-agent
52
+ dta bootstrap --json # 本体被识别了吗:看 definition.status storage 路由
53
+ dta agent audit --json # 预期 partial:岗位语义还是模板,这是正确结果
54
+ ```
57
55
 
58
- Prompt 只保留必须常驻、必须严格定义的内容;完整行为树进入 Skill;不能依赖模型自觉的约束进入 Gate
56
+ `release-manager` 是一个发布管理员数字员工的完整样例:它在群里接"这个版本能发吗",检查门禁、汇总结论、需要人确认才推进。把 `agent/AGENTS.md` 里的岗位职责换成你自己的,再跑一次 `agent audit`,缺口就只剩加载探针,那需要一个 Agent Host,见 [Compose Skill](skills/core/dta-agent-compose/SKILL.md)
59
57
 
60
- ### 创建 → 测试 → 发布
58
+ ### 完整交付链
61
59
 
62
- | 阶段 | 关键产物 | 门禁 |
63
- |---|---|---|
64
- | **创建** | `AGENTS.md`、Basic、Role Skills、bindings | 占位符未补全时保持 `partial` |
65
- | **测试** | 隔离 Workspace、load probe、行为评测、四类证据 | Definition/Skills 没有真实加载就不能 ready |
66
- | **发布** | 平台预检、部署 Receipt、远端 readback | 指定 Eval 未通过或身份链不完整就不能 promote |
67
- | **运行** | 数字员工账号或机器人入口、task trace | 无证据不声称写入、送达或完成 |
60
+ <details>
61
+ <summary>创建 → 测试 → 发布的完整命令(有了托管平台归属再看)</summary>
68
62
 
69
63
  ```bash
70
64
  # 1. 创建零写入计划,再显式落盘
@@ -74,8 +68,8 @@ dta agent enhance --project-name release-agent --role-skill release-manager \
74
68
 
75
69
  # 2. 审计、运行与评测
76
70
  dta agent audit --bindings agent.bindings.json --require-skill release-manager --json
77
- dta workspace run local-dev --json
78
- dta workspace eval local-dev --json
71
+ dta workspace run local-dev --prompt-file prompt.md --execute --yes --json
72
+ dta workspace eval local-dev --suite evals/suite.json --execute --yes --json
79
73
 
80
74
  # 3. 云端预检、发布与观测
81
75
  dta workspace inspect multica-dev --execute --yes --json
@@ -84,83 +78,114 @@ dta promote --source local-dev --target multica-dev --dry-run --json
84
78
  dta observe --promotion-id <promotion-id> --input <observation.json> --dry-run --json
85
79
  ```
86
80
 
87
- 所有计划默认零写入;所有远端写入都需要明确目标、当前 `planId` 和显式确认。
81
+ 所有计划默认零写入;所有远端写入都需要明确目标、当前 `planId` 和显式确认。`<plan-id>` 来自上一条 dry-run 输出的 `.planId`,`local-dev` / `multica-dev` 是你自己在 `dingtalk-agent.json#workspaces` 里声明的名字。四个阶段各有门禁:占位符没填完保持 `partial`;技能没真加载不能 ready;指定评测没过不能 promote;没有证据不声称送达或完成。逐条见 [Architecture](docs/ARCHITECTURE.md#8-开发生命周期从定义到观测)。
88
82
 
89
- ## 支持范围
83
+ </details>
90
84
 
91
- ### 平台、Harness 与运行时
85
+ ## 它能做什么
92
86
 
93
- 这三个概念彼此独立:
87
+ 把一个 Agent 变成钉钉数字员工要走六段,dta 每一段都管:
94
88
 
95
- - **Managed Agent Platform** Workspace、Runtime、Agent、Skill、身份绑定和观测。
96
- - **Agent Harness** 加载 Definition/Skills,隔离执行并采集证据。
97
- - **dta Kernel** 依赖统一合同,不依赖某个 Harness 的私有 Prompt 或目录结构。
89
+ | 开发生命周期 | dta 做的 | 用什么 |
90
+ |---|---|---|
91
+ | **① 本体与员工技能** | 一套可继承、可验证的共享行为合同:什么时候该开口、消息算不算任务、外部动作要谁批准、风险怎么分级、什么算完成、哪些要记哪些能忘。你只写岗位不一样的那几十行 | `dta-basic-behavior` · `agent enhance` · `examples/agents/` |
92
+ | **② 身份获取与事件感知** | 把格式各异的原始事件归一成稳定结构。回复对象和执行身份会冻结成正文改不动的快照,发错人在结构上就做不到;权限和出口按场域绑定;同一个事件只产生一个 Run,崩了也不会丢、不会重复 | `prepare` · `run` · Field 配置 |
93
+ | **③ 托管平台部署** | 先看计划再落盘:冻结本体和整棵 Skill 树的 hash 和写预算,写完独立回读、发加载烟测,重复跑同一版不再写入。出问题能回滚,上了线也能退役(当前落地于 Multica) | `deploy` · `promote` · `--retire` |
94
+ | **④ 驱动它在钉钉里干活** | 外发就四个原语。动作做之前挡掉越权和发错目标,做完之后强制回读平台确认;结果不确定时不许乱重发,报完成得留下能再核验的证据 | `act` · Action Gate · `task checkpoint` |
95
+ | **⑤ 评测设计** | 一套评测方法:帮你选够用的最低层级,决定一次结论要看哪几类证据,避免个别失败被平均分掩盖,把真实事故变成能复跑的用例,也给出什么时候不能上线 | `lab` · `workspace eval` · `dta-agent-eval` |
96
+ | **⑥ 观测与反馈** | 把线上发现的问题绑定到具体哪一版,脱敏后回流评测素材,不会自动改动 Agent 的行为 | `observe` |
98
97
 
99
- | 维度 | 当前支持 |
98
+ ## 什么时候该用它
99
+
100
+ 适合用它的情况:
101
+
102
+ - 你已经有一个能跑的 Agent,想让它以组织身份进钉钉群,被 @、被派活;
103
+ - 你有钉钉自动化在跑,出过发错人、或者命令返回 0 就当成功这类事故;
104
+ - 你要做好几个数字员工,不想把公共行为在每份提示词里各复制一遍、越改越不一样;
105
+ - 你的活儿跨天、要等人确认、中途可能被叫停,不是一问一答;
106
+ - 你要向别人证明线上跑的就是你调好的那一版。
107
+
108
+ 用不上它的情况:
109
+
110
+ - 你只要一个问答机器人:一个钉钉机器人 webhook 就够了,这一套对你是多余的;
111
+ - 你只是要调钉钉 API:直接用 DWS,它本来就能用,dta 不是前置;
112
+ - 你不在钉钉生态:唯一的执行出口是 DWS、身份由钉钉签发,换不掉。
113
+
114
+ 今天还做不到:把已经部署在别的平台上的 Agent 导入进来(数据只能从本地流向托管平台,没有 import 命令);事件触发器(Webhook、定时器)也不归本项目。
115
+
116
+ ## 今天的真实状态
117
+
118
+ | 环节 | 现在到哪一步 |
100
119
  |---|---|
101
- | **Managed Platform** | Multica(DingTalk)已支持;DEAP 为 Coming soon;更多平台通过 registry + adapter 接入 |
102
- | **本地运行** | Claude Code、Codex、OpenCode 等 Direct/Mounted Session;OpenCode 是当前完整的本地 managed Harness 参考实现 |
103
- | **云上运行** | Multica Workspace / Runtime / Agent;沿用相同的 Definition、Skills、Gate 与证据合同 |
104
- | **交付身份** | 数字员工/账号身份;机器人应用身份;两者都不能改变角色职责或扩大权限 |
120
+ | 六段里的前五段 | 已经成型 |
121
+ | 第六段(观测与计量) | 最薄的一段。用量计量(交互量、token、成本、按人按群的分布)还没做 |
122
+ | 托管平台 | Multica 已支持;DEAP 敬请期待;平台 SPI 还没合并进主干 |
123
+ | Agent Host | OpenCode 完整;Claude Code 的 adapter 还没实现 |
124
+ | 完成证据 | 核验这一侧已经实现、被合同锁住;签发这一侧还没接进公开命令 |
125
+ | 反向导入外部平台的 Agent | 没有这个命令,数据只能从本地流向平台 |
126
+ | 回归防线 | 62 个确定性合同,18 秒跑完 |
105
127
 
106
- OpenCode 不是运行前提,Multica 也不是特殊旁路。任何 Harness 要进入可晋级路径,都必须证明同一件事:Definition 与 Skills 已加载、身份和隔离已固定、运行轨迹可取、结果可回读。
128
+ ## 工作原理
107
129
 
108
- “支持多平台”指架构、注册表和 adapter 合同可扩展;不把尚未开放的平台宣称为已部署或已 Live 验证。
130
+ > **Skill 劝,CLI 拦,DWS 做。** Skill 负责判断什么时候、为什么该动手;命令行把身份、目标、预算固定住,管幂等和回读;真正的钉钉操作交给 DWS。
109
131
 
110
- ### 三种运行模式
132
+ 这几条边界是结构上过不去的,不靠提示词请求模型别做:群聊里没 @ 它就不说话;命令行里根本没有发送目标这个参数,回复对象只能来自触发它的那条消息;报告完成必须附上宿主签发、能独立回读的证据。这三条都有确定性合同评测守着,改坏了会红。
111
133
 
112
- | 模式 | 用于 | 关键边界 |
113
- |---|---|---|
114
- | **Direct Session** | 普通交互会话 | 无可信事件就不猜外发目标 |
115
- | **Mounted Session** | 挂载本地或钉钉语义内容 | 锁、幂等和 Receipt 不放进 Markdown |
116
- | **Prepared Run** | 事件驱动的可靠副作用 | 动作只走 typed Broker 或 `dta act` |
134
+ **DWS 是钉钉侧的命令行工具**(独立于本项目,需单独 `dws auth login`),覆盖消息、文档、AI 表格、日程、审批等约 20 类产品能力。dta 不复制它的命令面,所有真实的钉钉操作最终都由 DWS 执行。
117
135
 
118
- Prepared Run 只开放 `ack`、`reply`、`ask`、`silence` 四个消息原子动作。`ack` 不等于接单,`reply` 不等于对方接受。
136
+ ## 常见疑问
119
137
 
120
- ## 创建出来的 Agent 会继承什么
138
+ **这是又一个 Agent 框架吗?**
139
+ 不是。它不带模型,也没有工具循环或 Agent 运行时。它给你的 Coding Agent 一套技能和一条命令行,让它把已有的 Agent 装配成钉钉数字员工。
121
140
 
122
- ```text
123
- my-agent/
124
- ├── AGENTS.md 角色宪法 + Basic 继承锚点
125
- ├── agent.bindings.json Definition 与存储路由
126
- ├── dingtalk-agent.json Agent Project 期望状态
127
- ├── .agents/skills/
128
- │ ├── dingtalk-basic-behavior/ 完整公共行为树
129
- │ └── <role>/ Host 可发现的岗位 Skill
130
- ├── skills/<role>/SKILL.md 岗位能力的版本化来源
131
- └── .dingtalk-agent/ 私有状态、证据与 Receipt
132
- ```
141
+ **和 Claude Code、Codex 冲突吗?**
142
+ 不冲突,它就是给它们用的。`dta setup` 把技能装进这些 Coding Agent,之后用自然语言指挥它们就行;命令行也能单独用。
133
143
 
134
- 生成的 `AGENTS.md` 只保留四块原子合同:**定义、不能做的底线、做事标准范式、常犯错误**。模板同时声明每个任务先应用 `dingtalk-basic-behavior`,再按任务加载 Role Skills。
144
+ **我的 Agent 已经跑在别的平台上,能接进来吗?**
145
+ 本体(角色定义和技能)可以移植,在本地装配好再发布到托管平台。但现在没有从外部平台反向导入的命令,已支持的托管平台也只有 Multica。
135
146
 
136
- “文件存在”不是继承证据。`agent audit --verify-load` 会把真实加载结果绑定到 Definition/Skill hash、Host/模型版本、隔离探针和原始 run/export:
147
+ **试一次要准备什么?**
148
+ 不需要钉钉账号,也不需要托管平台。装配、审计、`workspace run/eval` 和全部合同评测都能在本地跑完,`doctor` 会把缺的东西标成 `partial` 而不是报错。只有真发消息和真发布才需要 DWS 认证。
137
149
 
138
- ```bash
139
- dta agent audit \
140
- --bindings agent.bindings.json \
141
- --require-skill <role-skill-name> \
142
- --verify-load --yes --json
143
- ```
150
+ **要投多少人力?**
151
+ 第一个岗位主要花时间在写清楚职责上,代码基本不用碰:本体就是 Markdown,照示例改。加第二个岗位只改三个文件,不用动一行内核代码。
152
+
153
+ ## 支持范围
154
+
155
+ 托管平台、Agent Host 和 dta 内核是三件互相独立的东西:托管平台管 Workspace、Runtime 和观测,并把钉钉签发的身份绑到 Agent 上(签发权还在钉钉);Agent Host(也叫 Harness)加载定义和技能、隔离执行;dta 内核是本项目。
144
156
 
145
- ## 不可绕过的边界
157
+ | 维度 | 当前支持 |
158
+ |---|---|
159
+ | **托管平台** | Multica(DingTalk)已支持;DEAP 敬请期待;接一个新平台走同一条路径:写一个平台技能包、在注册表登记一条记录 |
160
+ | **本地运行** | Claude Code、Codex、OpenCode 等 Direct/Mounted Session;OpenCode 是当前最完整的本地参考实现 |
161
+ | **云上运行** | Multica Workspace / Runtime / Agent;沿用相同的定义、技能、闸门与证据合同 |
162
+ | **交付身份** | 数字员工/账号身份、机器人应用身份,都由钉钉侧签发;两者都不能改变角色职责或扩大权限 |
163
+
164
+ DEAP 可能同时扮演两个角色:它现在对本项目最要紧的价值是钉钉侧的身份权限管控和感知/人机交互,是否再内建一层自己的运行平台还没定。见 [DEAP 平台说明](skills/platforms/deap/PLATFORM.md)。「支持多平台」指的是注册表和接入合同可以扩展,不把还没开放的平台说成已经部署或已 Live 验证。
165
+
166
+ ### 三种运行模式
167
+
168
+ | 模式 | 用于 | 关键边界 |
169
+ |---|---|---|
170
+ | **Direct Session** | 普通交互会话 | 无可信事件就不猜外发目标 |
171
+ | **Mounted Session** | 挂载本地或钉钉语义内容 | 锁、幂等和回执不放进 Markdown |
172
+ | **Prepared Run** | 事件驱动的可靠副作用 | 动作只走 typed Broker 或 `dta act` |
146
173
 
147
- - 普通 Session 不自动运行 `dingtalk-agent init`。
148
- - target、actor、conversation、DWS profile 与权限只来自可信宿主或事件。
149
- - Prepared Run 的消息副作用只走 typed Broker 或 `dta act`,不能绕过 Gate。
150
- - 在线 Run 可以提出记忆或 Skill 候选,但不能热修改当前身份、权限或策略。
151
- - 模型自述、命令退出 0、平台写入可见、消息送达与人类接受必须分别举证。
174
+ Prepared Run 只开放 `ack`、`reply`、`ask`、`silence` 四个消息原子动作。`ack` 不等于接单,`reply` 不等于对方接受。触发器不归本项目:`listen` 只是本地联调用的可替换 Adapter,`dta deploy` 不创建机器人、Webhook 或定时器。
152
175
 
153
176
  ## 文档
154
177
 
155
178
  | 想做什么 | 从这里开始 |
156
179
  |---|---|
157
- | 理解架构与状态模型 | [Architecture](docs/ARCHITECTURE.md) |
180
+ | 理解 Agent 架构与仓库分工 | [Architecture](docs/ARCHITECTURE.md) |
158
181
  | 安装、升级与排障 | [Installation](docs/INSTALLATION.md) |
182
+ | 接手一个已经在跑的 Agent(运行视角) | [Agent in Production](docs/AGENT-IN-PRODUCTION.md) |
159
183
  | 理解评测与证据分层 | [Self-test](docs/SELF-TEST.md) |
160
- | 创建或审计 Agent | [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md) |
161
- | 测试或调试已交付的 Agent | [Eval Skill](skills/core/dingtalk-agent-eval/SKILL.md) |
162
- | 查看公共行为协议 | [Basic Behavior Skill](skills/core/dingtalk-basic-behavior/SKILL.md) |
163
- | 复制完整示例 | [Example Agents](examples/agents) |
184
+ | 创建或审计 Agent | [Compose Skill](skills/core/dta-agent-compose/SKILL.md) |
185
+ | 测试或调试已交付的 Agent | [Eval Skill](skills/core/dta-agent-eval/SKILL.md) |
186
+ | 查看公共行为协议(写给模型读的合同,不是教程) | [Basic Behavior Skill](skills/core/dta-basic-behavior/SKILL.md) |
187
+ | 复制一个完整示例开始改 | [Example Agents](examples/agents) |
188
+ | 从哪些平台与开源项目持续吸收最佳实践 | [Prior Art](docs/PRIOR-ART.md) |
164
189
 
165
190
  行为资产来自可观察合同、反例修正和可部署验证;本项目不声称获得任何产品的隐藏系统提示词原文。
166
191