@amaster.ai/pi-lark 0.1.7 → 0.1.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.
Files changed (215) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-apps/SKILL.md +41 -6
  3. package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -4
  4. package/skills/lark-apps/references/lark-apps-create.md +6 -3
  5. package/skills/lark-apps/references/lark-apps-db.md +130 -2
  6. package/skills/lark-apps/references/lark-apps-get.md +1 -1
  7. package/skills/lark-apps/references/lark-apps-list.md +1 -1
  8. package/skills/lark-apps/references/lark-apps-local-dev.md +27 -1
  9. package/skills/lark-apps/references/lark-apps-release-create.md +1 -1
  10. package/skills/lark-apps/references/lark-apps-user-id-convert.md +63 -0
  11. package/skills/lark-base/SKILL.md +155 -159
  12. package/skills/lark-base/references/{lark-base-role-guide.md → lark-base-advanced-permission-and-role.md} +5 -5
  13. package/skills/lark-base/references/lark-base-app-block-data-config.md +122 -0
  14. package/skills/lark-base/references/lark-base-app.md +225 -0
  15. package/skills/lark-base/references/lark-base-cell-value.md +26 -19
  16. package/skills/lark-base/references/{dashboard-block-data-config.md → lark-base-dashboard-block-config.md} +37 -5
  17. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +18 -2
  18. package/skills/lark-base/references/lark-base-dashboard.md +25 -12
  19. package/skills/lark-base/references/lark-base-data-analysis-pandas.md +93 -0
  20. package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +120 -0
  21. package/skills/lark-base/references/lark-base-data-query.md +8 -11
  22. package/skills/lark-base/references/lark-base-field-create.md +13 -45
  23. package/skills/lark-base/references/{formula-field-guide.md → lark-base-field-formula.md} +1 -1
  24. package/skills/lark-base/references/{lookup-field-guide.md → lark-base-field-lookup.md} +1 -1
  25. package/skills/lark-base/references/{lark-base-field-json.md → lark-base-field-schema.md} +18 -100
  26. package/skills/lark-base/references/lark-base-field-update.md +13 -51
  27. package/skills/lark-base/references/lark-base-filter-condition.md +19 -31
  28. package/skills/lark-base/references/lark-base-record-batch-create.md +5 -1
  29. package/skills/lark-base/references/lark-base-record-batch-update.md +5 -2
  30. package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +145 -0
  31. package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +233 -0
  32. package/skills/lark-base/references/{role-config.md → lark-base-role-config.md} +2 -2
  33. package/skills/lark-base/references/lark-base-view-set-filter.md +1 -1
  34. package/skills/lark-base/references/lark-base-workflow-schema.md +2 -2
  35. package/skills/lark-base/references/{lark-base-workflow-guide.md → lark-base-workflow.md} +1 -1
  36. package/skills/lark-calendar/SKILL.md +3 -1
  37. package/skills/lark-calendar/references/lark-calendar-create.md +4 -3
  38. package/skills/lark-doc/SKILL.md +26 -61
  39. package/skills/lark-doc/references/genres/business-analysis.md +30 -0
  40. package/skills/lark-doc/references/genres/data-report.md +32 -0
  41. package/skills/lark-doc/references/genres/email.md +38 -0
  42. package/skills/lark-doc/references/genres/execution-plan.md +27 -0
  43. package/skills/lark-doc/references/genres/formal-doc.md +37 -0
  44. package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
  45. package/skills/lark-doc/references/genres/memo-brief.md +25 -0
  46. package/skills/lark-doc/references/genres/official-redhead.md +73 -0
  47. package/skills/lark-doc/references/genres/prd.md +26 -0
  48. package/skills/lark-doc/references/genres/proposal.md +24 -0
  49. package/skills/lark-doc/references/genres/research-report.md +32 -0
  50. package/skills/lark-doc/references/genres/retrospective.md +25 -0
  51. package/skills/lark-doc/references/genres/route-consumer.md +37 -0
  52. package/skills/lark-doc/references/genres/route-creative.md +36 -0
  53. package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
  54. package/skills/lark-doc/references/genres/route-marketing.md +40 -0
  55. package/skills/lark-doc/references/genres/route-media.md +36 -0
  56. package/skills/lark-doc/references/genres/route-opinion.md +38 -0
  57. package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
  58. package/skills/lark-doc/references/genres/route-platform.md +9 -0
  59. package/skills/lark-doc/references/genres/route-report.md +10 -0
  60. package/skills/lark-doc/references/genres/route-workplace.md +17 -0
  61. package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
  62. package/skills/lark-doc/references/genres/technical-doc.md +39 -0
  63. package/skills/lark-doc/references/genres/wechat.md +39 -0
  64. package/skills/lark-doc/references/genres/weekly-report.md +24 -0
  65. package/skills/lark-doc/references/genres/white-paper.md +32 -0
  66. package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
  67. package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
  68. package/skills/lark-doc/references/lark-doc-create.md +22 -48
  69. package/skills/lark-doc/references/lark-doc-fetch.md +80 -92
  70. package/skills/lark-doc/references/lark-doc-history.md +16 -15
  71. package/skills/lark-doc/references/lark-doc-md.md +5 -1
  72. package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
  73. package/skills/lark-doc/references/lark-doc-script.md +76 -0
  74. package/skills/lark-doc/references/lark-doc-update.md +73 -221
  75. package/skills/lark-doc/references/lark-doc-whiteboard.md +5 -9
  76. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +17 -12
  77. package/skills/lark-doc/references/lark-doc-xml.md +38 -167
  78. package/skills/lark-drive/SKILL.md +11 -7
  79. package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
  80. package/skills/lark-drive/references/lark-drive-copy.md +87 -0
  81. package/skills/lark-drive/references/lark-drive-download.md +29 -2
  82. package/skills/lark-drive/references/lark-drive-export.md +4 -0
  83. package/skills/lark-drive/references/lark-drive-member-remove.md +59 -0
  84. package/skills/lark-drive/references/lark-drive-preview.md +21 -2
  85. package/skills/lark-drive/references/lark-drive-push.md +5 -1
  86. package/skills/lark-drive/references/lark-drive-search.md +2 -0
  87. package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
  88. package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
  89. package/skills/lark-event/SKILL.md +7 -4
  90. package/skills/lark-event/references/lark-event-vc.md +8 -2
  91. package/skills/lark-im/SKILL.md +14 -9
  92. package/skills/lark-im/references/lark-im-chat-list.md +9 -2
  93. package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
  94. package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
  95. package/skills/lark-im/references/lark-im-chat-search.md +9 -2
  96. package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
  97. package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
  98. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
  99. package/skills/lark-im/references/lark-im-flag-list.md +2 -2
  100. package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
  101. package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
  102. package/skills/lark-im/references/lark-im-messages-search.md +4 -5
  103. package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
  104. package/skills/lark-mail/references/lark-mail-triage.md +19 -4
  105. package/skills/lark-minutes/SKILL.md +12 -6
  106. package/skills/lark-minutes/references/lark-minutes-apply-permission.md +95 -0
  107. package/skills/lark-minutes/references/lark-minutes-detail.md +7 -6
  108. package/skills/lark-minutes/references/lark-minutes-download.md +4 -2
  109. package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
  110. package/skills/lark-note/SKILL.md +13 -9
  111. package/skills/lark-note/references/lark-note-detail.md +5 -2
  112. package/skills/lark-note/references/lark-note-transcript.md +2 -0
  113. package/skills/lark-shared/SKILL.md +39 -3
  114. package/skills/lark-sheets/SKILL.md +83 -82
  115. package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
  116. package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
  117. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
  118. package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
  119. package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
  120. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
  121. package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
  122. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
  123. package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
  124. package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
  125. package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
  126. package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
  127. package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
  128. package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
  129. package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
  130. package/skills/lark-sheets/scripts/sheets_df.py +21 -3
  131. package/skills/lark-slides/SKILL.md +64 -81
  132. package/skills/lark-slides/references/cli/lark-slides-add-slide.md +92 -0
  133. package/skills/lark-slides/references/cli/lark-slides-create.md +176 -0
  134. package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +65 -0
  135. package/skills/lark-slides/references/cli/lark-slides-history.md +132 -0
  136. package/skills/lark-slides/references/cli/lark-slides-media-upload.md +103 -0
  137. package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +259 -0
  138. package/skills/lark-slides/references/cli/lark-slides-screenshot.md +115 -0
  139. package/skills/lark-slides/references/cli/lark-slides-update-slide.md +163 -0
  140. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +110 -0
  141. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +188 -0
  142. package/skills/lark-slides/references/cli/lark-slides-xml-presentations-get.md +157 -0
  143. package/skills/lark-slides/references/iconpark-index.json +5 -41901
  144. package/skills/lark-slides/references/iconpark.md +3 -44
  145. package/skills/lark-slides/references/lark-slides-add-slide.md +5 -0
  146. package/skills/lark-slides/references/lark-slides-create.md +3 -162
  147. package/skills/lark-slides/references/lark-slides-delete-slide.md +5 -0
  148. package/skills/lark-slides/references/lark-slides-edit-workflows.md +3 -142
  149. package/skills/lark-slides/references/lark-slides-history.md +3 -130
  150. package/skills/lark-slides/references/lark-slides-media-upload.md +3 -124
  151. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +3 -83
  152. package/skills/lark-slides/references/lark-slides-replace-slide.md +3 -235
  153. package/skills/lark-slides/references/lark-slides-screenshot.md +3 -95
  154. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +3 -108
  155. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +3 -186
  156. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +3 -132
  157. package/skills/lark-slides/references/planning-layer.md +1 -1
  158. package/skills/lark-slides/references/slides_chart_demo.xml +5 -1416
  159. package/skills/lark-slides/references/slides_xml_schema_definition.xml +3 -3468
  160. package/skills/lark-slides/references/troubleshooting.md +3 -61
  161. package/skills/lark-slides/references/validation-checklist.md +3 -154
  162. package/skills/lark-slides/references/workflow/error-handling.md +62 -0
  163. package/skills/lark-slides/references/workflow/slides-editing.md +143 -0
  164. package/skills/lark-slides/references/workflow/template-editing.md +85 -0
  165. package/skills/lark-slides/references/workflow/validation-xml.md +156 -0
  166. package/skills/lark-slides/references/xml/iconpark-index.json +37458 -0
  167. package/skills/lark-slides/references/xml/iconpark.md +46 -0
  168. package/skills/lark-slides/references/xml/slides_chart_demo.xml +1415 -0
  169. package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +3514 -0
  170. package/skills/lark-slides/references/xml/xml-schema-quick-ref.md +497 -0
  171. package/skills/lark-slides/references/xml-schema-quick-ref.md +3 -483
  172. package/skills/lark-slides/scripts/iconpark_tool.py +1 -1
  173. package/skills/lark-slides/scripts/sxsd_validator.py +154 -10
  174. package/skills/lark-slides/scripts/xml_lint.py +2989 -0
  175. package/skills/lark-slides/scripts/xml_lint_test.py +4720 -0
  176. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +3 -2691
  177. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +5 -3788
  178. package/skills/lark-task/SKILL.md +12 -0
  179. package/skills/lark-task/references/lark-task-create.md +3 -1
  180. package/skills/lark-vc/SKILL.md +15 -5
  181. package/skills/lark-vc/references/lark-vc-detail.md +11 -6
  182. package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-events.md → lark-vc/references/lark-vc-meeting-events.md} +121 -20
  183. package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-list-active.md → lark-vc/references/lark-vc-meeting-list-active.md} +2 -2
  184. package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-message-send.md → lark-vc/references/lark-vc-meeting-message-send.md} +3 -3
  185. package/skills/lark-vc/references/lark-vc-recording.md +8 -6
  186. package/skills/lark-vc/references/vc-domain-boundaries.md +8 -1
  187. package/skills/lark-vc-agent/SKILL.md +24 -9
  188. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +2 -2
  189. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +2 -2
  190. package/skills/lark-whiteboard/SKILL.md +15 -8
  191. package/skills/lark-whiteboard/references/lark-whiteboard-export.md +4 -3
  192. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +4 -4
  193. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +19 -17
  194. package/skills/lark-whiteboard/routes/dsl.md +8 -2
  195. package/skills/lark-whiteboard/routes/mermaid.md +1 -1
  196. package/skills/lark-whiteboard/routes/svg-edit.md +5 -2
  197. package/skills/lark-whiteboard/routes/svg.md +3 -1
  198. package/skills/lark-whiteboard/scenes/mention.md +71 -0
  199. package/skills/lark-wiki/SKILL.md +8 -4
  200. package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
  201. package/skills/lark-wiki/references/lark-wiki-node-copy.md +5 -19
  202. package/skills/lark-wiki/references/lark-wiki-node-create.md +19 -2
  203. package/skills/lark-wiki/references/lark-wiki-node-get.md +15 -0
  204. package/skills/lark-wiki/references/lark-wiki-node-list.md +1 -1
  205. package/skills/lark-base/references/lark-base-data-analysis-sop.md +0 -210
  206. package/skills/lark-base/references/lark-base-data-query-guide.md +0 -61
  207. package/skills/lark-base/references/lark-base-record-upsert.md +0 -63
  208. package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
  209. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
  210. package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
  211. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
  212. package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
  213. package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
  214. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -219
  215. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -126
@@ -1,210 +0,0 @@
1
- # Base data analysis SOP
2
-
3
- Base 数据查询与分析任务的执行契约。覆盖记录读取、筛选、排序、Top/Bottom N、聚合统计、分组聚合、多表关联、临时分析和查询后写入前的目标定位。
4
-
5
- 本文只管查询选路和正确性边界;具体操作前先读真实结构和现状,复杂 JSON 再跳到 reference:
6
-
7
- - `+data-query`: entry guide [lark-base-data-query-guide.md](lark-base-data-query-guide.md), full DSL SSOT [lark-base-data-query.md](lark-base-data-query.md)
8
- - 视图筛选: [lark-base-view-set-filter.md](lark-base-view-set-filter.md)
9
- - 记录读取: `+record-list` / `+record-search` / `+record-get`,先确认字段 ID、字段名、分页和投影范围
10
-
11
- ## 0. Hard Rules
12
-
13
- - 全局问题不能用默认 `+record-list --limit N` 片面地回答。
14
- - `jq` / shell / 本地代码是在个人电脑或当前运行环境中处理已返回数据,只适合小范围结果;超过 200 行默认不推荐本地统计、排序或求极值,应改用 Base 云端查询服务的 filter/sort/aggregate。
15
- - “最高、最低、最新、最早、Top、Bottom、总数、全部、异常、最大、最小、最多、最少、优先级最高”等全局语义,必须在 Base 云端查询服务中完成筛选、排序或聚合。
16
- - 一次性原始记录查询优先用 `+record-list` / `+record-search` 的 filter/sort;聚合分析优先用 `+data-query`。
17
- - `+record-search` 用于关键词检索字段的展示文本;金额、状态、日期、空值、关联等结构化条件继续用 `--filter-json` 表达。
18
- - 不要依赖已有视图,除非用户明确指定该视图,或你已读取并验证其 filter/sort/projection 符合当前问题。
19
- - 交付输出必须使用用户可读的真实字段值;内部 ID、`record_id`、关联记录 ID、open_id、编码字段只可作为连接键或定位键,不能替代最终输出,除非用户明确要求输出这些键值。
20
- - 每次读取必须做最小投影,并包含后续解释、回查或写入需要的业务 key。
21
-
22
- ## 1. Intent -> Tool Path
23
-
24
- | 用户意图 | 首选路径 | 关键规则 |
25
- | --- | --- | --- |
26
- | 看几条、预览、示例 | `+record-list --limit N --field-id ...` | 保持局部语义;不要推广为全局结论 |
27
- | 已知 `record_id` | `+record-get` | 直接读取;不要 search/list 反查 |
28
- | 明确关键词 | `+record-search --keyword ... --search-field ... --field-id ...` | 必须显式指定 `--search-field`;可叠加 `--filter-json` |
29
- | 按条件找原始记录 | `+record-list --filter-json ...` | `filter-json` 与视图筛选结构一致,支持文本、数字、日期、选项、人员、群组、关联等值 |
30
- | 排序 / TopN 原始记录 | `+record-list --filter-json ... --sort-json ... --limit N` | 最高/最新用 `desc:true`,最低/最早用 `desc:false`;数组顺序表达优先级;最多 10 个排序条件 |
31
- | 聚合 / 分组 / 分组排序 | `+data-query` | 使用 filters/dimensions/measures/sort/limit |
32
- | 聚合后输出逐条记录 | `+data-query` 得到业务 key 或候选字段组合 -> `+record-list --filter-json` / `+record-get` 回查 | `+data-query` 维度行按字段组合去重且不返回 `record_id` |
33
- | 多表 / 多跳关联 | 以候选数最小的事实表为驱动表,沿业务 key 或 link `record_id` 逐跳回查 | 读出 link 单元格里的关联 `record_id` 后,到被关联表批量 `+record-get` 展示字段 |
34
- | 查询后写入 / 视图化 | 先用本 SOP 得到可复核的目标记录 id 集合 | 再进入记录写入或视图配置;高价值可复用查询可沉淀为持久视图 |
35
-
36
- ## 2. Execution Patterns
37
-
38
- ### 2.1 结构化原始记录与 TopN
39
-
40
- 使用 `+record-list` 的 filter/sort 路径:
41
-
42
- 1. `+field-list` 确认筛选字段、排序字段、展示字段、业务 key。
43
- 2. 筛选只用 `--filter-json` 或 `--filter-json @file`。
44
- 3. 排序用 `--sort-json`。
45
- 4. `--field-id` 做最小投影,`--limit` 控制返回数量。
46
-
47
- Example: string/number 条件 + TopN:
48
-
49
- ```bash
50
- lark-cli base +record-list \
51
- --base-token <base_token> \
52
- --table-id <table_id> \
53
- --filter-json '{"logic":"and","conditions":[["Title","==","Launch plan"],["Score",">=",80]]}' \
54
- --sort-json '[{"field":"Updated","desc":true}]' \
55
- --field-id Name \
56
- --field-id Title \
57
- --field-id Score \
58
- --limit 20
59
- ```
60
-
61
- Example: 复杂筛选从文件读取:
62
-
63
- ```bash
64
- lark-cli base +record-list \
65
- --base-token <base_token> \
66
- --table-id <table_id> \
67
- --filter-json @filter.json \
68
- --sort-json '[{"field":"Priority","desc":true}]' \
69
- --field-id Name \
70
- --field-id Tags \
71
- --limit 50
72
- ```
73
-
74
- `filter-json` 与视图筛选结构一致。下面只列常用 fewshot;字段类型、operator、value 形状拿不准,或需要人员、群组、关联、空值、地理位置、formula / lookup 等完整筛选时,先读 [lark-base-view-set-filter.md](lark-base-view-set-filter.md),再把同样的 filter JSON 传给 `--filter-json`。
75
-
76
- 文本 `==`:字段值等于目标文本。
77
- ```json
78
- {"logic":"and","conditions":[["Title","==","Launch plan"]]}
79
- ```
80
-
81
- 文本包含 / like:文本字段包含目标片段;operator 写 `intersects`。
82
- ```json
83
- {"logic":"and","conditions":[["Title","intersects","urgent"]]}
84
- ```
85
-
86
- 数字 `==`:字段值等于目标数字。
87
- ```json
88
- {"logic":"and","conditions":[["Score","==",95]]}
89
- ```
90
-
91
- 日期 `==`:字段值等于目标日期;datetime / created_at / updated_at 用 `ExactDate(...)`。
92
- ```json
93
- {"logic":"and","conditions":[["Due Date","==","ExactDate(2026-06-02)"]]}
94
- ```
95
-
96
- 选项 `==`:字段值匹配单个选项;选项值使用选项名数组,单个选项也写数组。
97
- ```json
98
- {"logic":"and","conditions":[["Priority","==",["P0"]]]}
99
- ```
100
-
101
- 选项 `intersects`:字段值与给定选项集合有交集,常用于多选或“命中任一选项”。
102
- ```json
103
- {"logic":"and","conditions":[["Tags","intersects",["P0","Blocked"]]]}
104
- ```
105
-
106
- `--sort-json` 传排序数组,数组顺序就是优先级,`desc:true` 为降序,`desc:false` 为升序,最多 10 个排序条件。
107
-
108
- ### 2.2 关键词检索后叠加结构化条件
109
-
110
- 使用 `+record-search` 做关键词命中,结构化条件仍用 `--filter-json` 下推:
111
-
112
- ```bash
113
- lark-cli base +record-search \
114
- --base-token <base_token> \
115
- --table-id <table_id> \
116
- --keyword Alice \
117
- --search-field Name \
118
- --filter-json '{"logic":"and","conditions":[["Status","!=","Done"]]}' \
119
- --sort-json '[{"field":"Updated","desc":true}]' \
120
- --field-id Name \
121
- --field-id Status \
122
- --limit 20
123
- ```
124
-
125
- 不要把 `+record-search` 当成金额、状态、日期、空值、关联字段的结构化筛选入口;这些条件继续写成 `--filter-json`。
126
-
127
- ### 2.3 聚合分析与 TopN
128
-
129
- 使用 `+data-query`:
130
-
131
- - 让 Base 云端查询服务完成 filters、dimensions、measures、sort、pagination.limit。
132
- - `pagination.limit` 是 Base 云端查询服务中的结果限制,不是本地分页扫描。
133
- - 常用聚合 fewshot 先读 [lark-base-data-query-guide.md](lark-base-data-query-guide.md);字段类型、日期 value、DSL shape 以 [lark-base-data-query.md](lark-base-data-query.md) 为准。
134
- - `+data-query` 可返回聚合结果或维度字段行;维度字段行按字段组合去重且不返回 `record_id`,不能当逐条原始记录结果使用。
135
- - 需要输出逐条记录、记录定位或完整行级字段时,先用 `+data-query` 得到业务 key、分组值或候选字段组合,再用 `+record-list --filter-json` / `+record-get` 回查。
136
-
137
- Example: 分组计数:
138
-
139
- ```bash
140
- lark-cli base +data-query \
141
- --base-token <base_token> \
142
- --dsl '{"datasource":{"type":"table","table":{"tableId":"<table_id>"}},"dimensions":[{"field_name":"Status","alias":"status"}],"measures":[{"field_name":"Status","aggregation":"count","alias":"count"}],"shaper":{"format":"flat"}}'
143
- ```
144
-
145
- Example: 过滤后汇总并取 TopN:
146
-
147
- ```bash
148
- lark-cli base +data-query \
149
- --base-token <base_token> \
150
- --dsl '{"datasource":{"type":"table","table":{"tableId":"<table_id>"}},"dimensions":[{"field_name":"Owner","alias":"owner"}],"measures":[{"field_name":"Amount","aggregation":"sum","alias":"total_amount"}],"filters":{"type":1,"conjunction":"and","conditions":[{"field_name":"Status","operator":"is","value":["Done"]}]},"sort":[{"field_name":"total_amount","order":"desc"}],"pagination":{"limit":10},"shaper":{"format":"flat"}}'
151
- ```
152
-
153
- ### 2.4 视图化与复用
154
-
155
- 一次性查询先用 `+record-list` / `+record-search` 的 filter/sort 验证。需要用户长期打开、共享或复用时,再把同一套 filter/sort 沉淀为视图。
156
-
157
- Example: 将已验证的筛选排序写入视图:
158
-
159
- ```bash
160
- lark-cli base +view-set-filter \
161
- --base-token <base_token> \
162
- --table-id <table_id> \
163
- --view-id <view_id> \
164
- --json @filter.json
165
-
166
- lark-cli base +view-set-sort \
167
- --base-token <base_token> \
168
- --table-id <table_id> \
169
- --view-id <view_id> \
170
- --json '{"sort_config":[{"field":"Priority","desc":true}]}'
171
- ```
172
-
173
- 手动配置和视图配置的优先级:
174
-
175
- 1. `--filter-json` 覆盖 `--view-id` 保存的 view filter JSON。
176
- 2. `--sort-json` 覆盖 `--view-id` 保存的 view sort config。
177
- 3. 没有手动 filter/sort 时,`--view-id` 使用视图自身保存的 filter/sort。
178
-
179
- ### 2.5 关系查询与回查
180
-
181
- - link 单元格通常是关联表 `record_id` 数组,不是用户可读内容,只是连接键。
182
- - 先用 `+field-list` 确认 link 字段的 `link_table`、业务唯一键和展示字段。
183
- - 从驱动表拿到候选记录后,用关联 `record_id` 到关联表 `+record-get` 批量读取记录内容。
184
- - 多跳关系逐跳建立 `record_id/key -> 用户可读字段` 映射;最终用户可读的信息。
185
-
186
- 禁止:
187
-
188
- - 把 link `record_id` 当最终输出。
189
- - 用 `+record-search` 搜 link `record_id`。
190
- - 基于 ID、自增编号、link 值做语义猜测;禁止依赖字段先验、样本记忆补全交付输出。
191
-
192
- ## 3. Range & Pagination Contract
193
-
194
- - `+record-list` 默认页、固定 `--limit`、本地 `jq`、shell 管道、手工浏览输出,都只覆盖已读取范围;超过 200 行不要把本地处理当作推荐路径。
195
- - `has_more=true`、存在下一页 offset/page token、或返回行数等于 page size,都表示可能还有未读取数据。
196
- - 对全局问题,只有 Base 云端查询服务已经通过 filter/sort/aggregate 收敛目标范围,或 `+data-query` 已在云端完成聚合、排序和限制时,才可以用有限返回形成结论。
197
- - 必须全量导出时,按 `+record-list` 分页语义串行翻页;不要并发调用 `+record-list`。
198
-
199
- ## 4. Final Answer Check
200
-
201
- 形成交付输出前必须能确认:
202
-
203
- - 问题范围是局部样例、单点定位、全局原始记录、聚合分析、多表关联,还是查询后写入。
204
- - 筛选、排序、聚合是否发生在 Base 云端查询服务中,而不是本地 `jq` / shell 中。
205
- - 如果使用 `jq` / shell,本地输入是否是 200 行以内的小范围结果;超过 200 行是否已改用 Base 云端查询服务查询。
206
- - 如果使用 `+record-list` / `+record-search`,是否处理了 `has_more`,且投影包含业务 key 和解释字段。
207
- - 如果涉及关系查询,是否按 `record_id` 或业务 key 精确回查,交付输出是否来自关联表真实字段。
208
- - 交付输出能追溯到表、字段、筛选条件、排序/聚合条件和连接键。
209
-
210
- 任一项无法确认时,继续查询或明确说明只能得到局部结论。
@@ -1,61 +0,0 @@
1
- # Base data-query guide
2
-
3
- This guide is the entry point for `+data-query`. Use it for common aggregation fewshots and command selection. For the complete DSL fields, operators, limits, and response details, use [lark-base-data-query.md](lark-base-data-query.md) as the DSL SSOT.
4
-
5
- Before using `+data-query`, also follow [lark-base-data-analysis-sop.md](lark-base-data-analysis-sop.md) to confirm that the task really needs aggregation instead of record listing or a temporary view.
6
-
7
- ## When to use
8
-
9
- Use `+data-query` when the user asks for server-side:
10
-
11
- - group by / aggregation
12
- - sum, average, min, max, count, distinct count
13
- - filtered aggregation
14
- - sorted Top N or Bottom N
15
- - global statistical conclusions
16
-
17
- `+data-query` can return dimension field rows, but those rows are grouped by dimension values and do not include `record_id`. Use `+record-list`, `+record-search`, or `+record-get` for row-level output, record identity, or full raw record details.
18
-
19
- ## Common Fewshots
20
-
21
- Count records by a category field:
22
-
23
- ```bash
24
- lark-cli base +data-query \
25
- --base-token <base_token> \
26
- --dsl '{"datasource":{"type":"table","table":{"tableId":"<table_id>"}},"dimensions":[{"field_name":"Status","alias":"status"}],"measures":[{"field_name":"Status","aggregation":"count","alias":"count"}],"shaper":{"format":"flat"}}'
27
- ```
28
-
29
- Sum a number field by category and return Top 10:
30
-
31
- ```bash
32
- lark-cli base +data-query \
33
- --base-token <base_token> \
34
- --dsl '{"datasource":{"type":"table","table":{"tableId":"<table_id>"}},"dimensions":[{"field_name":"Region","alias":"region"}],"measures":[{"field_name":"Amount","aggregation":"sum","alias":"total_amount"}],"sort":[{"field_name":"total_amount","order":"desc"}],"pagination":{"limit":10},"shaper":{"format":"flat"}}'
35
- ```
36
-
37
- Aggregate only records matching a filter:
38
-
39
- ```bash
40
- lark-cli base +data-query \
41
- --base-token <base_token> \
42
- --dsl '{"datasource":{"type":"table","table":{"tableId":"<table_id>"}},"dimensions":[{"field_name":"Owner","alias":"owner"}],"measures":[{"field_name":"Amount","aggregation":"sum","alias":"total_amount"}],"filters":{"type":1,"conjunction":"and","conditions":[{"field_name":"Status","operator":"is","value":["Done"]}]},"shaper":{"format":"flat"}}'
43
- ```
44
-
45
- Use `tableName` when the table ID is unavailable but the table name is known:
46
-
47
- ```bash
48
- lark-cli base +data-query \
49
- --base-token <base_token> \
50
- --dsl '{"datasource":{"type":"table","table":{"tableName":"Orders"}},"measures":[{"field_name":"Amount","aggregation":"sum","alias":"total_amount"}],"shaper":{"format":"flat"}}'
51
- ```
52
-
53
- ## Routing to the DSL SSOT
54
-
55
- Read [lark-base-data-query.md](lark-base-data-query.md) when you need:
56
-
57
- - the full DSL field reference
58
- - supported aggregations and field types
59
- - filter operator details
60
- - pagination and result limits
61
- - response shape and error recovery
@@ -1,63 +0,0 @@
1
- # base +record-upsert
2
-
3
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
-
5
- 创建记录,或在带 `--record-id` 时更新记录。
6
-
7
- ## 推荐命令
8
-
9
- ```bash
10
- # 创建记录
11
- lark-cli base +record-upsert --base-token <base_token> --table-id <table_id> \
12
- --json '{"项目名称":"Apollo","状态":"进行中"}'
13
-
14
- # 更新记录
15
- lark-cli base +record-upsert --base-token <base_token> --table-id <table_id> --record-id <record_id> \
16
- --json '{"项目名称":"Apollo","状态":"完成","完成时间":"2026-03-24 10:00:00"}'
17
- ```
18
-
19
- ## 参数
20
-
21
- | 参数 | 必填 | 说明 |
22
- |------|------|------|
23
- | `--base-token <token>` | 是 | Base Token |
24
- | `--table-id <id_or_name>` | 是 | 表 ID 或表名 |
25
- | `--record-id <id>` | 否 | 传入时走更新,不传时走创建 |
26
- | `--json <body>` | 是 | 字段写入对象,类型 `Map<FieldNameOrID, CellValue>` |
27
-
28
- ## API
29
-
30
- - 创建:`POST /open-apis/base/v3/bases/:base_token/tables/:table_id/records`
31
- - 更新:带 `--record-id` 时改走 `PATCH /records/:record_id`
32
-
33
- ## `--json` 结构
34
-
35
- - `--json` 必须是 **JSON object map**,形状是 `Map<FieldNameOrID, CellValue>`。
36
- - key 是字段名或字段 ID;value 是该字段的 `CellValue`。
37
- - 一次请求里同一字段只用一种标识,避免重复写入冲突。
38
- - 写入前先 `+field-list` 确认字段类型和字段名/ID。
39
- - CellValue 统一看 [lark-base-cell-value.md](lark-base-cell-value.md)。
40
-
41
- ```json
42
- {
43
- "项目名称": "Apollo",
44
- "状态": "进行中",
45
- "完成时间": "2026-03-24 10:00:00"
46
- }
47
- ```
48
-
49
- ## 返回重点
50
-
51
- - 创建时返回 `record` 和 `created: true`。
52
- - 更新时返回 `record` 和 `updated: true`。
53
- - 如果写入了 `formula / lookup / created_at / updated_at / created_by / updated_by` 等只读字段,返回里可能出现 `ignored_fields`,这些字段不会被更新。
54
-
55
- ## 坑点
56
-
57
- - 有 `--record-id` 就一定更新;不传就一定创建,不会自动查重或按业务键 upsert。
58
- - `select` 字段只支持写入字段中已有的选项;构造 CellValue 前先用 `+field-list` 或 `+field-search-options` 确认目标选项存在。
59
- - 这是写入操作,执行前必须确认目标表和字段。
60
-
61
- ## 参考
62
-
63
- - [lark-base-cell-value.md](lark-base-cell-value.md) — CellValue 格式规范
@@ -1,93 +0,0 @@
1
- # 文档统计:总字数 / 总字符数
2
-
3
- 当用户需要统计 Docx / Wiki 文档的总字数或总字符数时,使用本 skill 附带脚本 `scripts/doc_word_stat.py`。统计口径以该脚本为准,不要改用其他方式自行计算,也不要只读取 simple 摘要后统计。
4
-
5
- ## 调用方式
6
-
7
- 在线文档使用 XML full 内容,并让脚本读取 `docs +fetch --format json` 的 envelope:
8
-
9
- ```bash
10
- lark-cli docs +fetch --doc "$URL" --doc-format xml --detail full --format json \
11
- | python3 skills/lark-doc/scripts/doc_word_stat.py --protocol xml --lark-json --pretty
12
- ```
13
-
14
- `$URL` 可以是用户给出的 docx/wiki URL,也可以是可被 `docs +fetch` 解析的 token。
15
-
16
- ## 统计范围
17
-
18
- 先判断用户要求的是**整篇文档**还是**局部内容**:
19
-
20
- - 整篇文档的总字数 / 总字符数:按上方「调用方式」抓取 `full` 内容后统计。
21
- - 本次新增 / 替换 / 改写片段的字数:优先统计拟写内容本身;内容已写入文档时,只 fetch 对应 block / range 后统计。不得用整篇文档字数对比局部目标。
22
-
23
- 如需在自动化或回归验证中发现未覆盖块类型,追加严格参数:
24
-
25
- ```bash
26
- lark-cli docs +fetch --doc "$URL" --doc-format xml --detail full --format json \
27
- | python3 skills/lark-doc/scripts/doc_word_stat.py --protocol xml --lark-json --pretty --fail-on-unsupported --fail-on-unknown
28
- ```
29
-
30
- ## 如何读取结果
31
-
32
- 脚本输出 JSON。对用户汇报时默认只读两个核心字段:
33
-
34
- - `word_count`:总字数。按语义单位统计汉字、英文单词/URL/code path、数字、中文标点;普通贴着英文的英文标点不计入,但独立 ASCII 符号、中文之间的 `/` 等以脚本结果为准。
35
- - `char_count`:总字符数。统计汉字、英文字母、数字、中英文标点和脚本识别的可见符号;空格不计入。
36
-
37
- 其余字段用于排查或解释:
38
-
39
- - `breakdown`:拆分统计来源,例如 `han_chars`、`english_words`、`digits`、`chinese_punctuations`。
40
- - `unknown_blocks`:脚本遇到未知 XML/Markdown 块类型;通常表示需要扩展解析规则。
41
- - `unsupported_blocks`:脚本识别到块类型,但当前无法可靠提取可见文本。
42
- - `diagnostics.has_unknown` / `diagnostics.has_unsupported`:快速判断统计是否存在覆盖风险。
43
-
44
- 如果 `unknown_blocks` 或 `unsupported_blocks` 非空,回复用户时要说明“已统计可提取文本,但存在未覆盖块,结果可能偏低”,并列出对应块类型。为空时可直接给出结果。
45
-
46
- ## 字数遵循校验
47
-
48
- 当用户给了明确字数要求(写 N 字 / x-y 字 / x 字左右 / 上下浮动)时执行;没有明确字数要求则跳过。字数必须按本文流程用脚本统计,不要自己估。
49
-
50
- 1. 先按「统计范围」确认统计对象,再把要求归一成目标区间:`>x`→`[x+1, +∞)`;`<y`→`(-∞, y-1]`;`x-y`→`[x, y]`;`x 字左右`→`[round(0.9x), round(1.1x)]`
51
- 2. 按统计对象选择对应输入并调用脚本统计实际字数,读取输出里的 `word_count`
52
- 3. 对比 `word_count` 与目标区间:区间内即通过;低于下限 → 补充**实质内容**(非注水);高于上限 → 删减冗余内容。改完重新统计
53
- 4. **最多 2 轮**。2 轮后仍不达标:停止,不得为达标而注水或删关键内容;如实汇报【目标区间 / 当前字数 / 差值与方向 / 已试 2 轮 / 未达原因】,**禁止谎称达标**
54
-
55
- ## 输出示例
56
-
57
- 输入正文等价于:`标题` + `一个苹果是 an apple。` 时,输出形态如下:
58
-
59
- ```json
60
- {
61
- "word_count": 10,
62
- "char_count": 15,
63
- "breakdown": {
64
- "han_chars": 7,
65
- "english_words": 2,
66
- "number_words": 0,
67
- "chinese_punctuations": 1,
68
- "english_letters": 7,
69
- "digits": 0,
70
- "english_punctuations": 0,
71
- "symbol_words": 0,
72
- "symbol_chars": 0
73
- },
74
- "protocol": "xml",
75
- "unknown_blocks": [],
76
- "unsupported_blocks": [],
77
- "diagnostics": {
78
- "has_unknown": false,
79
- "has_unsupported": false,
80
- "types": {},
81
- "unknown_types": {},
82
- "unsupported_types": {},
83
- "actions": {}
84
- }
85
- }
86
- ```
87
-
88
- 面向用户的回复可简化为:
89
-
90
- ```text
91
- 总字数:10
92
- 总字符数:15
93
- ```
@@ -1,47 +0,0 @@
1
- # 从零创作工作流
2
-
3
- 用户提供主题、需求或简要说明,需要生成一份新的飞书文档时,遵循本工作流。
4
-
5
- ## 核心方法论 — Code-Act Loop
6
-
7
- 通过自适应的 **Code-Act Loop** 驱动文档创作,而非固定模板式的工作流。每次任务都循环执行:
8
-
9
- 1. **Plan(规划)** — 根据用户目标和文档当前状态,评估下一步该做什么
10
- 2. **Execute(执行)** — 由主 Agent 自己运行 `lark-cli docs` 命令推进正文;仅画板渲染按需隔离到 SubAgent(见步骤三)
11
- 3. **Observe(观察)** — 检查命令输出,验证正确性,确认内容是否满足用户目标
12
- 4. **Iterate(迭代)** — 如需调整,回到 Plan 继续循环
13
-
14
- 循环在文档达到质量标准且满足用户需求时结束。不要试图一次性产出完美内容——迭代打磨效果更好。根据用户实际需求灵活决定文档结构和版块,而不是套用固定模板。
15
-
16
-
17
- ## 典型 Code-Act Loop 流程
18
-
19
- ### 步骤一:规划与撰写(单 Agent 串行)
20
-
21
- 正文由主 Agent 串行维护,**不按章节拆给并行 Agent**,避免上下文割裂、重复矛盾和全文级约束失效。
22
-
23
- 1. 分析用户需求:受众、目的、范围
24
- 2. 设计大纲:根据任务自然选择结构。可以是短文、纪要、FAQ、方案、报告、清单或其他形式;不要默认套固定章节、固定开头或固定富 block 配比
25
- 3. `docs +create` 创建并撰写:
26
- - **短文档**:一次写入完整内容。使用 Markdown 时,避免同时传入 `--title` 和同名 `# 标题`
27
- - **长文档**:先建骨架(标题 + 各级标题),再由主 Agent **顺序逐节**用 `block_insert_after --block-id <章节标题 block_id>` 补全正文;写完一节再写下一节,始终带着已写内容的上下文,保证衔接、不重复
28
- - ⚠️ 不要一次性把超长完整内容塞进 `--content`,容易触发字符/参数限制;长文按节分次写入
29
- - ⚠️ 同一节内多次插入时,要锚到**上一个新插入的 block**(按 [`lark-doc-update.md`](../lark-doc-update.md) 的「Block ID 生命周期」),否则反复锚同一个标题会让段落顺序颠倒
30
- - ⚠️ 若先建骨架写了占位摘要,补正文时**删除占位摘要**,不要留残渣
31
- - ⚠️ **`@file` 路径限制**:`--content @file` 只接受当前工作目录下的相对路径,传绝对路径(如 `@/tmp/xxx.md`)会报 `unsafe file path`。需要落盘时,将文件写在 cwd 下,用完自行清理
32
-
33
- ### 步骤二:整合审查与画板识别(串行)
34
-
35
- 4. `docs +fetch --api-version v2 --detail with-ids` 获取文档,审查整体效果
36
- 5. 评估内容是否满足用户目标:事实是否完整、结构是否清楚、语气是否匹配、是否保留必要素材;检查跨节有无重复、矛盾或断流。再按 `lark-doc-style.md` 的「写完自检」快速核对,发现问题就地定向修正
37
- 6. **画板识别**:逐章节扫描,判断是否有段落用图明显比文字更易懂(流程 / 架构 / 时间线 / 对比 / 占比等,见 `lark-doc-style.md` 的画板原则)。默认用文字,只有确需图示才记录需要插图的章节、推荐画板类型、mermaid/SVG 路径和用于画图的源内容
38
-
39
- ### 步骤三:画板处理与润色
40
-
41
- 7. **优先处理步骤二识别出的画板需求**:读取并按 [lark-doc-whiteboard.md](../lark-doc-whiteboard.md) 选型和插入;正文本身不交给 SubAgent
42
- 8. 由**主 Agent 自行润色**(不另起内容子 Agent,正文始终一人维护):文字密集且不易读时,优先拆段、加小标题或调整顺序——叙述内容保持成段,**不要默认改成列表**,只有确属并列要点 / 步骤才用列表(见 `lark-doc-style.md`);只有确实存在行列数据时才用 `<table>`。其余富 block 的取舍一律遵循 `lark-doc-style.md` 的写作原则,不主动堆叠。需要明显分隔的主题可补充 `<hr/>`,不强制章节间都使用。本地图片使用 `docs +media-insert` 插入
43
-
44
- ### 步骤四:专项校验
45
-
46
- 9. **字数门禁**:如果用户给出任何明确字数要求(如“700-800 字”“1000 字左右”“不少于 500 字”“控制在 800 字以内”),本步骤必须执行,不属于按需项。读取并执行 [`lark-doc-word-stat.md`](../lark-doc-word-stat.md) 的「字数遵循校验」;未得到脚本统计结果前,不得向用户声明“符合字数要求”。若没有明确字数要求,则跳过本项,不读取该 workflow。若执行了专项校验,向用户呈现目标区间、`word_count` 和达标结论
47
- 10. **重复标题检查**:文档生成后,检查文档标题和正文第一个标题块是否重复;若重复,删除或改写正文第一个标题块,避免读者看到同一标题连续出现
@@ -1,68 +0,0 @@
1
- # 飞书文档写作原则
2
-
3
- 写飞书文档,像一个该领域资深的人类作者那样写,而不是把内容"装配"成组件。
4
- 本文只讲"何时用、什么风格";具体标签 / 命令语法见 [`lark-doc-xml.md`](../lark-doc-xml.md)。
5
-
6
- ## 一、用户明确要求优先
7
-
8
- 用户点名要某种格式——高亮块、分栏、列表、某编号体例、表格、画板、某模板、某已有文档的风格——**一律照用户的来,下面的"默认克制"全部让位**。用户给了样例或已有文档,就沿用它的结构与语气。
9
-
10
- ## 二、默认写连贯段落
11
-
12
- 用户没指定时,**默认是连贯段落**;其余按内容类型分流,别一律"少用结构",也别什么都升标题:
13
-
14
- | 内容 | 用什么 | ❌ 别 |
15
- |---|---|---|
16
- | 叙述、论证、分析、说明 | **连贯段落** | 拆成列举 |
17
- | 真·行列数据(预算、指标、对比、排期、字段说明) | **表格** | 写成段落或把字段堆成一行 |
18
- | 字段:值(主题、时长、负责人等,少量) | **加粗标签行**或一句话 | 每字段一个标题 |
19
- | 方法 / 措施 + 每项一段描述 | **加粗引导句段落**(「**全程督导。**…」) | 每项升标题 |
20
- | 任务清单 / 检查项 / 待办事项 | **`<checkbox>`** | 用普通列表替代可交互待办 |
21
- | 纯短并列项(无描述,如材料清单) | 列表 | — |
22
- | 章节(内容成块、需在目录导航) | 标题层级 | — |
23
-
24
- - 判断标准:**去掉结构后能顺成段落,就用段落;成行成列的数据,就用表格。**
25
- - **红线一:标题层级只给"章节"。** "小标题 + 一两句话"的小项(字段、方法、要点)不该占标题层级——按上表降成标签行 / 加粗引导句段落(否则目录里全是没信息量的条目)。
26
- - **红线二:列举(「一是 / 二是」「第一 / 第二」「(1)(2)(3)」)只给真正并列的具体项,且别每节都用。**
27
- - 「一是 / 二是」是党务列举的措辞——只用在列具体的**问题 / 措施**那一处;背景、现状、认识、分析、过渡、总结**一律成段**。
28
- - **整篇每段 / 每节都"一是 / 二是",和"每段一个 bullet"是同一个骨架化的错——不因为是党务就变对**(纯清单 / 台账类除外)。
29
-
30
- ## 三、按体裁写
31
-
32
- - **公文 / 法律 / 学术 / 申报 / 项目方案等严肃正式提交物**:靠规范的标题层级、段落与编号体系表达;**默认不用高亮块、分栏**,要强调用加粗或规范小标题。
33
- - **面向公众号、微信等外部平台粘贴 / 发布的内容**:不用飞书特有富 block(高亮块、分栏等),粘出去会丢样式 / 错乱;改用标准标题、段落、列表、引用。
34
- - **一般文档**:以可读为先,不堆砌结构。
35
-
36
- ## 四、编号与层级
37
-
38
- - **一套编号体例、全篇一致;最忌中文大层级与阿拉伯小数编号混用。**
39
- - 公文 / 正式材料常用:「一、→(一)→ 1.→(1)」(中文大层级 + 阿拉伯细分层级)。
40
- - 学术 / 技术 / 商业报告:「1 → 1.1 → 1.1.1」或「一、→(一)→ 1.」,**择一**。
41
- - ⚠️ **「一、」只能配「(一)」;要用阿拉伯小数就从顶层全用「1 / 1.1」。绝不「一、」配「1.1 / 2.1」**——这是最常见的混用。
42
- - **不混用**多套(别"第X部分"+"一、"+"1."混着来);**同级不跳号**;**不跳级**。
43
- - **编号 / 标题层级只给"章节"**,不要为了凑齐体例把每个小项都编上「(一)」、升成标题(小项处理方式见上文「二、默认写连贯段落」)。
44
- - 简单的 1.2.3 并列项用原生 `<ol><li seq="auto">…</li></ol>` 让飞书自动编号、自动对齐;「一、(一)」原生产不出,才手打成文字——此时用标题级别表达层次,**不靠手动缩进**、各级顶格(全角括号「()」叠手动缩进会视觉错位)。
45
-
46
- ## 五、飞书特有组件,克制使用
47
-
48
- - **高亮块 `<callout>`**:很重的强提醒信号,**默认不用**;只给"不提醒就会出错 / 遗漏"的关键项,全文极少(0~1 个),不要每节导语 / 结论都做成高亮块。
49
- - **分栏 `<grid>`**:仅左右信息量相当、确需并排对照的短内容;否则用段落或表格。
50
- - **画板**:默认用文字,只在**图示明显比文字更易懂**(流程、架构、时间线、对比、占比等)或用户要求时才用。怎么插、用哪种类型见 [`lark-doc-xml.md`](../lark-doc-xml.md) 与 [`lark-doc-whiteboard.md`](../lark-doc-whiteboard.md)。
51
- - **颜色**:默认朴素、不上色;需要时保持语义一致,按下表选择对应颜色,不为装饰上色。可用色见 [`lark-doc-xml.md`](../lark-doc-xml.md) 的「美化系统」。
52
-
53
- | 语义 | 背景色 | 文字色 |
54
- |-|-|-|
55
- | 信息、说明 | `light-blue` | `blue` |
56
- | 成功、推荐 | `light-green` | `green` |
57
- | 警告 / 错误 / 风险 | `light-red` | `red` |
58
- | 注意、待确认 | `light-yellow` | `yellow` |
59
- | 中性、辅助 | `light-gray` | — |
60
-
61
- ## 六、写完自检
62
-
63
- 交付前快速回看:
64
- - **叙述是否被列举化**:背景 / 现状 / 认识 / 分析 / 成效 / 过渡 / 总结等应成段;列举只用于同层级、可并列处理的信息,如问题、措施、步骤、任务或材料清单。若正文反复使用连续编号、项目符号或固定并列句式,导致内容缺少叙述,应把背景 / 认识 / 分析 / 过渡改写成有承接关系的段落(纯清单 / 台账类除外)。
65
- - **数据是否正确呈现**:成行成列的数据应使用表格呈现,不要写成段落,也不要用分隔符把多个字段硬串在一起。
66
- - **标题是否滥用**:"小标题 + 一句话"的小项不要升成标题;应改成标签行、加粗引导句段落或普通段落。
67
- - **编号是否统一**:全篇一套、不跳号、不跳级,尤其不要中文 + 阿拉伯混用(如「一、」配「1.1」)。
68
- - **组件是否克制且保真**:高亮块 / 分栏 / 画板 / 颜色应符合体裁和用户要求;引用 / 图片 / 资源块必须保留。
@@ -1,48 +0,0 @@
1
- # 改写增强工作流
2
-
3
- 用户提供已有文档链接或 token,需要改写、润色、补充或重排版时,遵循本工作流。
4
-
5
- ## 核心方法论 — Code-Act Loop
6
- 通过自适应的 **Code-Act Loop** 驱动文档改写,而非固定模板式的工作流。每次任务都循环执行:
7
- 1. **Plan(规划)** — 根据用户目标和文档当前状态,评估下一步该做什么
8
- 2. **Execute(执行)** — 由主 Agent 自己运行 `lark-cli docs` 命令推进改写;仅画板渲染按需隔离到 SubAgent(见步骤二)
9
- 3. **Observe(观察)** — 检查命令输出,验证正确性,确认内容是否满足用户目标
10
- 4. **Iterate(迭代)** — 如需调整,回到 Plan 继续循环
11
-
12
- ## 核心原则:精准手术优于全量覆盖
13
- 1. **精准手术**:只改用户指定的 block,不改其他 block。
14
- 2. **全量覆盖**:如果用户明确要改整篇,才用 `overwrite` 命令。
15
- 3. **保真约束**:改写时原文里的 `<cite type="user">`(@人)、`<cite type="doc">`(@文档)、`<img>`、`<source>`、`<whiteboard>`、`<sheet>`、`<bitable>`、`<synced_reference>` 等行内组件和资源块一律原样保留(含所有 token / user-id / doc-id 属性),不许替换成纯文本姓名、链接或占位符。
16
-
17
- ## 工作流程
18
-
19
- ### 步骤一:分析与画板识别(串行)
20
-
21
- 1. **选择读取范围**(节省上下文的关键):
22
- - 用户只改某一节 / 文档较大 → 先 `docs +fetch --scope outline --max-depth 2` 拿目录,再 `docs +fetch --scope section --start-block-id <目标标题id> --detail with-ids` 精读该节(`section` 会自动展开到下一个同级/更高级标题前,不用手动算结束 block id)
23
- - 需要精确跨节区间 → `docs +fetch --scope range --start-block-id xxx --end-block-id yyy`(或 `--end-block-id -1` 读到末尾)
24
- - 用户只给了模糊关键词 → `docs +fetch --scope keyword --keyword xxx --context-before 1 --context-after 1 --detail with-ids`
25
- - 用户明确要改整篇 → `docs +fetch --detail with-ids`
26
- - 详见 [`lark-doc-fetch.md`](../lark-doc-fetch.md) 中「选 `--scope`(读取范围)」小节
27
- 2. 系统性评估:用户想改什么、现有文档风格是什么、哪些内容需要保留、哪些问题影响理解
28
- 3. **画板识别**:逐章节扫描,判断是否有段落用图明显比文字更易懂(流程 / 架构 / 时间线 / 对比 / 占比等,见 `lark-doc-style.md` 的画板原则)。默认用文字,只有确需图示才记录需要插图的章节(block ID)、推荐画板类型、mermaid/SVG路径和源内容片段
29
- 4. 向用户简要说明改进计划(包含识别出的画板机会)
30
-
31
- ### 步骤二:定向改写(单 Agent 串行)
32
-
33
- 5. **优先处理步骤一识别出的画板候选段落**:读取并按 [lark-doc-whiteboard.md](../lark-doc-whiteboard.md) 选型和插入;正文本身不交给 SubAgent
34
- 6. 由主 Agent **顺序逐节**改写,**不按章节拆给并行 Agent**,避免上下文割裂、重复矛盾和全文级约束失效:
35
- - 沿用或轻微调整已有文档风格,除非用户要求彻底重排版
36
- - 优先通过重写段落、调整标题、补充小标题提升可读性;叙述内容保持成段,**不要默认改成列表**,只有确属并列要点 / 步骤才用列表(见 `lark-doc-style.md`)
37
- - 富 block 是可选表达手段,不因固定比例而添加,取舍遵循 `lark-doc-style.md` 的写作原则;画板类需求只走第 5 步
38
-
39
- ### 步骤三:验证(串行)
40
-
41
- 7. 获取更新后文档局部内容,检查是否符合用户目标和已有风格
42
- 8. 检查是否满足用户目标并保留原有关键内容。再按 `lark-doc-style.md` 的「写完自检」快速核对,发现问题则定向修正
43
-
44
- ### 步骤四:专项校验(按需执行)
45
-
46
- 9. 仅当用户预期需要校验字数时,才读取并执行 [`lark-doc-word-stat.md`](../lark-doc-word-stat.md) 的「字数遵循校验」;否则跳过本项,不读取该 workflow。若执行了专项校验,向用户呈现结果
47
-
48
- **上下文节省提示**:主 Agent 改某节时如需重新读取,优先用 `docs +fetch --scope section --start-block-id <章节标题id>`(自动覆盖整节),或 `--scope range --start-block-id xxx --end-block-id yyy` 精确区间,只拉当前章节,不要重复拉全文。