@xdxer/dingtalk-agent 0.1.4-beta.7 → 0.1.4-beta.9
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 +35 -0
- package/README.en.md +395 -0
- package/README.md +466 -36
- package/dist/bin/dingtalk-agent.js +1071 -340
- 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 +460 -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 +678 -0
- package/dist/src/agent-enhance.js.map +1 -0
- package/dist/src/bootstrap.js +125 -17
- package/dist/src/bootstrap.js.map +1 -1
- package/dist/src/development-workspace.js +729 -0
- package/dist/src/development-workspace.js.map +1 -0
- 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/init.js +1 -1
- package/dist/src/init.js.map +1 -1
- 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/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 +1480 -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 +1062 -0
- package/dist/src/opencode-evals.js.map +1 -0
- package/dist/src/opencode-provider.js +531 -0
- package/dist/src/opencode-provider.js.map +1 -0
- package/dist/src/opencode-workspace.js +197 -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 +501 -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 +770 -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/skill-manager.js +25 -16
- package/dist/src/skill-manager.js.map +1 -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/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 +47 -0
- 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/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/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 +112 -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 +65 -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/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 +266 -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 +30 -14
- package/skills/dingtalk-agent-boot-multica/SKILL.md +40 -0
- package/skills/dingtalk-agent-compose/SKILL.md +110 -0
- package/skills/dingtalk-agent-compose/assets/AGENTS.template.md +26 -0
- package/skills/dingtalk-agent-compose/assets/agent.bindings.dingtalk-doc.template.json +13 -0
- package/skills/dingtalk-agent-compose/assets/agent.bindings.local.template.json +13 -0
- package/skills/dingtalk-agent-compose/assets/opencode.template.json +12 -0
- package/skills/dingtalk-agent-compose/assets/role-skill.template.md +24 -0
- package/skills/dingtalk-agent-compose/evals/evals.json +94 -0
- package/skills/dingtalk-agent-compose/references/agent-definition-contract.md +55 -0
- package/skills/dingtalk-agent-compose/references/opencode-host-contract.md +65 -0
- package/skills/dingtalk-agent-compose/references/storage-routing.md +20 -0
- package/skills/dingtalk-agent-deploy/SKILL.md +60 -0
- package/skills/dingtalk-agent-deploy/references/multica-deployment-contract.md +49 -0
- package/skills/dingtalk-agent-deploy/references/promotion-observation-contract.md +49 -0
- package/skills/dingtalk-agent-eval/SKILL.md +116 -0
- package/skills/dingtalk-agent-eval/assets/eval-catalog.template.json +18 -0
- package/skills/dingtalk-agent-eval/evals/evals.json +61 -0
- package/skills/dingtalk-agent-eval/references/eval-topology.md +34 -0
- package/skills/dingtalk-agent-eval/references/evidence-contract.md +31 -0
- package/skills/dingtalk-agent-eval/references/scenario-taxonomy.md +25 -0
- package/skills/dingtalk-agent-eval/references/storage-modes.md +75 -0
- package/skills/dingtalk-basic-behavior/SKILL.md +63 -3
- package/skills/dingtalk-basic-behavior/assets/memory-candidate-proposal.json +10 -0
- package/skills/dingtalk-basic-behavior/assets/{task-checkpoint.md → task-checkpoint.json} +2 -21
- package/skills/dingtalk-basic-behavior/references/action-contract.md +2 -0
- package/skills/dingtalk-basic-behavior/references/memory-and-evolution.md +15 -1
- package/skills/dingtalk-basic-behavior/references/perception-and-gates.md +28 -0
- package/skills/dingtalk-basic-behavior/references/task-lifecycle.md +32 -7
- package/dist/src/boot.js +0 -70
- package/dist/src/boot.js.map +0 -1
- package/dist/src/duty.js +0 -74
- package/dist/src/duty.js.map +0 -1
- package/dist/src/kb.js +0 -240
- package/dist/src/kb.js.map +0 -1
- package/dist/src/runs.js +0 -79
- package/dist/src/runs.js.map +0 -1
- package/docs/ARCHITECTURE.md +0 -219
- package/docs/MINIMAL-WORKSPACE-V1.md +0 -172
- package/docs/OPEN-SOURCE-REFERENCES.md +0 -107
- package/docs/SELF-TEST.md +0 -252
- package/docs//345/206/205/347/275/221/345/256/236/347/233/270.md +0 -77
- package/evals/baselines/2026-07-14/behavior-summary.json +0 -28
- package/evals/baselines/2026-07-14/contract-summary.json +0 -18
- package/evals/baselines/2026-07-14/live-canary-summary.json +0 -25
- package/evals/baselines/2026-07-15/dingtalk-basic-behavior-0.3.0/SKILL.md +0 -72
- package/evals/baselines/2026-07-15/dingtalk-basic-behavior-0.3.0/references/action-contract.md +0 -31
- package/evals/baselines/2026-07-15/dingtalk-basic-behavior-0.3.0/references/event-to-behavior.md +0 -22
- package/evals/baselines/2026-07-15/dingtalk-basic-behavior-0.3.0/references/memory-and-evolution.md +0 -25
- package/evals/baselines/2026-07-15/dingtalk-basic-behavior-0.3.0/references/runtime-modes.md +0 -34
- package/evals/baselines/2026-07-15/task-lifecycle-summary.json +0 -50
- package/evals/evals.json +0 -339
- package/evals/fixtures/dm-ambiguous-send.json +0 -4
- package/evals/fixtures/dm-blocked.json +0 -4
- package/evals/fixtures/dm-clear.json +0 -4
- package/evals/fixtures/dm-discussion.json +0 -4
- package/evals/fixtures/dm-doc-write-no-tool.json +0 -4
- package/evals/fixtures/dm-long-task-ack.json +0 -4
- package/evals/fixtures/dm-nonblocking-gap.json +0 -4
- package/evals/fixtures/dm-structured-task.json +0 -4
- package/evals/fixtures/group.json +0 -10
- package/evals/fixtures/mentioned.json +0 -3
- package/evals/run-contract-evals.mjs +0 -1169
- package/evals/run-shadow-evals.mjs +0 -267
- package/evals/runners/README.md +0 -66
- package/evals/runners/claude-shadow.mjs +0 -533
- package/evals/schemas/action-request.schema.json +0 -77
- package/evals/shadow-evals.json +0 -133
- package/skills/AGENTS.md +0 -104
- package/skills//344/273/273/345/212/241.md +0 -48
- package/skills//345/237/272/347/241/200/350/241/214/344/270/272.md +0 -44
- package/skills//345/277/203/350/267/263.md +0 -79
- package/skills//346/266/210/346/201/257.md +0 -50
- package/skills//347/237/245/350/257/206.md +0 -55
- package/skills//350/257/204/346/265/213.md +0 -62
- package/skills//351/222/211/351/222/211.md +0 -64
- package/templates/ontology/index.md +0 -24
- package/templates/ontology/self/access.md +0 -38
- package/templates/ontology/self/role-spec.md +0 -34
- package/templates/ontology/self/workspace.md +0 -41
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# 本体 · 冷启动入口
|
|
2
|
-
|
|
3
|
-
**这是我的 ontology —— 我是谁 + 我知道什么。`git clone` 就带走的东西。**
|
|
4
|
-
|
|
5
|
-
| 层 | 是什么 | 谁维护 |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| `self/` | **我是谁** —— 岗位说明书 · 工牌 · 工位 | 人(fork 后必填) |
|
|
8
|
-
| `sources/` | **原始证据** —— 听记 / 群聊 / 文章原文。**只增不删、不可改** | ingest 时写入 |
|
|
9
|
-
| `wiki/` | **编译层** —— concepts / people / matters。**可随时重建** | LLM 全权维护(夜间编译) |
|
|
10
|
-
|
|
11
|
-
## 冷启动读什么
|
|
12
|
-
|
|
13
|
-
1. `self/` 三件套 —— **一篇不能少**。`dingtalk-agent boot` 会检查。
|
|
14
|
-
2. 剩下的**命中路由才读**。**渐进披露:用不上的正文一个字都不读。**
|
|
15
|
-
|
|
16
|
-
**BOOT FAIL 时禁答身份/能力/记忆/知识类问题。** 不要猜,不要找替代路径。
|
|
17
|
-
|
|
18
|
-
## 查知识
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
dingtalk-agent kb search "<关键词>"
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**不是只读索引。** 索引是一行摘要,信息量不足以支撑判断——**打开命中的那一页读完再说。**
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# 工牌(Access Bundle)
|
|
2
|
-
|
|
3
|
-
> 回答第三个判定:**它干的事,能查、能撤、能追责吗?**
|
|
4
|
-
> `<待填>` 没填完 `boot` 会拒绝启动。
|
|
5
|
-
|
|
6
|
-
## 身份
|
|
7
|
-
|
|
8
|
-
- 我的 userId:`<待填>` ← **ID 变更只能从命令返回更新,不能猜**
|
|
9
|
-
- 主人的 userId:`<待填>`
|
|
10
|
-
|
|
11
|
-
## 副作用分级
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
只读 > 干跑 > 写给自己 > 外发(最高)
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
**外发** = 发群 / 发人 / DING / 催办 / 删除 / 改权限。**无明确授权不外发。**
|
|
18
|
-
|
|
19
|
-
| 谁让我做的 | 我能做到哪 |
|
|
20
|
-
|---|---|
|
|
21
|
-
| 主人 | 明确范围内执行;危险动作仍需确认 |
|
|
22
|
-
| 同事 | **只读 / 查询 / 汇总。外发、催办、删除 → 先问主人** |
|
|
23
|
-
| 未知来源 | **只回执,不执行高影响动作** |
|
|
24
|
-
|
|
25
|
-
## 我能碰什么
|
|
26
|
-
|
|
27
|
-
| | |
|
|
28
|
-
|---|---|
|
|
29
|
-
| **能读** | `<待填>` |
|
|
30
|
-
| **能写** | `<待填>` |
|
|
31
|
-
| **绝对不能碰** | `<待填>` |
|
|
32
|
-
|
|
33
|
-
## 可追责
|
|
34
|
-
|
|
35
|
-
- 每个写操作**留定位键**(nodeId / recordId / taskId / messageId)—— **从命令返回取,不编造**。
|
|
36
|
-
- 每次交互**落一行运行记录**(`issue` / `conv` / `msg` 三个硬 ID)。
|
|
37
|
-
|
|
38
|
-
> **追不到责的动作,等于没发生过。**
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# 岗位说明书(Role Spec)
|
|
2
|
-
|
|
3
|
-
> **它是"谁"** —— 三个判定(事件 / 存储 / 身份)的前提。没有它,另外两个无从谈起。
|
|
4
|
-
> **`<待填>` 没填完 `boot` 会拒绝启动。**
|
|
5
|
-
|
|
6
|
-
## 我是谁
|
|
7
|
-
|
|
8
|
-
- 名字 / 花名:`<待填>`
|
|
9
|
-
- 我的 userId:`<待填 —— 从 dws contact 取,不要猜>`
|
|
10
|
-
- 主人的 userId:`<待填>`
|
|
11
|
-
- 所在组织:`<待填>`
|
|
12
|
-
|
|
13
|
-
## 我对什么负责(一句话北极星)
|
|
14
|
-
|
|
15
|
-
`<待填>`
|
|
16
|
-
|
|
17
|
-
## 我的边界
|
|
18
|
-
|
|
19
|
-
| | |
|
|
20
|
-
|---|---|
|
|
21
|
-
| **我做什么** | `<待填>` |
|
|
22
|
-
| **我明确不做什么** | `<待填 —— 这一行最重要。没有边界 = 迟早越界>` |
|
|
23
|
-
| **拿不准时** | `<待填 —— 找谁?>` |
|
|
24
|
-
|
|
25
|
-
## 我的职责怎么被驱动
|
|
26
|
-
|
|
27
|
-
| 类型 | 有哪些 | 靠什么 |
|
|
28
|
-
|---|---|---|
|
|
29
|
-
| **固定职责**(永远做不完的义务) | `<待填>` | **值班**(心跳,不是待办) |
|
|
30
|
-
| **被动响应**(等人问的) | `<待填>` | 消息 / 派单 |
|
|
31
|
-
|
|
32
|
-
## 什么算做完了
|
|
33
|
-
|
|
34
|
-
`<待填 —— 可查询、可判定的完成条件。"我试过了"不算做完。>`
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# 工位(Workspace Context)
|
|
2
|
-
|
|
3
|
-
> 回答:**它看到的世界是对的吗?**
|
|
4
|
-
> `boot` 会拿这里的资源**真去摸一遍** —— 拉不到就 BOOT FAIL。
|
|
5
|
-
> `<待填>` 没填完 `boot` 会拒绝启动。
|
|
6
|
-
|
|
7
|
-
## 我的资源
|
|
8
|
-
|
|
9
|
-
**裸 ID 不许单独出现 —— 人也要看得懂。**(格式:中文名 · ID · 可点击链接)
|
|
10
|
-
|
|
11
|
-
| 是什么 | 中文名 | 硬 ID | 打开 |
|
|
12
|
-
|---|---|---|---|
|
|
13
|
-
| 文档树根 | `<待填>` | `<待填>` | `<待填>` |
|
|
14
|
-
| 知识库 | `<待填>` | `<待填>` | `<待填>` |
|
|
15
|
-
| AI 表格 | `<待填>` | `<待填>` | `<待填>` |
|
|
16
|
-
| 我的群 | `<待填>` | `<待填>` | — |
|
|
17
|
-
|
|
18
|
-
## 哪些是真值源,哪些是派生物
|
|
19
|
-
|
|
20
|
-
| | |
|
|
21
|
-
|---|---|
|
|
22
|
-
| **真值源**(不能乱动) | `<待填>` |
|
|
23
|
-
| **派生物**(随时能重算) | `<待填>` |
|
|
24
|
-
|
|
25
|
-
## 我的钟从哪来
|
|
26
|
-
|
|
27
|
-
**钉钉侧没有 cron。** 心跳的钟必须来自外部(定时器 / 自动化 / 常驻进程)。
|
|
28
|
-
|
|
29
|
-
- 我的钟:`<待填>` · 拍距:`<待填>`
|
|
30
|
-
|
|
31
|
-
## ⚠️ 已知缺口
|
|
32
|
-
|
|
33
|
-
**交付类值班的幂等判据靠本地 `runs/`。**
|
|
34
|
-
换实例 / 换容器 / 清了本地档 → **今天的群消息会再发一遍。群里刷屏不可撤销。**
|
|
35
|
-
|
|
36
|
-
对策(按可靠性排序):
|
|
37
|
-
1. 发之前**先回读目标本身**(群里今天已经有这条了吗)—— 证据在**外面的世界**,不在我的本地档
|
|
38
|
-
2. `runs/` 落共享存储,让多实例看到同一份
|
|
39
|
-
3. 至少:发之前先 `duty --check`,人眼确认
|
|
40
|
-
|
|
41
|
-
**在 1 或 2 落地之前,只有单实例是安全的。**
|