@xdxer/dingtalk-agent 0.1.5-beta.1 → 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 (175) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/README.en.md +99 -66
  3. package/README.md +99 -66
  4. package/dist/bin/dingtalk-agent.js +735 -149
  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 +3 -3
  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 +165 -31
  72. package/docs/INSTALLATION.md +7 -7
  73. package/docs/PLATFORM-GUARDRAILS.md +188 -0
  74. package/docs/PRIOR-ART.md +4 -0
  75. package/docs/SELF-TEST.md +4 -4
  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 +10 -8
  90. package/examples/agents/fde-coach/AGENTS.md +2 -34
  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 -34
  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 +12 -9
  112. package/skills/README.md +10 -8
  113. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +48 -23
  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 +2 -2
  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 +34 -8
  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/docs/assets/agent-delivery-lifecycle.svg +0 -103
  157. package/skills/core/dingtalk-basic-behavior/references/event-to-behavior.md +0 -24
  158. package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +0 -28
  159. package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +0 -40
  160. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +0 -49
  161. /package/examples/agents/fde-coach/{skills → agent/skills}/fde-coach/SKILL.md +0 -0
  162. /package/examples/agents/release-manager/{skills → agent/skills}/release-manager/SKILL.md +0 -0
  163. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/role-skill.template.md +0 -0
  164. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/storage-routing.md +0 -0
  165. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/evidence-contract.md +0 -0
  166. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/failure-to-case.md +0 -0
  167. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/local-connector-smoke.md +0 -0
  168. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/scenario-taxonomy.md +0 -0
  169. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/storage-modes.md +0 -0
  170. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
  171. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/task-checkpoint.json +0 -0
  172. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/action-contract.md +0 -0
  173. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/runtime-modes.md +0 -0
  174. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/task-lifecycle.md +0 -0
  175. /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
package/README.md CHANGED
@@ -2,26 +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
- [快速开始](#快速开始) · [一个 Agent 由什么构成](#一个-agent-由什么构成) · [仓库分成哪几部分](#这个仓库分成哪几部分) · [文档](#文档)
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
- 其中 **DWS 是钉钉侧的命令行工具**(独立于本项目,需单独安装并 `dws auth login`),涵盖消息、文档、AI 表格、日程、审批等约 20 类产品能力。`dta` 不复制它的命令面,只在需要冻结身份、目标、幂等或回读时包一层——**所有真实的钉钉操作最终都由 DWS 执行**。
22
+ dta 管的是把一个 Agent 做成钉钉数字员工这一路的开发工作,运行时的底座它不做。
23
23
 
24
- ![从 Agent 定义到两类身份交付的完整路径](docs/assets/agent-delivery-lifecycle.svg)
24
+ 数字员工和聊天机器人的区别,是它有一个钉钉签发的组织身份,通讯录里查得到。它能被 @,但只在授权的群和会话里干活,干过什么都挂在它名下。
25
+
26
+ 一个能跑的 Agent 要做到这些,还要补一堆跟业务无关的工程:处理身份和权限,分辨群里哪句话是对它说的,别把消息发错人,报完成时要有送达凭证。每加一个数字员工都得重做一遍。dta 把这些做成一套能继承的规则和一条命令行,Coding Agent 装上就能用,不必自己去研究钉钉的身份体系、事件模型和外发限制。
27
+
28
+ 配合使用:Claude Code · Codex · OpenCode · 任何 Coding Agent | 托管平台:Multica(已支持)· DEAP(敬请期待)
25
29
 
26
30
  ## 快速开始
27
31
 
@@ -37,43 +41,24 @@ npm install --global --prefix "$HOME/.local" \
37
41
  "$HOME/.local/bin/dta" doctor
38
42
  ```
39
43
 
40
- `setup` 安装 Basic Behavior、Compose 与 Eval Skills,并检查 DWS 认证和常见 Agent Host。普通会话无需初始化 Workspace。
41
-
42
- **纯本地能走多远**:装配、审计、`workspace run/eval` 与全部合同评测都不需要钉钉账号或托管平台——`doctor` 会把缺失项标成 `partial` 而不是失败。只有真实外发、远端语义状态和 `deploy`/`promote` 才需要 DWS 认证与 Multica。
43
-
44
- ## 为什么需要它
45
-
46
- 模型会说话,不等于数字员工能可靠工作。`dta` 把最容易漂移的四件事变成可继承、可验证的合同:
44
+ `setup` 安装公共行为、装配与评测三个技能,并检查 DWS 认证和常见 Agent Host。普通会话无需初始化 Workspace。
47
45
 
48
- - **会判断**:先判断是否该回复,再判断说什么;群聊未 `@` 默认安静。
49
- - **不越权**:身份、目标、权限、授权和回复渠道不能从正文或模型记忆猜测。
50
- - **不虚报**:命令成功、平台可见、消息送达和人类接受是四个不同的完成层级,各自举证。
51
- - **可复用**:新 Agent 继承公共行为,只补岗位差异,不复制巨型 Prompt。
46
+ ### 最小可运行路径
52
47
 
53
- ## 一个 Agent 由什么构成
54
-
55
- 四件东西:**本体**(`AGENTS.md`,我是谁、职责边界)、**公共行为**(`dingtalk-basic-behavior` Skill,何时响应/追问/沉默/收口)、**岗位能力**(`skills/<role>/SKILL.md`)、**存储路由**(`agent.bindings.json`,可选——等价配置也可来自宿主 context、环境变量或 Workspace manifest)。它依赖的 Agent Host、DWS、托管平台和事件源都不属于本项目。
56
-
57
- 完整的构成、依赖与边界见 [Architecture](docs/ARCHITECTURE.md#2-一个-agent-由什么构成模型-a)。
58
-
59
- **"文件存在"不是继承证据**——`agent audit --verify-load` 会把真实加载结果绑定到 Definition/Skill hash、Host 与模型版本、隔离探针和原始 run/export:
48
+ 先跑通这三条,不需要钉钉账号、不需要托管平台、不产生任何副作用:
60
49
 
61
50
  ```bash
62
- dta agent audit \
63
- --bindings agent.bindings.json \
64
- --require-skill <role-skill-name> \
65
- --verify-load --yes --json
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:岗位语义还是模板,这是正确结果
66
54
  ```
67
55
 
68
- ## 这个仓库分成哪几部分
69
-
70
- **行为内核**(事件 → 能否回应、回应给谁、允许做什么)、**装配与审计**(把仓库/目录/文档变成可 hash 的 Agent 并证明真加载)、**交付链**(受控上托管平台,每步可回读)、**评测与证据**(上线前用最低成本证明它真会做事)、**状态与记忆**(崩了之后接着做)、**机器与分发**(一条命令装好一台新机器)。
56
+ `release-manager` 是一个发布管理员数字员工的完整样例:它在群里接"这个版本能发吗",检查门禁、汇总结论、需要人确认才推进。把 `agent/AGENTS.md` 里的岗位职责换成你自己的,再跑一次 `agent audit`,缺口就只剩加载探针,那需要一个 Agent Host,见 [Compose Skill](skills/core/dta-agent-compose/SKILL.md)。
71
57
 
72
- 交付链与评测各占约四分之一代码量——这个项目的难点从来不是"让模型说话",而是证明它真的装好了、做对了、上线了。每部分解决什么问题、对应哪些模块与 CLI,见 [Architecture](docs/ARCHITECTURE.md#7-dingtalk-agent-分成哪几部分模型-c)。
58
+ ### 完整交付链
73
59
 
74
- ## 创建 → 测试 → 发布
75
-
76
- 四个阶段各有门禁:占位符没填完保持 `partial`;Skill 没真加载不能 ready;指定 Eval 没过不能 promote;没有证据不声称送达或完成。逐条见 [Architecture](docs/ARCHITECTURE.md#8-从定义到上线)。
60
+ <details>
61
+ <summary>创建 → 测试 → 发布的完整命令(有了托管平台归属再看)</summary>
77
62
 
78
63
  ```bash
79
64
  # 1. 创建零写入计划,再显式落盘
@@ -83,8 +68,8 @@ dta agent enhance --project-name release-agent --role-skill release-manager \
83
68
 
84
69
  # 2. 审计、运行与评测
85
70
  dta agent audit --bindings agent.bindings.json --require-skill release-manager --json
86
- dta workspace run local-dev --json
87
- 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
88
73
 
89
74
  # 3. 云端预检、发布与观测
90
75
  dta workspace inspect multica-dev --execute --yes --json
@@ -93,53 +78,100 @@ dta promote --source local-dev --target multica-dev --dry-run --json
93
78
  dta observe --promotion-id <promotion-id> --input <observation.json> --dry-run --json
94
79
  ```
95
80
 
96
- 所有计划默认零写入;所有远端写入都需要明确目标、当前 `planId` 和显式确认。
81
+ 所有计划默认零写入;所有远端写入都需要明确目标、当前 `planId` 和显式确认。`<plan-id>` 来自上一条 dry-run 输出的 `.planId`,`local-dev` / `multica-dev` 是你自己在 `dingtalk-agent.json#workspaces` 里声明的名字。四个阶段各有门禁:占位符没填完保持 `partial`;技能没真加载不能 ready;指定评测没过不能 promote;没有证据不声称送达或完成。逐条见 [Architecture](docs/ARCHITECTURE.md#8-开发生命周期从定义到观测)。
82
+
83
+ </details>
84
+
85
+ ## 它能做什么
86
+
87
+ 把一个 Agent 变成钉钉数字员工要走六段,dta 每一段都管:
88
+
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` |
97
+
98
+ ## 什么时候该用它
99
+
100
+ 适合用它的情况:
101
+
102
+ - 你已经有一个能跑的 Agent,想让它以组织身份进钉钉群,被 @、被派活;
103
+ - 你有钉钉自动化在跑,出过发错人、或者命令返回 0 就当成功这类事故;
104
+ - 你要做好几个数字员工,不想把公共行为在每份提示词里各复制一遍、越改越不一样;
105
+ - 你的活儿跨天、要等人确认、中途可能被叫停,不是一问一答;
106
+ - 你要向别人证明线上跑的就是你调好的那一版。
107
+
108
+ 用不上它的情况:
109
+
110
+ - 你只要一个问答机器人:一个钉钉机器人 webhook 就够了,这一套对你是多余的;
111
+ - 你只是要调钉钉 API:直接用 DWS,它本来就能用,dta 不是前置;
112
+ - 你不在钉钉生态:唯一的执行出口是 DWS、身份由钉钉签发,换不掉。
97
113
 
98
- 上面的占位符不是让你自己编的,各有确定来源:
114
+ 今天还做不到:把已经部署在别的平台上的 Agent 导入进来(数据只能从本地流向托管平台,没有 import 命令);事件触发器(Webhook、定时器)也不归本项目。
99
115
 
100
- | 占位符 | 从哪来 |
116
+ ## 今天的真实状态
117
+
118
+ | 环节 | 现在到哪一步 |
101
119
  |---|---|
102
- | `<plan-id>` | 上一条 `--dry-run --json` 输出的顶层 `.planId`。源码或配置一变它就失效,必须重新 dry-run |
103
- | `local-dev` / `multica-dev` | **你自己**在 `dingtalk-agent.json#workspaces` 里声明的 Workspace 名,不是内置值。样例见 [`lab/project-workspace/project.fixture.json`](lab/project-workspace/project.fixture.json) |
104
- | `<promotion-id>` | `dta promote --yes` 产出的 `promotion-receipt@1` 的 `.promotionId` |
105
- | `<role-skill-name>` | `skills/<role>/SKILL.md` frontmatter `name` |
120
+ | 六段里的前五段 | 已经成型 |
121
+ | 第六段(观测与计量) | 最薄的一段。用量计量(交互量、token、成本、按人按群的分布)还没做 |
122
+ | 托管平台 | Multica 已支持;DEAP 敬请期待;平台 SPI 还没合并进主干 |
123
+ | Agent Host | OpenCode 完整;Claude Codeadapter 还没实现 |
124
+ | 完成证据 | 核验这一侧已经实现、被合同锁住;签发这一侧还没接进公开命令 |
125
+ | 反向导入外部平台的 Agent | 没有这个命令,数据只能从本地流向平台 |
126
+ | 回归防线 | 62 个确定性合同,18 秒跑完 |
106
127
 
107
- ### 最小可运行路径(纯本地,三条命令)
128
+ ## 工作原理
108
129
 
109
- 想先看见东西动起来,不要从上面那串开始——那是完整交付链。从这里开始:
130
+ > **Skill 劝,CLI 拦,DWS 做。** Skill 负责判断什么时候、为什么该动手;命令行把身份、目标、预算固定住,管幂等和回读;真正的钉钉操作交给 DWS。
110
131
 
111
- ```bash
112
- cp -R examples/agents/release-manager my-agent && cd my-agent
113
- dta bootstrap --json # 本体被识别了吗:看 definition.status storage 路由
114
- dta agent audit --json # 预期 partial —— 岗位语义还是模板,这是正确结果
115
- ```
132
+ 这几条边界是结构上过不去的,不靠提示词请求模型别做:群聊里没 @ 它就不说话;命令行里根本没有发送目标这个参数,回复对象只能来自触发它的那条消息;报告完成必须附上宿主签发、能独立回读的证据。这三条都有确定性合同评测守着,改坏了会红。
133
+
134
+ **DWS 是钉钉侧的命令行工具**(独立于本项目,需单独 `dws auth login`),覆盖消息、文档、AI 表格、日程、审批等约 20 类产品能力。dta 不复制它的命令面,所有真实的钉钉操作最终都由 DWS 执行。
135
+
136
+ ## 常见疑问
137
+
138
+ **这是又一个 Agent 框架吗?**
139
+ 不是。它不带模型,也没有工具循环或 Agent 运行时。它给你的 Coding Agent 一套技能和一条命令行,让它把已有的 Agent 装配成钉钉数字员工。
116
140
 
117
- 到这一步不需要钉钉账号、不需要托管平台、不产生任何副作用。把 `AGENTS.md` 里的岗位语义填成真的,再跑一次 `agent audit`,缺口就只剩 `host.load-probe`——那需要一个 Agent Host,见 [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md)。上面第 3 组云端命令要等你有了 Multica 归属和已声明的 Workspace 才用得上。
141
+ **和 Claude Code、Codex 冲突吗?**
142
+ 不冲突,它就是给它们用的。`dta setup` 把技能装进这些 Coding Agent,之后用自然语言指挥它们就行;命令行也能单独用。
143
+
144
+ **我的 Agent 已经跑在别的平台上,能接进来吗?**
145
+ 本体(角色定义和技能)可以移植,在本地装配好再发布到托管平台。但现在没有从外部平台反向导入的命令,已支持的托管平台也只有 Multica。
146
+
147
+ **试一次要准备什么?**
148
+ 不需要钉钉账号,也不需要托管平台。装配、审计、`workspace run/eval` 和全部合同评测都能在本地跑完,`doctor` 会把缺的东西标成 `partial` 而不是报错。只有真发消息和真发布才需要 DWS 认证。
149
+
150
+ **要投多少人力?**
151
+ 第一个岗位主要花时间在写清楚职责上,代码基本不用碰:本体就是 Markdown,照示例改。加第二个岗位只改三个文件,不用动一行内核代码。
118
152
 
119
153
  ## 支持范围
120
154
 
121
- **Managed Agent Platform**(管 Workspace、Runtime、身份绑定与观测)、**Agent Host**(也叫 Harness,加载 Definition/Skills 并隔离执行)和 **dta Kernel** 三者彼此独立:
155
+ 托管平台、Agent Host 和 dta 内核是三件互相独立的东西:托管平台管 Workspace、Runtime 和观测,并把钉钉签发的身份绑到 Agent 上(签发权还在钉钉);Agent Host(也叫 Harness)加载定义和技能、隔离执行;dta 内核是本项目。
122
156
 
123
157
  | 维度 | 当前支持 |
124
158
  |---|---|
125
- | **Managed Platform** | Multica(DingTalk)已支持;DEAP Coming soon;更多平台通过 registry + adapter 接入 |
126
- | **本地运行** | Claude Code、Codex、OpenCode 等 Direct/Mounted Session;OpenCode 是当前最完整的本地 managed Harness 参考实现 |
127
- | **云上运行** | Multica Workspace / Runtime / Agent;沿用相同的 Definition、Skills、Gate 与证据合同 |
128
- | **交付身份** | 数字员工/账号身份;机器人应用身份;两者都不能改变角色职责或扩大权限 |
159
+ | **托管平台** | Multica(DingTalk)已支持;DEAP 敬请期待;接一个新平台走同一条路径:写一个平台技能包、在注册表登记一条记录 |
160
+ | **本地运行** | Claude Code、Codex、OpenCode 等 Direct/Mounted Session;OpenCode 是当前最完整的本地参考实现 |
161
+ | **云上运行** | Multica Workspace / Runtime / Agent;沿用相同的定义、技能、闸门与证据合同 |
162
+ | **交付身份** | 数字员工/账号身份、机器人应用身份,都由钉钉侧签发;两者都不能改变角色职责或扩大权限 |
129
163
 
130
- OpenCode 不是运行前提,Multica 也不是特殊旁路。任何 Harness 要进入可晋级路径,都必须证明同一件事:Definition 与 Skills 已加载、身份和隔离已固定、运行轨迹可取、结果可回读。"支持多平台"指架构、注册表和 adapter 合同可扩展,不把尚未开放的平台宣称为已部署或已 Live 验证。
164
+ DEAP 可能同时扮演两个角色:它现在对本项目最要紧的价值是钉钉侧的身份权限管控和感知/人机交互,是否再内建一层自己的运行平台还没定。见 [DEAP 平台说明](skills/platforms/deap/PLATFORM.md)。「支持多平台」指的是注册表和接入合同可以扩展,不把还没开放的平台说成已经部署或已 Live 验证。
131
165
 
132
166
  ### 三种运行模式
133
167
 
134
168
  | 模式 | 用于 | 关键边界 |
135
169
  |---|---|---|
136
170
  | **Direct Session** | 普通交互会话 | 无可信事件就不猜外发目标 |
137
- | **Mounted Session** | 挂载本地或钉钉语义内容 | 锁、幂等和 Receipt 不放进 Markdown |
171
+ | **Mounted Session** | 挂载本地或钉钉语义内容 | 锁、幂等和回执不放进 Markdown |
138
172
  | **Prepared Run** | 事件驱动的可靠副作用 | 动作只走 typed Broker 或 `dta act` |
139
173
 
140
- Prepared Run 只开放 `ack`、`reply`、`ask`、`silence` 四个消息原子动作。`ack` 不等于接单,`reply` 不等于对方接受。
141
-
142
- **触发器不属于本项目**:`listen` 只是本地联调的可替换 Adapter,`dta deploy` 不创建机器人、Webhook 或定时器。
174
+ Prepared Run 只开放 `ack`、`reply`、`ask`、`silence` 四个消息原子动作。`ack` 不等于接单,`reply` 不等于对方接受。触发器不归本项目:`listen` 只是本地联调用的可替换 Adapter,`dta deploy` 不创建机器人、Webhook 或定时器。
143
175
 
144
176
  ## 文档
145
177
 
@@ -147,12 +179,13 @@ Prepared Run 只开放 `ack`、`reply`、`ask`、`silence` 四个消息原子动
147
179
  |---|---|
148
180
  | 理解 Agent 架构与仓库分工 | [Architecture](docs/ARCHITECTURE.md) |
149
181
  | 安装、升级与排障 | [Installation](docs/INSTALLATION.md) |
182
+ | 接手一个已经在跑的 Agent(运行视角) | [Agent in Production](docs/AGENT-IN-PRODUCTION.md) |
150
183
  | 理解评测与证据分层 | [Self-test](docs/SELF-TEST.md) |
151
- | 创建或审计 Agent | [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md) |
152
- | 测试或调试已交付的 Agent | [Eval Skill](skills/core/dingtalk-agent-eval/SKILL.md) |
153
- | 查看公共行为协议(写给模型读的合同,不是教程) | [Basic Behavior Skill](skills/core/dingtalk-basic-behavior/SKILL.md) |
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) |
154
187
  | 复制一个完整示例开始改 | [Example Agents](examples/agents) |
155
- | 借鉴了哪些开源项目 | [Prior Art](docs/PRIOR-ART.md) |
188
+ | 从哪些平台与开源项目持续吸收最佳实践 | [Prior Art](docs/PRIOR-ART.md) |
156
189
 
157
190
  行为资产来自可观察合同、反例修正和可部署验证;本项目不声称获得任何产品的隐藏系统提示词原文。
158
191