@amaster.ai/pi-lark 0.1.2-beta.44 → 0.1.2-beta.45
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/package.json +2 -2
- package/skills/lark-apps/SKILL.md +23 -12
- package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
- package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
- package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
- package/skills/lark-apps/creative-design/assets/index.html +27 -0
- package/skills/lark-apps/creative-design/creative-design.md +239 -0
- package/skills/lark-apps/creative-design/references/aily.md +39 -0
- package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
- package/skills/lark-apps/creative-design/references/charts.md +165 -0
- package/skills/lark-apps/creative-design/references/claude.md +36 -0
- package/skills/lark-apps/creative-design/references/codex.md +32 -0
- package/skills/lark-apps/creative-design/references/data-report.md +108 -0
- package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
- package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
- package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
- package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
- package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
- package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
- package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
- package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
- package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
- package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
- package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
- package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
- package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
- package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
- package/skills/lark-apps/references/lark-apps-automation.md +80 -2
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
- package/skills/lark-apps/references/lark-apps-create.md +1 -2
- package/skills/lark-apps/references/lark-apps-db.md +1 -1
- package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
- package/skills/lark-apps/references/lark-apps-file.md +1 -1
- package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
- package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
- package/skills/lark-apps/references/lark-apps-init.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
- package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
- package/skills/lark-base/SKILL.md +1 -2
- package/skills/lark-base/references/lark-base-cell-value.md +3 -3
- package/skills/lark-base/references/lark-base-field-create.md +4 -0
- package/skills/lark-base/references/lark-base-field-json.md +4 -4
- package/skills/lark-base/references/lark-base-field-update.md +17 -1
- package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
- package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
- package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
- package/skills/lark-calendar/references/lark-calendar-create.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-update.md +3 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +10 -2
- package/skills/lark-doc/references/lark-doc-whiteboard.md +9 -8
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +41 -0
- package/skills/lark-doc/references/lark-doc-xml.md +3 -2
- package/skills/lark-drive/SKILL.md +4 -1
- package/skills/lark-drive/references/lark-drive-comment-location.md +2 -2
- package/skills/lark-drive/references/lark-drive-upload.md +1 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
- package/skills/lark-event/SKILL.md +1 -0
- package/skills/lark-event/references/lark-event-application.md +38 -0
- package/skills/lark-im/SKILL.md +1 -1
- package/skills/lark-im/references/lark-im-flag-list.md +8 -7
- package/skills/lark-okr/SKILL.md +71 -26
- package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
- package/skills/lark-okr/references/lark-okr-create.md +173 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
- package/skills/lark-okr/references/lark-okr-entities.md +1 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
- package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
- package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
- package/skills/lark-slides/SKILL.md +103 -46
- package/skills/lark-slides/references/asset-planning.md +6 -4
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +2 -3
- package/skills/lark-slides/references/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +1 -2
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
- package/skills/lark-slides/references/lark-slides-replace-slide.md +0 -3
- package/skills/lark-slides/references/lark-slides-screenshot.md +1 -1
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +219 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +6 -5
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +65 -30
- package/skills/lark-slides/references/planning-layer.md +11 -10
- package/skills/lark-slides/references/slides_chart_demo.xml +1416 -1
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +1 -45
- package/skills/lark-slides/references/troubleshooting.md +25 -7
- package/skills/lark-slides/references/validation-checklist.md +33 -13
- package/skills/lark-slides/references/visual-planning.md +25 -22
- package/skills/lark-slides/references/xml-schema-quick-ref.md +225 -46
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +223 -22
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +183 -124
- package/skills/lark-whiteboard/SKILL.md +13 -12
- package/skills/lark-whiteboard/elements/layout.md +1 -1
- package/skills/lark-whiteboard/elements/schema.md +2 -2
- package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +7 -17
- package/skills/lark-whiteboard/routes/dsl.md +3 -3
- package/skills/lark-whiteboard/routes/mermaid.md +2 -2
- package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
- package/skills/lark-whiteboard/routes/svg.md +11 -6
- package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
- package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
- package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/treemap.md +1 -1
- package/skills/lark-wiki/SKILL.md +1 -0
- package/skills/lark-slides/references/examples.md +0 -91
- package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
- package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
- package/skills/lark-slides/references/slide-templates.md +0 -201
- package/skills/lark-slides/references/slides_demo.xml +0 -226
- package/skills/lark-slides/references/xml-format-guide.md +0 -433
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# 主题资料收集工作流:审核与计划
|
|
2
|
+
|
|
3
|
+
由状态 `RELEVANCE_CLASSIFY`、`PLAN_MOVE` 加载。
|
|
4
|
+
|
|
5
|
+
本文档负责相关性分级、审核 UI、移动计划生成和 `MovePlanItem`。不得重新执行资源解析或内容验证,也不得创建目标、移动资源或执行恢复操作。
|
|
6
|
+
|
|
7
|
+
本文档只服务 `topic_move_collector`。进入本文档时,`workflow_id` 必须是 `topic_move_collector`;不得把当前任务改路由到其他 workflow。
|
|
8
|
+
|
|
9
|
+
## 输入契约
|
|
10
|
+
|
|
11
|
+
进入本文档前必须已有:
|
|
12
|
+
|
|
13
|
+
1. `resource_items`,且每个 `ResourceItem` 已包含稳定 `resource_id`、资源类型、移动所需 token、结构化当前父级、权限状态、内容验证状态和证据。
|
|
14
|
+
2. `content_verify_completed=true`。
|
|
15
|
+
3. 每个资源都有内容证据、搜索证据复用说明或明确跳过原因。
|
|
16
|
+
|
|
17
|
+
`ResourceItem` schema 和字段生成规则由 [`lark-drive-workflow-topic-move-collector-resolve-verify.md`](lark-drive-workflow-topic-move-collector-resolve-verify.md) 负责。只要上述输入契约完整,本状态不得为重复读取 schema 而重新加载或执行前一阶段文档。
|
|
18
|
+
|
|
19
|
+
如果输入字段缺失、资源需要重新解析或用户要求重新读取证据,废弃受影响的相关性和计划结果,返回 `RESOURCE_RESOLVE` 或 `CONTENT_VERIFY`,并加载资源解析与内容验证文档;不得在本状态补猜。
|
|
20
|
+
|
|
21
|
+
## 状态:`RELEVANCE_CLASSIFY`
|
|
22
|
+
|
|
23
|
+
进入条件:`CONTENT_VERIFY` 已完成,`content_verify_completed=true`,且每个 `ResourceItem` 都已有验证状态或跳过验证原因。
|
|
24
|
+
|
|
25
|
+
禁止条件:
|
|
26
|
+
|
|
27
|
+
1. 只有 `candidate_items`,没有 `resource_items`。
|
|
28
|
+
2. 资源未经过 `RESOURCE_RESOLVE`。
|
|
29
|
+
3. 资源没有 `RESOURCE_RESOLVE` 写入的移动资格状态。
|
|
30
|
+
4. 资源没有 `CONTENT_VERIFY` 写入的验证状态或跳过验证原因。
|
|
31
|
+
5. 上一完成状态是 `RESOURCE_RESOLVE`,或 `content_verify_completed` 不为 `true`。
|
|
32
|
+
|
|
33
|
+
必须将每个资源归入且只归入一个分组:
|
|
34
|
+
|
|
35
|
+
| 分组 | 说明 | 默认移动 |
|
|
36
|
+
|-------|------|--------------|
|
|
37
|
+
| `high` | 可移动资源,且主题或内容直接命中,有明确标题 / 正文 / 表格 / 评论证据。 | 是 |
|
|
38
|
+
| `medium` | 可移动资源,可能相关,但证据不足或只命中弱相关片段。 | 否,需用户选择 |
|
|
39
|
+
| `low` | 可移动资源,弱相关或噪声,保留展示但不建议移动。 | 否 |
|
|
40
|
+
| `permission_denied` | 当前身份无权读取或解析,不能验证内容。 | 否 |
|
|
41
|
+
| `no_move_permission` | 已确认当前身份不具备移动资格。 | 否 |
|
|
42
|
+
| `move_permission_unknown` | 无法确认当前身份是否具备移动资格。 | 否 |
|
|
43
|
+
| `unverifiable` | 类型或工具限制导致无法验证内容。 | 否 |
|
|
44
|
+
| `unsupported_move_target` | 目标方向或资源类型不支持移动。 | 否 |
|
|
45
|
+
|
|
46
|
+
`high`、`medium` 和 `low` 只能包含 `move_permission_state=movable` 且 `target_write_state=confirmed` 的资源。
|
|
47
|
+
|
|
48
|
+
判为高相关至少需要一个强证据:
|
|
49
|
+
|
|
50
|
+
1. 标题或内容中出现精确主题短语。
|
|
51
|
+
2. 多个主题词在相关上下文中同时出现。
|
|
52
|
+
3. Sheet / 表格单元格明确匹配用户主题。
|
|
53
|
+
4. 用户明确提供的文档名或项目别名命中。
|
|
54
|
+
|
|
55
|
+
中相关示例:
|
|
56
|
+
|
|
57
|
+
1. 标题包含一个主题词,但内容无法确认。
|
|
58
|
+
2. 搜索摘要看起来相关,但无法完整读取。
|
|
59
|
+
3. 别名命中合理但证据不够强。
|
|
60
|
+
|
|
61
|
+
## 审核 UI
|
|
62
|
+
|
|
63
|
+
必须展示每个分组中的资源名称。
|
|
64
|
+
|
|
65
|
+
默认展示规则:
|
|
66
|
+
|
|
67
|
+
1. 展开 `high` 和 `medium`。
|
|
68
|
+
2. 折叠 `low`、`permission_denied`、`no_move_permission`、`move_permission_unknown`、`unverifiable` 和 `unsupported_move_target`,但展示数量并允许展开。
|
|
69
|
+
3. 每个可见资源展示标题、类型、当前位置、证据和默认动作。
|
|
70
|
+
4. 除非用户要求技术细节,否则不展示原始 token。
|
|
71
|
+
|
|
72
|
+
示例:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
筛选结果:
|
|
76
|
+
|
|
77
|
+
搜索范围:<当前用户 owner / 负责的资源 | 所有当前身份可见资源>
|
|
78
|
+
|
|
79
|
+
高相关(默认移动):
|
|
80
|
+
- 标题|类型|证据|当前位置
|
|
81
|
+
|
|
82
|
+
中相关(需你勾选后才移动):
|
|
83
|
+
- 标题|类型|证据|当前位置
|
|
84
|
+
|
|
85
|
+
未默认移动:
|
|
86
|
+
- 低相关:N 项
|
|
87
|
+
- 无权限:N 项
|
|
88
|
+
- 无移动权限:N 项
|
|
89
|
+
- 移动权限未知:N 项
|
|
90
|
+
- 无法验证:N 项
|
|
91
|
+
- 不支持移动:N 项
|
|
92
|
+
|
|
93
|
+
你可以选择:
|
|
94
|
+
1. 确认按默认规则生成移动计划。
|
|
95
|
+
2. 勾选要加入计划的中相关资源。
|
|
96
|
+
3. 要求把某些资源移到其他分组或从计划中移除。
|
|
97
|
+
4. 展开低相关 / 无权限 / 无移动权限 / 移动权限未知 / 无法验证 / 不支持移动分组查看名称。
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 用户调整规则
|
|
101
|
+
|
|
102
|
+
如果用户不同意相关性结果,必须基于用户要求更新 `relevance_groups`,再重新展示分组结果并重新生成后续移动计划。
|
|
103
|
+
|
|
104
|
+
典型调整包括:
|
|
105
|
+
|
|
106
|
+
1. 从 `high` 中移除某个资源。
|
|
107
|
+
2. 将 `medium` 中某个资源提升为 `high`。
|
|
108
|
+
3. 将某个资源标为 `low` 或不移动。
|
|
109
|
+
4. 要求重新读取证据或重新判断一批资源。
|
|
110
|
+
5. 要求重新确认某些资源的移动权限。
|
|
111
|
+
|
|
112
|
+
用户调整后:
|
|
113
|
+
|
|
114
|
+
1. 旧的 `move_plan_items` 立即失效。
|
|
115
|
+
2. 必须先输出“调整后相关性结果”,展示被调整项、各分组数量和高 / 中相关资源名称。
|
|
116
|
+
3. 不得只回复“已调整”,也不得直接跳到 `CONFIRM_EXECUTION`。
|
|
117
|
+
4. 必须基于新的 `relevance_groups` 重新执行 `PLAN_MOVE`。
|
|
118
|
+
5. 不得把 `no_move_permission` 或 `move_permission_unknown` 资源直接提升到 `high` / `medium`;必须先回到 `RESOURCE_RESOLVE`,加载 [`lark-drive-workflow-topic-move-collector-resolve-verify.md`](lark-drive-workflow-topic-move-collector-resolve-verify.md) 取得可移动证据。
|
|
119
|
+
|
|
120
|
+
### 调整后结果 UI
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
已按你的要求调整相关性结果:
|
|
124
|
+
- <标题>:<原分组> -> <新分组>
|
|
125
|
+
|
|
126
|
+
调整后分组:
|
|
127
|
+
|
|
128
|
+
搜索范围:<当前用户 owner / 负责的资源 | 所有当前身份可见资源>
|
|
129
|
+
|
|
130
|
+
高相关(默认移动):N 项
|
|
131
|
+
- 标题|类型|证据|当前位置
|
|
132
|
+
|
|
133
|
+
中相关(需你勾选后才移动):N 项
|
|
134
|
+
- 标题|类型|证据|当前位置
|
|
135
|
+
|
|
136
|
+
未默认移动:
|
|
137
|
+
- 低相关:N 项
|
|
138
|
+
- 无权限:N 项
|
|
139
|
+
- 无移动权限:N 项
|
|
140
|
+
- 移动权限未知:N 项
|
|
141
|
+
- 无法验证:N 项
|
|
142
|
+
- 不支持移动:N 项
|
|
143
|
+
|
|
144
|
+
接下来会基于这个调整后的结果重新生成移动计划;你也可以继续调整。
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 状态:`PLAN_MOVE`
|
|
148
|
+
|
|
149
|
+
进入条件:相关性分组已准备。
|
|
150
|
+
|
|
151
|
+
必须:
|
|
152
|
+
|
|
153
|
+
1. 当 `target_location.create_required=true` 时,纳入目标创建计划。
|
|
154
|
+
2. 生成移动计划前,比较规范化的当前父级与目标父级;已在目标位置的资源生成 `skip_resource`,设置 `skip_reason=already_at_target`,不得生成移动命令。
|
|
155
|
+
3. 默认纳入全部 `high`、`move_permission_state=movable` 且 `target_write_state=confirmed` 的资源。
|
|
156
|
+
4. 只有用户明确选择时,才纳入 `medium`、`move_permission_state=movable` 且 `target_write_state=confirmed` 的资源。
|
|
157
|
+
5. 默认排除 `low`、`permission_denied`、`no_move_permission`、`move_permission_unknown`、`unverifiable` 和 `unsupported_move_target`。
|
|
158
|
+
6. 为每个跳过项生成 `skip_reason`。
|
|
159
|
+
7. 为每个计划项生成稳定 `plan_id`,并使用 `resource_id` 连接对应资源;不得按标题或临时 token 猜测关联。
|
|
160
|
+
8. 按 `command_family` 保存完整、不可变的 `command_args`;不得把 Wiki 底层对象 token 当作 Wiki 节点移动 token。
|
|
161
|
+
9. 为每个 `move_resource` 项复制执行前恢复所需的完整 `rollback_input`,使确认计划不依赖运行时回查 `ResourceItem`。
|
|
162
|
+
10. 当前父级无法结构化解析或属于 Drive / Wiki 跨容器移动时,设置 `rollback_supported=false` 和明确 `rollback_blocker`;该单项仍可进入确认,但必须逐项展示不可恢复风险,不得阻塞其他独立项。
|
|
163
|
+
11. 停止并等待用户选择或执行意图。
|
|
164
|
+
12. 不得为 `move_permission_state!=movable` 或 `target_write_state!=confirmed` 的资源生成 `move_resource` 计划项。
|
|
165
|
+
|
|
166
|
+
### 已在目标位置判定
|
|
167
|
+
|
|
168
|
+
1. `drive_move` 比较 `current_parent_kind` 和目标 Drive 父级,并比较规范化后的 `current_parent_token` / root 标识。
|
|
169
|
+
2. `wiki_move_node` 比较 `current_parent_space_id`、`current_parent_kind` 和 `current_parent_token`;Wiki 空间根节点使用明确的 root 标识,不得用空字符串和未知状态混淆。
|
|
170
|
+
3. 只有父级类型、space ID(适用时)和 token 都已解析且相等时,才能设置 `skip_reason=already_at_target`;父级未知时不得猜测为相等。
|
|
171
|
+
|
|
172
|
+
### 移动 token 选择
|
|
173
|
+
|
|
174
|
+
| `command_family` | `command_args` 必须包含 |
|
|
175
|
+
|------------------|---------------------------|
|
|
176
|
+
| `drive +move` | `file_token`、`type`、`folder_token`;移动到 Drive root 时显式记录 `folder_token` 为空且目标类型为 root。 |
|
|
177
|
+
| `wiki +move`(node) | `node_token`,以及 `target_space_id` 或 `target_parent_token`;可选 `source_space_id`。不得使用 `wiki_obj_token` 代替 `node_token`。 |
|
|
178
|
+
| `wiki +move`(docs-to-wiki) | `obj_type`、`obj_token`、`target_space_id`、可选 `target_parent_token`,并显式保存 `apply=false`。 |
|
|
179
|
+
| `wiki +move-to-drive` | `node_token`、`folder_token`;移动到 Drive root 时显式记录 `folder_token` 为空。 |
|
|
180
|
+
| `drive +create-folder` | `name`、父级 `folder_token`;创建在 Drive root 时显式记录父级为空。 |
|
|
181
|
+
| `wiki +node-create` | `space_id`、`title`、`obj_type`、可选 `parent_node_token`。 |
|
|
182
|
+
| `none` | 不执行命令,保留 `skip_reason`。 |
|
|
183
|
+
|
|
184
|
+
目标由本次 workflow 创建时,对应目标参数保存 `created_by_plan:<create_target plan_id>` 引用。`EXECUTE` 只允许把该引用替换为对应创建计划返回的 token;不得重新搜索或猜测目标。
|
|
185
|
+
|
|
186
|
+
### 计划 UI
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
移动计划已生成:
|
|
190
|
+
- 默认将移动高相关:N 项
|
|
191
|
+
- 你已选择中相关:N 项
|
|
192
|
+
- 其中不可自动恢复:N 项
|
|
193
|
+
- 已在目标位置:N 项
|
|
194
|
+
- 不会移动:N 项
|
|
195
|
+
- 无移动权限:N 项
|
|
196
|
+
- 移动权限未知:N 项
|
|
197
|
+
|
|
198
|
+
你可以回复“确认执行”,也可以继续调整分组、增减中相关资源,或取消本次移动。
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## MovePlanItem
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"plan_id": "稳定计划项 ID",
|
|
206
|
+
"resource_id": "对应 ResourceItem.resource_id;create_target 为空",
|
|
207
|
+
"action_type": "create_target|move_resource|skip_resource|unsupported",
|
|
208
|
+
"title": "资源或目标名称",
|
|
209
|
+
"resource_type": "源资源类型",
|
|
210
|
+
"move_method": "drive_move|wiki_move_node|wiki_move_docs_to_wiki|wiki_move_to_drive|none",
|
|
211
|
+
"command_family": "具体 shortcut 命令或 none",
|
|
212
|
+
"command_args": {
|
|
213
|
+
"<arg>": "按 command_family 参数表保存的完整、类型明确的参数"
|
|
214
|
+
},
|
|
215
|
+
"source_path": "用户确认时展示的源位置",
|
|
216
|
+
"target_path": "用户确认时展示的目标位置",
|
|
217
|
+
"move_permission_state": "movable|denied|unknown|not_required",
|
|
218
|
+
"target_write_state": "confirmed|unknown|denied",
|
|
219
|
+
"reason": "纳入或跳过原因",
|
|
220
|
+
"skip_reason": "already_at_target 或其他跳过原因",
|
|
221
|
+
"rollback_input": {
|
|
222
|
+
"source_kind": "drive|wiki",
|
|
223
|
+
"original_token": "原始 Drive / obj token",
|
|
224
|
+
"original_node_token": "原始 Wiki node token",
|
|
225
|
+
"resource_type": "恢复命令需要的资源类型",
|
|
226
|
+
"original_parent_kind": "drive_folder|drive_root|wiki_node|wiki_space_root|unknown",
|
|
227
|
+
"original_parent_token": "原始父级 token",
|
|
228
|
+
"original_space_id": "原始 Wiki space_id",
|
|
229
|
+
"original_path": "执行前路径"
|
|
230
|
+
},
|
|
231
|
+
"rollback_supported": "是否支持自动恢复",
|
|
232
|
+
"rollback_blocker": "不可自动恢复原因",
|
|
233
|
+
"execution_status": "pending|success|failed|skipped"
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
| 字段 | 说明 |
|
|
238
|
+
|-------|------|
|
|
239
|
+
| `plan_id` | 稳定计划项 ID,用于连接计划、快照和执行日志。 |
|
|
240
|
+
| `resource_id` | 稳定资源 ID,用于连接确认计划和解析结果;`create_target` 为空。执行阶段不得依赖该关联回查可变参数。 |
|
|
241
|
+
| `action_type` | 计划动作类型。 |
|
|
242
|
+
| `move_method` | 实际使用的移动方式。 |
|
|
243
|
+
| `command_family` / `command_args` | 用户确认的完整写命令及参数快照;确认后保持不可变。目标待创建时只允许使用 `created_by_plan:<plan_id>` 引用。 |
|
|
244
|
+
| `move_permission_state` / `target_write_state` | 用户确认时的权限门禁快照;`move_resource` 必须分别为 `movable` / `confirmed`。`create_target` 的移动权限为 `not_required`,但父级写入权限仍必须为 `confirmed`。 |
|
|
245
|
+
| `rollback_input` | 从 `ResourceItem` 复制出的完整恢复输入;仅 `move_resource` 必填,生成确认计划后不得再回查或猜测。 |
|
|
246
|
+
| `rollback_supported` | 是否支持自动恢复。 |
|
|
247
|
+
| `rollback_blocker` | 不可自动恢复原因;跨容器移动使用 `cross_container_permission_model_not_losslessly_restorable`,原父级 token 缺失使用 `original_parent_token_unavailable`。 |
|
|
248
|
+
| `execution_status` | 执行状态。 |
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# 主题资料收集工作流:输入与目标确认
|
|
2
|
+
|
|
3
|
+
由状态 `PARSE_INPUT`、`RESOLVE_TARGET`、`CONFIRM_CONTEXT` 加载。
|
|
4
|
+
|
|
5
|
+
本文档负责用户输入解析、目标位置解析、搜索前确认和 `TargetLocation`。不得执行搜索召回、资源分类、目标创建或资源移动。
|
|
6
|
+
|
|
7
|
+
本文档只服务 `topic_move_collector`。进入本文档后必须确认 `workflow_id=topic_move_collector`;不得把当前任务改路由到其他 workflow。
|
|
8
|
+
|
|
9
|
+
## 必读上下文
|
|
10
|
+
|
|
11
|
+
执行本文档规则前:
|
|
12
|
+
|
|
13
|
+
1. 按 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 处理身份、认证和权限。
|
|
14
|
+
2. 解析 Drive 目标时,遵循 [`lark-drive-inspect.md`](lark-drive-inspect.md)、[`lark-drive-create-folder.md`](lark-drive-create-folder.md) 和 [`lark-drive-search.md`](lark-drive-search.md)。
|
|
15
|
+
3. 解析 Wiki 目标时,遵循 [`../../lark-wiki/SKILL.md`](../../lark-wiki/SKILL.md)、[`../../lark-wiki/references/lark-wiki-node-get.md`](../../lark-wiki/references/lark-wiki-node-get.md) 和 [`../../lark-wiki/references/lark-wiki-node-create.md`](../../lark-wiki/references/lark-wiki-node-create.md)。
|
|
16
|
+
|
|
17
|
+
## 状态:`PARSE_INPUT`
|
|
18
|
+
|
|
19
|
+
进入条件:workflow 被触发。
|
|
20
|
+
|
|
21
|
+
必须:
|
|
22
|
+
|
|
23
|
+
1. 提取 `topic`、`target`、`identity`、`owner_scope` 和 `constraints`。
|
|
24
|
+
2. 将 `topic` 和 `target` 视为必填字段。
|
|
25
|
+
3. 除非用户明确要求 bot / app 视角,否则 `identity` 默认使用用户身份。
|
|
26
|
+
4. 默认 `allow_cross_container_move=true`,但必须在 `CONFIRM_CONTEXT` 展示。
|
|
27
|
+
5. 默认 `owner_scope=mine`,表示只搜索当前用户 owner / 负责的资源。
|
|
28
|
+
6. 只有用户明确要求“不限 owner”“包括共享给我的”“所有我能看到的文档”或“全量搜索”时,才设置 `owner_scope=all_visible`。
|
|
29
|
+
7. 除非用户明确提供限制,否则 `constraints` 保持为空。
|
|
30
|
+
8. 如果缺少 `topic` 或 `target`,只提出最小澄清问题。
|
|
31
|
+
|
|
32
|
+
### 输入字段
|
|
33
|
+
|
|
34
|
+
| 字段 | 说明 |
|
|
35
|
+
|-------|------|
|
|
36
|
+
| `topic` | 用户要查找的主题、关键词、内容线索、同义词、缩写、排除词。 |
|
|
37
|
+
| `target` | 归档目标,可以是已有 Drive 文件夹、已有 Wiki 节点、待创建 Drive 文件夹或待创建 Wiki 节点。 |
|
|
38
|
+
| `identity` | 执行身份,默认 `--as user`。 |
|
|
39
|
+
| `owner_scope` | 搜索 owner 范围,默认 `mine`;`all_visible` 仅在用户明确要求扩展到所有可见资源时使用。 |
|
|
40
|
+
| `constraints` | 用户显式给出的类型、时间、创建人、评论、标题、范围等限制。 |
|
|
41
|
+
| `allow_cross_container_move` | 是否允许跨 Drive / Wiki 容器移动;默认允许,但必须确认。 |
|
|
42
|
+
|
|
43
|
+
### 澄清模板
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
我还需要补齐两个信息后才能开始:
|
|
47
|
+
|
|
48
|
+
1. 要查找的主题 / 关键词 / 内容线索是什么?
|
|
49
|
+
2. 找到后要移动到哪个 Drive 文件夹或 Wiki 节点?如果需要新建目标,也请说明父级位置和新名称。
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 状态:`RESOLVE_TARGET`
|
|
53
|
+
|
|
54
|
+
进入条件:`topic` 和 `target` 已获得。
|
|
55
|
+
|
|
56
|
+
必须:
|
|
57
|
+
|
|
58
|
+
1. 将已有目标解析为具体 token。
|
|
59
|
+
2. 如果目标需要创建,只解析父级位置和新目标名称。
|
|
60
|
+
3. 在本状态中不得创建文件夹或 Wiki 节点。
|
|
61
|
+
4. 分别保留 Drive 文件夹 token、Wiki 节点 token、Wiki 对象 token、space ID 和 parent token。
|
|
62
|
+
5. 如果目标 URL / token 存在,但当前身份无法读取或解析目标位置,设置 `target_resolve_status=permission_denied`,保持在 `RESOLVE_TARGET` 并等待用户更换目标或结束;不得进入搜索。
|
|
63
|
+
6. 如果已知移动方向不支持,尽早标记。
|
|
64
|
+
|
|
65
|
+
### 目标解析
|
|
66
|
+
|
|
67
|
+
| 条件 | agent 必须执行 | 设置 `target_type` |
|
|
68
|
+
|-----------|---------------|-------------------|
|
|
69
|
+
| 已有 Drive 文件夹 URL 或 token | 有 URL 时用 `drive +inspect` 解析;保留 `folder_token` | `drive_folder` |
|
|
70
|
+
| 已有 Wiki 节点 URL 或 token | 用 `wiki +node-get` 或 `drive +inspect` 解析;保留 `wiki_node_token` 和 `space_id` | `wiki_node` |
|
|
71
|
+
| 在已知父级下新建 Drive 文件夹 | 解析父文件夹;保存新文件夹名称;不创建 | `new_drive_folder` |
|
|
72
|
+
| 在已知父级下新建 Wiki 节点 | 解析知识空间和可选父节点;保存新节点标题;不创建 | `new_wiki_node` |
|
|
73
|
+
| 以 Wiki 空间根节点作为目标 | 解析 `space_id`;parent token 可以为空 | `wiki_space` |
|
|
74
|
+
| 目标名称有歧义 | 仅在必要时搜索或列出候选;展示候选并等待用户选择 | `unknown` |
|
|
75
|
+
|
|
76
|
+
### 目标解析状态
|
|
77
|
+
|
|
78
|
+
| 条件 | `target_resolve_status` |
|
|
79
|
+
|------|--------------------------|
|
|
80
|
+
| 目标已解析,或待创建目标的父级位置已解析 | `resolved` |
|
|
81
|
+
| 目标名称有歧义、候选不唯一,或 `target_type=unknown` 需要用户选择 | `ambiguous` |
|
|
82
|
+
| 已知目标方向或目标类型不支持本 workflow | `unsupported` |
|
|
83
|
+
| 目标 URL / token 存在,但当前身份无权读取、解析或确认目标位置 | `permission_denied` |
|
|
84
|
+
|
|
85
|
+
### 目标解析出口门禁
|
|
86
|
+
|
|
87
|
+
| `target_resolve_status` | 下一状态 | agent 必须执行 |
|
|
88
|
+
|-------------------------|----------|----------------|
|
|
89
|
+
| `resolved` | `CONFIRM_CONTEXT` | 展示已解析目标并进入搜索前确认。 |
|
|
90
|
+
| `ambiguous` | 保持 `RESOLVE_TARGET` | 展示候选并等待用户选择;不得进入 `CONFIRM_CONTEXT`。 |
|
|
91
|
+
| `unsupported` | 保持 `RESOLVE_TARGET` | 展示不支持原因,等待用户更换目标或结束;不得搜索。 |
|
|
92
|
+
| `permission_denied` | 保持 `RESOLVE_TARGET` | 展示权限 blocker,等待用户更换目标或结束;不得搜索。 |
|
|
93
|
+
|
|
94
|
+
用户提供新目标后,重新执行 `RESOLVE_TARGET`。只有新的解析结果为 `resolved`,才能进入 `CONFIRM_CONTEXT`;用户选择结束时进入 `DONE`。
|
|
95
|
+
|
|
96
|
+
### 跨容器规则
|
|
97
|
+
|
|
98
|
+
| 来源 -> 目标 | 默认规则 |
|
|
99
|
+
|------------------|---------|
|
|
100
|
+
| Drive 资源 -> Drive 文件夹 | 支持,使用 `drive +move`。 |
|
|
101
|
+
| Drive 文档类资源 -> Wiki 节点 / 空间 | 资源类型支持时,使用 `wiki +move`。 |
|
|
102
|
+
| Wiki 节点 -> Wiki 节点 / 空间 | 支持,使用 `wiki +move --node-token`。 |
|
|
103
|
+
| Wiki 节点 -> Drive 文件夹 | `wiki +move-to-drive`。 |
|
|
104
|
+
|
|
105
|
+
## 状态:`CONFIRM_CONTEXT`
|
|
106
|
+
|
|
107
|
+
进入条件:`target_resolve_status=resolved`。
|
|
108
|
+
|
|
109
|
+
必须:
|
|
110
|
+
|
|
111
|
+
1. 展示主题、目标、身份、搜索 owner 范围、限制和目标解析字段。
|
|
112
|
+
2. 说明下一步只进行搜索 / 读取。
|
|
113
|
+
3. 说明是否计划创建目标,但尚未执行。
|
|
114
|
+
4. 展示是否允许跨容器移动。
|
|
115
|
+
5. 在进入 `SEARCH_RECALL` 前停止并等待用户确认。
|
|
116
|
+
6. 如果 `owner_scope=all_visible`,明确提示候选数量可能较多,且可能包含无法移动的资源。
|
|
117
|
+
|
|
118
|
+
### 确认 UI
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
我先确认本次收集任务。
|
|
122
|
+
|
|
123
|
+
查找主题:
|
|
124
|
+
目标位置:
|
|
125
|
+
目标解析:
|
|
126
|
+
执行身份:
|
|
127
|
+
搜索范围:
|
|
128
|
+
可选限制:
|
|
129
|
+
跨容器移动:
|
|
130
|
+
下一步操作:只进行搜索和读取验证,不创建目标,不移动资源。
|
|
131
|
+
|
|
132
|
+
请确认是否按以上信息开始搜索?
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
默认搜索范围文案:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
搜索范围:当前用户 owner / 负责的资源
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
扩展搜索范围文案:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
搜索范围:所有当前身份可见资源
|
|
145
|
+
风险提示:候选数量可能较多,且部分资源可能无法移动;后续仍会经过资源解析和内容验证。
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
如果用户修改任一字段,更新 `topic`、`target_location`、`owner_scope` 或 `constraints`,然后只重新执行受影响的 setup 状态,再次展示确认信息。
|
|
149
|
+
|
|
150
|
+
## TargetLocation
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"target_type": "drive_folder|wiki_node|wiki_space|new_drive_folder|new_wiki_node|unknown",
|
|
155
|
+
"target_token": "已有目标的 folder_token 或 wiki_node_token",
|
|
156
|
+
"parent_token": "待创建目标的父级 folder_token 或 wiki_node_token",
|
|
157
|
+
"space_id": "知识库空间 ID",
|
|
158
|
+
"target_name": "待创建目标名称",
|
|
159
|
+
"create_required": false,
|
|
160
|
+
"allow_cross_container_move": true,
|
|
161
|
+
"target_resolve_status": "resolved|ambiguous|unsupported|permission_denied"
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
| 字段 | 说明 |
|
|
166
|
+
|-------|------|
|
|
167
|
+
| `target_type` | 目标位置类型,用于决定后续创建和移动命令。 |
|
|
168
|
+
| `target_token` | 已有目标的可执行 token。 |
|
|
169
|
+
| `parent_token` | 待创建目标的父级位置 token。 |
|
|
170
|
+
| `space_id` | Wiki 目标所属知识空间 ID。 |
|
|
171
|
+
| `target_name` | 待创建目标的名称。 |
|
|
172
|
+
| `create_required` | 是否需要在 `EXECUTE` 阶段创建目标。 |
|
|
173
|
+
| `allow_cross_container_move` | 是否允许 Drive / Wiki 之间移动。 |
|
|
174
|
+
| `target_resolve_status` | 目标位置解析状态;不要和 `ResourceItem.item_resolve_status` 混用。 |
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# 主题资料收集工作流
|
|
2
|
+
|
|
3
|
+
Workflow id: `topic_move_collector`
|
|
4
|
+
|
|
5
|
+
Risk / Structure: `R2-R3` / `S3`
|
|
6
|
+
|
|
7
|
+
本文档实现已注册的主题资料收集 workflow。执行前必须先阅读 [`lark-drive-workflow.md`](lark-drive-workflow.md) 和 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md),并遵循共享执行协议、Artifact Contract、Workflow Loading、认证和写入确认规则。
|
|
8
|
+
|
|
9
|
+
本文档负责定义本 workflow 的全局约束、状态机和渐进加载关系。具体阶段规则放在配套文档中,只有进入对应状态时才加载。
|
|
10
|
+
|
|
11
|
+
配套文档只是本 workflow 的引用文件,不是独立 skill。不要把用户请求直接路由到某个配套文档。
|
|
12
|
+
|
|
13
|
+
## 必读上下文
|
|
14
|
+
|
|
15
|
+
执行本 workflow 前,必须先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md),用于处理身份、认证、权限和写操作确认规则。
|
|
16
|
+
|
|
17
|
+
按阶段渐进加载其他 skill / 引用文档:
|
|
18
|
+
|
|
19
|
+
- 目标是 Wiki 或个人文档库:[`../../lark-wiki/SKILL.md`](../../lark-wiki/SKILL.md)
|
|
20
|
+
- 需要读取文档内容:[`../../lark-doc/SKILL.md`](../../lark-doc/SKILL.md) 和 [`../../lark-doc/references/lark-doc-fetch.md`](../../lark-doc/references/lark-doc-fetch.md)
|
|
21
|
+
- 需要验证 Sheet 内容:[`../../lark-sheets/SKILL.md`](../../lark-sheets/SKILL.md)
|
|
22
|
+
- 需要 Drive 搜索:[`lark-drive-search.md`](lark-drive-search.md)
|
|
23
|
+
- 需要资源解析:[`lark-drive-inspect.md`](lark-drive-inspect.md)
|
|
24
|
+
|
|
25
|
+
## 适用范围
|
|
26
|
+
|
|
27
|
+
本 workflow 用于根据用户给出的主题、关键词或内容线索,在云空间 / 云盘 / Wiki / 电子表格等 Workspace 资源中查找相关资料,并在用户确认后统一移动到指定 Drive 文件夹或 Wiki 节点下。
|
|
28
|
+
|
|
29
|
+
适用触发语包括:
|
|
30
|
+
|
|
31
|
+
- "帮我找到和某主题相关的文档并放到这个文件夹"
|
|
32
|
+
- "把所有关于某项目的资料收集到知识库节点下"
|
|
33
|
+
- "找出包含某内容的资料,确认后移动到新建目录"
|
|
34
|
+
- "按这个关键词搜索我负责的资料,把相关资料归档"
|
|
35
|
+
|
|
36
|
+
默认搜索范围是当前用户 owner / 负责的 Workspace 资源,即 `owner_scope=mine`。只有用户明确要求“不限 owner”“包括共享给我的”“所有我能看到的文档”或“全量搜索”时,才使用 `owner_scope=all_visible` 进入扩展召回模式。
|
|
37
|
+
|
|
38
|
+
不要求用户先限定文件夹或知识库范围。只有用户明确指定范围时,才使用 `--folder-tokens`、`--space-ids` 或其他显式限制。
|
|
39
|
+
|
|
40
|
+
## 非目标
|
|
41
|
+
|
|
42
|
+
默认不生成:
|
|
43
|
+
|
|
44
|
+
- 长篇研究报告
|
|
45
|
+
- 内容总结文档
|
|
46
|
+
- Sheet 清单或统计看板
|
|
47
|
+
- 自动权限治理报告
|
|
48
|
+
|
|
49
|
+
默认禁止执行:
|
|
50
|
+
|
|
51
|
+
- 未确认前创建文件夹或 Wiki 节点
|
|
52
|
+
- 未确认前移动资源
|
|
53
|
+
- 删除资源、重命名资源或修改公开权限
|
|
54
|
+
- 自动批量申请权限
|
|
55
|
+
- 把无权限或无法验证的资源加入移动计划
|
|
56
|
+
- 把移动权限未知或不具备移动资格的资源加入移动计划
|
|
57
|
+
|
|
58
|
+
如果用户明确要求把结果写入 Sheet / Doc,切到对应专项能力;本 workflow 的默认产物是移动后的资源归档结果。
|
|
59
|
+
|
|
60
|
+
## Agent 执行约束
|
|
61
|
+
|
|
62
|
+
触发本 workflow 后,agent 必须:
|
|
63
|
+
|
|
64
|
+
1. 按“执行状态机”的顺序执行。
|
|
65
|
+
2. 维护“运行时状态”中的字段。
|
|
66
|
+
3. 执行某个状态前,先读取本文档 `## 渐进加载关系` 表格中该状态对应的文档。
|
|
67
|
+
4. 用户可见说明、字段说明和 UI 文案使用中文。
|
|
68
|
+
5. 状态名、字段名、枚举值、命令名保留英文稳定标识。
|
|
69
|
+
6. 将 `CONFIRM_CONTEXT` 和 `CONFIRM_EXECUTION` 作为强用户确认门:前者确认主题、目标位置、身份、搜索范围、可选限制和目标解析结果后才能搜索;后者确认创建目标和移动资源后才能写入。
|
|
70
|
+
7. 进入 `EXECUTE` 前,不得创建目标文件夹 / 节点,也不得移动资源。
|
|
71
|
+
8. 必须展示每个相关性分组中的资源名称;低置信分组可以折叠,但必须可查看。
|
|
72
|
+
9. 默认只移动 `high` 相关资源;`medium` 资源必须由用户显式选择。
|
|
73
|
+
10. 即使用户可见列表分页展示,也必须维护完整内部状态。
|
|
74
|
+
11. `RESOURCE_RESOLVE` 和 `CONTENT_VERIFY` 是两个独立的强制阶段,不得合并;不得用搜索结果、标题或摘要直接替代 `CONTENT_VERIFY`,也不得从 `RESOURCE_RESOLVE` 直接进入 `RELEVANCE_CLASSIFY`。
|
|
75
|
+
12. 触发后锁定 `workflow_id=topic_move_collector`;执行期间不得自动切换到其他 workflow。
|
|
76
|
+
13. 如果认为需要切换 workflow,必须停止并向用户说明原因,等待用户确认。
|
|
77
|
+
14. `RESOURCE_RESOLVE` 是移动资格门禁;只有确认 `move_permission_state=movable` 且 `target_write_state=confirmed` 的资源才能进入默认移动链路。
|
|
78
|
+
|
|
79
|
+
## 用户展示 UI 规则
|
|
80
|
+
|
|
81
|
+
所有用户可见 UI 都必须包含:
|
|
82
|
+
|
|
83
|
+
1. 已经完成的关键结果。
|
|
84
|
+
2. 下一步会做什么,以及是否会产生写操作。
|
|
85
|
+
3. 如果 `wait_for_user=true`,明确告诉用户可以选择的动作。
|
|
86
|
+
4. 如果无需用户操作,明确说明将继续执行,避免用户误以为流程停住。
|
|
87
|
+
|
|
88
|
+
典型动作包括:确认继续、修改主题 / 目标 / 限制、展开更多结果、调整相关性分组、选择中相关资源、确认执行、取消执行。
|
|
89
|
+
|
|
90
|
+
## 职责边界
|
|
91
|
+
|
|
92
|
+
| 文件 | 负责 | 不负责 |
|
|
93
|
+
|------|------|--------------|
|
|
94
|
+
| `lark-drive-workflow-topic-move-collector.md` | 触发规则、全局约束、状态机、渐进加载关系、命令族白名单 | 具体阶段规则、UI 模板、执行细节 |
|
|
95
|
+
| `lark-drive-workflow-topic-move-collector-setup.md` | `PARSE_INPUT`、`RESOLVE_TARGET`、`CONFIRM_CONTEXT`、`TargetLocation` | 搜索执行、相关性分类、写操作 |
|
|
96
|
+
| `lark-drive-workflow-topic-move-collector-recall.md` | `SEARCH_RECALL`、`RECALL_ENHANCE`、搜索 query 策略、去重、`CandidateItem` | 资源 token 解析、内容验证、写操作 |
|
|
97
|
+
| `lark-drive-workflow-topic-move-collector-resolve-verify.md` | `RESOURCE_RESOLVE`、`CONTENT_VERIFY`、权限矩阵、`ResourceItem` | 相关性分类、移动计划、写操作 |
|
|
98
|
+
| `lark-drive-workflow-topic-move-collector-review-plan.md` | `RELEVANCE_CLASSIFY`、`PLAN_MOVE`、`MovePlanItem`、展示分组 | 资源解析、内容验证、写操作执行、恢复 |
|
|
99
|
+
| `lark-drive-workflow-topic-move-collector-execute.md` | `CONFIRM_EXECUTION`、`EXECUTE`、`VERIFY`、`RESTORE`、`RollbackSnapshotItem`、执行日志 | 搜索、分类和计划 schema |
|
|
100
|
+
|
|
101
|
+
## 运行时状态
|
|
102
|
+
|
|
103
|
+
本 workflow 扩展共享 Artifact Contract。agent 在一次 workflow 运行中必须维护以下专项内部字段:
|
|
104
|
+
|
|
105
|
+
| 字段 | 说明 |
|
|
106
|
+
|-------|------|
|
|
107
|
+
| `current_state` | 当前状态机节点。 |
|
|
108
|
+
| `topic` | 用户确认后的主题、关键词、同义词和排除词。 |
|
|
109
|
+
| `target_location` | 目标位置解析结果,见 setup 文件的 `TargetLocation`。 |
|
|
110
|
+
| `identity` | 执行身份;默认优先 `--as user`。 |
|
|
111
|
+
| `owner_scope` | 搜索 owner 范围;默认 `mine`,仅搜索当前用户 owner / 负责的资源;用户明确要求扩展时才为 `all_visible`。 |
|
|
112
|
+
| `constraints` | 用户显式确认的类型、时间、创建人、范围等限制。 |
|
|
113
|
+
| `allow_cross_container_move` | 是否允许跨 Drive / Wiki 容器移动;默认允许,但必须展示给用户确认。 |
|
|
114
|
+
| `recall_query_states` | 每个基础 / 增强 query 的分页状态、累计页数、`next_page_token`、`has_more`、完成或阻塞状态。 |
|
|
115
|
+
| `candidate_items` | 搜索召回结果,包含 query 证据和去重信息。 |
|
|
116
|
+
| `resource_items` | 解析后的标准资源列表。 |
|
|
117
|
+
| `content_verify_completed` | 内容验证阶段完成标记;`resource_items` 新建或变化时重置为 `false`,只有全部资源都有验证状态或跳过原因后才设为 `true`。 |
|
|
118
|
+
| `relevance_groups` | 高相关、中相关、低相关、无权限、无移动权限、移动权限未知、无法验证、不可移动分组。 |
|
|
119
|
+
| `move_plan_items` | 经用户选择后生成的完整移动计划,包含稳定资源关联、不可变命令参数、权限快照和恢复输入。 |
|
|
120
|
+
| `execution_journal` | 写操作日志,用于验证和恢复。 |
|
|
121
|
+
| `rollback_snapshot` | 写操作前位置快照,仅用于失败恢复或用户要求恢复。 |
|
|
122
|
+
| `display_page_state` | 用户可见列表的分页、筛选和展开状态。 |
|
|
123
|
+
|
|
124
|
+
## 执行状态机
|
|
125
|
+
|
|
126
|
+
| 状态 | Protocol Step | 进入条件 | agent 必须执行 | 用户可见输出 | `wait_for_user` | 下一状态 |
|
|
127
|
+
|-------|---------------|-----------------|---------------|--------------------|---------------|------------|
|
|
128
|
+
| `PARSE_INPUT` | `route` / `scope` | workflow 被触发 | 加载 setup 文档;解析主题、目标、身份和限制 | 澄清问题或解析摘要 | 必填字段缺失时为 `true` | `RESOLVE_TARGET` |
|
|
129
|
+
| `RESOLVE_TARGET` | `scope` | 主题和目标已获得 | 解析已有目标,或解析待创建目标;按解析状态分流 | 目标解析结果或 blocker | 非 `resolved` 时为 `true` | `resolved` 时进入 `CONFIRM_CONTEXT`;否则保持本状态 |
|
|
130
|
+
| `CONFIRM_CONTEXT` | `scope` | `target_resolve_status=resolved` | 展示主题、目标、身份、限制和跨容器设置 | 搜索前确认 UI | `true` | `SEARCH_RECALL` |
|
|
131
|
+
| `SEARCH_RECALL` | `read` | 用户确认上下文 | 用原始关键词、默认 owner 范围和显式限制执行基础召回;按每批最多 5 页自动续批 | 搜索进度 / 基础统计 | 阻塞时为 `true` | 所有基础 query 完成后进入 `RECALL_ENHANCE` |
|
|
132
|
+
| `RECALL_ENHANCE` | `read` | 所有基础 query 已完成 | 执行覆盖增强 query,按每批最多 5 页自动续批并合并结果 | 增强召回摘要 | 阻塞时为 `true` | 所有增强 query 完成后进入 `RESOURCE_RESOLVE` |
|
|
133
|
+
| `RESOURCE_RESOLVE` | `read` | 候选列表已准备 | 解析 token、类型、父级位置、owner 和移动资格 | 解析进度 / 阻塞摘要 | 阻塞时为 `true` | `CONTENT_VERIFY` |
|
|
134
|
+
| `CONTENT_VERIFY` | `read` | 资源列表已准备 | 对支持的资源做有界内容读取,并为其余资源写入跳过原因 | 验证进度 / 验证摘要 | 阻塞时为 `true` | `RELEVANCE_CLASSIFY` |
|
|
135
|
+
| `RELEVANCE_CLASSIFY` | `assess` | 证据已准备 | 按相关性和可执行性分组 | 分组结果列表 | `false` | `PLAN_MOVE` |
|
|
136
|
+
| `PLAN_MOVE` | `assess` / `plan` | 分组完成 | 基于默认规则和用户可选项生成移动计划 | 草案计划和选择项 | `true` | `CONFIRM_EXECUTION` |
|
|
137
|
+
| `CONFIRM_EXECUTION` | `confirm` | 用户要求执行 | 展示创建、移动、跳过项和风险 | 写操作确认 UI | `true` | `EXECUTE` 或 `PLAN_MOVE` 或 `DONE` |
|
|
138
|
+
| `EXECUTE` | `execute` | 用户明确确认写操作 | 需要时先创建目标,再移动确认资源 | 执行进度 | 阻塞时为 `true` | `VERIFY` 或 `RESTORE` |
|
|
139
|
+
| `VERIFY` | `verify` | 执行完成 | 验证目标位置下的移动结果 | 验证结果 | 提供恢复选项时为 `true` | `DONE` 或 `RESTORE` |
|
|
140
|
+
| `RESTORE` | `recovery confirm` / `recovery execute` | 用户要求恢复 | 仅基于快照和日志恢复 | 恢复确认 / 结果 | 写操作前为 `true` | `VERIFY` 或 `DONE` |
|
|
141
|
+
| `DONE` | `done` | 无后续操作 | 停止 | 最终回复 | `false` | 结束 |
|
|
142
|
+
|
|
143
|
+
### 状态跳转硬约束
|
|
144
|
+
|
|
145
|
+
1. `RESOLVE_TARGET` 只有在 `target_resolve_status=resolved` 时才能进入 `CONFIRM_CONTEXT`;`ambiguous`、`unsupported` 或 `permission_denied` 必须保持在 `RESOLVE_TARGET` 并等待用户选择、更换目标或结束。
|
|
146
|
+
2. `SEARCH_RECALL` 只有在全部基础 query 的 `has_more=false` 时才能进入 `RECALL_ENHANCE`;单批达到 5 页但仍有更多结果时必须自动续批,不得提前跳转。
|
|
147
|
+
3. `RECALL_ENHANCE` 只有在全部增强 query 的 `has_more=false` 时才能进入 `RESOURCE_RESOLVE`;不得直接进入 `RELEVANCE_CLASSIFY` 或 `PLAN_MOVE`。
|
|
148
|
+
4. `RESOURCE_RESOLVE` 必须为每个 `CandidateItem` 生成对应的 `ResourceItem`,或生成明确的解析失败 / 权限受限状态。
|
|
149
|
+
5. `RESOURCE_RESOLVE` 必须为每个 `ResourceItem` 写入 `move_permission_state` 和 `move_permission_basis`;完成后将 `content_verify_completed=false`,下一状态只能是 `CONTENT_VERIFY`。
|
|
150
|
+
6. 禁止从 `RESOURCE_RESOLVE` 直接进入 `RELEVANCE_CLASSIFY`。即使没有任何资源可以读取正文,也必须进入 `CONTENT_VERIFY`,为每项写入验证状态或跳过原因并输出验证摘要。
|
|
151
|
+
7. `CONTENT_VERIFY` 必须为每个 `ResourceItem` 写入内容证据、搜索证据复用说明,或不可验证原因;移动权限未知或无移动权限的资源可以只写入跳过验证原因。
|
|
152
|
+
8. 只有当 `resource_items` 已准备、每项都有验证状态或跳过原因,且 `content_verify_completed=true` 时,才能进入 `RELEVANCE_CLASSIFY`。
|
|
153
|
+
9. 用户调整相关性分组后,必须回到 `RELEVANCE_CLASSIFY` 输出调整后的分组结果,再进入 `PLAN_MOVE` 重新生成计划。
|
|
154
|
+
|
|
155
|
+
### Workflow 切换门禁
|
|
156
|
+
|
|
157
|
+
只有以下情况允许考虑切换 workflow:
|
|
158
|
+
|
|
159
|
+
1. 用户明确说不再做主题资料收集,改为整理整个目录结构或生成盘点方案。
|
|
160
|
+
2. 当前 workflow 明确无法覆盖用户的新目标。
|
|
161
|
+
3. 用户要求的是目录结构治理,而不是查找主题相关资料并移动。
|
|
162
|
+
|
|
163
|
+
即使满足以上条件,也不得自动切换;必须先向用户说明原因并等待确认。
|
|
164
|
+
|
|
165
|
+
## 渐进加载关系
|
|
166
|
+
|
|
167
|
+
| 状态 | 必读文档 |
|
|
168
|
+
|-------|---------------|
|
|
169
|
+
| `PARSE_INPUT` / `RESOLVE_TARGET` / `CONFIRM_CONTEXT` | [`lark-drive-workflow-topic-move-collector-setup.md`](lark-drive-workflow-topic-move-collector-setup.md) |
|
|
170
|
+
| `SEARCH_RECALL` / `RECALL_ENHANCE` | [`lark-drive-workflow-topic-move-collector-recall.md`](lark-drive-workflow-topic-move-collector-recall.md) |
|
|
171
|
+
| `RESOURCE_RESOLVE` / `CONTENT_VERIFY` | [`lark-drive-workflow-topic-move-collector-resolve-verify.md`](lark-drive-workflow-topic-move-collector-resolve-verify.md) |
|
|
172
|
+
| `RELEVANCE_CLASSIFY` / `PLAN_MOVE` | [`lark-drive-workflow-topic-move-collector-review-plan.md`](lark-drive-workflow-topic-move-collector-review-plan.md) |
|
|
173
|
+
| `CONFIRM_EXECUTION` / `EXECUTE` / `VERIFY` / `RESTORE` | [`lark-drive-workflow-topic-move-collector-execute.md`](lark-drive-workflow-topic-move-collector-execute.md) |
|
|
174
|
+
|
|
175
|
+
## 命令映射
|
|
176
|
+
|
|
177
|
+
| 状态 | 允许的命令族 | 用途 |
|
|
178
|
+
|-------|--------------------------|---------|
|
|
179
|
+
| `RESOLVE_TARGET` | `drive +inspect`、`wiki +node-get`、`wiki +space-list`、仅用于查找文件夹候选的 `drive +search` | 解析目标位置 |
|
|
180
|
+
| `SEARCH_RECALL` / `RECALL_ENHANCE` | `drive +search` | 搜索召回和覆盖增强 |
|
|
181
|
+
| `RESOURCE_RESOLVE` | `drive +inspect`、`wiki +node-get`、`drive metas batch_query`、必要时 `drive permission.members auth` | 解析标准 token、owner、权限信号和移动资格 |
|
|
182
|
+
| `CONTENT_VERIFY` | `docs +fetch`、`sheets +read`、`sheets +find`、必要时 `drive +preview` | 验证内容证据 |
|
|
183
|
+
| `EXECUTE` | `drive +create-folder`、`wiki +node-create`、`drive +move`、`wiki +move`、`wiki +move-to-drive`、`drive +task_result` | 执行已确认写操作 |
|
|
184
|
+
| `VERIFY` | `drive files list`、`wiki +node-list`、`wiki +node-get`、`drive +inspect`、`drive +task_result` | 验证执行结果 |
|
|
185
|
+
| `RESTORE` | `drive +move`、`wiki +move`、`drive +delete`、`wiki +node-delete`、`drive +task_result` | 恢复已确认资源并清理本次新建目标 |
|
|
186
|
+
|
|
187
|
+
## 引用文档
|
|
188
|
+
|
|
189
|
+
- [输入与目标确认](lark-drive-workflow-topic-move-collector-setup.md)
|
|
190
|
+
- [召回](lark-drive-workflow-topic-move-collector-recall.md)
|
|
191
|
+
- [资源解析与内容验证](lark-drive-workflow-topic-move-collector-resolve-verify.md)
|
|
192
|
+
- [审核与计划](lark-drive-workflow-topic-move-collector-review-plan.md)
|
|
193
|
+
- [执行](lark-drive-workflow-topic-move-collector-execute.md)
|
|
194
|
+
- [lark-drive-search](lark-drive-search.md)
|
|
195
|
+
- [lark-drive-inspect](lark-drive-inspect.md)
|
|
196
|
+
- [lark-drive-move](lark-drive-move.md)
|
|
197
|
+
- [lark-drive-create-folder](lark-drive-create-folder.md)
|
|
198
|
+
- [lark-drive-delete](lark-drive-delete.md)
|
|
199
|
+
- [lark-wiki-move](../../lark-wiki/references/lark-wiki-move.md)
|
|
200
|
+
- [lark-wiki-move-to-drive](../../lark-wiki/references/lark-wiki-move-to-drive.md)
|
|
201
|
+
- [lark-wiki-node-create](../../lark-wiki/references/lark-wiki-node-create.md)
|
|
202
|
+
- [lark-wiki-node-delete](../../lark-wiki/references/lark-wiki-node-delete.md)
|
|
@@ -97,7 +97,7 @@ Structure Level:
|
|
|
97
97
|
2. Entry file 超过约 300 行时,优先拆 `commands`、`outputs` 或 `artifacts` reference。
|
|
98
98
|
3. 只有执行、验证、恢复或 rollback 状态链复杂到影响可读性时,才升级到 `S3` phase files。
|
|
99
99
|
4. 垂直业务包优先作为已有 workflow 的 recipe / policy / template,不默认新增独立 workflow。
|
|
100
|
-
5. 已有样板:`permission_governance` 是 `R2/S2`;`knowledge_organize` 是 `R2-R3/S3`。
|
|
100
|
+
5. 已有样板:`permission_governance` 是 `R2/S2`;`knowledge_organize` 和 `topic_move_collector` 是 `R2-R3/S3`。
|
|
101
101
|
|
|
102
102
|
## 加载与拆分边界
|
|
103
103
|
|
|
@@ -108,10 +108,11 @@ Structure Level:
|
|
|
108
108
|
|
|
109
109
|
## Workflow Registry
|
|
110
110
|
|
|
111
|
-
| Workflow | Status | Risk | Structure | Entry File | Trigger
|
|
112
|
-
|
|
111
|
+
| Workflow | Status | Risk | Structure | Entry File | Trigger |
|
|
112
|
+
|----------|--------|------|-----------|------------|-----------------------------------------------------------------|
|
|
113
113
|
| `permission_governance` | Registered | `R2` | `S2` | [`lark-drive-workflow-permission-governance.md`](lark-drive-workflow-permission-governance.md) | 权限审计、公开链接/外部访问、复制/下载/评论/分享设置、权限申请、owner 转移 / 批量 owner 转移、密级标签调整 |
|
|
114
|
-
| `knowledge_organize` | Registered | `R2-R3` | `S3` | [`lark-drive-workflow-knowledge-organize.md`](lark-drive-workflow-knowledge-organize.md) | 整理云盘 / 文件夹 / 文档库 / 知识库、盘点目录结构、归类资源、生成整理方案,并在用户确认后创建目录或移动资源
|
|
114
|
+
| `knowledge_organize` | Registered | `R2-R3` | `S3` | [`lark-drive-workflow-knowledge-organize.md`](lark-drive-workflow-knowledge-organize.md) | 整理云盘 / 文件夹 / 文档库 / 知识库、盘点目录结构、归类资源、生成整理方案,并在用户确认后创建目录或移动资源 |
|
|
115
|
+
| `topic_move_collector` | Registered | `R2-R3` | `S3` | [`lark-drive-workflow-topic-move-collector.md`](lark-drive-workflow-topic-move-collector.md) | 按主题、关键词或内容线索跨容器搜索资料,验证相关性和移动资格,并在用户确认后归档到 Drive 文件夹或 Wiki 节点 |
|
|
115
116
|
|
|
116
117
|
## Workflow Loading
|
|
117
118
|
|