@xdxer/dingtalk-agent 0.1.4-beta.8 → 0.1.4
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 +233 -0
- package/README.en.md +167 -0
- package/README.md +101 -248
- package/dist/bin/dingtalk-agent.js +1255 -25
- package/dist/bin/dingtalk-agent.js.map +1 -1
- package/dist/src/actions.js +98 -14
- package/dist/src/actions.js.map +1 -1
- package/dist/src/agent-audit.js +1385 -0
- package/dist/src/agent-audit.js.map +1 -0
- package/dist/src/agent-bindings.js +132 -0
- package/dist/src/agent-bindings.js.map +1 -0
- package/dist/src/agent-definition.js +182 -0
- package/dist/src/agent-definition.js.map +1 -0
- package/dist/src/agent-enhance.js +711 -0
- package/dist/src/agent-enhance.js.map +1 -0
- package/dist/src/agent-platform.js +299 -0
- package/dist/src/agent-platform.js.map +1 -0
- package/dist/src/bootstrap.js +125 -17
- package/dist/src/bootstrap.js.map +1 -1
- package/dist/src/config.js +1 -7
- package/dist/src/config.js.map +1 -1
- package/dist/src/development-workspace.js +755 -0
- package/dist/src/development-workspace.js.map +1 -0
- package/dist/src/doctor.js +74 -15
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/dws.js +145 -0
- package/dist/src/dws.js.map +1 -1
- package/dist/src/eval-evidence.js +193 -0
- package/dist/src/eval-evidence.js.map +1 -0
- 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/invocation.js +36 -0
- package/dist/src/invocation.js.map +1 -0
- package/dist/src/lab.js +679 -0
- package/dist/src/lab.js.map +1 -0
- package/dist/src/lease.js +100 -0
- package/dist/src/lease.js.map +1 -0
- package/dist/src/map.js +157 -0
- package/dist/src/map.js.map +1 -0
- package/dist/src/memory/candidates.js +451 -0
- package/dist/src/memory/candidates.js.map +1 -0
- package/dist/src/memory/completion-evidence.js +536 -0
- package/dist/src/memory/completion-evidence.js.map +1 -0
- package/dist/src/memory/operational.js +263 -0
- package/dist/src/memory/operational.js.map +1 -0
- package/dist/src/memory/remote-state.js +478 -0
- package/dist/src/memory/remote-state.js.map +1 -0
- package/dist/src/memory/task-checkpoints.js +204 -0
- package/dist/src/memory/task-checkpoints.js.map +1 -0
- package/dist/src/multica-deploy.js +1538 -0
- package/dist/src/multica-deploy.js.map +1 -0
- package/dist/src/multica-provider.js +685 -0
- package/dist/src/multica-provider.js.map +1 -0
- package/dist/src/opencode-evals.js +1547 -0
- package/dist/src/opencode-evals.js.map +1 -0
- package/dist/src/opencode-isolation.js +124 -0
- package/dist/src/opencode-isolation.js.map +1 -0
- package/dist/src/opencode-provider.js +532 -0
- package/dist/src/opencode-provider.js.map +1 -0
- package/dist/src/opencode-workspace.js +208 -0
- package/dist/src/opencode-workspace.js.map +1 -0
- package/dist/src/perception.js +225 -0
- package/dist/src/perception.js.map +1 -0
- package/dist/src/personal-event-evals.js +595 -0
- package/dist/src/personal-event-evals.js.map +1 -0
- package/dist/src/promotion.js +786 -0
- package/dist/src/promotion.js.map +1 -0
- package/dist/src/remote-semantic-state-live-evals.js +888 -0
- package/dist/src/remote-semantic-state-live-evals.js.map +1 -0
- package/dist/src/remote-semantic-state-worker.js +38 -0
- package/dist/src/remote-semantic-state-worker.js.map +1 -0
- package/dist/src/remote-state-evals.js +502 -0
- package/dist/src/remote-state-evals.js.map +1 -0
- package/dist/src/response-gate.js +51 -0
- package/dist/src/response-gate.js.map +1 -0
- package/dist/src/robot-evals.js +771 -0
- package/dist/src/robot-evals.js.map +1 -0
- package/dist/src/sessions.js +66 -105
- package/dist/src/sessions.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 +162 -24
- 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/storage-evals.js +26 -0
- package/dist/src/storage-evals.js.map +1 -0
- 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/dist/src/waits.js +5 -1
- package/dist/src/waits.js.map +1 -1
- package/dist/src/workspace.js +28 -3
- package/dist/src/workspace.js.map +1 -1
- package/docs/INSTALLATION.md +50 -3
- package/docs/SECOND-AGENT-ACCEPTANCE.md +62 -0
- package/docs/architecture/agent-memory-topology.png +0 -0
- package/docs/architecture/agent-memory-topology.svg +132 -0
- package/docs/architecture/general-agent-kernel-topology.png +0 -0
- package/docs/architecture/general-agent-kernel-topology.svg +149 -0
- package/docs/architecture/provider-bound-development-workspace.png +0 -0
- package/docs/architecture/provider-bound-development-workspace.svg +141 -0
- package/docs/architecture/task-completion-gate.png +0 -0
- package/docs/architecture/task-completion-gate.svg +191 -0
- package/docs/assets/agent-delivery-lifecycle.svg +103 -0
- package/docs/schemas/agent-audit-load-evidence.schema.json +14 -0
- package/docs/schemas/agent-audit.schema.json +92 -0
- package/docs/schemas/agent-bindings.schema.json +54 -0
- package/docs/schemas/agent-definition.schema.json +78 -0
- package/docs/schemas/agent-enhancement-plan.schema.json +88 -0
- package/docs/schemas/agent-enhancement-receipt.schema.json +37 -0
- package/docs/schemas/agent-platform.schema.json +13 -0
- package/docs/schemas/enriched-invocation.schema.json +46 -0
- package/docs/schemas/eval-candidate-plan.schema.json +28 -0
- package/docs/schemas/eval-candidate-result.schema.json +20 -0
- package/docs/schemas/eval-candidate.schema.json +30 -0
- package/docs/schemas/invocation.schema.json +19 -0
- package/docs/schemas/memory-candidate-proposal.schema.json +18 -0
- package/docs/schemas/memory-candidate.schema.json +76 -0
- package/docs/schemas/memory-publish-target.schema.json +25 -0
- package/docs/schemas/multica-deployment-list.schema.json +29 -0
- package/docs/schemas/multica-deployment-operation.schema.json +51 -0
- package/docs/schemas/multica-deployment-plan.schema.json +70 -0
- package/docs/schemas/multica-deployment-receipt.schema.json +87 -0
- package/docs/schemas/multica-deployment-status.schema.json +23 -0
- package/docs/schemas/multica-workspace-inspection.schema.json +77 -0
- package/docs/schemas/multica-workspace-plan.schema.json +68 -0
- package/docs/schemas/multica-workspace-resource-list.schema.json +27 -0
- package/docs/schemas/multica-workspace-status.schema.json +34 -0
- package/docs/schemas/observation.schema.json +21 -0
- package/docs/schemas/operational-memory-provider.schema.json +36 -0
- package/docs/schemas/operational-memory-record.schema.json +24 -0
- package/docs/schemas/perception-input.schema.json +56 -0
- package/docs/schemas/project.schema.json +115 -0
- package/docs/schemas/promotion-list.schema.json +36 -0
- package/docs/schemas/promotion-plan.schema.json +60 -0
- package/docs/schemas/promotion-policy.schema.json +29 -0
- package/docs/schemas/promotion-receipt.schema.json +43 -0
- package/docs/schemas/promotion-status.schema.json +23 -0
- package/docs/schemas/release-readiness.schema.json +66 -0
- package/docs/schemas/remote-semantic-state-live-eval.schema.json +60 -0
- package/docs/schemas/remote-semantic-state-manifest.schema.json +79 -0
- package/docs/schemas/remote-semantic-state-provider.schema.json +98 -0
- package/docs/schemas/response-gate.schema.json +20 -0
- package/docs/schemas/task-checkpoint.schema.json +71 -0
- package/docs/schemas/task-completion-evidence.schema.json +154 -0
- package/docs/schemas/workspace-doctor.schema.json +56 -0
- package/docs/schemas/workspace-state.schema.json +39 -0
- package/evals/README.md +17 -0
- package/evals/baselines/2026-07-16/opencode-basic-010-completion-summary.json +123 -0
- package/evals/baselines/2026-07-16/opencode-basic-skill-required-summary.json +69 -0
- package/evals/baselines/2026-07-16/opencode-multi-surface-summary.json +63 -0
- package/evals/baselines/2026-07-16/remote-state-live-summary.json +70 -0
- package/evals/baselines/2026-07-17/agent-enhance-opencode-dogfood-summary.json +98 -0
- package/evals/baselines/2026-07-17/personal-event-live-readiness-summary.json +68 -0
- package/examples/agents/fde-coach/AGENTS.md +26 -0
- package/examples/agents/fde-coach/MEMORY.md +3 -0
- package/examples/agents/fde-coach/fields/default/field.json +24 -0
- package/examples/agents/fde-coach/knowledge/INDEX.md +4 -0
- package/examples/agents/fde-coach/skills/fde-coach/SKILL.md +13 -0
- package/examples/agents/release-manager/AGENTS.md +26 -0
- package/examples/agents/release-manager/MEMORY.md +3 -0
- package/examples/agents/release-manager/fields/default/field.json +24 -0
- package/examples/agents/release-manager/knowledge/INDEX.md +4 -0
- package/examples/agents/release-manager/skills/release-manager/SKILL.md +13 -0
- package/lab/README.md +109 -0
- package/lab/agent-eval/catalog.json +91 -0
- package/lab/agent-eval/classic-failures.json +177 -0
- package/lab/agent-eval/completion-gate-regression.json +99 -0
- package/lab/agent-eval/personal-event-live.example.json +94 -0
- package/lab/agent-eval/remote-semantic-state-live.example.json +70 -0
- package/lab/agent-eval/remote-semantic-state-provider.fixture.json +47 -0
- package/lab/agent-eval/remote-state-workspace/AGENTS.md +8 -0
- package/lab/agent-eval/remote-state-workspace/opencode.json +7 -0
- package/lab/agent-eval/remote-state-workspace/skills/remote-state-operator/SKILL.md +13 -0
- package/lab/agent-eval/remote-state.example.json +31 -0
- package/lab/agent-eval/workspace/AGENTS.md +7 -0
- package/lab/agent-eval/workspace/MEMORY.md +4 -0
- package/lab/agent-eval/workspace/artifacts/pending-review.md +3 -0
- package/lab/agent-eval/workspace/knowledge/INDEX.md +4 -0
- package/lab/agent-eval/workspace/opencode.json +20 -0
- package/lab/manifest.example.json +27 -0
- package/lab/manifest.personal-event.example.json +27 -0
- package/lab/project-workspace/README.md +11 -0
- package/lab/project-workspace/fake-multica-provider.mjs +277 -0
- package/lab/project-workspace/multica-deploy.fixture.json +29 -0
- package/lab/project-workspace/multica-readonly.fixture.json +69 -0
- package/lab/project-workspace/observation.fixture.json +14 -0
- package/lab/project-workspace/opencode-provider-suite.json +65 -0
- package/lab/project-workspace/project.fixture.json +44 -0
- package/lab/project-workspace/promotion-policy.fixture.json +15 -0
- package/lab/robot-eval/pool.example.json +30 -0
- package/lab/robot-eval/suite.json +123 -0
- package/lab/robot-eval/workspace/AGENTS.md +21 -0
- package/lab/robot-eval/workspace/MEMORY.md +3 -0
- package/lab/robot-eval/workspace/knowledge/INDEX.md +5 -0
- package/lab/robot-eval/workspace/opencode.json +22 -0
- package/lab/schemas/agent-eval-catalog.schema.json +47 -0
- package/lab/schemas/lab-manifest.schema.json +70 -0
- package/lab/schemas/personal-event-eval.schema.json +91 -0
- package/lab/schemas/remote-state-eval.schema.json +66 -0
- package/lab/schemas/robot-eval-suite.schema.json +184 -0
- package/lab/schemas/robot-pool.schema.json +56 -0
- package/package.json +28 -9
- 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/agent.bindings.dingtalk-doc.template.json +13 -0
- package/skills/core/dingtalk-agent-compose/assets/agent.bindings.local.template.json +13 -0
- package/skills/core/dingtalk-agent-compose/assets/hosts/opencode/opencode.template.json +12 -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/core/dingtalk-agent-compose/references/agent-definition-contract.md +55 -0
- 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/core/dingtalk-agent-compose/references/storage-routing.md +20 -0
- package/skills/core/dingtalk-agent-eval/SKILL.md +140 -0
- package/skills/core/dingtalk-agent-eval/assets/eval-catalog.template.json +18 -0
- package/skills/core/dingtalk-agent-eval/evals/evals.json +83 -0
- package/skills/core/dingtalk-agent-eval/references/eval-topology.md +48 -0
- package/skills/core/dingtalk-agent-eval/references/evidence-contract.md +52 -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-agent-eval/references/scenario-taxonomy.md +25 -0
- package/skills/core/dingtalk-agent-eval/references/storage-modes.md +75 -0
- package/skills/core/dingtalk-basic-behavior/SKILL.md +87 -0
- package/skills/core/dingtalk-basic-behavior/assets/memory-candidate-proposal.json +10 -0
- package/skills/{dingtalk-basic-behavior/assets/task-checkpoint.md → core/dingtalk-basic-behavior/assets/task-checkpoint.json} +2 -21
- package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/action-contract.md +2 -0
- package/skills/core/dingtalk-basic-behavior/references/memory-and-evolution.md +53 -0
- package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +28 -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 +47 -10
- package/skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md +65 -0
- package/skills/platforms/deap/PLATFORM.md +3 -0
- package/skills/platforms/deap/README.md +3 -0
- package/skills/platforms/multica-dingtalk/PLATFORM.md +40 -0
- package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +40 -0
- package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/SKILL.md +60 -0
- package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +49 -0
- package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/promotion-observation-contract.md +49 -0
- 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/skills/dingtalk-basic-behavior/SKILL.md +0 -86
- package/skills/dingtalk-basic-behavior/references/memory-and-evolution.md +0 -27
- /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/runtime-modes.md +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@xdxer/dingtalk-agent` are documented here. The project follows semantic versioning; prerelease entries describe release candidates and do not imply that Live canaries or registry publication have completed.
|
|
4
|
+
|
|
5
|
+
## 0.1.4 - 2026-07-20
|
|
6
|
+
|
|
7
|
+
First stable release of the 0.1.4 line. It promotes the beta series to the `latest` dist-tag, which until now still pointed at 0.1.2. No code changes relative to `0.1.4-beta.19`; the entries below describe what accumulated across the beta line.
|
|
8
|
+
|
|
9
|
+
### Highlights since 0.1.2
|
|
10
|
+
|
|
11
|
+
- **Agent definition is harness-agnostic.** The minimal Agent directory holds only `AGENTS.md`, storage bindings, memory/knowledge, Role Skills and the Field. Host configuration and skill exposure are appended per chosen host, not part of the body. The loading contract is stated as four host-agnostic invariants; OpenCode remains the only host with a complete adapter, and the documentation says so rather than implying broader support.
|
|
12
|
+
- **Skill versioning and update gates.** Installed skills report `missing / current / modified / outdated / ahead / unknown` against a whole-tree content hash. Upgrades refuse to downgrade without `--allow-downgrade` and re-read the canonical copy afterwards, so an exit code of 0 with a non-current readback is an error. A release-time guard fails the build when a skill's body changed without a version bump.
|
|
13
|
+
- **Testing methods consolidated into `dingtalk-agent-eval`.** Three interactive channels for a delivered Agent, the local connector smoke route for one that is not yet deployed, the L0–L4 tier table, the hard-gate checklist, and the failure-to-case iteration path all ship inside the skill instead of living in repository docs that the package does not contain.
|
|
14
|
+
- **`platform trace` as an evidence surface**, alongside response, filesystem, workspace, artifact and remote readback.
|
|
15
|
+
- **`doctor` reports locally installed coding agents** — binary path, version and config roots — with CLI presence and skill visibility as separate fields.
|
|
16
|
+
|
|
17
|
+
### Release boundary
|
|
18
|
+
|
|
19
|
+
- Published to the public npm `latest` dist-tag as `0.1.4`; the `beta` dist-tag continues to point at `0.1.4-beta.19`.
|
|
20
|
+
- **Live gates remain waived.** The Live waivers carried since beta.9 are unchanged: no real DingTalk egress, personal-event canary, remote semantic state Live run, or Multica acceptance was executed for this release. Stable here means the deterministic contract and assembly gates hold and the public interfaces are settled — it does not mean the Live evidence chain has been exercised.
|
|
21
|
+
- Verification used targeted contract scenarios per the project's fast-verification discipline, not the full suite.
|
|
22
|
+
|
|
23
|
+
## 0.1.4-beta.19 - 2026-07-20
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- `references/host-loading-contract.md`: the loading contract stated as four host-agnostic invariants — the Definition is loaded by the host's native project rule and must not also enter custom instructions; the Basic Skill's body is the single resolved forced instruction of every session, not merely "discoverable"; the Basic exposure must be materialized as a whole tree matching the canonical hash; Role Skills stay discoverable-and-authorized without joining the forced set. The three evidence classes are described in general form, with the binding fields (host name, host version, model, raw trace) supplied by each host adapter.
|
|
28
|
+
- `references/hosts/claude-code.md`: Claude Code's mechanism differences, most importantly that it does **not** natively read `AGENTS.md` (the body must be referenced via `@AGENTS.md` in `CLAUDE.md` or a symlink) and that its skill exposure root `.claude/skills` is not shared with `.agents/skills`. The file states plainly that the adapter is unimplemented and that choosing Claude Code therefore caps the verdict at `partial`.
|
|
29
|
+
- `src/host-detect.ts` and a `hosts` section in `doctor`: which coding agent CLIs are installed locally, with binary path, version, config roots (honoring `CLAUDE_CONFIG_DIR`, `CODEX_HOME`, `XDG_CONFIG_HOME`) and skill exposure root reported separately.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- The minimal Agent directory is now harness-agnostic: `opencode.json` and `.agents/skills/` are no longer part of the core, matching what `examples/agents/*` have always contained. Host config and exposure directories are listed as "appended per chosen host, not part of the body". Compose gains a step for letting the user choose the Agent Host instead of defaulting silently.
|
|
34
|
+
- OpenCode-specific material moved to `references/hosts/opencode.md` and `assets/hosts/opencode/`. OpenCode remains the only host with a complete adapter, and the documentation says so rather than implying broader support.
|
|
35
|
+
- Not selecting a host is not an exemption: an unselected host, or one without an adapter, yields `partial` and never `ready`.
|
|
36
|
+
- `doctor` no longer derives Codex and OpenCode status from one shared boolean. `cli.found` (binary on PATH) and skill visibility are separate fields, so a machine with neither client installed no longer reports both as `ok`. The `hosts` array is additive and does not participate in `ready`; the three existing client checks keep their level semantics.
|
|
37
|
+
- `scripts/check-skill-versions.mjs` compares the baseline tree against the working tree instead of `base...HEAD`, which only saw committed changes and passed vacuously before a commit.
|
|
38
|
+
- Host lists, per-host directory conventions and multi-host installation continue to be delegated to the upstream `skills` CLI rather than reimplemented; this repository only owns the loading contract and the loading evidence, which upstream does not provide.
|
|
39
|
+
|
|
40
|
+
### Release boundary
|
|
41
|
+
|
|
42
|
+
- Distribution is limited to the public npm `beta` dist-tag and a Git tag. No DingTalk write, robot binding, or Live canary was executed. The Claude Code adapter is documented but not implemented, and no evidence class is claimed for it. Verification used targeted contract scenarios (24/27/28/30/34/50/56/60/62).
|
|
43
|
+
|
|
44
|
+
## 0.1.4-beta.18 - 2026-07-20
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
|
|
48
|
+
- `dingtalk-agent-eval/references/local-connector-smoke.md`: the local route for an Agent that is **not yet deployed** — a dedicated test robot driven by a `dws dev connect` connector against a local workspace. Covers egress ownership (`robot-connect`/`connector`), the workspace constraints that must hold before starting, a five-step runbook, `status=not_running` as the only teardown truth, and how it differs from the Robot Pool. It is explicitly not a fourth interactive channel: the other three test deployed artifacts.
|
|
49
|
+
- `dingtalk-agent-eval/references/failure-to-case.md`: how a real failure becomes a regression case — the iteration path, the CLI-versus-Skill discrimination rule ("would bypassing this produce a worse reply, or a wrong side effect?"), and how to set up the with/without and current/previous comparisons without letting ordering effects read as gains.
|
|
50
|
+
- The L0–L4 tier table with promotion rules now lives in the eval SKILL; the eight-item hard-gate checklist and the sandbox containment audit now live in `evidence-contract.md`; egress ownership and the Role Principal / Execution Subject / Input Channel split now live in `eval-topology.md`.
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
|
|
54
|
+
- Testing methods are consolidated into the eval skill as the single source of truth. `docs/SELF-TEST.md` loses 191 lines of method content and keeps only this repository's own evidence, baselines and historical conclusions; `docs/ARCHITECTURE.md` and the Multica `PLATFORM.md` converge to pointers. This fixes a real defect: `docs/` is not part of the npm tarball, so shipped skill text was pointing users at files their installation does not contain.
|
|
55
|
+
- The local smoke route no longer hardcodes `--channel claudecode`. It selects by whichever coding agent is actually installed, and states plainly that the Robot Pool still pins a single channel.
|
|
56
|
+
- Fixed an error in the eval SKILL channel table: channel B's egress owner is the platform-side Agent, not the connector.
|
|
57
|
+
- `dingtalk-agent-eval` 0.6.0 → 0.7.0.
|
|
58
|
+
|
|
59
|
+
### Release boundary
|
|
60
|
+
|
|
61
|
+
- Distribution is limited to the public npm `beta` dist-tag and a Git tag. No DingTalk write, robot binding, or Live canary was executed. Verification used targeted contract scenarios (20/28/34/56/62) plus a link check over the packaged skill tree, per the repository's current fast-verification discipline.
|
|
62
|
+
|
|
63
|
+
## 0.1.4-beta.17 - 2026-07-20
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- Interactive debug channels for a delivered Agent (`dingtalk-agent-eval/references/interactive-debug-channels.md`): three channels — platform CLI dispatch, your own DingTalk identity to a bound robot, and digital-employee identity (in development) — each with what it proves and explicitly does not prove, an A→B→C one-way escalation rule, and a four-way attribution tree for "no reply" (eligibility silence / channel not connected / runtime or task failure / genuinely wrong answer). The Compose skill hands off to eval after assembly instead of improvising acceptance criteria.
|
|
68
|
+
- `platform trace` as a first-class evidence surface: the managed platform's persisted execution trace (task and session id, reasoning, every tool call, `failure_reason`, the skills actually in effect) is the only surface that reliably catches "the reply reads correctly but the assembly is broken". Synced across the eval SKILL, the evidence contract, the topology table and the lab catalog schema enum.
|
|
69
|
+
- Skill version state model replacing a single boolean: `missing / current / modified / outdated / ahead / unknown`, backed by a whole-tree `contentHash` so a body edit that skips a version bump is still detected. `skill status` reports `installedVersion → skillVersion (state)`; `doctor` prints the same and folds already-installed platform skills into the report without letting opt-in skills affect `ready`; `dta upgrade` reports before/after/bundled/state per skill.
|
|
70
|
+
- `scripts/check-skill-versions.mjs`, wired into `release:check`: a skill whose body changed against the baseline without a version bump, or whose version regressed, fails the gate.
|
|
71
|
+
- Contract scenario 62 `SkillVersionDrift` covering the four drift states, the downgrade refusal and its `--allow-downgrade` recovery, doctor grading, and content-hash detection.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- `dingtalk-agent-eval` joins the default skill suite. Testing methods are consolidated into that skill, so a machine without it has no path to any testing guidance; `setup` and `skill install` now install three skills.
|
|
76
|
+
- Skill updates fail closed: a local copy newer than the bundled one is refused unless `--allow-downgrade`, and every install/upgrade re-reads the canonical copy afterwards — exit code 0 with a non-`current` readback is now an error rather than a silent success.
|
|
77
|
+
- `multica-external` declares `metadata.version` for the first time. Without it the empty-string comparison was always true, so the skill reported `current` permanently and could never be upgraded.
|
|
78
|
+
- `src/version.ts` extracted so the npm package and skills share one semver implementation; prerelease comparison changed from whole-string collation to dot-identifier segments.
|
|
79
|
+
- OpenCode/Multica real acceptance chain (from the branch's earlier work): JSON-stringified prompts accepted, `agent.displayName` added, and the skill load smoke verified against a strict structured allowlist.
|
|
80
|
+
- Stale `skills/<name>/` paths left by the core/platforms reorganization corrected in AGENTS.md, CLAUDE.md, CONTRIBUTING.md, the eval catalog template and three lab fixtures; the frozen 2026-07-16 baselines are deliberately left untouched.
|
|
81
|
+
|
|
82
|
+
### Release boundary
|
|
83
|
+
|
|
84
|
+
- Distribution is limited to the public npm `beta` dist-tag and a Git tag. No DingTalk write, robot binding, or Live canary was executed for this release: the interactive-channel documentation is verified against source and CLI help output only, and the version mechanism is verified by deterministic contract scenarios. Live waivers from beta.9 remain unchanged.
|
|
85
|
+
|
|
86
|
+
## 0.1.4-beta.16 - 2026-07-20
|
|
87
|
+
|
|
88
|
+
### Added
|
|
89
|
+
|
|
90
|
+
- Contract eval runner terminal UI: per-scenario progress lines with duration on stderr (live line rewriting and colors on a TTY, plain append-only lines in CI), a closing summary with the slowest scenarios, and a failure block per failed scenario listing the unmet expectations with truncated evidence plus actionable hints — the exact rerun command, the implementing function, the grading/output artifact paths, and the scenario fixtures. A scenario that throws now counts as all-expectations-failed and the suite keeps running, so one run surfaces every failure. stdout stays byte-stable (default JSON, `--smoke` four lines).
|
|
91
|
+
- Runner ergonomics: `--list` prints the scenario catalog; `--only` now accepts scenario names as well as ids (`--only=20,CliErrorHints`); malformed `--only` values fail with `错误:/提示:` guidance instead of running nothing.
|
|
92
|
+
- `evals/README.md` documenting the evals directory layout and the subset-first regression discipline (the full 61-scenario suite is a minutes-long deep-regression gate, not a per-change loop).
|
|
93
|
+
- Creation-inheritance contract from main: the four-part agent body template gains a Basic boot declaration, identity/authorization/privacy/completion bottom lines and a standard loop; the Compose skill and deterministic assertions are synced.
|
|
94
|
+
|
|
95
|
+
### Changed
|
|
96
|
+
|
|
97
|
+
- Basic Behavior 0.11 / Compose 0.9 layered contracts: a slimmer entry point plus risk-authorization, privacy, fact-recovery and forgetting boundaries; the Compose agent body is fixed to definition, bottom lines, paradigm and common mistakes with Role/Gate layering and template audits.
|
|
98
|
+
- Inheritance and assembly gates hardened with OpenCode-native AGENTS rules, full Basic-tree integrity and isolated load probes, least-privilege defaults, raw-evidence retention and drift re-verification.
|
|
99
|
+
- The contract runner clears `evals/results/contract` only after arguments validate, so `--list` or a mistyped `--only` no longer wipes the previous run's evidence; result artifacts now carry scenario names in `summary.md` headers and `benchmark.json` eval names.
|
|
100
|
+
- README (zh/en) converged to positioning, quick start, core model, support scope and documentation entries; the multi-platform agent lifecycle narrative is completed and the three-step delivery path is redrawn as a native SVG, replacing the previous JPG assets.
|
|
101
|
+
|
|
102
|
+
### Release boundary
|
|
103
|
+
|
|
104
|
+
- Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The eval-runner terminal UI is repository tooling and does not ship in the package; the shipped deltas relative to beta.15 are the skill/template/README commits from main summarized above. Live waivers from beta.9 remain unchanged.
|
|
105
|
+
|
|
106
|
+
## 0.1.4-beta.15 - 2026-07-19
|
|
107
|
+
|
|
108
|
+
### Added
|
|
109
|
+
|
|
110
|
+
- Multica endpoint resolution and display: `agent-platform show|use` now print the resolved endpoint and its source unconditionally — even when multica is not installed or logged in — so you always know where you'd connect and how to switch. `resolveEndpoint()` uses a single source of truth aligned with the executor (`multica_ext.py` reads `MULTICA_SERVER_URL`/`--profile`): `MULTICA_SERVER_URL` env > project config (`dingtalk-agent.json#multicaEndpoint` or `.dingtalk-agent/agent-platform.json.endpoint`) > exactly one logged-in profile's server_url (multiple = ambiguous, never auto-picked) > the platform's suggested endpoint (pre, flagged unconfirmed, never a silent direct-connect). The login readiness hint emits a full copyable `multica login --server-url <resolved> --token ...` with the source annotated.
|
|
111
|
+
- The project manifest gains an optional `multicaEndpoint` field (schema + validation) for a persistent per-project endpoint override.
|
|
112
|
+
|
|
113
|
+
### Changed
|
|
114
|
+
|
|
115
|
+
- Scattered pre-fde endpoint literals in `PLATFORM.md` and the compose skill now point to `dta agent-platform show` as the single source instead of hardcoding the URL, so docs cannot drift from the resolver.
|
|
116
|
+
|
|
117
|
+
### Release boundary
|
|
118
|
+
|
|
119
|
+
- Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The suggested endpoint is an explicitly-unconfirmed hint only; the executor stays fail-closed and deploy-time confirmation is unchanged. Live waivers from beta.9 remain unchanged.
|
|
120
|
+
|
|
121
|
+
## 0.1.4-beta.14 - 2026-07-19
|
|
122
|
+
|
|
123
|
+
### Added
|
|
124
|
+
|
|
125
|
+
- Per-platform `PLATFORM.md`: switching to a platform now loads a document explaining what each bundled skill does. `agent-platform use|show` print the doc path, and `list|show` display every skill's role and purpose (the registry skill bindings gained a `purpose` field). `multica-dingtalk`'s doc covers the three skills by role, the delivery chain, readiness, the dws-first robot-binding priority (including `--allow-unbound` for connect-to-customers mode), DWS-conversation acceptance, and both unbind paths; `deap` is a coming-soon stub.
|
|
126
|
+
|
|
127
|
+
### Fixed
|
|
128
|
+
|
|
129
|
+
- `multica-external`'s `dingtalk-bind` now sends `robot_code` (defaulting to `client_id`, with a `--robot-code` flag). Manual robot binding previously failed with `400 robot_code is required`, blocking real DingTalk robot delivery; a live 10-chain regression on the pre environment now confirms real DWS→robot→agent replies.
|
|
130
|
+
|
|
131
|
+
### Validated
|
|
132
|
+
|
|
133
|
+
- End-to-end regression on the dedicated pre environment (authorized): from-zero token login, ten role-diverse agents each carrying basic-behavior (verified silent on un-@mentioned group messages), DWS-created robots bound via the dws path with credentials, and acceptance by real DWS conversation. Five robots were reused via revoke+rebind, confirming messages reroute to the newly bound agent. Both unbind APIs (robot `dingtalk-revoke`, account `dingtalk-account-unbind`) were confirmed.
|
|
134
|
+
|
|
135
|
+
### Release boundary
|
|
136
|
+
|
|
137
|
+
- Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The regression's platform side effects (agents, robot bindings, messages) occurred only on the user-authorized pre environment with dedicated test objects. Live waivers from beta.9 remain unchanged.
|
|
138
|
+
|
|
139
|
+
## 0.1.4-beta.13 - 2026-07-19
|
|
140
|
+
|
|
141
|
+
### Changed
|
|
142
|
+
|
|
143
|
+
- Bundled skills reorganize by platform: `skills/core/` carries the universal suite (basic-behavior, compose, eval) and `skills/platforms/multica-dingtalk/` carries the platform pack, with a `deap` coming-soon placeholder; all code resolves sources through the `bundledSkillPath` registry. Installed canonical layout stays flat.
|
|
144
|
+
- Platform skill names disclose their platform: `dingtalk-agent-deploy` → `dingtalk-agent-deploy-multica`, `multica-fde-external` → `multica-external`. The platform registry binds roles to exact skills (deploy/boot/ops); `agent-platform list|show` display the mapping, `platformSkillForRole` exposes it programmatically, and `deploy`/`promote`/`observe` disclose the carrying skill on stderr.
|
|
145
|
+
- `agent-platform show|use` list local Multica login targets (profile, server URL, workspace — never tokens), and compose 0.8.0 makes user confirmation of endpoint/workspace/agent-name the first hard rule of the Multica publish chain, alongside plain-Markdown instructions with readback, empty `--model` by default, mandatory basic-behavior push/attach with a boot declaration, two-probe chat acceptance, and the dws-first robot-binding priority (list or user-confirmed create + `dingtalk-bind`, reuse existing installs, scan-QR as fallback, never a blocking `--wait`).
|
|
146
|
+
- The contract runner gains `--only=<ids>` for targeted verification; AGENTS.md reserves the full 61-scenario suite and `release:check` for deep regression and release acceptance.
|
|
147
|
+
|
|
148
|
+
### Release boundary
|
|
149
|
+
|
|
150
|
+
- Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The renamed skill was also pushed to the dedicated pre-environment registry with explicit user authorization; no robot, webhook, schedule, Trigger, or other DingTalk/Multica side effect is created. Live waivers from beta.9 remain unchanged.
|
|
151
|
+
|
|
152
|
+
## 0.1.4-beta.12 - 2026-07-19
|
|
153
|
+
|
|
154
|
+
### Added
|
|
155
|
+
|
|
156
|
+
- The `multica-fde-external` skill is bundled verbatim from the pre-fde registry into the `multica-dingtalk` platform pack: a self-contained Python wrapper (stdlib only, Python ≥3.9) covering the full delivery chain — workspace/runtime/agent provisioning, skill push/pull, DingTalk robot and account binding, the `chat-send --wait` DingTalk-free test channel, `task-trace` observability, autopilot scheduling, and `agent-check` health checks. Selecting `multica-dingtalk` now installs three platform skills.
|
|
157
|
+
- `agent-platform show|use` emit advisory readiness checks for the selected platform: multica CLI presence (with the official install command), login state (with `multica login --server-url <endpoint>` guidance), and a proxy-environment warning with an `env -u` workaround.
|
|
158
|
+
|
|
159
|
+
### Changed
|
|
160
|
+
|
|
161
|
+
- Compose Skill 0.6.0: the workflow now requires offering the user a managed-agent-platform choice (multica-dingtalk / deap coming-soon / local-only) before assembly, guides through readiness gaps, and documents the two paths to a DingTalk robot — local `dta listen` streaming debugging versus publishing through Multica (`dingtalk-begin`/`dingtalk-bind` plus the `chat-send --wait` acceptance channel). Creating a bare DingTalk app via `dws dev app robot submit` without asking the user is explicitly forbidden.
|
|
162
|
+
- Contract case 61 now verifies the three-skill lazy install for `multica-dingtalk`.
|
|
163
|
+
|
|
164
|
+
### Release boundary
|
|
165
|
+
|
|
166
|
+
- Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. No robot, webhook, schedule, Trigger, or DingTalk/Multica side effect is created by the release itself. The end-to-end evidence recorded for this line was produced on the dedicated pre environment with explicit user authorization.
|
|
167
|
+
|
|
168
|
+
## 0.1.4-beta.11 - 2026-07-19
|
|
169
|
+
|
|
170
|
+
### Added
|
|
171
|
+
|
|
172
|
+
- A managed agent platform abstraction: `dta agent-platform list|show|use` with a fixed resolution order (`DTA_AGENT_PLATFORM` env > `dingtalk-agent.json#agentPlatform` > `.dingtalk-agent/agent-platform.json` > inference from declared Multica providers). `multica-dingtalk` is supported; `deap` is registered as coming-soon and fails closed everywhere.
|
|
173
|
+
- Platform skill packs load lazily: selecting `multica-dingtalk` installs `dingtalk-agent-deploy` and `dingtalk-agent-boot-multica`; they are no longer implied by the default install. Platform-specific methodology ships in these packs, not in the CLI.
|
|
174
|
+
- `deploy`, `promote`, and `observe` now pass a fail-closed platform-membership gate; missing, unknown, or coming-soon platforms are rejected with guidance.
|
|
175
|
+
- Contract case 61 covers the registry, the gate, the coming-soon rejection, membership writing, and lazy skill installation; `agent-platform@1` schema added and `project@1` gains the optional `agentPlatform` field.
|
|
176
|
+
|
|
177
|
+
### Changed
|
|
178
|
+
|
|
179
|
+
- `dta skill install|status|upgrade|uninstall` without a name now operate on all default bundled Skills (basic-behavior + compose) with a `skill-status-suite@1` JSON envelope; an explicit name keeps the single-skill contract. `setup` installs the full default suite and `doctor` aggregates per-client discovery across it.
|
|
180
|
+
- The compose Skill (0.5.1) names 创建/新建/装配 Agent triggers and drops its placeholder wording, so "帮我创建一个 Agent" reaches it on OpenCode and other hosts.
|
|
181
|
+
- Isolated-HOME eval and release environments strip host `CLAUDE_*` variables so the upstream skills CLI cannot escape the sandbox into the real Claude config directory.
|
|
182
|
+
- Unknown-command suggestions now include `lab`, `listen`, `deploy`, `promote`, `observe`, and `agent-platform`.
|
|
183
|
+
|
|
184
|
+
### Release boundary
|
|
185
|
+
|
|
186
|
+
- Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. No robot, webhook, schedule, Trigger, or DingTalk/Multica side effect is created. The Live waivers recorded for beta.9 remain unchanged.
|
|
187
|
+
|
|
188
|
+
## 0.1.4-beta.10 - 2026-07-19
|
|
189
|
+
|
|
190
|
+
### Removed
|
|
191
|
+
|
|
192
|
+
- Legacy pre-kernel modules `src/boot.ts`, `src/duty.ts`, `src/kb.ts`, `src/runs.ts` and the unused `templates/ontology/` tree. They were dead code outside the current CLI, were already excluded from the published package, and `runs.ts` conflicted with the documented "Markdown is not a lock, idempotency store, or Receipt" boundary.
|
|
193
|
+
- The `kb`/`duties`/`eval` fields from the default AgentConfig. Existing workspace configs keep unknown fields through passthrough normalization; no migration is required.
|
|
194
|
+
|
|
195
|
+
### Changed
|
|
196
|
+
|
|
197
|
+
- Entry documents now match repository reality: CLAUDE.md gains run-mode criteria, the eval-Skill reading path, and an annotated command list; README lists all five bundled Skills; the English README is marked as a condensed overview; SECURITY.md states the actually maintained dist-tag; the eval Skill's L1 wording matches the real `dta lab eval` plan/`--execute --yes` flow (Skill 0.5.1).
|
|
198
|
+
|
|
199
|
+
### Release boundary
|
|
200
|
+
|
|
201
|
+
- Distribution is limited to the public npm `beta` dist-tag. No robot, webhook, schedule, Trigger, or DingTalk/Multica side effect is created. The Live waivers recorded for beta.9 remain unchanged.
|
|
202
|
+
|
|
203
|
+
## 0.1.4-beta.9 - 2026-07-19
|
|
204
|
+
|
|
205
|
+
### Added
|
|
206
|
+
|
|
207
|
+
- A general Agent kernel with frozen Agent Definitions, invocation context, employee response gates, durable Session/Run/Wait state, and host-verified completion evidence.
|
|
208
|
+
- Three-layer semantic memory with local and DingTalk document/table routing, candidate review/publish flow, and cold-start recovery contracts.
|
|
209
|
+
- Reusable Compose, Eval, Boot, and Deploy Skills plus two independently auditable example Agents.
|
|
210
|
+
- A Provider-bound Agent Project model with isolated OpenCode and Multica Development Workspaces.
|
|
211
|
+
- OpenCode managed create/run/eval with random Basic Skill load probes and Response/Filesystem/Workspace/Artifact evidence.
|
|
212
|
+
- Multica read-only inspection, plan-bound Agent/Skill deployment, independent readback, load smoke, recovery, rollback, and retire contracts.
|
|
213
|
+
- Policy-bound Promotion Receipts linking local Eval evidence to Multica deployment evidence, plus redacted review-only feedback candidates.
|
|
214
|
+
- Deterministic release-readiness checks that install the generated tarball into an isolated HOME and exercise setup, doctor, bootstrap, eval planning, upgrade, and rollback planning without real DingTalk or Multica access.
|
|
215
|
+
- Default-safe Phase 9 personal-event and Phase 11B remote-state Live runners with explicit resource authorization, fake-DWS contracts, independent readback, and gitignored raw evidence.
|
|
216
|
+
- Plan-bound `dta agent enhance` for existing repositories, with operation-scoped backups, semantic config merging, hash readback, source-drift protection, and zero DingTalk/Trigger side effects.
|
|
217
|
+
- A sanitized local dogfood record proving that an enhanced release-manager Agent reaches `ready` only after a real OpenCode/DeepSeek random Basic load probe.
|
|
218
|
+
|
|
219
|
+
### Changed
|
|
220
|
+
|
|
221
|
+
- Basic Behavior advanced to 0.10.0 with evidence-gated task completion. The recorded controlled-regression sample passed its safety and artifact gates, but does not prove a stable behavior-quality gain over 0.9.4.
|
|
222
|
+
- Completion grading now detects contradictory positive claims while preserving negated, conditional, and corrected statements; effectiveness requires a predeclared multi-run policy instead of any single positive delta.
|
|
223
|
+
- Agent audit now keeps generated body and Role Skill templates partial until identity, responsibilities, SOPs, and acceptance placeholders are replaced with real semantics.
|
|
224
|
+
- The deterministic contract suite now covers 60 independent scenarios.
|
|
225
|
+
|
|
226
|
+
### Live waivers and release boundary
|
|
227
|
+
|
|
228
|
+
- The user explicitly waived real Multica apply/promotion, personal-event canary, and remote semantic-state Live as release gates for this beta. The release does not relabel local or fake-Provider evidence as real platform proof.
|
|
229
|
+
- Distribution is limited to the public npm `beta` dist-tag, Git tag, and GitHub pre-release. It does not create a robot, webhook, schedule, Trigger, or DingTalk/Multica side effect.
|
|
230
|
+
|
|
231
|
+
## 0.1.4-beta.8 - 2026-07-16
|
|
232
|
+
|
|
233
|
+
- Published beta baseline preceding the general Agent kernel and Provider-bound Workspace series.
|
package/README.en.md
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# dingtalk-agent
|
|
4
|
+
|
|
5
|
+
**A verifiable behavior foundation for DingTalk digital employees.**
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@xdxer/dingtalk-agent)
|
|
8
|
+
[](https://github.com/D1-2004/dingtalk-agent/actions/workflows/ci.yml)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
|
|
12
|
+
[Quick start](#quick-start) · [How it works](#how-it-works) · [Support](#support) · [Docs](#docs)
|
|
13
|
+
|
|
14
|
+
English · [简体中文](README.md)
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
`dingtalk-agent` (`dta`) is a **Skill-first behavior kernel and delivery toolchain** for DingTalk digital employees. It assembles role definition, shared behavior, role capabilities, and execution gates into an Agent Project that can be created, tested, promoted, and audited.
|
|
19
|
+
|
|
20
|
+
> **Skills advise. The CLI gates. DWS acts.** Skills decide when and why to act; the CLI pins identity, target, budget, idempotency, and readback; DWS executes DingTalk capabilities.
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
## Quick start
|
|
25
|
+
|
|
26
|
+
Requires Node.js 18.3+.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install --global --prefix "$HOME/.local" \
|
|
30
|
+
--registry=https://registry.npmjs.org @xdxer/dingtalk-agent@beta
|
|
31
|
+
|
|
32
|
+
"$HOME/.local/bin/dta" setup --skip-cli-install
|
|
33
|
+
dta doctor
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`setup` installs the Basic Behavior and Compose Skills, then checks DWS authentication and common Agent Hosts. Normal sessions do not require Workspace initialization.
|
|
37
|
+
|
|
38
|
+
## Why it exists
|
|
39
|
+
|
|
40
|
+
A model that can talk is not yet a reliable digital employee. `dta` turns the parts most likely to drift into inherited, verifiable contracts:
|
|
41
|
+
|
|
42
|
+
- **Response judgment:** decide whether to respond before deciding what to say; stay silent in an unmentioned group chat by default.
|
|
43
|
+
- **Authority boundaries:** never infer identity, target, permission, authorization, or reply channel from message text or model memory.
|
|
44
|
+
- **Evidence-backed completion:** command success, platform visibility, delivery, and human acceptance are different states.
|
|
45
|
+
- **Reuse:** new Agents inherit shared behavior and add only role-specific differences instead of copying a giant prompt.
|
|
46
|
+
|
|
47
|
+
## How it works
|
|
48
|
+
|
|
49
|
+
An Agent is assembled from four contract layers:
|
|
50
|
+
|
|
51
|
+
| Layer | Responsibility |
|
|
52
|
+
|---|---|
|
|
53
|
+
| **`AGENTS.md`** | Role, role-specific boundaries, operating pattern, common mistakes, and the Basic startup anchor |
|
|
54
|
+
| **Basic Behavior** | Shared response eligibility, scope, authorization, privacy, completion, and memory behavior |
|
|
55
|
+
| **Role Skills** | Domain judgment, procedure, prohibited actions, and acceptance criteria |
|
|
56
|
+
| **Gate + Receipt** | Hard constraints for identity, target, budget, idempotency, state transitions, and platform readback |
|
|
57
|
+
|
|
58
|
+
The Prompt keeps only what must remain resident and precisely defined. The full behavior tree belongs in Skills. Constraints that cannot rely on model discretion belong in the Gate.
|
|
59
|
+
|
|
60
|
+
### Create → test → promote
|
|
61
|
+
|
|
62
|
+
| Stage | Main artifact | Gate |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| **Create** | `AGENTS.md`, Basic, Role Skills, bindings | Unresolved placeholders keep the project `partial` |
|
|
65
|
+
| **Test** | Isolated Workspace, load probe, behavior eval, four evidence surfaces | A project cannot become ready without proven Definition/Skill loading |
|
|
66
|
+
| **Promote** | Platform preflight, deployment Receipt, remote readback | Missing designated Eval evidence or identity chain blocks promotion |
|
|
67
|
+
| **Operate** | Digital-employee account or robot entry point, task trace | No claim of write, delivery, or completion without matching evidence |
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# 1. Generate a zero-write plan, then apply it explicitly
|
|
71
|
+
dta agent enhance --project-name release-agent --role-skill release-manager --dry-run --json
|
|
72
|
+
dta agent enhance --project-name release-agent --role-skill release-manager \
|
|
73
|
+
--plan-id <plan-id> --yes --json
|
|
74
|
+
|
|
75
|
+
# 2. Audit, run, and evaluate
|
|
76
|
+
dta agent audit --bindings agent.bindings.json --require-skill release-manager --json
|
|
77
|
+
dta workspace run local-dev --json
|
|
78
|
+
dta workspace eval local-dev --json
|
|
79
|
+
|
|
80
|
+
# 3. Inspect, promote, and observe
|
|
81
|
+
dta workspace inspect multica-dev --execute --yes --json
|
|
82
|
+
dta workspace remote-list multica-dev --execute --yes --json
|
|
83
|
+
dta promote --source local-dev --target multica-dev --dry-run --json
|
|
84
|
+
dta observe --promotion-id <promotion-id> --input <observation.json> --dry-run --json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Plans are zero-write by default. Remote writes require an explicit target, the current `planId`, and confirmation.
|
|
88
|
+
|
|
89
|
+
## Support
|
|
90
|
+
|
|
91
|
+
### Platforms, Harnesses, and runtimes
|
|
92
|
+
|
|
93
|
+
These are separate concepts:
|
|
94
|
+
|
|
95
|
+
- A **Managed Agent Platform** owns Workspace, Runtime, Agent, Skill, identity binding, and observation.
|
|
96
|
+
- An **Agent Harness** loads Definition/Skills, isolates execution, and captures evidence.
|
|
97
|
+
- The **dta Kernel** depends on a shared contract, not a specific Harness prompt or private directory layout.
|
|
98
|
+
|
|
99
|
+
| Dimension | Current support |
|
|
100
|
+
|---|---|
|
|
101
|
+
| **Managed Platform** | Multica (DingTalk) supported; DEAP coming soon; additional platforms through registry + adapters |
|
|
102
|
+
| **Local runtime** | Direct/Mounted sessions in Claude Code, Codex, OpenCode, and similar Hosts; OpenCode is the current complete local managed-Harness reference |
|
|
103
|
+
| **Cloud runtime** | Multica Workspace / Runtime / Agent with the same Definition, Skills, Gate, and evidence contract |
|
|
104
|
+
| **Delivery identity** | Digital-employee/account identity or robot-app identity; neither expands the Agent role or authority |
|
|
105
|
+
|
|
106
|
+
OpenCode is not a runtime dependency, and Multica is not a privileged bypass. Any promotable Harness must prove the same outcomes: loaded Definition and Skills, pinned identity and isolation, retrievable execution trace, and independent readback.
|
|
107
|
+
|
|
108
|
+
“Multi-platform” means the architecture, registry, and adapter contract are extensible. It does not claim that unopened platforms have been deployed or Live-verified.
|
|
109
|
+
|
|
110
|
+
### Runtime modes
|
|
111
|
+
|
|
112
|
+
| Mode | Use | Boundary |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| **Direct Session** | Normal interactive work | Never guess an outbound target without a trusted event |
|
|
115
|
+
| **Mounted Session** | Mount local or DingTalk semantic content | Locks, idempotency, and Receipts do not live in Markdown |
|
|
116
|
+
| **Prepared Run** | Reliable event-driven side effects | Actions go only through the typed Broker or `dta act` |
|
|
117
|
+
|
|
118
|
+
Prepared Runs expose four message atoms: `ack`, `reply`, `ask`, and `silence`. An acknowledgement is not task acceptance, and a reply is not human acceptance.
|
|
119
|
+
|
|
120
|
+
## What a generated Agent inherits
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
my-agent/
|
|
124
|
+
├── AGENTS.md Role constitution + Basic inheritance anchor
|
|
125
|
+
├── agent.bindings.json Definition and storage routing
|
|
126
|
+
├── dingtalk-agent.json Agent Project desired state
|
|
127
|
+
├── .agents/skills/
|
|
128
|
+
│ ├── dingtalk-basic-behavior/ Complete shared behavior tree
|
|
129
|
+
│ └── <role>/ Host-discoverable Role Skill
|
|
130
|
+
├── skills/<role>/SKILL.md Versioned role capability source
|
|
131
|
+
└── .dingtalk-agent/ Private state, evidence, and Receipts
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
The generated `AGENTS.md` keeps four atomic contracts: **definition, non-negotiable boundaries, operating pattern, and common mistakes**. It also says to apply `dingtalk-basic-behavior` before loading task-relevant Role Skills.
|
|
135
|
+
|
|
136
|
+
File presence is not inheritance evidence. `agent audit --verify-load` binds real load results to Definition/Skill hashes, Host/model versions, isolated probes, and raw run/export evidence:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
dta agent audit \
|
|
140
|
+
--bindings agent.bindings.json \
|
|
141
|
+
--require-skill <role-skill-name> \
|
|
142
|
+
--verify-load --yes --json
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Non-negotiable boundaries
|
|
146
|
+
|
|
147
|
+
- Normal sessions never auto-run `dingtalk-agent init`.
|
|
148
|
+
- Target, actor, conversation, DWS profile, and permissions come only from a trusted Host or event.
|
|
149
|
+
- Prepared Run messaging goes only through a typed Broker or `dta act`; it cannot bypass the Gate.
|
|
150
|
+
- An online Run may propose memory or Skill candidates, but cannot hot-modify current identity, permission, or policy.
|
|
151
|
+
- Model claims, process exit 0, platform-visible writes, delivery, and human acceptance require separate evidence.
|
|
152
|
+
|
|
153
|
+
## Docs
|
|
154
|
+
|
|
155
|
+
| Goal | Start here |
|
|
156
|
+
|---|---|
|
|
157
|
+
| Understand architecture and state | [Architecture](docs/ARCHITECTURE.md) |
|
|
158
|
+
| Install, upgrade, or troubleshoot | [Installation](docs/INSTALLATION.md) |
|
|
159
|
+
| Understand evaluation and evidence levels | [Self-test](docs/SELF-TEST.md) |
|
|
160
|
+
| Create or audit an Agent | [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md) |
|
|
161
|
+
| Test or debug a delivered Agent | [Eval Skill](skills/core/dingtalk-agent-eval/SKILL.md) |
|
|
162
|
+
| Read the shared behavior protocol | [Basic Behavior Skill](skills/core/dingtalk-basic-behavior/SKILL.md) |
|
|
163
|
+
| Copy a complete example | [Example Agents](examples/agents) |
|
|
164
|
+
|
|
165
|
+
Behavior assets come from observable contracts, counterexample-driven revision, and deployable verification. This project does not claim access to any product's hidden system prompt.
|
|
166
|
+
|
|
167
|
+
MIT License
|