@xdxer/dingtalk-agent 0.1.4-beta.9 → 0.1.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +229 -0
- package/README.en.md +89 -324
- package/README.md +88 -674
- package/dist/bin/dingtalk-agent.js +207 -21
- package/dist/bin/dingtalk-agent.js.map +1 -1
- package/dist/src/agent-audit.js +1014 -89
- package/dist/src/agent-audit.js.map +1 -1
- package/dist/src/agent-enhance.js +41 -8
- package/dist/src/agent-enhance.js.map +1 -1
- package/dist/src/agent-platform.js +299 -0
- package/dist/src/agent-platform.js.map +1 -0
- package/dist/src/config.js +1 -7
- package/dist/src/config.js.map +1 -1
- package/dist/src/development-workspace.js +31 -5
- package/dist/src/development-workspace.js.map +1 -1
- package/dist/src/doctor.js +74 -15
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/host-detect.js +146 -0
- package/dist/src/host-detect.js.map +1 -0
- package/dist/src/instruction-path.js +270 -0
- package/dist/src/instruction-path.js.map +1 -0
- package/dist/src/multica-deploy.js +78 -20
- package/dist/src/multica-deploy.js.map +1 -1
- package/dist/src/multica-provider.js +1 -1
- package/dist/src/multica-provider.js.map +1 -1
- package/dist/src/opencode-evals.js +710 -225
- package/dist/src/opencode-evals.js.map +1 -1
- package/dist/src/opencode-isolation.js +124 -0
- package/dist/src/opencode-isolation.js.map +1 -0
- package/dist/src/opencode-provider.js +1 -0
- package/dist/src/opencode-provider.js.map +1 -1
- package/dist/src/opencode-workspace.js +21 -10
- package/dist/src/opencode-workspace.js.map +1 -1
- package/dist/src/remote-state-evals.js +2 -1
- package/dist/src/remote-state-evals.js.map +1 -1
- package/dist/src/robot-evals.js +2 -1
- package/dist/src/robot-evals.js.map +1 -1
- package/dist/src/setup.js +6 -5
- package/dist/src/setup.js.map +1 -1
- package/dist/src/skill-manager.js +141 -12
- package/dist/src/skill-manager.js.map +1 -1
- package/dist/src/skills.js +2 -1
- package/dist/src/skills.js.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/upgrade.js +23 -27
- package/dist/src/upgrade.js.map +1 -1
- package/dist/src/version.js +73 -0
- package/dist/src/version.js.map +1 -0
- package/docs/ARCHITECTURE.md +232 -0
- package/docs/INSTALLATION.md +3 -3
- package/docs/PRIOR-ART.md +122 -0
- package/docs/SELF-TEST.md +182 -0
- package/docs/assets/agent-delivery-lifecycle.svg +103 -0
- package/docs/schemas/agent-platform.schema.json +13 -0
- package/docs/schemas/project.schema.json +3 -0
- package/docs/schemas/release-readiness.schema.json +2 -1
- package/evals/README.md +17 -0
- package/examples/agents/README.md +43 -0
- package/examples/agents/fde-coach/AGENTS.md +26 -17
- package/examples/agents/release-manager/AGENTS.md +26 -17
- package/lab/README.md +3 -3
- package/lab/agent-eval/catalog.json +5 -5
- package/lab/agent-eval/classic-failures.json +9 -9
- package/lab/agent-eval/completion-gate-regression.json +6 -6
- package/lab/agent-eval/remote-state-workspace/opencode.json +1 -1
- package/lab/agent-eval/workspace/AGENTS.md +1 -1
- package/lab/project-workspace/fake-multica-provider.mjs +17 -6
- package/lab/project-workspace/opencode-provider-suite.json +2 -2
- package/lab/robot-eval/suite.json +1 -1
- package/lab/robot-eval/workspace/AGENTS.md +1 -1
- package/lab/schemas/agent-eval-catalog.schema.json +1 -1
- package/package.json +18 -13
- package/skills/README.md +23 -0
- package/skills/core/dingtalk-agent-compose/SKILL.md +151 -0
- package/skills/core/dingtalk-agent-compose/assets/AGENTS.template.md +35 -0
- package/skills/core/dingtalk-agent-compose/assets/role-skill.template.md +32 -0
- package/skills/core/dingtalk-agent-compose/evals/evals.json +129 -0
- package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/references/agent-definition-contract.md +3 -3
- package/skills/core/dingtalk-agent-compose/references/host-loading-contract.md +58 -0
- package/skills/core/dingtalk-agent-compose/references/hosts/claude-code.md +48 -0
- package/skills/core/dingtalk-agent-compose/references/hosts/opencode.md +77 -0
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/SKILL.md +57 -8
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/assets/eval-catalog.template.json +1 -1
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/evals/evals.json +22 -0
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/eval-topology.md +14 -0
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/evidence-contract.md +21 -0
- package/skills/core/dingtalk-agent-eval/references/failure-to-case.md +35 -0
- package/skills/core/dingtalk-agent-eval/references/interactive-debug-channels.md +93 -0
- package/skills/core/dingtalk-agent-eval/references/local-connector-smoke.md +75 -0
- package/skills/core/dingtalk-basic-behavior/SKILL.md +87 -0
- package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/memory-and-evolution.md +12 -0
- package/skills/core/dingtalk-basic-behavior/references/risk-authority-and-privacy.md +62 -0
- package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/task-lifecycle.md +15 -3
- package/skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md +65 -0
- package/skills/platforms/deap/PLATFORM.md +3 -0
- package/skills/platforms/multica-dingtalk/PLATFORM.md +40 -0
- package/skills/{dingtalk-agent-boot-multica → platforms/multica-dingtalk/dingtalk-agent-boot-multica}/SKILL.md +4 -4
- package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/SKILL.md +1 -1
- package/skills/platforms/multica-dingtalk/multica-external/SKILL.md +282 -0
- package/skills/platforms/multica-dingtalk/multica-external/scripts/bootstrap.sh +78 -0
- package/skills/platforms/multica-dingtalk/multica-external/scripts/multica_ext.py +1180 -0
- package/docs/SECOND-AGENT-ACCEPTANCE.md +0 -62
- package/docs/architecture/agent-memory-topology.png +0 -0
- package/docs/architecture/agent-memory-topology.svg +0 -132
- package/docs/architecture/dingtalk-agent-blueprint.png +0 -0
- package/docs/architecture/durable-async-agent-runtime.png +0 -0
- package/docs/architecture/general-agent-kernel-topology.png +0 -0
- package/docs/architecture/provider-bound-development-workspace.png +0 -0
- package/docs/architecture/task-completion-gate.png +0 -0
- package/skills/dingtalk-agent-compose/SKILL.md +0 -110
- package/skills/dingtalk-agent-compose/assets/AGENTS.template.md +0 -26
- package/skills/dingtalk-agent-compose/assets/role-skill.template.md +0 -24
- package/skills/dingtalk-agent-compose/evals/evals.json +0 -94
- package/skills/dingtalk-agent-compose/references/opencode-host-contract.md +0 -65
- package/skills/dingtalk-basic-behavior/SKILL.md +0 -146
- /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +0 -0
- /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/assets/agent.bindings.local.template.json +0 -0
- /package/skills/{dingtalk-agent-compose/assets → core/dingtalk-agent-compose/assets/hosts/opencode}/opencode.template.json +0 -0
- /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/references/storage-routing.md +0 -0
- /package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/scenario-taxonomy.md +0 -0
- /package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/storage-modes.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/assets/task-checkpoint.json +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/action-contract.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/event-to-behavior.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/perception-and-gates.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/runtime-modes.md +0 -0
- /package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/references/multica-deployment-contract.md +0 -0
- /package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/references/promotion-observation-contract.md +0 -0
package/README.md
CHANGED
|
@@ -2,744 +2,158 @@
|
|
|
2
2
|
|
|
3
3
|
# dingtalk-agent
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**让数字员工继承同一套可验证的行为底座。**
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@xdxer/dingtalk-agent)
|
|
8
8
|
[](https://github.com/D1-2004/dingtalk-agent/actions/workflows/ci.yml)
|
|
9
9
|
[](https://nodejs.org/)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
|
|
12
|
-
[
|
|
12
|
+
[快速开始](#快速开始) · [一个 Agent 由什么构成](#一个-agent-由什么构成) · [仓库分成哪几部分](#这个仓库分成哪几部分) · [文档](#文档)
|
|
13
13
|
|
|
14
|
-
[English](README.en.md)
|
|
14
|
+
简体中文 · [English](README.en.md)
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
`dingtalk-agent`(`dta`)是钉钉数字员工的 **Skill-first 行为内核与交付工具链**。它把角色定义、公共行为、岗位能力和执行门禁装配成一个可创建、测试、发布和审计的 Agent Project。
|
|
19
19
|
|
|
20
|
-
**
|
|
20
|
+
> **Skill 劝,CLI 拦,DWS 做。** Skill 判断何时、为何行动;CLI 固定身份、目标、预算、幂等与回读;DWS 执行钉钉能力。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
其中 **DWS 是钉钉侧的命令行工具**(独立于本项目,需单独安装并 `dws auth login`),涵盖消息、文档、AI 表格、日程、审批等约 20 类产品能力。`dta` 不复制它的命令面,只在需要冻结身份、目标、幂等或回读时包一层——**所有真实的钉钉操作最终都由 DWS 执行**。
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
Agent Host + dta Kernel + Agent Definition + Basic Behavior + Role Skills + DWS
|
|
26
|
-
= 一个可以持续工作的钉钉数字员工
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
| 层 | 负责什么 | 不负责什么 |
|
|
30
|
-
|---|---|---|
|
|
31
|
-
| **Agent Definition** | 我是谁、负责什么、服务谁、能用哪些 Skill/资源/权限 | 不保存当前 Run,不从消息正文猜 ID |
|
|
32
|
-
| **Basic + Role Skills** | 何时说/问/静默,以及岗位任务怎么做 | 不绕过身份、目标和副作用门禁 |
|
|
33
|
-
| **dta Kernel** | Invocation、感知补齐、Session/Run/Wait、Action Gate、Receipt | 不内置模型,不监听所有事件,不复制 DWS |
|
|
34
|
-
| **DWS** | 消息、文档、待办、日历、表格等平台能力 | 不替 Agent 决定应不应该做、对谁做 |
|
|
35
|
-
|
|
36
|
-
Claude Code、Codex 或其他 Agent Host 都能使用这套内核;触发 Adapter、模型、沙箱、岗位 Skill 与存储 Provider 都可以替换。
|
|
37
|
-
|
|
38
|
-
## 为什么需要它
|
|
39
|
-
|
|
40
|
-
如果开发者只是偶尔手工调用一次钉钉能力,DWS 已经足够;如果要把 Agent 逐步发展成真正干活的数字员工,还必须长期维护**员工本体 + 员工状态 + 受约束的行动边界**。“会调用钉钉 API”不等于“会像员工一样工作”,真实协作还要求 Agent:
|
|
41
|
-
|
|
42
|
-
- 群里未被提及时默认不抢话,被 `@` 或私聊时才获得响应资格;
|
|
43
|
-
- 信息完整就直接交付,只有真正阻塞时才问一个问题;
|
|
44
|
-
- 不从消息正文猜收件人、身份、文档 ID 或权限;
|
|
45
|
-
- 长任务能确认收到、等待依赖、从下一条事件继续,而不是假装一直在线;
|
|
46
|
-
- 区分“命令执行过”“平台写入成功”“回读可见”和“对方确认”;
|
|
47
|
-
- 将任务状态、长期记忆、运行时锁和幂等回执放在正确的介质。
|
|
24
|
+

|
|
48
25
|
|
|
49
|
-
|
|
26
|
+
## 快速开始
|
|
50
27
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
## 两分钟开始
|
|
54
|
-
|
|
55
|
-
> 要求 Node.js 18.3+。CLI 固定安装到用户目录 `~/.local`,不依赖系统级写权限。
|
|
28
|
+
要求 Node.js 18.3+。
|
|
56
29
|
|
|
57
30
|
```bash
|
|
58
31
|
npm install --global --prefix "$HOME/.local" \
|
|
59
32
|
--registry=https://registry.npmjs.org @xdxer/dingtalk-agent@beta
|
|
60
|
-
"$HOME/.local/bin/dta" setup --skip-cli-install
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
这里不使用 `npx @xdxer/dingtalk-agent...` 启动自身。Why:机器上已有旧版 `dta` 时,npm exec 可能复用 PATH 中的旧 binary;`npm install --prefix` 会确定性替换用户级版本,随后绝对路径不依赖当前 shell 是否已刷新 PATH。
|
|
64
|
-
|
|
65
|
-
`setup` 会按顺序完成四件事:
|
|
66
|
-
|
|
67
|
-
1. 将 CLI 安装到用户目录 `~/.local/bin`,必要时幂等补充 shell PATH;
|
|
68
|
-
2. 检查 Node.js、DWS 版本和 `dws auth status`;
|
|
69
|
-
3. 安装并验证 Basic Behavior Skill;
|
|
70
|
-
4. 报告 Claude Code、Codex、OpenCode 是否能够发现 Skill。
|
|
71
|
-
|
|
72
|
-
当前终端尚未加载新 PATH 时,setup 会打印一条可直接执行的 `export PATH=...`。验证结果:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
dta --version
|
|
76
|
-
dta doctor
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
之后升级不再重复安装步骤,直接运行:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
dta upgrade # beta 版默认继续跟随 beta
|
|
83
|
-
dta upgrade --channel latest # 显式切换稳定通道
|
|
84
|
-
dta upgrade --dry-run # 只查看目标版本和将执行的命令
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
升级完成后,新的 CLI 会自动重新执行 setup,复核 PATH、DWS、Skill 与三个 Agent 客户端。
|
|
88
|
-
|
|
89
|
-
从源码准备 beta 时,使用确定性 release readiness:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
npm run release:check
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
它会生成真实 npm tarball,在全新 HOME/prefix 中离线安装,再运行 `setup/doctor/bootstrap/lab eval` plan、同 tarball 强制升级和显式回滚 dry-run。测试只用 fake DWS 和 fake skills installer,不发送钉钉消息、不访问 Multica、不创建 Trigger,也不执行 npm publish、Tag 或 GitHub Release。
|
|
96
33
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
```text
|
|
102
|
-
~/.agents/skills/dingtalk-basic-behavior/ # Codex、OpenCode 直接发现
|
|
103
|
-
~/.claude/skills/dingtalk-basic-behavior # Claude Code → canonical 相对链接
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
如果只想临时运行、不做用户级安装,任何命令都可以通过 npm exec 执行:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
34
|
+
# setup 会把 PATH 区块写进 ~/.zshrc 或 ~/.bashrc,但子进程改不了当前 shell,
|
|
35
|
+
# 所以这一轮继续用绝对路径;之后开新终端即可直接用 `dta`。
|
|
36
|
+
"$HOME/.local/bin/dta" setup --skip-cli-install
|
|
109
37
|
"$HOME/.local/bin/dta" doctor
|
|
110
|
-
"$HOME/.local/bin/dta" skill install
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
也兼容开放的 `skills` CLI。仓库有访问权限时,可只安装 Skill 到三个客户端:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
npx skills add D1-2004/dingtalk-agent \
|
|
117
|
-
--skill dingtalk-basic-behavior --global --yes \
|
|
118
|
-
--agent claude-code --agent codex --agent opencode
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
从本地 checkout 安装则使用:
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
npx skills add ./skills/dingtalk-basic-behavior \
|
|
125
|
-
--global --yes --agent claude-code --agent codex --agent opencode
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
`dta skill install` 内部也直接委托 `npx skills add`,不再维护独立的复制、软链、marker 或卸载链路。`npx skills` 只安装行为说明,不安装 `dingtalk-agent` CLI,也不检查 DWS;需要真实执行钉钉动作时仍应运行 `setup` 或 `doctor`。完整排障见 [安装与首次使用](docs/INSTALLATION.md)。
|
|
129
|
-
|
|
130
|
-
普通 Agent 会话无需初始化项目。进入任意目录后可直接发现上下文:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
dta bootstrap --json
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
只有可信事件宿主需要冻结目标并建立 Prepared Run:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
mkdir fde-coach && cd fde-coach
|
|
140
|
-
dta init
|
|
141
|
-
dta prepare --event-file event.json --json
|
|
142
38
|
```
|
|
143
39
|
|
|
144
|
-
|
|
40
|
+
`setup` 安装 Basic Behavior、Compose 与 Eval Skills,并检查 DWS 认证和常见 Agent Host。普通会话无需初始化 Workspace。
|
|
145
41
|
|
|
146
|
-
|
|
42
|
+
**纯本地能走多远**:装配、审计、`workspace run/eval` 与全部合同评测都不需要钉钉账号或托管平台——`doctor` 会把缺失项标成 `partial` 而不是失败。只有真实外发、远端语义状态和 `deploy`/`promote` 才需要 DWS 认证与 Multica。
|
|
147
43
|
|
|
148
|
-
|
|
149
|
-
|---|---:|---|---|
|
|
150
|
-
| **Direct Session** | 不需要 | 当前请求与宿主提供的信息 | 普通 Claude Code / Codex 会话 |
|
|
151
|
-
| **Mounted Session** | 不需要 | 本地 Markdown 或钉钉文档快照 | 带身份、记忆和知识的长期员工 |
|
|
152
|
-
| **Prepared Run** | Workspace 一次性初始化 | 可信事件冻结的目标、身份与策略 | 自动化事件处理和强可靠外发 |
|
|
153
|
-
|
|
154
|
-
本地内容直接挂载,不复制:
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
dingtalk-agent bootstrap --storage local-dir:/path/to/workspace --json
|
|
158
|
-
|
|
159
|
-
# 等价的新名称;GitHub 仓库先由宿主 checkout
|
|
160
|
-
dingtalk-agent bootstrap --agent local-dir:/path/to/checkout --json
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
远端内容由 DWS 探测并拉成隐藏的只读快照:
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
dingtalk-agent bootstrap \
|
|
167
|
-
--storage 'dingtalk-doc:<node-id-or-url>' \
|
|
168
|
-
--state-dir /path/to/session-state \
|
|
169
|
-
--json
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
本体、岗位 Skill 和持久化可以独立路由,不要求绑死在同一介质:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
dta bootstrap \
|
|
176
|
-
--agent local-dir:/path/to/agent \
|
|
177
|
-
--skills local-dir:/path/to/agent/skills \
|
|
178
|
-
--memory local-md:MEMORY.md \
|
|
179
|
-
--knowledge 'dingtalk-doc:<knowledge-node>' \
|
|
180
|
-
--artifacts local-dir:/path/to/artifacts --json
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
也可以由宿主 context、环境变量或 Workspace 提供。优先级固定为:**CLI 显式参数 > 宿主 context > 环境变量 > Workspace > 目录约定**。环境变量为 `DTA_AGENT_SOURCE`、`DTA_MEMORY_STORAGE`、`DTA_KNOWLEDGE_STORAGE`、`DTA_SKILLS_SOURCE`、`DTA_ARTIFACTS_STORAGE`、`DTA_STATE_DIR`、`DTA_DWS_PROFILE` 和 `DTA_EXPECTED_USER_ID`;输出中的 `definition.configuration` 会保留每项来源。
|
|
184
|
-
|
|
185
|
-
### 四个消息原子行为
|
|
186
|
-
|
|
187
|
-
Prepared Run 只开放四个消息动作:
|
|
188
|
-
|
|
189
|
-
```bash
|
|
190
|
-
dingtalk-agent act ack
|
|
191
|
-
dingtalk-agent act reply --text-file reply.txt
|
|
192
|
-
dingtalk-agent act ask --text "一个真正阻塞的问题"
|
|
193
|
-
dingtalk-agent act silence --reason unmentioned
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
| 动作 | 员工语义 | 关键边界 |
|
|
197
|
-
|---|---|---|
|
|
198
|
-
| `ack` | 看到了,确实需要时间处理 | 不等于接单、承诺或完成 |
|
|
199
|
-
| `reply` | 已有可交付结果 | 只回复原消息,CLI 没有 `--to` |
|
|
200
|
-
| `ask` | 缺少阻塞信息 | 一次只问一个问题,随后释放沙箱等待事件 |
|
|
201
|
-
| `silence` | 有意识地不打扰 | 仍留下结构化 reason 和本地回执 |
|
|
202
|
-
|
|
203
|
-
文档写入、待办创建等能力继续由 DWS 提供。只有当一个员工意图需要固定作用域、权限、幂等、回读、状态迁移或跨产品组合时,才值得包装成新的 CLI 动作。
|
|
204
|
-
|
|
205
|
-
## 架构
|
|
206
|
-
|
|
207
|
-

|
|
208
|
-
|
|
209
|
-
dta 的边界从标准化 `InvocationContext` 开始。消息监听、定时器、Webhook 或其它触发器在外部;它们只需提供可信 actor、target、conversation、mode 与 sessionKey。没有可信事件时默认进入 `direct`,Agent 仍像正在和用户对话的员工一样正常工作,但不会凭空获得一个可外发的钉钉目标。
|
|
210
|
-
|
|
211
|
-
## 从一个 Agent 到所有 Agent
|
|
212
|
-
|
|
213
|
-
任何数字员工都绕不开四件事:**感知、身份、执行记忆、受约束的行动**。因此,复制一个 Agent 不应复制整套 Prompt 和脚本,而应组装同一个内核:
|
|
214
|
-
|
|
215
|
-
| 可共享 | 按 Agent 叠加 |
|
|
216
|
-
|---|---|
|
|
217
|
-
| Basic Behavior、Invocation、Session/Run/Wait、双半闸门、Receipt 协议 | 身份、职责、服务对象、Role Skills、知识源、业务事实源、权限 allowlist |
|
|
218
|
-
|
|
219
|
-
`Agent Definition` 是这组差异的一等合同,至少描述:
|
|
220
|
-
|
|
221
|
-
```text
|
|
222
|
-
identity + responsibilities + serviceScope + roleSkills
|
|
223
|
-
+ storageBindings + authority + refusalBoundaries
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Session 创建时冻结 Definition 与 Skill snapshot;在线 Run 可以提出记忆或 Skill candidate,但不能热修改当前身份、权限和已启用 Skill。这样 FDE 教练、招聘助理与运维助手可以共用内核,又不会互相污染职责和数据。
|
|
227
|
-
|
|
228
|
-
### 角色身份、执行身份与委托
|
|
229
|
-
|
|
230
|
-
**我们的一个 Agent = 角色本体或委托 + 沙箱中的实际 DWS 执行身份 + Workspace/Skills + 可恢复状态;机器人、真实 IM 或标准大脑只是输入渠道,不是 Agent 本体。**
|
|
231
|
-
|
|
232
|
-
这里有两条必须分开的身份轴:
|
|
233
|
-
|
|
234
|
-
| 身份轴 | 回答什么 | 可能形态 |
|
|
235
|
-
|---|---|---|
|
|
236
|
-
| **角色/委托身份** | 我是什么角色、要完成什么、服务谁、受谁委托、允许做什么 | 固定岗位;代表某人/团队工作的受托 Agent |
|
|
237
|
-
| **DWS 执行身份** | 沙箱里实际由哪个钉钉账号读取或写入 | 跟随当前聊天者;固定为专用员工/服务账号 |
|
|
238
|
-
|
|
239
|
-
两者相同时,Agent 是以自己的平台身份履行自己的职责,可视为“本体模式”;两者不同时,是明确的委托关系。委托不会扩大权限:动作必须同时满足角色职责、委托范围和实际 DWS 身份权限,平台回执也必须记录真实执行者,不能把“代表谁”写成“实际由谁执行”。
|
|
240
|
-
|
|
241
|
-
当前 `agent-definition@1` 会把 `authority.dwsProfile/expectedUserId` 冻结到 Session。固定身份直接来自 Workspace;“跟随聊天者”由可信宿主在 Session 创建前通过 context/显式配置注入,进入 Session 后同样不可漂移。角色、委托方和职责目前由 `AGENTS.md`/Role Skill 表达;后续若要自动审计委托链,应再把 principal、delegator 和 binding mode 升级为结构化合同,而不是从自然语言或消息正文猜测。
|
|
242
|
-
|
|
243
|
-
无论消息来自机器人 connector、真实 personal-event,还是另一个标准化大脑/Agent Host,进入 dta 后都应归一成 Invocation。机器人渠道下也仍像同事一样回复;渠道只决定可获得的 envelope 和谁拥有外发权,不改变角色本体。
|
|
244
|
-
|
|
245
|
-
### 用仓库或文件夹定义 XXX Agent
|
|
246
|
-
|
|
247
|
-
最小可工作装配只有两组输入:
|
|
248
|
-
|
|
249
|
-
```text
|
|
250
|
-
本体:本地 AGENTS.md + Basic Behavior + 本地 Role Skills
|
|
251
|
-
路由:memory + knowledge + artifacts + private state + DWS authority
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
GitHub 作为版本化发布面:宿主负责 clone、凭证和更新,dta 从本地 checkout 读取本体并记录 HEAD;普通文件夹直接挂载。memory/knowledge 可以继续留在本地,也可以路由到专用钉钉文档;`agent.bindings.json` 把这些选择固化为 [`agent-bindings@1`](docs/schemas/agent-bindings.schema.json)。Prepared Session 首次创建时冻结 [`AgentDefinition`](docs/schemas/agent-definition.schema.json),后续消息生成 [`InvocationContext`](docs/schemas/invocation.schema.json)。
|
|
255
|
-
|
|
256
|
-
需要让 Agent 辅导已有材料按这个范式补齐时,可额外安装装配 Skill:
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
dta skill install dingtalk-agent-compose
|
|
260
|
-
```
|
|
44
|
+
## 为什么需要它
|
|
261
45
|
|
|
262
|
-
|
|
46
|
+
模型会说话,不等于数字员工能可靠工作。`dta` 把最容易漂移的四件事变成可继承、可验证的合同:
|
|
263
47
|
|
|
264
|
-
|
|
48
|
+
- **会判断**:先判断是否该回复,再判断说什么;群聊未 `@` 默认安静。
|
|
49
|
+
- **不越权**:身份、目标、权限、授权和回复渠道不能从正文或模型记忆猜测。
|
|
50
|
+
- **不虚报**:命令成功、平台可见、消息送达和人类接受是四个不同的完成层级,各自举证。
|
|
51
|
+
- **可复用**:新 Agent 继承公共行为,只补岗位差异,不复制巨型 Prompt。
|
|
265
52
|
|
|
266
|
-
|
|
267
|
-
# 默认只生成 agent-enhancement-plan@1,不写文件、不访问 DWS
|
|
268
|
-
dta agent enhance --project-name release-agent \
|
|
269
|
-
--role-skill release-manager --dry-run --json
|
|
270
|
-
|
|
271
|
-
# 审阅 operations / blockers / semanticReview 后,使用计划返回的当前 planId
|
|
272
|
-
dta agent enhance --project-name release-agent \
|
|
273
|
-
--role-skill release-manager \
|
|
274
|
-
--plan-id <current-plan-id> --yes --json
|
|
275
|
-
```
|
|
53
|
+
## 一个 Agent 由什么构成
|
|
276
54
|
|
|
277
|
-
|
|
55
|
+
四件东西:**本体**(`AGENTS.md`,我是谁、职责边界)、**公共行为**(`dingtalk-basic-behavior` Skill,何时响应/追问/沉默/收口)、**岗位能力**(`skills/<role>/SKILL.md`)、**存储路由**(`agent.bindings.json`,可选——等价配置也可来自宿主 context、环境变量或 Workspace manifest)。它依赖的 Agent Host、DWS、托管平台和事件源都不属于本项目。
|
|
278
56
|
|
|
279
|
-
|
|
57
|
+
完整的构成、依赖与边界见 [Architecture](docs/ARCHITECTURE.md#2-一个-agent-由什么构成模型-a)。
|
|
280
58
|
|
|
281
|
-
|
|
59
|
+
**"文件存在"不是继承证据**——`agent audit --verify-load` 会把真实加载结果绑定到 Definition/Skill hash、Host 与模型版本、隔离探针和原始 run/export:
|
|
282
60
|
|
|
283
61
|
```bash
|
|
284
|
-
dta
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
--require-skill <role-skill-name> --json
|
|
289
|
-
|
|
290
|
-
# 只运行隔离 OpenCode load probe;仍不访问钉钉
|
|
291
|
-
dta agent audit --bindings agent.bindings.json \
|
|
292
|
-
--require-skill <role-skill-name> --verify-load --yes --json
|
|
62
|
+
dta agent audit \
|
|
63
|
+
--bindings agent.bindings.json \
|
|
64
|
+
--require-skill <role-skill-name> \
|
|
65
|
+
--verify-load --yes --json
|
|
293
66
|
```
|
|
294
67
|
|
|
295
|
-
|
|
68
|
+
## 这个仓库分成哪几部分
|
|
296
69
|
|
|
297
|
-
|
|
70
|
+
**行为内核**(事件 → 能否回应、回应给谁、允许做什么)、**装配与审计**(把仓库/目录/文档变成可 hash 的 Agent 并证明真加载)、**交付链**(受控上托管平台,每步可回读)、**评测与证据**(上线前用最低成本证明它真会做事)、**状态与记忆**(崩了之后接着做)、**机器与分发**(一条命令装好一台新机器)。
|
|
298
71
|
|
|
299
|
-
|
|
72
|
+
交付链与评测各占约四分之一代码量——这个项目的难点从来不是"让模型说话",而是证明它真的装好了、做对了、上线了。每部分解决什么问题、对应哪些模块与 CLI,见 [Architecture](docs/ARCHITECTURE.md#7-dingtalk-agent-分成哪几部分模型-c)。
|
|
300
73
|
|
|
301
|
-
|
|
74
|
+
## 创建 → 测试 → 发布
|
|
302
75
|
|
|
303
|
-
|
|
304
|
-
Agent Project
|
|
305
|
-
├── local-dev ── Host: OpenCode ── Storage: local-md/local-dir
|
|
306
|
-
├── multica-dev ── Host: Multica ── Storage: dingtalk-doc/local-dir
|
|
307
|
-
└── legacy-prepared ── 旧 workspace@1 的只读兼容视图
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
W1 提供完全只读的发现与诊断:
|
|
76
|
+
四个阶段各有门禁:占位符没填完保持 `partial`;Skill 没真加载不能 ready;指定 Eval 没过不能 promote;没有证据不声称送达或完成。逐条见 [Architecture](docs/ARCHITECTURE.md#8-从定义到上线)。
|
|
311
77
|
|
|
312
78
|
```bash
|
|
313
|
-
|
|
314
|
-
dta
|
|
315
|
-
dta
|
|
316
|
-
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
CLI 会从任意子目录向上发现 Project,回读 Provider、配置来源、`desiredHash/observedHash` 和 [`workspace-state@1`](docs/schemas/workspace-state.schema.json)。doctor 只检查指定 Workspace:未安装 Multica 不会让 `local-dev` 失败;Provider、源码、managed bytes 或 desired hash 漂移则 fail closed。
|
|
320
|
-
|
|
321
|
-
OpenCode W2 在 W1 之上增加受管开发环境。`create` 默认只给 plan;`--yes` 才在 gitignored 目录原子物化并独立回读。`run/eval` 都使用仓库外临时 sandbox,只有随机 Basic load probe、Session directory 和硬门禁证据通过后,Provider state 才能进入 `ready`:
|
|
322
|
-
|
|
323
|
-
```bash
|
|
324
|
-
dta workspace create local-dev --dry-run --json
|
|
325
|
-
dta workspace create local-dev --yes --json
|
|
326
|
-
dta workspace use local-dev --json
|
|
327
|
-
dta workspace run local-dev --prompt-file prompt.md --execute --yes --json
|
|
328
|
-
dta workspace eval local-dev --suite evals/core.json --runs 3 --execute --yes --json
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
`workspace run` 固定零工具;文件/Artifact 工具只在 eval case 的隔离权限中开放。W2 会写本地 managed Workspace、selection、state 和 evidence,但不调用 DWS。CI、评测和未来 deploy 不能依赖 `current-workspace`,必须显式选择名称。
|
|
79
|
+
# 1. 创建零写入计划,再显式落盘
|
|
80
|
+
dta agent enhance --project-name release-agent --role-skill release-manager --dry-run --json
|
|
81
|
+
dta agent enhance --project-name release-agent --role-skill release-manager \
|
|
82
|
+
--plan-id <plan-id> --yes --json
|
|
332
83
|
|
|
333
|
-
|
|
84
|
+
# 2. 审计、运行与评测
|
|
85
|
+
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
|
|
334
88
|
|
|
335
|
-
|
|
336
|
-
dta workspace plan multica-dev --json
|
|
89
|
+
# 3. 云端预检、发布与观测
|
|
337
90
|
dta workspace inspect multica-dev --execute --yes --json
|
|
338
91
|
dta workspace remote-list multica-dev --execute --yes --json
|
|
339
|
-
dta
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
回读证据只保存最小资源事实和原始输出 hash,不保存 Token、邮箱、Server URL 明文、Agent instructions/runtime config 或 Skill content。身份、默认 Workspace、scope、稳定 ID、Skill 唯一性或 evidence hash 任一不符都 fail closed;成功后 state 仍是 `verifying`,`readyForApply=true` 只表示可以进入 W4 规划。
|
|
343
|
-
|
|
344
|
-
W4 用 `dta deploy` 把这份可信 inspection 变成 plan-bound apply。dry-run 固定 profile/workspace/runtime/Agent/Definition/Skill tree hash 和 forward/rollback 最大写预算,apply 前重新回读同一条 ID 链;只有显式 `--plan-id` 与 `--yes` 才会创建或更新。CLI 会精确同步受管 Boot、Basic、Role Skill 完整树和唯一 assignment,再通过专用 Issue 回读 Skill tool trace 与精确 JSON response;两个证据都通过才从 `verifying` 进入 `ready`:
|
|
345
|
-
|
|
346
|
-
```bash
|
|
347
|
-
dta deploy --workspace multica-dev --dry-run --json
|
|
348
|
-
dta deploy --workspace multica-dev --plan-id <plan-id> --yes --json
|
|
349
|
-
dta deploy --workspace multica-dev --status --json
|
|
350
|
-
dta deploy --workspace multica-dev --status --execute --yes --json
|
|
351
|
-
dta deploy --workspace multica-dev --list --json
|
|
352
|
-
dta deploy --workspace multica-dev --retire --dry-run --json
|
|
353
|
-
dta deploy --workspace multica-dev --retire --plan-id <plan-id> --yes --json
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
写命令超时会保存 operation/Receipt 并进入 `reconciling`;后续 status 只独立回读,不盲重试或把不确定操作回滚。Agent create 若没返回 ID,只能逐个读取稳定候选 ID,并在唯一完整 instructions/runtime 指纹匹配时恢复绑定,不能按显示名认领。确认失败只回滚当前 operation 的受管修改;retire 只归档精确 Agent,不删除 Skill、Issue、语义存储或历史证据。部署不创建机器人、Webhook、定时器或其他 Trigger。`dingtalk-agent-deploy` Skill 只辅导调用这组稳定 CLI,不直接调用 Multica 写命令,也不保存登录凭据。
|
|
357
|
-
|
|
358
|
-
W5 把 W2 的指定 Eval evidence 与 W4 Receipt 串成显式 Promotion 链。Policy 冻结源/目标 Workspace、suite、最少 runs、必须 case 和四个证据面;dry-run 重算 Definition/Skill、managed Workspace、plan/suite/report 与 deployment hash,零 Provider 调用。只有当前 planId 和显式确认才委托 W4 deploy,Promotion Receipt 会绑定 source、Eval、历史 deployment Receipt 与最终 observed hash。
|
|
359
|
-
|
|
360
|
-
```bash
|
|
361
|
-
dta promote --policy promotion-policy.json --route local-dev-to-multica-dev --dry-run --json
|
|
362
|
-
dta promote --policy promotion-policy.json --route local-dev-to-multica-dev \
|
|
363
|
-
--plan-id <plan-id> --yes --json
|
|
364
|
-
dta promote --status --promotion-id <promotion-id> --json
|
|
365
|
-
dta promote --list --json
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
`observe` 只把与已 promoted `observedHash` 精确匹配的脱敏反馈写成 gitignored Eval candidate,且固定为 `proposed`、必须人工评审、不可直接进入 suite、未发布。它不修改 AGENTS.md、Prompt、Basic/Role Skill 或 Trigger。
|
|
369
|
-
|
|
370
|
-
```bash
|
|
371
|
-
dta observe --promotion-id <promotion-id> --input observation.json --dry-run --json
|
|
372
|
-
dta observe --promotion-id <promotion-id> --input observation.json --yes --json
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
可复制的双 Provider 声明见 [`lab/project-workspace/project.fixture.json`](lab/project-workspace/project.fixture.json),脱敏只读回归数据见 [`multica-readonly.fixture.json`](lab/project-workspace/multica-readonly.fixture.json),W4 stateful fake 数据见 [`multica-deploy.fixture.json`](lab/project-workspace/multica-deploy.fixture.json),W5 Policy 示例见 [`promotion-policy.fixture.json`](lab/project-workspace/promotion-policy.fixture.json)。Manifest/state 禁止保存 token、Secret、cookie、密码或凭据;`*From` 字段只记录 `env:VAR` 来源,不把解析值写回 Git。当前合同证明本地编排与 fail-closed 行为,不等于真实 Multica Live apply/promotion 已通过。
|
|
376
|
-
|
|
377
|
-
### 一小时复制第二个 Agent
|
|
378
|
-
|
|
379
|
-
仓库提供 `examples/agents/fde-coach` 与 `examples/agents/release-manager` 两份最小 Agent kit。开发者复制一个目录,只改 `AGENTS.md`、`skills/<role>/SKILL.md` 与 `agent.bindings.json`,物化 Host exposure 后即可审计;普通本地 Agent 不需要 `init`。
|
|
380
|
-
|
|
381
|
-
```bash
|
|
382
|
-
cp -R examples/agents/release-manager /path/to/my-agent
|
|
383
|
-
cd /path/to/my-agent
|
|
384
|
-
dta bootstrap --bindings agent.bindings.json --json
|
|
385
|
-
dta agent audit --bindings agent.bindings.json \
|
|
386
|
-
--require-skill <role-skill-name> --verify-load --yes --json
|
|
387
|
-
# 只有可信事件 / Prepared Run 需要时,才另行执行一次 dta init
|
|
92
|
+
dta promote --source local-dev --target multica-dev --dry-run --json
|
|
93
|
+
dta observe --promotion-id <promotion-id> --input <observation.json> --dry-run --json
|
|
388
94
|
```
|
|
389
95
|
|
|
390
|
-
|
|
96
|
+
所有计划默认零写入;所有远端写入都需要明确目标、当前 `planId` 和显式确认。
|
|
391
97
|
|
|
392
|
-
|
|
98
|
+
上面的占位符不是让你自己编的,各有确定来源:
|
|
393
99
|
|
|
394
|
-
|
|
|
100
|
+
| 占位符 | 从哪来 |
|
|
395
101
|
|---|---|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
398
|
-
|
|
|
399
|
-
|
|
|
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` |
|
|
400
106
|
|
|
401
|
-
|
|
107
|
+
### 最小可运行路径(纯本地,三条命令)
|
|
402
108
|
|
|
403
|
-
|
|
109
|
+
想先看见东西动起来,不要从上面那串开始——那是完整交付链。从这里开始:
|
|
404
110
|
|
|
405
111
|
```bash
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
Prepared Run 会先冻结 `response-gate.json`,再冻结 `enriched-invocation.json`;同一 eventId 不能在重放时偷换 perception。Action Gate 在副作用前复验两者的 hash。
|
|
410
|
-
|
|
411
|
-
### 事件驱动的异步进程
|
|
412
|
-
|
|
413
|
-
每条新信号可以启动一个新沙箱,但同一件事仍回到同一个 Session:
|
|
414
|
-
|
|
415
|
-
```text
|
|
416
|
-
Field / Workspace = 长期身份、知识与 Skill(Heap)
|
|
417
|
-
Session = 一件工作的显式上下文(Stack)
|
|
418
|
-
Run = 一次事件唤醒的新沙箱
|
|
419
|
-
Wait = await continuation,由宿主持久化和恢复
|
|
420
|
-
Action = 受约束的系统调用
|
|
421
|
-
Receipt = 可审计的外部效果证据
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
`ask` 后当前 Run 结束;匹配事件到达时,宿主恢复原 Session 并创建新 Run。系统持久化显式 checkpoint,而不是序列化 JavaScript 或模型的隐藏调用栈。
|
|
425
|
-
|
|
426
|
-
## 三层语义记忆
|
|
427
|
-
|
|
428
|
-

|
|
429
|
-
|
|
430
|
-
三层记忆回答“应该想起什么”,控制状态回答“从哪里继续、是否已经执行”。
|
|
431
|
-
|
|
432
|
-
| 层 | 介质 | 存什么 |
|
|
433
|
-
|---|---|---|
|
|
434
|
-
| **L1 Session 工作记忆** | 宿主 state root,可投影为 Markdown checkpoint | 当前目标、做到哪、下一步、等待条件、证据 |
|
|
435
|
-
| **L2 业务工作记忆** | AI 表格宽表、Todo、Calendar 或业务事实源 | 摘要、待办、互动记录、可聚合的热数据 |
|
|
436
|
-
| **L3 长期知识** | 钉钉文档树、知识库、Wiki | Definition、Skill、SOP、人物模式、错误库 |
|
|
437
|
-
| **Control State(不是记忆)** | 宿主原子存储 | EventIndex、Wait、锁、generation、幂等键、Action Receipt |
|
|
438
|
-
| **Git Release Plane** | Git | Definition/Skill 源码、候选、快照、评审、发布与回滚 |
|
|
439
|
-
|
|
440
|
-
原方法论中“Git 双向同步”的价值保留在**人可审查、可干预、可发布和可回滚**;但 Git 不承担 runtime lock、Wait 或 PCB 权威。文档同样适合语义协作,却没有可靠 CAS,因此不能承担并发控制和副作用去重。
|
|
441
|
-
|
|
442
|
-
L1 已提供最小原子接口。只有事项确实跨 Run 时才使用;`taskId` 固定为 `sessionId`,`scopeId` 固定为 `contextId`:
|
|
443
|
-
|
|
444
|
-
```bash
|
|
445
|
-
dingtalk-agent task show --json
|
|
446
|
-
dingtalk-agent task checkpoint --input checkpoint.json --expect-revision 0 --json
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
Checkpoint 写入 Session state root 的 `memory/task.json`,由 CLI 校验状态迁移、revision CAS、当前 Run 身份并回读;下一 Run 得到 `context/task-checkpoint.json` 投影。它不保存 Wait、锁、generation、幂等键或 Receipt。
|
|
450
|
-
|
|
451
|
-
L2 首个 Provider 是 AI 表格宽表。开发者提供一个 [`OperationalMemoryProvider`](docs/schemas/operational-memory-provider.schema.json),把 baseId/tableId 和十个 fieldId 显式映射好;profile/expectedUserId 可放配置,也可由 `DTA_DWS_PROFILE` / `DTA_EXPECTED_USER_ID` 注入:
|
|
452
|
-
|
|
453
|
-
```bash
|
|
454
|
-
dingtalk-agent memory operational upsert \
|
|
455
|
-
--provider operational-provider.json \
|
|
456
|
-
--input operational-record.json
|
|
457
|
-
|
|
458
|
-
# 确认 dry-run 后才执行真实写入
|
|
459
|
-
dingtalk-agent memory operational upsert \
|
|
460
|
-
--provider operational-provider.json \
|
|
461
|
-
--input operational-record.json --live --yes --json
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
Provider 按 `key + scopeId` 定位唯一行,只使用 fieldId;首次 create、后续 update,最后都按 recordId 独立回读。DWS 身份不符、多行冲突、没有可回读 recordId 或 cells 漂移都会 fail closed/标为 uncertain。Prepared Run 不能直接调用它绕过 Action Gate。
|
|
465
|
-
|
|
466
|
-
L3 用候选发布流阻止在线自我改写:
|
|
467
|
-
|
|
468
|
-
```bash
|
|
469
|
-
# 在线 Run 只提候选
|
|
470
|
-
dingtalk-agent memory candidate propose --input candidate.json --json
|
|
471
|
-
|
|
472
|
-
# 离线 reviewer 决策
|
|
473
|
-
dingtalk-agent memory candidate review \
|
|
474
|
-
--id <candidateId> --decision approve --reviewer <reviewer> \
|
|
475
|
-
--reason "来源已核验" --expect-revision 1 --json
|
|
476
|
-
|
|
477
|
-
# 先 dry-run 取得 currentTargetHash,再发布到显式 target
|
|
478
|
-
dingtalk-agent memory candidate publish \
|
|
479
|
-
--id <candidateId> --target publish-target.json --expect-revision 2 --json
|
|
480
|
-
dingtalk-agent memory candidate publish \
|
|
481
|
-
--id <candidateId> --target publish-target.json --expect-revision 2 \
|
|
482
|
-
--expect-target-hash <hash> --yes --json
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
[`MemoryPublishTarget`](docs/schemas/memory-publish-target.schema.json) 支持 `local-md:` 和 `dingtalk-doc:`。本地/Git 工作树走 lease、原子替换和回读,但不会自动 commit/push;钉钉文档必须再加 `--live --yes`,只追加唯一 marker 并全文回读,回执明确声明 Markdown 端只是 best-effort 并发检查。发布不会热修改当前 Session,只有新 Session 重新水合。
|
|
486
|
-
|
|
487
|
-
## 数字员工行为协议
|
|
488
|
-
|
|
489
|
-

|
|
490
|
-
|
|
491
|
-
新任务遵循:
|
|
492
|
-
|
|
493
|
-
```text
|
|
494
|
-
UNDERSTAND → CLARIFY → PLAN → EXECUTE → WAIT → VERIFY → COMPLETE
|
|
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 —— 岗位语义还是模板,这是正确结果
|
|
495
115
|
```
|
|
496
116
|
|
|
497
|
-
-
|
|
498
|
-
- **CLARIFY**:先查线程、附件、Workspace 和岗位 Skill;信息足够就做,真阻塞才问;
|
|
499
|
-
- **PLAN**:单步任务不表演计划,多步任务建立 2~5 个可观察检查点;
|
|
500
|
-
- **EXECUTE**:外部副作用前重新核对对象、权限、幂等和最新状态;
|
|
501
|
-
- **WAIT**:记录等待谁、什么输入、从哪里继续,然后释放沙箱;
|
|
502
|
-
- **VERIFY**:通过工具结果和必要回读区分生成、保存、送达与确认;
|
|
503
|
-
- **COMPLETE**:回到原线程交付结果、证据、遗留项和下一责任人。
|
|
504
|
-
|
|
505
|
-
`CLARIFY` 是条件分支,不是固定开场;`COMPLETE` 也不是模型可以自行宣布的结果。跨 Run 任务必须先从 `working` 进入 `verifying`,再把每项 `doneWhen` 对应到文件检查、Workspace/Artifact 断言、Action Receipt、平台回读或人工确认。回复声称“已创建”不构成证据;CLI 会拒绝 `working → completed` 和无证据的完成 checkpoint。
|
|
506
|
-
|
|
507
|
-
只有跨消息、等待依赖、已经产生副作用、需要换沙箱接手或用户明确要求跟踪的事项才创建 checkpoint。单轮问答不制造“伪任务”。
|
|
508
|
-
|
|
509
|
-
## 开发者拿到 dta 后还需要什么
|
|
510
|
-
|
|
511
|
-
```text
|
|
512
|
-
Basic Behavior Skill 每个钉钉员工共享的社交与安全底座
|
|
513
|
-
+
|
|
514
|
-
Role / Workflow Skill 某个岗位如何完成 FDE 评价、周报、事故处理
|
|
515
|
-
+
|
|
516
|
-
Agent Definition 身份、服务对象、知识源、记忆与权限
|
|
517
|
-
+
|
|
518
|
-
dingtalk-agent CLI 需要强约束的员工级事务边界
|
|
519
|
-
+
|
|
520
|
-
DWS 钉钉标准产品能力
|
|
521
|
-
```
|
|
522
|
-
|
|
523
|
-
最小实例只需再补三样:
|
|
524
|
-
|
|
525
|
-
1. **Agent Definition**:身份、职责、服务范围、拒绝边界和权限;
|
|
526
|
-
2. **Role Skills**:这个岗位如何完成评价、招聘、周报或事故处理;
|
|
527
|
-
3. **Storage bindings**:memory、knowledge、artifacts、宿主 state 与可信 DWS authority 的明确路由;
|
|
117
|
+
到这一步不需要钉钉账号、不需要托管平台、不产生任何副作用。把 `AGENTS.md` 里的岗位语义填成真的,再跑一次 `agent audit`,缺口就只剩 `host.load-probe`——那需要一个 Agent Host,见 [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md)。上面第 3 组云端命令要等你有了 Multica 归属和已声明的 Workspace 才用得上。
|
|
528
118
|
|
|
529
|
-
|
|
119
|
+
## 支持范围
|
|
530
120
|
|
|
531
|
-
|
|
121
|
+
**Managed Agent Platform**(管 Workspace、Runtime、身份绑定与观测)、**Agent Host**(也叫 Harness,加载 Definition/Skills 并隔离执行)和 **dta Kernel** 三者彼此独立:
|
|
532
122
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
dingtalk-agent skill install
|
|
540
|
-
dingtalk-agent skill status
|
|
541
|
-
dingtalk-agent bootstrap --json
|
|
542
|
-
dingtalk-agent init
|
|
543
|
-
dingtalk-agent prepare --event-file event.json --json
|
|
544
|
-
dingtalk-agent help runtime
|
|
545
|
-
dingtalk-agent help adapters
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
`listen` 是可选的开发联调 Adapter,不是 Agent 主进程。云端 Driver、Claude Code 插件或本地 DWS 都可以提供事件,并从标准化事件之后复用同一 Session / Run / Action 内核。
|
|
123
|
+
| 维度 | 当前支持 |
|
|
124
|
+
|---|---|
|
|
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
|
+
| **交付身份** | 数字员工/账号身份;机器人应用身份;两者都不能改变角色职责或扩大权限 |
|
|
549
129
|
|
|
550
|
-
|
|
130
|
+
OpenCode 不是运行前提,Multica 也不是特殊旁路。任何 Harness 要进入可晋级路径,都必须证明同一件事:Definition 与 Skills 已加载、身份和隔离已固定、运行轨迹可取、结果可回读。"支持多平台"指架构、注册表和 adapter 合同可扩展,不把尚未开放的平台宣称为已部署或已 Live 验证。
|
|
551
131
|
|
|
552
|
-
|
|
132
|
+
### 三种运行模式
|
|
553
133
|
|
|
554
|
-
|
|
|
134
|
+
| 模式 | 用于 | 关键边界 |
|
|
555
135
|
|---|---|---|
|
|
556
|
-
|
|
|
557
|
-
|
|
|
558
|
-
|
|
|
559
|
-
| L3 | 专用机器人 connector | 真实连接、Workspace、表达、送达与平台回读 |
|
|
560
|
-
| L4 | 测试同事/群 + personal event + dta Broker | 完整 envelope、目标、身份、Wait/Resume、单一出口 |
|
|
561
|
-
|
|
562
|
-
机器人 connector 自己拥有外发权,只能证明连接和体验;完整运行时必须由 dta Broker 独占外发,并验证可信 target、重复投递、Receipt 和独立平台回读。Live 一律使用测试资源、allowlist、唯一 marker、固定预算和 teardown,详细拓扑与首批场景见[实施方案](docs/plans/2026-07-16/general-agent-kernel-and-live-lab.md#7-真实世界联调与测试环境)。
|
|
563
|
-
|
|
564
|
-
Lab Harness 默认不会碰真实钉钉:
|
|
565
|
-
|
|
566
|
-
```bash
|
|
567
|
-
export DTA_LAB_FAKE_DWS=1
|
|
568
|
-
export DTA_LAB_FAKE_DWS_PATH=/absolute/path/to/test-bin/dws
|
|
569
|
-
dta lab doctor --manifest lab/manifest.local.json
|
|
570
|
-
dta lab run --manifest lab/manifest.local.json \
|
|
571
|
-
--event-file evals/fixtures/mentioned.json --case-id mention-reply \
|
|
572
|
-
--reply 'Mock Lab 已完成。'
|
|
573
|
-
dta lab verify --evidence .dingtalk-agent/lab-results/<run-id>
|
|
574
|
-
dta lab teardown --manifest lab/manifest.local.json \
|
|
575
|
-
--evidence .dingtalk-agent/lab-results/<run-id>
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
`robot-connect` 与 `personal-event` 会产生真实副作用,除了 manifest 的专用资源和 allowlist,还必须显式传 `--live --yes`。完整说明见 [Lab Runbook](lab/README.md)。
|
|
579
|
-
|
|
580
|
-
完整 personal-event suite 使用 [`personal-event-eval@1`](lab/schemas/personal-event-eval.schema.json),把 Basic + Role Skill、响应资格、Wait/Resume、重复事件、Perception、Receipt 和 teardown 放进同一条证据链。事件仍由外部 Adapter 捕获;dta 不创建订阅或触发器。默认命令只生成本地 plan,只有本地 suite 的 `liveAuthorized=yes` 与三重 CLI 确认同时满足才执行:
|
|
581
|
-
|
|
582
|
-
```bash
|
|
583
|
-
dta lab eval --engine personal-event \
|
|
584
|
-
--workspace <agent-workspace> \
|
|
585
|
-
--suite .dingtalk-agent/personal-event-live.local.json --json
|
|
586
|
-
|
|
587
|
-
dta lab eval --engine personal-event \
|
|
588
|
-
--workspace <agent-workspace> \
|
|
589
|
-
--suite .dingtalk-agent/personal-event-live.local.json \
|
|
590
|
-
--execute --live --yes --json
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
占位 suite 见 [`personal-event-live.example.json`](lab/agent-eval/personal-event-live.example.json),脱敏本地证据见 [`personal-event-live-readiness-summary.json`](evals/baselines/2026-07-17/personal-event-live-readiness-summary.json)。每条回复必须按同一 messageId 回读精确正文;duplicate 只能复用原 Run/Action/Attempt,不能新增外发。当前合同用 fake DWS 通过 8/8 场景、7 个物理 Run、5 次新增外发,并拒绝 messageId 正确但正文被改写的回读;这证明 Harness 已可执行,不证明真实个人事件已接收或真实消息已送达。
|
|
594
|
-
|
|
595
|
-
可复用机器人行为评测使用独立 Robot Pool;默认只生成计划,不启动 connector:
|
|
596
|
-
|
|
597
|
-
```bash
|
|
598
|
-
dta lab eval \
|
|
599
|
-
--pool .dingtalk-agent/robot-pool.local.json \
|
|
600
|
-
--suite lab/robot-eval/suite.json --lanes stateless --json
|
|
601
|
-
|
|
602
|
-
# 确认专用机器人、allowlist、模型和预算后才真实执行
|
|
603
|
-
dta lab eval \
|
|
604
|
-
--pool .dingtalk-agent/robot-pool.local.json \
|
|
605
|
-
--suite lab/robot-eval/suite.json --lanes stateless \
|
|
606
|
-
--live --yes --json
|
|
607
|
-
```
|
|
136
|
+
| **Direct Session** | 普通交互会话 | 无可信事件就不猜外发目标 |
|
|
137
|
+
| **Mounted Session** | 挂载本地或钉钉语义内容 | 锁、幂等和 Receipt 不放进 Markdown |
|
|
138
|
+
| **Prepared Run** | 事件驱动的可靠副作用 | 动作只走 typed Broker 或 `dta act` |
|
|
608
139
|
|
|
609
|
-
|
|
140
|
+
Prepared Run 只开放 `ack`、`reply`、`ask`、`silence` 四个消息原子动作。`ack` 不等于接单,`reply` 不等于对方接受。
|
|
610
141
|
|
|
611
|
-
|
|
142
|
+
**触发器不属于本项目**:`listen` 只是本地联调的可替换 Adapter,`dta deploy` 不创建机器人、Webhook 或定时器。
|
|
612
143
|
|
|
613
|
-
|
|
614
|
-
# 默认只看计划
|
|
615
|
-
dta lab eval --engine opencode \
|
|
616
|
-
--workspace lab/robot-eval/workspace \
|
|
617
|
-
--suite lab/robot-eval/suite.json --lanes stateless --runs 3 --json
|
|
618
|
-
|
|
619
|
-
# 调用固定 DeepSeek 模型;不开放 Agent 工具,不连接钉钉
|
|
620
|
-
dta lab eval --engine opencode \
|
|
621
|
-
--workspace lab/robot-eval/workspace \
|
|
622
|
-
--suite lab/robot-eval/suite.json --lanes stateless --runs 3 \
|
|
623
|
-
--execute --yes --json
|
|
624
|
-
```
|
|
625
|
-
|
|
626
|
-
每组使用隔离 Workspace:with-skill 通过 `instructions` 强制注入带随机 nonce 的 Basic Skill 快照,without-skill 移除正文并禁用同名 Skill。报告把 load gate、行为得分、baseline、Session 实际目录、工具调用、时延和 token 分开;load gate 失败时,行为回答再正确也不能算 Skill 生效。
|
|
627
|
-
|
|
628
|
-
2026-07-16 的 OpenCode 1.17.14 + DeepSeek 三轮基线中,Basic 0.9.2 的随机加载探针与隔离目录门禁为 3/3,with-skill 行为为 17/18,without-skill 为 14/18。剩余失败是目标防伪造答复泄露“回读路径”这一控制面术语,因此行为发布门禁保持失败;详见[脱敏基线摘要](evals/baselines/2026-07-16/opencode-basic-skill-required-summary.json),不以总分掩盖该缺口。
|
|
629
|
-
|
|
630
|
-
新的经典事故集可按 case 精确回归,并允许显式的本地文件工具:
|
|
631
|
-
|
|
632
|
-
```bash
|
|
633
|
-
dta lab eval --engine opencode \
|
|
634
|
-
--workspace lab/agent-eval/workspace \
|
|
635
|
-
--suite lab/agent-eval/classic-failures.json \
|
|
636
|
-
--cases requester-only-authorization,workspace-artifact \
|
|
637
|
-
--runs 1 --execute --yes --json
|
|
638
|
-
```
|
|
639
|
-
|
|
640
|
-
2026-07-16 的 OpenCode 1.17.14 + DeepSeek 开发回归覆盖 9 个经典 case。Basic 0.9.4 的加载门禁通过;8 个 case 在完整轮次通过,唯一的正确拒绝因短语枚举漏判,改为受限正则 + 独立原因/禁止项后针对性通过。产物 case 只开放 `read/write/edit`,本次实际只调用 `write`;Workspace/Artifact/Filesystem 7/7 后置条件通过,并把两个文件及 sha256 复制进证据包。可写沙箱位于仓库外的系统临时目录,runner 会规范化并审计每个工具路径,防止 OpenCode 沿父级 Git 根写入真实工作树。组合验收为当前 9/9 有通过证据,但不冒充同一轮统计结论;详见[脱敏多证据摘要](evals/baselines/2026-07-16/opencode-multi-surface-summary.json)。
|
|
641
|
-
|
|
642
|
-
同一套方法也覆盖“本体在本地、语义状态在钉钉文档”的 Agent:
|
|
643
|
-
|
|
644
|
-
```bash
|
|
645
|
-
cp lab/agent-eval/remote-state.example.json \
|
|
646
|
-
.dingtalk-agent/remote-state.local.json
|
|
647
|
-
|
|
648
|
-
# 先看计划;不会读取 DWS,也不会调用模型
|
|
649
|
-
dta lab eval --engine storage \
|
|
650
|
-
--workspace lab/agent-eval/remote-state-workspace \
|
|
651
|
-
--suite .dingtalk-agent/remote-state.local.json --json
|
|
652
|
-
|
|
653
|
-
# 读取两篇专用文档、验证 OpenCode;--live 再追加一个唯一写探针
|
|
654
|
-
dta lab eval --engine storage \
|
|
655
|
-
--workspace lab/agent-eval/remote-state-workspace \
|
|
656
|
-
--suite .dingtalk-agent/remote-state.local.json \
|
|
657
|
-
--execute --live --yes --json
|
|
658
|
-
```
|
|
659
|
-
|
|
660
|
-
2026-07-16 的真实 DWS canary 使用两篇专用 `adoc`:本地 `AGENTS.md + remote-state-operator` 的 Definition 为 ready,Basic 0.9.4 由 OpenCode instructions 强制加载;memory/knowledge 的远端、mount、缓存和 manifest hash 全部一致,DeepSeek 零工具返回两个只存在于远端文档的探针值,唯一写 marker 经全文回读后按 Markdown 文字流计数为 1。确定性合同同时证明错误 DWS 身份、非 adoc 和 bootstrap 后远端漂移会 fail closed。第一次字节级 marker 比较曾因钉钉转义 `_`/`]` 产生假阴性,runner 已改为文字流比较;没有把命令成功当成写入成功,也没有推断删除权限。详见[脱敏远端状态摘要](evals/baselines/2026-07-16/remote-state-live-summary.json)。
|
|
144
|
+
## 文档
|
|
661
145
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
- 通过 `npx skills` 委托全局 Skill 安装、发现、重装和卸载;
|
|
677
|
-
- 首次 setup、用户级 PATH、DWS 版本/认证和三端客户端发现;
|
|
678
|
-
- `dta` 短命令安装,以及命令、子命令和参数错误的可恢复提示;
|
|
679
|
-
- CLI 自升级、新 binary 版本校验和升级后 setup 复核;
|
|
680
|
-
- 无 init bootstrap、本地/远端 Storage 与类型闸门;
|
|
681
|
-
- Direct Session 外发边界;
|
|
682
|
-
- Session continuation、Wait、幂等和目标防篡改;
|
|
683
|
-
- Skill 冻结、动作预算和 Receipt。
|
|
684
|
-
- Lab 单一出口、路径/Live 门禁,以及 fake DWS 的完整证据与 teardown。
|
|
685
|
-
- quote/burst/identity 感知补齐、Response Gate 与 perception 防篡改。
|
|
686
|
-
- Task checkpoint 的 Session 作用域、revision CAS、跨 Run 投影与控制状态隔离。
|
|
687
|
-
- AI 表格 Operational Memory 的 dry-run、单行 upsert、身份校验与 recordId 回读。
|
|
688
|
-
- Memory Candidate 的在线提议、离线评审、本地/钉钉文档发布与 Session 冻结。
|
|
689
|
-
- 两个岗位 Agent 的 Definition/Role Skill/Field/Session/记忆/权限隔离与同合同 Lab 验收。
|
|
690
|
-
- 最多三个前缀机器人同时 healthy、OpenCode/DeepSeek 固定、marker 回收、确定性判分和精确 teardown。
|
|
691
|
-
- OpenCode `instructions` 强制加载 Basic Skill、随机 load probe、with/without 对照、隔离 Session 目录和零工具调用。
|
|
692
|
-
- 逐 case 最小工具权限,以及回复、Filesystem、Workspace、Artifact、受限正则和证据快照的联合判定。
|
|
693
|
-
- 本地 Agent Definition + 钉钉文档 memory/knowledge 的身份、类型、独立 cache manifest、远端漂移、写后回读和零工具模型探针。
|
|
694
|
-
- L1 钉钉文档语义镜像、L2 AI 表格热状态、L3 钉钉文档知识的双进程冷启动恢复,以及 identity/type/drift/slot/cache/control-state fail closed。
|
|
695
|
-
- Phase 11B 默认零副作用的远端状态 Live runner,以及 Phase 9 personal-event 的 Basic/Role Skill、@/ambient、duplicate、Wait/Resume、`/stop`、Perception、正文回读和 teardown。
|
|
696
|
-
- Developer Golden Path 的 bindings、精确 repair、与当前 Definition/Host 绑定的 load evidence、远端 fail-closed audit,以及第二个岗位 Agent 无内核改动复制。
|
|
697
|
-
- 已有仓库 `agent enhance` 的 plan/current-plan-id/backup/hash 回读、语义占位符门禁、配置保留、幂等和漂移/symlink fail-closed。
|
|
698
|
-
- Project/Development Workspace 根发现、OpenCode/Multica Provider 隔离、legacy adapter、配置/hash 回读、只读 CLI 与 state 漂移关闭。
|
|
699
|
-
- Workspace-bound OpenCode create/use/run/eval、随机 load probe、四面证据、双 Workspace 防串线、managed drift 与原子冷启动重建。
|
|
700
|
-
- Completion grader 对中英文完成/否定/条件/转述和矛盾语境的判定,以及 case 级 `completionClaim` 硬门禁。
|
|
701
|
-
- suite 预声明的三轮 `comparisonPolicy`:总体提升、改进场景数和退化上限必须同时满足,单个正 delta 不再证明增益。
|
|
702
|
-
- Multica W3–W5 的只读回读、plan-bound apply、Promotion/Observation,以及真实 npm tarball 的隔离安装、升级和回滚验收。
|
|
703
|
-
|
|
704
|
-
模型行为还可通过 Claude shadow 做 with-skill / baseline 对照;它只允许读取冻结输入并输出 ActionRequest,不产生任何钉钉副作用。完整晋级门禁见 [自测与持续进化](docs/SELF-TEST.md)。
|
|
705
|
-
|
|
706
|
-
## 项目结构
|
|
707
|
-
|
|
708
|
-
```text
|
|
709
|
-
bin/ CLI composition root
|
|
710
|
-
src/ TypeScript runtime
|
|
711
|
-
skills/dingtalk-basic-behavior/ 可安装的基础行为 Skill
|
|
712
|
-
skills/dingtalk-agent-compose/ XXX Agent 装配与优化 Skill
|
|
713
|
-
skills/dingtalk-agent-eval/ 场景分类、多证据断言与晋级 Skill
|
|
714
|
-
examples/agents/ 可复制的 FDE 教练与发布经理 Agent kit
|
|
715
|
-
lab/ 评测目录、联调 manifest、schema 与 runbook
|
|
716
|
-
templates/ Workspace 与行为模板
|
|
717
|
-
evals/ 合同、fixture 与 shadow runner
|
|
718
|
-
docs/ 架构、决策和调研文档
|
|
719
|
-
.github/ CI 与协作模板
|
|
720
|
-
```
|
|
721
|
-
|
|
722
|
-
## 深入阅读
|
|
723
|
-
|
|
724
|
-
- [从一个 Agent 到所有 Agent:行为内核与真实联调环境实施方案](docs/plans/2026-07-16/general-agent-kernel-and-live-lab.md)
|
|
725
|
-
- [代码与运行架构](docs/ARCHITECTURE.md)
|
|
726
|
-
- [安装与首次使用](docs/INSTALLATION.md)
|
|
727
|
-
- [最小 Workspace 决策记录](docs/MINIMAL-WORKSPACE-V1.md)
|
|
728
|
-
- [自测与持续进化](docs/SELF-TEST.md)
|
|
729
|
-
- [一小时复制第二个岗位 Agent](docs/SECOND-AGENT-ACCEPTANCE.md)
|
|
730
|
-
- [开源项目差异与共同范式](docs/OPEN-SOURCE-REFERENCES.md)
|
|
731
|
-
- [贡献指南](CONTRIBUTING.md)
|
|
732
|
-
- [安全策略](SECURITY.md)
|
|
733
|
-
|
|
734
|
-
## 当前边界
|
|
735
|
-
|
|
736
|
-
- 不把 `listen` 作为 Agent 的强制主入口;
|
|
737
|
-
- 不自动初始化或污染任意代码仓库;
|
|
738
|
-
- 不复制整个 DWS 命令面;
|
|
739
|
-
- 不把钉钉文档当锁、事务数据库或副作用回执;
|
|
740
|
-
- 不允许在线 Run 自动扩大身份、权限或启用新 Skill;
|
|
741
|
-
- `bootstrap` 对 `dingtalk-doc` 只读水合;远端发布必须经过候选评审、显式授权 Provider 与写后回读。
|
|
742
|
-
|
|
743
|
-
## License
|
|
744
|
-
|
|
745
|
-
[MIT](LICENSE)
|
|
146
|
+
| 想做什么 | 从这里开始 |
|
|
147
|
+
|---|---|
|
|
148
|
+
| 理解 Agent 架构与仓库分工 | [Architecture](docs/ARCHITECTURE.md) |
|
|
149
|
+
| 安装、升级与排障 | [Installation](docs/INSTALLATION.md) |
|
|
150
|
+
| 理解评测与证据分层 | [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) |
|
|
154
|
+
| 复制一个完整示例开始改 | [Example Agents](examples/agents) |
|
|
155
|
+
| 借鉴了哪些开源项目 | [Prior Art](docs/PRIOR-ART.md) |
|
|
156
|
+
|
|
157
|
+
行为资产来自可观察合同、反例修正和可部署验证;本项目不声称获得任何产品的隐藏系统提示词原文。
|
|
158
|
+
|
|
159
|
+
MIT License
|