@xdxer/dingtalk-agent 0.1.5-beta.5 → 0.1.5-beta.7

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 (131) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.en.md +6 -6
  3. package/README.md +6 -6
  4. package/dist/bin/dingtalk-agent.js +406 -139
  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 +29 -25
  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 +2 -2
  13. package/dist/src/agent-enhance.js.map +1 -1
  14. package/dist/src/agent-platform.js +2 -2
  15. package/dist/src/agent-platform.js.map +1 -1
  16. package/dist/src/development-workspace.js +14 -9
  17. package/dist/src/development-workspace.js.map +1 -1
  18. package/dist/src/doctor.js +58 -7
  19. package/dist/src/doctor.js.map +1 -1
  20. package/dist/src/dws.js +2 -1
  21. package/dist/src/dws.js.map +1 -1
  22. package/dist/src/init.js +2 -1
  23. package/dist/src/init.js.map +1 -1
  24. package/dist/src/map.js +157 -0
  25. package/dist/src/map.js.map +1 -0
  26. package/dist/src/opencode-evals.js +6 -6
  27. package/dist/src/opencode-evals.js.map +1 -1
  28. package/dist/src/opencode-provider.js +2 -2
  29. package/dist/src/opencode-provider.js.map +1 -1
  30. package/dist/src/opencode-workspace.js +3 -3
  31. package/dist/src/opencode-workspace.js.map +1 -1
  32. package/dist/src/personal-event-evals.js +4 -2
  33. package/dist/src/personal-event-evals.js.map +1 -1
  34. package/dist/src/remote-semantic-state-live-evals.js +5 -4
  35. package/dist/src/remote-semantic-state-live-evals.js.map +1 -1
  36. package/dist/src/remote-state-evals.js +2 -2
  37. package/dist/src/remote-state-evals.js.map +1 -1
  38. package/dist/src/robot-evals.js +3 -3
  39. package/dist/src/robot-evals.js.map +1 -1
  40. package/dist/src/schedule-plan.js +1 -1
  41. package/dist/src/schedule-plan.js.map +1 -1
  42. package/dist/src/sessions.js +1 -1
  43. package/dist/src/sessions.js.map +1 -1
  44. package/dist/src/skill-manager.js +74 -13
  45. package/dist/src/skill-manager.js.map +1 -1
  46. package/dist/src/tui.js +369 -0
  47. package/dist/src/tui.js.map +1 -0
  48. package/dist/src/upgrade.js +113 -33
  49. package/dist/src/upgrade.js.map +1 -1
  50. package/dist/src/waits.js +2 -1
  51. package/dist/src/waits.js.map +1 -1
  52. package/dist/src/workspace.js +2 -2
  53. package/dist/src/workspace.js.map +1 -1
  54. package/docs/ARCHITECTURE.md +9 -9
  55. package/docs/INSTALLATION.md +6 -6
  56. package/docs/SELF-TEST.md +3 -3
  57. package/docs/schemas/project.schema.json +2 -2
  58. package/examples/agents/README.md +1 -1
  59. package/examples/agents/fde-coach/agent/AGENTS.md +1 -1
  60. package/examples/agents/release-manager/agent/AGENTS.md +1 -1
  61. package/lab/agent-eval/catalog.json +5 -5
  62. package/lab/agent-eval/classic-failures.json +4 -4
  63. package/lab/agent-eval/completion-gate-regression.json +9 -9
  64. package/lab/agent-eval/personal-event-live.example.json +3 -3
  65. package/lab/agent-eval/remote-semantic-state-live.example.json +1 -1
  66. package/lab/agent-eval/workspace/opencode.json +2 -2
  67. package/lab/project-workspace/multica-readonly.fixture.json +2 -2
  68. package/lab/project-workspace/opencode-provider-suite.json +2 -2
  69. package/lab/project-workspace/project.fixture.json +1 -1
  70. package/lab/robot-eval/suite.json +1 -1
  71. package/lab/robot-eval/workspace/AGENTS.md +1 -1
  72. package/lab/robot-eval/workspace/opencode.json +2 -2
  73. package/lab/schemas/personal-event-eval.schema.json +1 -1
  74. package/package.json +8 -8
  75. package/skills/README.md +10 -7
  76. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +8 -8
  77. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/AGENTS.template.md +1 -1
  78. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/hosts/opencode/opencode.template.json +2 -2
  79. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/evals/evals.json +3 -3
  80. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md +1 -1
  81. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md +1 -1
  82. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md +2 -2
  83. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/SKILL.md +2 -2
  84. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/assets/eval-catalog.template.json +1 -1
  85. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/evals/evals.json +1 -1
  86. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/eval-topology.md +3 -3
  87. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/interactive-debug-channels.md +1 -1
  88. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/SKILL.md +2 -2
  89. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/event-to-behavior.md +1 -1
  90. package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/COMPLETENESS.md +1 -1
  91. package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/SKILL.md +2 -2
  92. package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/config-binding.md +1 -1
  93. package/skills/platforms/deap/PLATFORM.md +1 -1
  94. package/skills/platforms/multica-dingtalk/PLATFORM.md +4 -4
  95. package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/SKILL.md +3 -3
  96. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/SKILL.md +5 -5
  97. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/bootstrap.sh +2 -2
  98. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/REPOSITORY.template.md +0 -0
  99. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +0 -0
  100. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.local.template.json +0 -0
  101. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/role-skill.template.md +0 -0
  102. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/agent-definition-contract.md +0 -0
  103. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/drive-and-schedules.md +0 -0
  104. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/storage-routing.md +0 -0
  105. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/evidence-contract.md +0 -0
  106. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/failure-to-case.md +0 -0
  107. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/local-connector-smoke.md +0 -0
  108. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/scenario-taxonomy.md +0 -0
  109. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/storage-modes.md +0 -0
  110. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
  111. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/task-checkpoint.json +0 -0
  112. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/action-contract.md +0 -0
  113. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/memory-and-evolution.md +0 -0
  114. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/perception-and-gates.md +0 -0
  115. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/risk-authority-and-privacy.md +0 -0
  116. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/runtime-modes.md +0 -0
  117. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/task-lifecycle.md +0 -0
  118. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/truth-and-recovery.md +0 -0
  119. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/adapters.md +0 -0
  120. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/assembly-guidance.md +0 -0
  121. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/binding.md +0 -0
  122. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/cold-start.md +0 -0
  123. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/consent-and-visibility.md +0 -0
  124. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/consolidation.md +0 -0
  125. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/event-ingest.md +0 -0
  126. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/guided-setup.md +0 -0
  127. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/model.md +0 -0
  128. /package/skills/core/{dingtalk-people-group-memory → dta-people-group-memory}/references/storage-port.md +0 -0
  129. /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/multica-deployment-contract.md +0 -0
  130. /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
  131. /package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/multica_ext.py +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  本文回答四个问题:**一个数字员工是什么**、**它由什么构成**、**每件事谁说了算**、**这个仓库分成哪几部分、各解决什么问题**。
4
4
 
5
- 本文不写:安装与升级(见 [Installation](INSTALLATION.md))、评测方法与证据分层(见 [Self-test](SELF-TEST.md))、Agent 的行为协议(见 [Basic Behavior Skill](../skills/core/dingtalk-basic-behavior/SKILL.md))、发布历史(见 [CHANGELOG](../CHANGELOG.md))、进行中的工作(见 [roadmap](roadmap/))。
5
+ 本文不写:安装与升级(见 [Installation](INSTALLATION.md))、评测方法与证据分层(见 [Self-test](SELF-TEST.md))、Agent 的行为协议(见 [Basic Behavior Skill](../skills/core/dta-basic-behavior/SKILL.md))、发布历史(见 [CHANGELOG](../CHANGELOG.md))、进行中的工作(见 [roadmap](roadmap/))。
6
6
 
7
7
  ![dingtalk-agent 架构总览:五个部件、五个权威,本仓库只拥有一个](architecture/dingtalk-agent-architecture.svg)
8
8
 
@@ -65,7 +65,7 @@
65
65
  | 部件 | 回答什么 | 落在哪 | 谁生成 / 谁校验 |
66
66
  |---|---|---|---|
67
67
  | **本体 Definition** | 我是谁、服务谁、岗位底线、做事范式、常犯错误 | `agent/AGENTS.md` | `agent enhance` 生成骨架;`agent audit` 校验语义占位符是否已填 |
68
- | **公共行为** | 何时响应、如何追问、何时沉默、如何收口 | `agent/skills/dingtalk-basic-behavior` | 内核内置;`agent audit --verify-load` 证明它真被加载 |
68
+ | **公共行为** | 何时响应、如何追问、何时沉默、如何收口 | `agent/skills/dta-basic-behavior` | 内核内置;`agent audit --verify-load` 证明它真被加载 |
69
69
  | **岗位能力** | 某个岗位的方法、SOP、禁区、验收标准 | `agent/skills/<role>/SKILL.md` | 开发者编写;`--require-skill` 校验存在与加载 |
70
70
  | **存储路由** | 长期内容与私有控制状态各自去哪 | `agent.bindings.json`(可选) | `bootstrap` 归一成 `agent-definition@1`;缺省时按宿主 context > 环境变量 > Workspace manifest > 目录约定依次解析 |
71
71
 
@@ -131,7 +131,7 @@ Host 原生发现目录不是发布源。OpenCode 的 `.agents/skills/`、Claude
131
131
  - **外发类节律的留痕在动作之后,所以它没有锁。** 两个节律落在同一分钟并发唤醒,就会把同一条消息发两遍给第三方。多节律拆分必须错开触发时刻。
132
132
  - **Agent 不自建定时器、不自改节律。** 节律是可审计的部署产物;在线 Run 只能把新节律整理成候选交给 operator,不能自己配上再宣称配好了——这与 §1「在线 Run 不能热改身份、权限或已启用 Skill」是同一条边界的延伸。
133
133
 
134
- **本仓库在这一层拥有什么**:不拥有 cron,拥有三件事——装配时**声明**需要哪些节律与是否允许 Agent 自主排程(`dingtalk-agent-compose`);部署到具体平台时**校验**该平台是否真的提供这些能力、不提供就 fail closed(平台 Skill 包 + `agent-platform` 注册表);以及 Agent 侧被定时驱动时必须满足的**行为合同**(`dingtalk-basic-behavior`)。**平台之间能力不同是常态**——同一个 Agent 的节律声明可以不变,能不能被满足由目标平台回答。
134
+ **本仓库在这一层拥有什么**:不拥有 cron,拥有三件事——装配时**声明**需要哪些节律与是否允许 Agent 自主排程(`dta-agent-compose`);部署到具体平台时**校验**该平台是否真的提供这些能力、不提供就 fail closed(平台 Skill 包 + `agent-platform` 注册表);以及 Agent 侧被定时驱动时必须满足的**行为合同**(`dta-basic-behavior`)。**平台之间能力不同是常态**——同一个 Agent 的节律声明可以不变,能不能被满足由目标平台回答。
135
135
 
136
136
  ## 4. 谁拦住什么:Skill 劝,CLI 拦,DWS 做
137
137
 
@@ -159,7 +159,7 @@ Host 原生发现目录不是发布源。OpenCode 的 `.agents/skills/`、Claude
159
159
 
160
160
  **Field** 是一个稳定的协作与权限边界:它声明这一摊事归谁、用哪个 DWS 身份出口、允许对哪些人和会话行动。一个 Workspace 可以有多个 Field;Session 创建时从中取走冻结副本,正文和在线 Run 都改不了它。默认模板见 `templates/fields/default/field.json`。
161
161
 
162
- 三种模式的判定顺序与检测流程由 [Basic Behavior](../skills/core/dingtalk-basic-behavior/SKILL.md) 拥有;`init` 与 `bootstrap`、`setup` 的分工见 [Installation](INSTALLATION.md)。
162
+ 三种模式的判定顺序与检测流程由 [Basic Behavior](../skills/core/dta-basic-behavior/SKILL.md) 拥有;`init` 与 `bootstrap`、`setup` 的分工见 [Installation](INSTALLATION.md)。
163
163
 
164
164
  Prepared Run 只有四个公开对象:
165
165
 
@@ -230,9 +230,9 @@ dingtalk-doc:<node-or-url> DWS 拉取在线文档的只读快照
230
230
  | 部分 | 解决什么问题 | `src/` 模块 | 主要 CLI | 关联 Skill | ≈行数 |
231
231
  |---|---|---|---|---|---|
232
232
  | **1 行为内核** | 把一个外部事件变成"能不能回应、回应给谁、这次允许做什么"的确定性判断,并保证同一事件不被处理两次 | `events` `invocation` `perception` `response-gate` `sessions` `waits` `actions` `fields` `config` `lease` `driver` `workspace` `skills` `types` | `prepare` `run` `dispatch` `act` `listen` | — | 4.0k |
233
- | **2 装配与审计** | 让一个仓库、文件夹或钉钉文档变成可 hash、可继承的 Agent,并证明 Skill 真被加载而不只是文件存在 | `agent-definition` `agent-bindings` `bootstrap` `agent-audit` `agent-enhance` `instruction-path` | `bootstrap` `agent enhance` `agent audit` `info` | `dingtalk-agent-compose` | 3.4k |
233
+ | **2 装配与审计** | 让一个仓库、文件夹或钉钉文档变成可 hash、可继承的 Agent,并证明 Skill 真被加载而不只是文件存在 | `agent-definition` `agent-bindings` `bootstrap` `agent-audit` `agent-enhance` `instruction-path` | `bootstrap` `agent enhance` `agent audit` `info` | `dta-agent-compose` | 3.4k |
234
234
  | **3 交付链** | 把本地通过的版本,在不改身份和权限的前提下受控放上托管平台,每一步都能独立回读 | `development-workspace` `opencode-*` `multica-*` `promotion` `agent-platform` | `agent-platform` `workspace *` `deploy` `promote` `observe` | multica 平台包 ×3 | 6.4k |
235
- | **4 评测与证据** | 在花钱、外发和上线之前,用最低成本的层级证明它真会做事;失败沉淀成可复跑场景而不是一次口头修正 | `lab` `robot-evals` `opencode-evals` `remote-state-evals` `remote-semantic-state-*` `personal-event-evals` `storage-evals` `eval-evidence` | `lab *` `workspace eval` | `dingtalk-agent-eval` | 6.2k |
235
+ | **4 评测与证据** | 在花钱、外发和上线之前,用最低成本的层级证明它真会做事;失败沉淀成可复跑场景而不是一次口头修正 | `lab` `robot-evals` `opencode-evals` `remote-state-evals` `remote-semantic-state-*` `personal-event-evals` `storage-evals` `eval-evidence` | `lab *` `workspace eval` | `dta-agent-eval` | 6.2k |
236
236
  | **5 状态与记忆** | 让 Run 崩了、沙箱没了、进程换了之后,事情还能接着做;同时不让 Markdown 承担它承担不了的并发控制 | `memory/*` | `task show/checkpoint` `memory operational` `memory candidate` | — | 2.6k |
237
237
  | **6 机器与分发** | 一台新机器一条命令拿到 CLI、PATH、DWS 检查和 core Skill 套装,升级不产生第二份副本;并探测本机有哪些 Coding Agent Host 以及 Skill 对它们是否可见 | `setup` `doctor` `host-detect` `upgrade` `init` `skill-manager` `version` `package-root` | `setup` `doctor` `upgrade` `skill *` `init` | — | 1.4k |
238
238
  | **平台适配** | 全仓库唯一 spawn `dws` 的地方 | `dws` | — | — | 0.5k |
@@ -352,9 +352,9 @@ trusted W3 inspection + local Definition/Skill tree
352
352
  |---|---|
353
353
  | 安装、升级与排障 | [Installation](INSTALLATION.md) |
354
354
  | 评测方法、证据分层与晋级门禁 | [Self-test](SELF-TEST.md) |
355
- | 创建或审计一个 Agent | [Compose Skill](../skills/core/dingtalk-agent-compose/SKILL.md) |
356
- | 测试或调试已交付的 Agent | [Eval Skill](../skills/core/dingtalk-agent-eval/SKILL.md) |
357
- | 公共行为协议本身 | [Basic Behavior Skill](../skills/core/dingtalk-basic-behavior/SKILL.md) |
355
+ | 创建或审计一个 Agent | [Compose Skill](../skills/core/dta-agent-compose/SKILL.md) |
356
+ | 测试或调试已交付的 Agent | [Eval Skill](../skills/core/dta-agent-eval/SKILL.md) |
357
+ | 公共行为协议本身 | [Basic Behavior Skill](../skills/core/dta-basic-behavior/SKILL.md) |
358
358
  | DWS 与钉钉 API 的实战缺陷 | [DWS Field Notes](DWS-FIELD-NOTES.md) |
359
359
  | 借鉴了哪些开源项目、各自取了什么 | [Prior Art](PRIOR-ART.md) |
360
360
  | 尚未完成的工作 | [roadmap](roadmap/) |
@@ -124,7 +124,7 @@ dws auth login
124
124
 
125
125
  ```bash
126
126
  npx --yes --registry=https://registry.npmjs.org --package=skills@latest -- skills add \
127
- <package>/skills/core/dingtalk-basic-behavior \
127
+ <package>/skills/core/dta-basic-behavior \
128
128
  --global --yes --agent claude-code codex opencode
129
129
  ```
130
130
 
@@ -132,9 +132,9 @@ npx --yes --registry=https://registry.npmjs.org --package=skills@latest -- skill
132
132
 
133
133
  | 客户端 | 发现方式 | 路径 |
134
134
  |---|---|---|
135
- | Claude Code | 相对 symlink | `~/.claude/skills/dingtalk-basic-behavior` |
136
- | Codex | shared Agent Skills | `~/.agents/skills/dingtalk-basic-behavior` |
137
- | OpenCode | shared Agent Skills | `~/.agents/skills/dingtalk-basic-behavior` |
135
+ | Claude Code | 相对 symlink | `~/.claude/skills/dta-basic-behavior` |
136
+ | Codex | shared Agent Skills | `~/.agents/skills/dta-basic-behavior` |
137
+ | OpenCode | shared Agent Skills | `~/.agents/skills/dta-basic-behavior` |
138
138
 
139
139
  检查、重装当前 npm 包内版本和卸载:
140
140
 
@@ -155,11 +155,11 @@ OpenCode 官方同时支持 `.opencode/skills`、`.claude/skills` 和 `.agents/s
155
155
  ```bash
156
156
  # 有仓库权限
157
157
  npx skills add D1-2004/dingtalk-agent \
158
- --skill dingtalk-basic-behavior --global --yes \
158
+ --skill dta-basic-behavior --global --yes \
159
159
  --agent claude-code --agent codex --agent opencode
160
160
 
161
161
  # 本地 checkout
162
- npx skills add ./skills/core/dingtalk-basic-behavior \
162
+ npx skills add ./skills/core/dta-basic-behavior \
163
163
  --global --yes --agent claude-code --agent codex --agent opencode
164
164
  ```
165
165
 
package/docs/SELF-TEST.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dingtalk-agent 自测与持续进化
2
2
 
3
- 本文件记录**本仓库自己的**评测证据、基线与历史结论。可复用的测试方法——层级选择、证据面与硬门禁、交付后联调通道、本机 connector 烟测、失败如何进入迭代——全部由 `skills/core/dingtalk-agent-eval/` 承载并随 npm 包发布,这里不重复。
3
+ 本文件记录**本仓库自己的**评测证据、基线与历史结论。可复用的测试方法——层级选择、证据面与硬门禁、交付后联调通道、本机 connector 烟测、失败如何进入迭代——全部由 `skills/core/dta-agent-eval/` 承载并随 npm 包发布,这里不重复。
4
4
 
5
5
  ## 目标
6
6
 
@@ -69,7 +69,7 @@ npm run eval:contract # core 回归,确认没拖
69
69
 
70
70
  ### 多岗位 Agent 的隔离检查
71
71
 
72
- 同一个内核复制出第二个岗位 Agent 时(`examples/agents/` 有两份已通过同一合同的实例,做法见 [Compose Skill](../skills/core/dingtalk-agent-compose/SKILL.md)),合同 42 从两份 example 分别创建临时 Workspace,逐项检查:
72
+ 同一个内核复制出第二个岗位 Agent 时(`examples/agents/` 有两份已通过同一合同的实例,做法见 [Compose Skill](../skills/core/dta-agent-compose/SKILL.md)),合同 42 从两份 example 分别创建临时 Workspace,逐项检查:
73
73
 
74
74
  1. 初始化前 Direct bootstrap 可工作,且没有可信 target;
75
75
  2. 初始化后 `AGENTS.md`、Role Skill 与显式 Field 被正确采用;
@@ -101,7 +101,7 @@ npm run eval:behavior -- --eval 101,102 --runs 3
101
101
 
102
102
  # 迭代已有 Skill:当前工作树对上一版快照
103
103
  npm run eval:behavior -- \
104
- --baseline-skill /path/to/previous/dingtalk-basic-behavior \
104
+ --baseline-skill /path/to/previous/dta-basic-behavior \
105
105
  --model '<固定的完整模型 ID>' --runs 3
106
106
  ```
107
107
 
@@ -27,14 +27,14 @@
27
27
  "type": "array",
28
28
  "minItems": 1,
29
29
  "uniqueItems": true,
30
- "contains": { "const": "dingtalk-basic-behavior" },
30
+ "contains": { "const": "dta-basic-behavior" },
31
31
  "items": { "$ref": "#/$defs/name" }
32
32
  }
33
33
  }
34
34
  },
35
35
  "schedules": {
36
36
  "type": "array",
37
- "description": "Agent 内化的常驻节律(internalized cron),声明式、版本化。clock 只开窗,作用域/完成判据由 Skill 状态驱动。部署由 provider adapter 映射(Multica→autopilot)。见 dingtalk-agent-compose/references/drive-and-schedules.md",
37
+ "description": "Agent 内化的常驻节律(internalized cron),声明式、版本化。clock 只开窗,作用域/完成判据由 Skill 状态驱动。部署由 provider adapter 映射(Multica→autopilot)。见 dta-agent-compose/references/drive-and-schedules.md",
38
38
  "items": { "$ref": "#/$defs/schedule" }
39
39
  },
40
40
  "workspaces": {
@@ -38,7 +38,7 @@ dta bootstrap --bindings agent.bindings.json --json
38
38
  dta init && dta bootstrap --bindings agent.bindings.json --json
39
39
  ```
40
40
 
41
- 复制后 `agent audit` 会保持 `partial`,直到岗位语义真填完、并在所选 Host 上取得加载证据——**"文件已创建"不等于 Agent ready**。完整装配流程见 [Compose Skill](../../skills/core/dingtalk-agent-compose/SKILL.md),隔离性怎么验证见 [Self-test](../../docs/SELF-TEST.md#多岗位-agent-的隔离检查)。
41
+ 复制后 `agent audit` 会保持 `partial`,直到岗位语义真填完、并在所选 Host 上取得加载证据——**"文件已创建"不等于 Agent ready**。完整装配流程见 [Compose Skill](../../skills/core/dta-agent-compose/SKILL.md),隔离性怎么验证见 [Self-test](../../docs/SELF-TEST.md#多岗位-agent-的隔离检查)。
42
42
 
43
43
  ## 不包含
44
44
 
@@ -1,6 +1,6 @@
1
1
  # FDE 教练 Agent
2
2
 
3
- > 每个任务先应用 `dingtalk-basic-behavior`,再按需加载 Role Skills:`fde-coach`。本文件只定义角色差异,不扩大宿主、Skill 或工具授予的权限。
3
+ > 每个任务先应用 `dta-basic-behavior`,再按需加载 Role Skills:`fde-coach`。本文件只定义角色差异,不扩大宿主、Skill 或工具授予的权限。
4
4
 
5
5
  ## 定义
6
6
 
@@ -1,6 +1,6 @@
1
1
  # 发布经理 Agent
2
2
 
3
- > 每个任务先应用 `dingtalk-basic-behavior`,再按需加载 Role Skills:`release-manager`。本文件只定义角色差异,不扩大宿主、Skill 或工具授予的权限。
3
+ > 每个任务先应用 `dta-basic-behavior`,再按需加载 Role Skills:`release-manager`。本文件只定义角色差异,不扩大宿主、Skill 或工具授予的权限。
4
4
 
5
5
  ## 定义
6
6
 
@@ -13,7 +13,7 @@
13
13
  { "suite": "lab/robot-eval/suite.json", "ids": ["basic-skill-load"] },
14
14
  { "suite": "lab/agent-eval/classic-failures.json", "ids": ["basic-skill-load"] }
15
15
  ],
16
- "sourceRefs": ["skills/core/dingtalk-agent-compose/references/hosts/opencode.md"]
16
+ "sourceRefs": ["skills/core/dta-agent-compose/references/hosts/opencode.md"]
17
17
  },
18
18
  {
19
19
  "id": "conversation-contract",
@@ -25,7 +25,7 @@
25
25
  { "suite": "lab/robot-eval/suite.json", "ids": ["identity-default", "complete-directly", "clarify-once"] },
26
26
  { "suite": "lab/agent-eval/classic-failures.json", "ids": ["truncated-preview-not-source"] }
27
27
  ],
28
- "sourceRefs": ["skills/core/dingtalk-basic-behavior/SKILL.md"]
28
+ "sourceRefs": ["skills/core/dta-basic-behavior/SKILL.md"]
29
29
  },
30
30
  {
31
31
  "id": "authority-and-egress",
@@ -50,7 +50,7 @@
50
50
  { "suite": "lab/agent-eval/classic-failures.json", "ids": ["correction-closes-run", "tool-three-strikes"] },
51
51
  { "suite": "lab/agent-eval/completion-gate-regression.json", "ids": ["completion-saved-unverified"] }
52
52
  ],
53
- "sourceRefs": ["skills/core/dingtalk-basic-behavior/references/task-lifecycle.md"]
53
+ "sourceRefs": ["skills/core/dta-basic-behavior/references/task-lifecycle.md"]
54
54
  },
55
55
  {
56
56
  "id": "memory-and-storage",
@@ -64,7 +64,7 @@
64
64
  { "suite": "lab/agent-eval/remote-state.example.json", "ids": ["local-definition-dingtalk-doc-state"] },
65
65
  { "suite": "lab/agent-eval/remote-semantic-state-provider.fixture.json", "ids": ["phase-11a-fake-remote-state"] }
66
66
  ],
67
- "sourceRefs": ["skills/core/dingtalk-basic-behavior/references/memory-and-evolution.md"]
67
+ "sourceRefs": ["skills/core/dta-basic-behavior/references/memory-and-evolution.md"]
68
68
  },
69
69
  {
70
70
  "id": "workspace-and-artifacts",
@@ -76,7 +76,7 @@
76
76
  { "suite": "lab/agent-eval/classic-failures.json", "ids": ["workspace-artifact"] },
77
77
  { "suite": "lab/agent-eval/completion-gate-regression.json", "ids": ["completion-claim-missing-file", "completion-verified-artifact"] }
78
78
  ],
79
- "sourceRefs": ["skills/core/dingtalk-agent-eval/references/evidence-contract.md"]
79
+ "sourceRefs": ["skills/core/dta-agent-eval/references/evidence-contract.md"]
80
80
  },
81
81
  {
82
82
  "id": "platform-reliability",
@@ -14,7 +14,7 @@
14
14
  "capability": "basic-skill",
15
15
  "prompt": "只回显当前上下文中的随机加载探针。",
16
16
  "expectations": [{ "id": "placeholder", "type": "equals", "value": "runner-owned" }],
17
- "sourceRefs": ["skills/core/dingtalk-agent-compose/references/hosts/opencode.md"],
17
+ "sourceRefs": ["skills/core/dta-agent-compose/references/hosts/opencode.md"],
18
18
  "manualChecks": []
19
19
  },
20
20
  {
@@ -96,7 +96,7 @@
96
96
  { "id": "no-retry-or-bypass", "type": "notMatches", "pattern": "(?<!不)(?<!不建议)(?<!不应)(?<!不能)(?<!无需)(?<!不要)(?<!停止)(?<!别)(?:(?:我)?(?:建议|可以|会|将)\\s*)?(?:再试一次|再次尝试|重新尝试|继续重试|换账号|换个账号|绕过权限)", "flags": "u" },
97
97
  { "id": "no-question", "type": "maxQuestions", "max": 0 }
98
98
  ],
99
- "sourceRefs": ["skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md"],
99
+ "sourceRefs": ["skills/core/dta-basic-behavior/references/truth-and-recovery.md"],
100
100
  "manualChecks": ["legacy case id 仅为报告兼容;行为规则来自错误类型和运行时 retry budget,不来自固定三次"]
101
101
  },
102
102
  {
@@ -162,7 +162,7 @@
162
162
  { "id": "no-question", "type": "maxQuestions", "max": 0 }
163
163
  ],
164
164
  "postconditions": [
165
- { "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["dingtalk-basic-behavior"] },
165
+ { "id": "workspace-ready", "surface": "workspace", "type": "agentDefinition", "status": "ready", "requiredSkills": ["dta-basic-behavior"] },
166
166
  { "id": "handoff-exists", "surface": "artifact", "type": "pathExists", "path": "artifacts/eval-handoff.md", "kind": "file", "minBytes": 20 },
167
167
  { "id": "handoff-content", "surface": "artifact", "type": "textIncludesAll", "path": "artifacts/eval-handoff.md", "values": ["# 联调交付", "status: ready", "owner: local-agent"] },
168
168
  { "id": "manifest-exists", "surface": "artifact", "type": "pathExists", "path": "artifacts/manifest.json", "kind": "file", "minBytes": 40 },
@@ -170,7 +170,7 @@
170
170
  { "id": "manifest-target", "surface": "artifact", "type": "jsonEquals", "path": "artifacts/manifest.json", "pointer": "/artifact", "value": "artifacts/eval-handoff.md" },
171
171
  { "id": "no-fake-receipt", "surface": "filesystem", "type": "pathAbsent", "path": ".dingtalk-agent/receipts/forged.json" }
172
172
  ],
173
- "sourceRefs": ["dongxiang-workspace:wiki/concepts/working-style.md#failed-write-orphan", "skills/core/dingtalk-agent-eval/references/evidence-contract.md"],
173
+ "sourceRefs": ["dongxiang-workspace:wiki/concepts/working-style.md#failed-write-orphan", "skills/core/dta-agent-eval/references/evidence-contract.md"],
174
174
  "manualChecks": ["回复正确但任一产物缺失时整例失败"]
175
175
  }
176
176
  ]
@@ -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": ["dingtalk-basic-behavior"] },
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/dingtalk-basic-behavior/SKILL.md#新任务承接协议",
36
- "skills/core/dingtalk-agent-eval/references/evidence-contract.md#Artifact"
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": ["dingtalk-basic-behavior"] },
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/dingtalk-basic-behavior/SKILL.md#新任务承接协议",
65
- "skills/core/dingtalk-basic-behavior/references/task-lifecycle.md#VERIFY"
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": ["dingtalk-basic-behavior"] },
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/dingtalk-basic-behavior/references/task-lifecycle.md#VERIFY",
94
- "skills/core/dingtalk-agent-eval/references/evidence-contract.md#硬门禁顺序"
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": ["dingtalk-basic-behavior", "replace-with-role-skill"],
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": ["dingtalk-basic-behavior:群聊响应资格"]
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": ["dingtalk-basic-behavior:群聊未@默认沉默"]
28
+ "sourceRefs": ["dta-basic-behavior:群聊未@默认沉默"]
29
29
  },
30
30
  {
31
31
  "id": "duplicate-event",
@@ -51,7 +51,7 @@
51
51
  }
52
52
  },
53
53
  "requiredSkills": [
54
- "dingtalk-basic-behavior",
54
+ "dta-basic-behavior",
55
55
  "replace-with-role-skill-name"
56
56
  ],
57
57
  "evidenceRoot": ".dingtalk-agent/remote-semantic-state-live-results",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://opencode.ai/config.json",
3
3
  "instructions": [
4
- ".agents/skills/dingtalk-basic-behavior/SKILL.md"
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
- "dingtalk-basic-behavior": "allow"
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": "dingtalk-basic-behavior",
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": "dingtalk-basic-behavior",
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": ["dingtalk-basic-behavior", "release-manager"]
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/dingtalk-agent-eval/references/evidence-contract.md"
58
+ "skills/core/dta-agent-eval/references/evidence-contract.md"
59
59
  ],
60
60
  "manualChecks": [
61
61
  "工具轨迹对同一 Artifact completed write 后 completed read"
@@ -5,7 +5,7 @@
5
5
  "agent": {
6
6
  "definition": "AGENTS.md",
7
7
  "skills": [
8
- "dingtalk-basic-behavior",
8
+ "dta-basic-behavior",
9
9
  "release-manager"
10
10
  ]
11
11
  },
@@ -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=dingtalk-basic-behavior@0.12.0" }
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/dingtalk-basic-behavior/SKILL.md`。本文只定义验证员工的身份和测试边界,不复制 Basic Skill 的行为答案。
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/dingtalk-basic-behavior/SKILL.md"
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
- "dingtalk-basic-behavior": "allow"
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": "dingtalk-basic-behavior" },
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.5",
3
+ "version": "0.1.5-beta.7",
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/dingtalk-basic-behavior",
21
- "skills/core/dingtalk-agent-compose",
22
- "skills/core/dingtalk-people-group-memory",
23
- "skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica",
24
- "skills/core/dingtalk-agent-eval",
25
- "skills/platforms/multica-dingtalk/multica-external",
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",
@@ -59,7 +59,7 @@
59
59
  "eval:behavior": "npm run build && node evals/run-shadow-evals.mjs",
60
60
  "eval:opencode": "npm run build && node dist/bin/dingtalk-agent.js lab eval --engine opencode --workspace lab/robot-eval/workspace --suite lab/robot-eval/suite.json --lanes stateless --execute --yes --json",
61
61
  "prepack": "npm run build",
62
- "release:check": "node scripts/check-skill-versions.mjs && node scripts/check-docs.mjs && node evals/run-contract-evals.mjs --full && node scripts/release-readiness.mjs --json",
62
+ "release:check": "npm run build && node scripts/check-skill-versions.mjs && node scripts/check-docs.mjs && node evals/run-contract-evals.mjs --full && node scripts/release-readiness.mjs --json",
63
63
  "check:skill-versions": "node scripts/check-skill-versions.mjs",
64
64
  "check:docs": "node scripts/check-docs.mjs",
65
65
  "eval:contract:full": "npm run build && node evals/run-contract-evals.mjs --full"
package/skills/README.md CHANGED
@@ -4,19 +4,22 @@
4
4
 
5
5
  ```text
6
6
  skills/
7
- ├── core/ 所有钉钉数字员工通用,默认套装随 setup / skill install 安装
8
- │ ├── dingtalk-basic-behavior/ 基础行为协议(响应资格、追问、确认、沉默、完成标准)
9
- │ ├── dingtalk-agent-compose/ 创建/装配 Agent 的方法(含平台选择与发布链细则)
10
- └── dingtalk-agent-eval/ 评测方法:场景分类、多证据断言、晋级门禁
11
- └── platforms/ 按 Managed Agent Platform 分组,只在 `dta agent-platform use <name>` 时装填
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
- │ ├── dingtalk-agent-deploy-multica/ 经 dta 稳定 CLI 的受控部署、晋级与观测
14
- │ └── multica-external/ 平台运维执行体(纯 HTTPS,供给/绑定/观测/调度)
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: dingtalk-agent-compose
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.14.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` 对应 `dingtalk-agent-deploy-multica` 与 `multica-external`)。命令会同时输出 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 技能的用途、完整交付链与绑定/验收/解绑方式,再开始平台侧操作。
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
- `dingtalk-people-group-memory` 属于**默认套装**,`dta setup` 就装上了。它让 Agent 能为长期打交道的**同事**和**会话(群/单聊)**各自维护档案。
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-external`(`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。
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
- 装配或部署完成后,用户下一句通常是“怎么测一下”。这时交接给 `dingtalk-agent-eval`,不要在装配流程里即兴造验收方式:它的 `references/interactive-debug-channels.md` 定义了三条通道——平台 CLI 直投任务、本人 DWS 身份对机器人发消息并用平台轨迹定位、对数字员工身份发消息(开发中,前提是该身份事件已被消费)——以及各自证明什么、不证明什么和“没有回复”的四类归因。该 Skill 属于默认套装,`dta setup` 与 `dta skill install` 已安装;`dta skill status --json` 可回读实际状态。装配侧只负责把机器人绑好并交出 Agent ID,不负责给行为打分。
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
- │ ├── dingtalk-basic-behavior/
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
- 下一步:交给 `dingtalk-agent-eval` 选联调通道(CLI 直投 / 机器人 / 数字员工)并留证据
172
+ 下一步:交给 `dta-agent-eval` 选联调通道(CLI 直投 / 机器人 / 数字员工)并留证据
173
173
  非范围:事件监听、定时器、Webhook、行为评分
174
174
  ```
175
175