@amaster.ai/pi-lark 0.1.13 → 0.1.14

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 (24) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-base/references/lark-base-workflow-schema.md +2 -2
  3. package/skills/lark-calendar/SKILL.md +44 -16
  4. package/skills/lark-calendar/references/lark-calendar-list-attendees.md +33 -0
  5. package/skills/lark-calendar/references/lark-calendar-recurring.md +62 -66
  6. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +7 -1
  7. package/skills/lark-drive/references/lark-drive-comment-location.md +1 -1
  8. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +1 -1
  9. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +1 -1
  10. package/skills/lark-im/references/lark-im-messages-resources-download.md +1 -1
  11. package/skills/lark-okr/SKILL.md +38 -29
  12. package/skills/lark-okr/references/lark-okr-comment-create.md +103 -0
  13. package/skills/lark-okr/references/lark-okr-comment-delete.md +59 -0
  14. package/skills/lark-okr/references/lark-okr-comment-detail.md +80 -0
  15. package/skills/lark-okr/references/lark-okr-comment-get.md +66 -0
  16. package/skills/lark-okr/references/lark-okr-comment-list.md +79 -0
  17. package/skills/lark-okr/references/lark-okr-comment-patch.md +73 -0
  18. package/skills/lark-okr/references/lark-okr-comment-solve-reopen.md +83 -0
  19. package/skills/lark-okr/references/lark-okr-entities.md +66 -2
  20. package/skills/lark-sheets/SKILL.md +1 -0
  21. package/skills/lark-sheets/references/lark-sheets-batch-update.md +3 -3
  22. package/skills/lark-sheets/references/lark-sheets-legacy-command-migration.md +152 -0
  23. package/skills/lark-sheets/references/lark-sheets-read-data.md +2 -2
  24. package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -17
@@ -0,0 +1,103 @@
1
+ # okr +comment-create
2
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
3
+
4
+ 创建一条 OKR 评论,或回复已有的评论。只支持 user 身份。
5
+
6
+ ## 推荐命令
7
+
8
+ ```bash
9
+ # 在周期下创建实体级评论。
10
+ lark-cli okr +comment-create --target-type cycle --target-id 3456789012345678901 --content '{"text":"进展不错"}'
11
+
12
+ # 在 Objective 正文中创建指定文本的划词评论。
13
+ lark-cli okr +comment-create --target-type objective --target-id 2345678901234567890 --content '{"text":"请补充数据"}' --selected-text '提升核心接口稳定性'
14
+
15
+ # 在 Objective 正文中创建划词评论。
16
+ lark-cli okr +comment-create --target-type objective --target-id 2345678901234567890 --content '{"text":"请补充数据"}' --select-all
17
+
18
+ # 在 KeyResult 的已有划词评论串中追加回复。
19
+ lark-cli okr +comment-create --target-type key_result --target-id 4567890123456789012 --content '{"text":"已回复"}' --ref-comment-id 7000000000000000004
20
+
21
+ # 使用 richtext 文件作为评论正文。
22
+ lark-cli okr +comment-create --target-type progress --target-id 3456789012345678901 --style richtext --content '@comment.json'
23
+ ```
24
+
25
+ ```bash
26
+ # 写入前预览创建评论的 URL、参数和请求体。
27
+ lark-cli okr +comment-create --target-type progress --target-id 3456789012345678901 --content '{"text":"进展不错"}' --dry-run
28
+ ```
29
+
30
+ ## 常用表述
31
+
32
+ 以下是一些用户需求中常见的表述:
33
+
34
+ - 全局评论/周期评论/OKR评论: 指 OKR 周期的实体级评论,当用户要求创建全局评论,或对某个周期的 OKR 进行评论(不特指某个 Objective 或 KeyResult 时),可以创建周期实体级评论。
35
+ - 划词评论: 指 Objective/KeyResult 下的划词评论。需要注意,Objective/KeyResult 下不能创建实体级评论(必须携带 selected-text 或 select-all)。若用户没有特别指定需评论的段落,使用 --select-all
36
+
37
+ ## 参数
38
+
39
+ | 参数 | 必填 | 默认值 | 说明 |
40
+ |------------------|------|---------|---------------------------------------------------------------------------------------------------------------|
41
+ | --target-type | 是 | — | cycle、progress、objective 或 key_result。 |
42
+ | --target-id | 是 | — | 评论对象 ID,int64 正整数。 |
43
+ | --content | 是 | — | 评论正文;输入风格:`simple`(半纯文本 JSON,推荐) \| `richtext`(完整 ContentBlock JSON),支持 @文件路径。 |
44
+ | --selected-text | 否 | — | Objective/KeyResult 新建划词时的完整纯文本。 |
45
+ | --select-all | 否 | false | Objective/KeyResult 划词时选择全文。 |
46
+ | --ref-comment-id | 否 | — | 回复 Progress/Cycle 评论,或将 Objective/KeyResult 评论挂入已有划词串。 |
47
+ | --style | 否 | simple | 输入/输出风格:simple 或 richtext。 |
48
+ | --user-id-type | 否 | open_id | open_id、union_id、user_id 或 user_key。 |
49
+ | --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
50
+ | --format | 否 | json | 输出格式。 |
51
+
52
+ ## 评论场景参数组合
53
+
54
+ | 场景 | target-type | 必须传 | 不能传 |
55
+ |--------------------------------|-------------------------|---------------------------------------------------------------|-------------------------------------------------------|
56
+ | 创建周期/进展实体级评论 | cycle 或 progress | `--content` | `--selected-text`、`--select-all`、`--ref-comment-id` |
57
+ | 回复周期/进展已有评论 | cycle 或 progress | `--content`、`--ref-comment-id` | `--selected-text`、`--select-all` |
58
+ | 创建 Objective/KR 划词评论 | objective 或 key_result | `--content`,并在 `--selected-text` / `--select-all` 中二选一 | `--ref-comment-id` |
59
+ | 追加到 Objective/KR 划词评论串 | objective 或 key_result | `--content`、`--ref-comment-id` | `--selected-text`、`--select-all` |
60
+
61
+ ## 工作流程
62
+
63
+ 1. 确定评论 target:使用 [+cycle-detail](lark-okr-cycle-detail.md) 获取 Objective/KeyResult ID,使用 [+progress-list](lark-okr-progress-list.md) 获取 Progress ID;已有评论串时使用 [+comment-list](lark-okr-comment-list.md) 或 [+comment-get](lark-okr-comment-get.md) 获取 comment-id。
64
+ 2. 根据 target-type 选择评论形式:
65
+ - cycle/progress:不传 selected-text 或 select-all;需要回复时传 ref-comment-id。
66
+ - objective/key_result:在 selected-text、select-all、ref-comment-id 中选择且只能选择一个;selected-text 和 select-all 互斥,二者也都和 ref-comment-id 互斥。
67
+ 3. 准备 content:content 是业务必填,通常建议使用 simple 格式,需要精确控制 @用户的位置时,可以使用 richtext 格式,参考 [ContentBlock 格式](lark-okr-contentblock.md)
68
+ 4. 执行命令;真实写入前可以先使用 --dry-run 检查 URL、query 和 body。
69
+ 5. 在创建(而非回复) Objective/KeyResult 划词评论时,若用户未指定评论的具体位置,通常可以使用 select-all 而非自行指定 selected-text,除非用户需求中明确了具体的段落。
70
+ - 若需使用 selected-text 精确选择划词选区时,只可传入正文中真实存在的连续纯文本片段;不要包含或跨越 mention 占位符,否则无法命中具体内容。
71
+ - selected-text 会选择对应文本的首个命中。若 selected-text 未匹配到内容,会 fallback 至选择全文。
72
+
73
+ ## 输出
74
+
75
+ 创建成功返回 JSON:
76
+
77
+ ```json
78
+ {
79
+ "comment_id": "7000000000000000004",
80
+ "selection_id": "8000000000000000002"
81
+ }
82
+ ```
83
+
84
+ - comment_id 是新评论 ID。
85
+ - selection_id 只在创建划词评论时返回,用于识别评论串。
86
+ - 创建接口不直接返回完整 Comment;需要详情时使用 [+comment-get](lark-okr-comment-get.md)。
87
+
88
+ ## 注意事项
89
+
90
+ - Objective/KeyResult 的 ref-comment-id 只用于定位已有划词串,不会在新评论的 ref_comment_id 字段建立引用关系。
91
+ - `--ref-comment-id` 必须传评论实体自身的 `id`,不能传 `selection.id`。`selection.id` 只用于识别同一个划词评论串;如果要回复某个划词串,应先从 +comment-list 或 +comment-detail 中找到该串内任意一条 Comment 的 `id`,再将这个 `id` 传给 `--ref-comment-id`。
92
+ - Progress/Cycle 是实体级评论;Progress 的 ref-comment-id 会建立普通评论之间的引用关系。
93
+ - 评论的 content 不支持 docs/images 字段,建议使用 simple 格式填写
94
+
95
+ ## 参考
96
+
97
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
98
+ - [OKR 实体定义](lark-okr-entities.md) — Comment、评论串和 target 类型
99
+ - [ContentBlock 格式](lark-okr-contentblock.md) — simple/richtext 输入格式
100
+ - [okr +comment-list](lark-okr-comment-list.md) — 查询已有评论和 selection.id
101
+ - [okr +comment-get](lark-okr-comment-get.md) — 获取评论详情
102
+ - [okr +comment-solve / +comment-reopen](lark-okr-comment-solve-reopen.md) — 管理评论状态
103
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
@@ -0,0 +1,59 @@
1
+ # okr +comment-delete
2
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
3
+
4
+ 永久删除一条评论。删除划词评论时只删除指定评论,不会删除同一 selection.id 下的其他评论。
5
+
6
+ ## 功能简介
7
+
8
+ 删除一条特定评论。本 shortcut 为高风险接口,删除的评论不可找回,如果只是暂时结束讨论,可使用 +comment-solve。只支持 user 身份。
9
+
10
+ ## 推荐命令
11
+ ```bash
12
+ # 预览删除请求,不实际执行永久删除。
13
+ lark-cli okr +comment-delete --comment-id 7000000000000000004 --dry-run
14
+ # 确认删除目标后,执行不可恢复的删除操作。
15
+ lark-cli okr +comment-delete --comment-id 7000000000000000004 --yes
16
+ ```
17
+
18
+
19
+ ## 参数
20
+
21
+ | 参数 | 必填 | 默认值 | 说明 |
22
+ |--------------|--------------|--------|-------------------------------------------------------------|
23
+ | --comment-id | 是 | — | 要删除的评论 ID,int64 正整数。建议先由 +comment-get 核对。 |
24
+ | --yes | 真实执行时是 | — | 确认 high-risk-write 操作。--dry-run 时不需要。 |
25
+ | --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
26
+ | --format | 否 | json | 输出格式。 |
27
+
28
+ ## 工作流程
29
+
30
+ 1. 使用 [+comment-list](lark-okr-comment-list.md)、[+comment-detail](lark-okr-comment-detail.md) 或 [+comment-get](lark-okr-comment-get.md) 定位并确认 comment-id。
31
+ 2. 判断是否真的需要删除:解决评论使用 [+comment-solve](lark-okr-comment-solve-reopen.md),删除只用于永久移除内容。
32
+ 3. 先执行带 --dry-run 的命令检查 URL 和 comment-id。
33
+ 4. 向用户明确说明删除不可恢复;得到确认后,在原始命令末尾追加 --yes 执行。
34
+ 5. 根据 deleted=true 和返回的 comment_id 确认结果。
35
+
36
+ ## 输出
37
+
38
+ 删除成功返回 JSON:
39
+ ```json
40
+ {
41
+ "deleted": true,
42
+ "comment_id": "7000000000000000004"
43
+ }
44
+ ```
45
+
46
+
47
+ ## 注意事项
48
+
49
+ - 删除是单条评论级操作,即使评论属于划词评论串,也不会连带删除其他评论。
50
+ - 删除后不能使用 +comment-reopen 恢复;暂时关闭讨论应使用 +comment-solve。
51
+ - 该命令不需要 style,因为接口没有返回 Comment 正文。
52
+
53
+ ## 参考
54
+
55
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
56
+ - [OKR 实体定义](lark-okr-entities.md) — Comment、评论串和状态规则
57
+ - [okr +comment-get](lark-okr-comment-get.md) — 删除前核对评论
58
+ - [okr +comment-solve / +comment-reopen](lark-okr-comment-solve-reopen.md) — 暂时解决和恢复评论
59
+ - [lark-shared](../../lark-shared/SKILL.md) — 高风险操作确认协议
@@ -0,0 +1,80 @@
1
+ # okr +comment-detail
2
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
3
+
4
+ 获取指定 OKR 周期下 Cycle、Objective、KeyResult 和 Progress 的全部评论,并按评论对象和评论串整理后按时间升序排列。该 shortcut 是跨多个 OKR 接口的聚合查询。
5
+
6
+ ## 推荐命令
7
+
8
+ ```bash
9
+ # 获取指定周期下所有 Cycle、Objective、KeyResult 和 Progress 的评论。
10
+ lark-cli okr +comment-detail --cycle-id 1234567890123456789
11
+
12
+ # 获取原始 ContentBlock 格式的评论正文。
13
+ lark-cli okr +comment-detail --cycle-id 1234567890123456789 --style richtext
14
+
15
+ # 预览聚合查询的 API 调用,不实际执行。
16
+ lark-cli okr +comment-detail --cycle-id 1234567890123456789 --dry-run
17
+ ```
18
+
19
+ ## 参数
20
+
21
+ | 参数 | 必填 | 默认值 | 说明 |
22
+ |------------|------|--------|--------------------------------------------------------------------------------------------|
23
+ | --cycle-id | 是 | — | OKR 周期 ID,int64 正整数,可从 +cycle-list 获取。 |
24
+ | --style | 否 | simple | simple 返回半纯文本格式,不涉及字体/颜色等信息时推荐使用;richtext 返回原始 ContentBlock。 |
25
+ | --dry-run | 否 | — | 预览聚合查询而不实际执行。 |
26
+ | --format | 否 | json | 输出格式。 |
27
+
28
+ ## 工作流程
29
+
30
+ 1. 使用 +cycle-list 获取周期 ID;如果用户已经提供周期 ID,直接使用。
31
+ 2. 执行 +comment-detail --cycle-id "..."。shortcut 会依次获取周期下的 Objective、每个 Objective 下的 KeyResult、每个 Objective/KeyResult 下的 Progress,以及四类对象的评论。
32
+ 3. 评论接口自动处理分页;对象读取和评论读取使用有界并发。任一底层请求失败时整体返回错误,不返回静默不完整结果。
33
+ 4. 评论串按首条评论的 create_time 升序排列,串内评论也按 create_time 升序排列。
34
+
35
+ ## 输出
36
+
37
+ 返回 JSON 的核心结构如下:
38
+
39
+ ```json
40
+ {
41
+ "cycle_id": "1234567890123456789",
42
+ "comments": {
43
+ "2345678901234567890": [
44
+ [
45
+ {
46
+ "id": "7000000000000000001",
47
+ "target": {"target_type": "objective", "target_id": "2345678901234567890"},
48
+ "commentator_id": "ou_xxx",
49
+ "status": "open",
50
+ "create_time": "2025-01-15 10:30:00",
51
+ "update_time": "2025-01-15 10:30:00",
52
+ "selection": {"id": "8000000000000000001", "selected_text": "提升核心接口稳定性"},
53
+ "content": {"text": "请补充指标", "mention": [], "docs": [], "images": []}
54
+ }
55
+ ]
56
+ ]
57
+ },
58
+ "style": "simple"
59
+ }
60
+ ```
61
+
62
+ - comments 第一层 key 是 target_id;value 是评论串数组;每个评论串是评论数组。
63
+ - simple 风格下 content 是 SemiPlainContent;richtext 风格下 content 是 ContentBlock。
64
+ - 评论时间戳会转换为可读日期时间;selection、状态和引用字段会保留。
65
+ - `comments` 会为周期遍历到的每个 target 保留一个 target_id key;即使该对象没有评论,对应 value 也会是空的评论串数组。
66
+
67
+ ## 注意事项
68
+
69
+ - 这是聚合查询,接口调用次数取决于周期下的 Objective、KeyResult 和 Progress 数量。
70
+ - +comment-detail 不接受 department-id-type,该接口参数由 shortcut 忽略。
71
+ - 该命令只读取评论,不会修改、解决或删除评论。
72
+
73
+ ## 参考
74
+
75
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
76
+ - [OKR 实体定义](lark-okr-entities.md) — Cycle、Objective、KeyResult、Progress 和 Comment 的关系
77
+ - [ContentBlock 格式](lark-okr-contentblock.md) — ContentBlock 与 SemiPlainContent 格式
78
+ - [okr +cycle-detail](lark-okr-cycle-detail.md) — 获取周期下的 Objective 和 KeyResult
79
+ - [okr +progress-list](lark-okr-progress-list.md) — 获取 Objective 或 KeyResult 下的 Progress
80
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
@@ -0,0 +1,66 @@
1
+ # okr +comment-get
2
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
3
+
4
+ 根据评论 ID 获取单条 OKR 评论,查看评论正文、状态、评论对象、引用关系和划词信息。本 shortcut 适合用于在编辑评论后确认其最终状态。
5
+
6
+ ## 推荐命令
7
+
8
+ ```bash
9
+ # 获取一条评论的简化正文和元数据。
10
+ lark-cli okr +comment-get --comment-id 7000000000000000001
11
+
12
+ # 获取原始 ContentBlock 格式的评论正文。
13
+ lark-cli okr +comment-get --comment-id 7000000000000000001 --style richtext
14
+
15
+ # 预览获取评论的 API 调用,不实际执行。
16
+ lark-cli okr +comment-get --comment-id 7000000000000000001 --dry-run
17
+ ```
18
+
19
+ ## 参数
20
+
21
+ | 参数 | 必填 | 默认值 | 说明 |
22
+ |----------------|------|---------|----------------------------------------------------------------------------------------|
23
+ | --comment-id | 是 | — | 评论 ID,int64 正整数。 |
24
+ | --user-id-type | 否 | open_id | open_id、union_id、user_id 或 user_key。 |
25
+ | --style | 否 | simple | simple 返回半纯文本格式,不涉及字体/颜色等信息时推荐使用;richtext 返回 ContentBlock。 |
26
+ | --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
27
+ | --format | 否 | json | 输出格式。 |
28
+
29
+ ## 工作流程
30
+
31
+ 1. 如果只有目标 ID,先用 [+comment-list](lark-okr-comment-list.md) 或 [+comment-detail](lark-okr-comment-detail.md) 定位 comment-id。
32
+ 2. 执行 +comment-get --comment-id "..."。
33
+ 3. 根据后续操作检查 selection、status 和 ref_comment_id:selection.id 表示划词评论,status 为 solved 表示已解决,ref_comment_id 表示引用关系。
34
+
35
+ ## 输出
36
+
37
+ ```json
38
+ {
39
+ "comment": {
40
+ "id": "7000000000000000001",
41
+ "target": {"target_type": "progress", "target_id": "3456789012345678901"},
42
+ "commentator_id": "ou_xxx",
43
+ "status": "open",
44
+ "create_time": "2025-01-15 10:30:00",
45
+ "update_time": "2025-01-15 10:30:00",
46
+ "content": {"text": "进展不错", "mention": [], "docs": [], "images": []},
47
+ "ref_comment_id": "7000000000000000000"
48
+ },
49
+ "style": "simple"
50
+ }
51
+ ```
52
+
53
+ selection、solver_id、solved_time 和 ref_comment_id 按接口是否返回保留。
54
+
55
+ ## 注意事项
56
+
57
+ - Objective/KeyResult 的划词评论通过 selection.id 归属于评论串;实体级评论没有 selection。
58
+ - 解决或重新打开请使用 [+comment-solve / +comment-reopen](lark-okr-comment-solve-reopen.md)。
59
+
60
+ ## 参考
61
+
62
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
63
+ - [OKR 实体定义](lark-okr-entities.md) — Comment 字段与评论串规则
64
+ - [ContentBlock 格式](lark-okr-contentblock.md) — 评论正文格式
65
+ - [okr +comment-list](lark-okr-comment-list.md) — 查询目标下的评论
66
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
@@ -0,0 +1,79 @@
1
+ # okr +comment-list
2
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
3
+
4
+ 分页获取单个 Cycle、Objective、KeyResult 或 Progress 下的评论。查询整个周期下所有评论时可使用 [+comment-detail](lark-okr-comment-detail.md)。
5
+
6
+ ## 推荐命令
7
+
8
+ ```bash
9
+ # 获取 Objective 下的第一页评论。
10
+ lark-cli okr +comment-list --target-type objective --target-id 2345678901234567890
11
+
12
+ # 使用上一页 token 获取 Progress 下的下一页评论。
13
+ lark-cli okr +comment-list --target-type progress --target-id 3456789012345678901 --page-size 100 --page-token "7000000000000000002"
14
+
15
+ # 以 richtext 输出 KeyResult 评论,但是仅预览请求,不实际获取。
16
+ lark-cli okr +comment-list --target-type key_result --target-id 4567890123456789012 --style richtext --dry-run
17
+ ```
18
+
19
+ ## 参数
20
+
21
+ | 参数 | 必填 | 默认值 | 说明 |
22
+ |----------------|------|---------|----------------------------------------------------------------------------------------|
23
+ | --target-type | 是 | — | cycle、objective、key_result 或 progress。 |
24
+ | --target-id | 是 | — | 评论对象 ID,int64 正整数。 |
25
+ | --page-size | 否 | 100 | 每页数量,范围 1-100。 |
26
+ | --page-token | 否 | "" | 上一次响应中的 token;首页不传。 |
27
+ | --user-id-type | 否 | open_id | open_id、union_id、user_id 或 user_key。 |
28
+ | --style | 否 | simple | simple 返回半纯文本格式,不涉及字体/颜色等信息时推荐使用;richtext 返回 ContentBlock。 |
29
+ | --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
30
+ | --format | 否 | json | 输出格式。 |
31
+
32
+ ## 工作流程
33
+
34
+ 1. 根据用户需求选择 target-type:周期用 cycle,目标用 objective,关键结果用 key_result,进展用 progress。
35
+ 2. 如果缺少 ID,使用 [+cycle-list](lark-okr-cycle-list.md)、[+cycle-detail](lark-okr-cycle-detail.md) 或 [+progress-list](lark-okr-progress-list.md) 获取。
36
+ 3. 执行 +comment-list --target-type "..." --target-id "..."。
37
+ 4. has_more 为 true 且 page_token 非空时,将 page_token 原样作为下一次调用的 --page-token;不要自行解析或修改 token。
38
+
39
+ ## 输出
40
+
41
+ ```json
42
+ {
43
+ "comments": [
44
+ [
45
+ {
46
+ "id": "7000000000000000001",
47
+ "target": {"target_type": "objective", "target_id": "2345678901234567890"},
48
+ "commentator_id": "ou_xxx",
49
+ "status": "open",
50
+ "create_time": "2025-01-15 10:30:00",
51
+ "update_time": "2025-01-15 10:30:00",
52
+ "selection": {"id": "8000000000000000001", "selected_text": "提升核心接口稳定性"},
53
+ "content": {"text": "请补充指标", "mention": [], "docs": [], "images": []}
54
+ }
55
+ ]
56
+ ],
57
+ "has_more": true,
58
+ "page_token": "7000000000000000002",
59
+ "style": "simple"
60
+ }
61
+ ```
62
+
63
+ comments 是当前页按评论串分组的二维数组,不会自动拉取所有分页;simple 风格返回简单的半纯文本格式,richtext 风格返回原生 ContentBlock。
64
+
65
+ ## 注意事项
66
+
67
+ - 实体级评论没有 selection;Objective/KeyResult 的划词评论带有 selection.id。
68
+ - 只对当前页内的评论进行评论串分组;如果同一评论串跨越分页边界,需结合相邻页自行合并,或使用 +comment-detail 获取整个周期的聚合结果。
69
+ - 评论串按首条评论的 create_time 升序排列,串内评论也按 create_time 升序排列;时间相同则按评论 ID 升序。
70
+ - 该命令是只读操作,不会改变评论状态。
71
+
72
+ ## 参考
73
+
74
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
75
+ - [OKR 实体定义](lark-okr-entities.md) — Comment、评论串和 target 类型
76
+ - [okr +comment-detail](lark-okr-comment-detail.md) — 聚合获取周期评论
77
+ - [okr +cycle-detail](lark-okr-cycle-detail.md) — 获取 Objective 和 KeyResult ID
78
+ - [okr +progress-list](lark-okr-progress-list.md) — 获取 Progress ID
79
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
@@ -0,0 +1,73 @@
1
+ # okr +comment-patch
2
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
3
+
4
+ 修改指定评论的正文。评论目标、划词定位、引用关系则一经创建不可修改。只支持 user 身份。
5
+
6
+ `--content` 是业务必填项:OpenAPI schema 中该字段可能表现为可选,但实际修改评论必须提供非空正文。
7
+
8
+ ## 推荐命令
9
+
10
+ ```bash
11
+ # 使用 simple 风格修改评论正文。
12
+ lark-cli okr +comment-patch --comment-id 7000000000000000004 --content '{"text":"更新后的评论"}'
13
+
14
+ # 使用 richtext 文件修改评论正文。
15
+ lark-cli okr +comment-patch --comment-id 7000000000000000004 --style richtext --content '@comment.json'
16
+
17
+ # 写入前预览修改评论的 API 调用,不实际执行。
18
+ lark-cli okr +comment-patch --comment-id 7000000000000000004 --content '{"text":"预览更新"}' --dry-run
19
+ ```
20
+
21
+ ## 参数
22
+
23
+ | 参数 | 必填 | 默认值 | 说明 |
24
+ |----------------|------|---------|-------------------------------------------------------------------------------------------------------------------------------|
25
+ | --comment-id | 是 | — | 评论 ID,int64 正整数;可从 [+comment-list](lark-okr-comment-list.md) 或 [+comment-detail](lark-okr-comment-detail.md) 获取。 |
26
+ | --content | 是 | — | 新正文;输入风格:`simple`(半纯文本 JSON,推荐) \| `richtext`(完整 ContentBlock JSON),支持 @文件路径。 |
27
+ | --style | 否 | simple | 输入/输出风格:simple 或 richtext。 |
28
+ | --user-id-type | 否 | open_id | open_id、union_id、user_id 或 user_key。 |
29
+ | --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
30
+ | --format | 否 | json | 输出格式。 |
31
+
32
+ ## 工作流程
33
+
34
+ 1. 使用 [+comment-list](lark-okr-comment-list.md)、[+comment-detail](lark-okr-comment-detail.md) 或 [+comment-get](lark-okr-comment-get.md) 确认 comment-id 和目标评论。
35
+ 2. 准备 content:通常建议使用 simple 格式,需要精确控制 @用户的位置时,可以使用 richtext 格式,参考 [ContentBlock 格式](lark-okr-contentblock.md)
36
+ 3. 执行 +comment-patch;真实写入前用 --dry-run 检查请求。
37
+ 4. 如果要解决或重新打开评论,不要使用 patch,改用 [+comment-solve](lark-okr-comment-solve-reopen.md) 或 [+comment-reopen](lark-okr-comment-solve-reopen.md)。
38
+
39
+ ## 输出
40
+
41
+ 返回 JSON:
42
+
43
+ ```json
44
+ {
45
+ "comment": {
46
+ "id": "7000000000000000004",
47
+ "target": {"target_type": "progress", "target_id": "3456789012345678901"},
48
+ "commentator_id": "ou_xxx",
49
+ "status": "open",
50
+ "create_time": "2025-01-15 10:30:00",
51
+ "update_time": "2025-01-15 11:00:00",
52
+ "content": {"text": "更新后的评论", "mention": [], "docs": [], "images": []}
53
+ },
54
+ "style": "simple"
55
+ }
56
+ ```
57
+
58
+ simple 风格的 content 为 SemiPlainContent;richtext 风格的 content 为 ContentBlock。
59
+
60
+ ## 注意事项
61
+
62
+ - patch 不会改变评论的 target、selection、ref_comment_id 或 status。
63
+ - simple 输入不支持 docs/images;需要富文本元素时使用 richtext。
64
+ - 空正文不允许提交;如需删除评论,请使用 [+comment-delete](lark-okr-comment-delete.md),删除不可恢复。
65
+
66
+ ## 参考
67
+
68
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
69
+ - [OKR 实体定义](lark-okr-entities.md) — Comment 字段与评论串规则
70
+ - [ContentBlock 格式](lark-okr-contentblock.md) — 评论正文格式
71
+ - [okr +comment-get](lark-okr-comment-get.md) — 获取更新前后的评论
72
+ - [okr +comment-delete](lark-okr-comment-delete.md) — 永久删除评论
73
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
@@ -0,0 +1,83 @@
1
+ # okr +comment-solve / +comment-reopen
2
+
3
+ > **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
4
+
5
+ 解决/重新打开一条评论。实体级评论按单条评论处理;划词评论则是操作整个评论串。只支持 user 身份。
6
+
7
+ ## 推荐命令
8
+
9
+ ```bash
10
+ # 解决实体级评论或整个划词评论串。
11
+ lark-cli okr +comment-solve --comment-id 7000000000000000004
12
+
13
+ # 重新打开已解决的实体级评论或划词评论串。
14
+ lark-cli okr +comment-reopen --comment-id 7000000000000000004
15
+
16
+ # 预览解决评论的状态变更请求,不实际执行。
17
+ lark-cli okr +comment-solve --comment-id 7000000000000000004 --dry-run
18
+ ```
19
+
20
+ ## 参数
21
+
22
+ | 参数 | 必填 | 默认值 | 说明 |
23
+ |----------------|------|---------|---------------------------------------------------------------------------------------|
24
+ | --comment-id | 是 | — | 评论 ID,int64 正整数。可从 +comment-list、+comment-detail 或 +comment-get 获取。 |
25
+ | --user-id-type | 否 | open_id | open_id、union_id、user_id 或 user_key。 |
26
+ | --style | 否 | simple | affected_comments 的正文风格:simple(SemiPlainContent)或 richtext(ContentBlock)。 |
27
+ | --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
28
+ | --format | 否 | json | 输出格式。 |
29
+
30
+ ## 工作流程
31
+
32
+ 1. 使用 [+comment-list](lark-okr-comment-list.md)、[+comment-detail](lark-okr-comment-detail.md) 或 [+comment-get](lark-okr-comment-get.md) 获取并确认 comment-id。
33
+ 2. 检查评论是否属于划词串:如果返回有 selection.id,solve/reopen 会影响同一 selection.id 下的全部评论。
34
+ 3. 根据用户动作选择 +comment-solve 或 +comment-reopen;先用 --dry-run 检查目标接口。
35
+ 4. 执行后检查 affected_comments,确认实体级评论或整条评论串的状态变化范围。
36
+
37
+ ## 输出
38
+
39
+ 返回 JSON:
40
+
41
+ ```json
42
+ {
43
+ "affected_comments": [
44
+ {
45
+ "id": "7000000000000000004",
46
+ "target": {
47
+ "target_type": "objective",
48
+ "target_id": "2345678901234567890"
49
+ },
50
+ "commentator_id": "ou_xxx",
51
+ "status": "solved",
52
+ "create_time": "2025-01-15 10:30:00",
53
+ "update_time": "2025-01-15 11:30:00",
54
+ "selection": {
55
+ "id": "8000000000000000001",
56
+ "selected_text": "提升核心接口稳定性"
57
+ },
58
+ "content": {
59
+ "text": "请补充指标", "mention": [], "docs": [], "images": []
60
+ }
61
+ }
62
+ ],
63
+ "style": "simple"
64
+ }
65
+ ```
66
+
67
+ - +comment-solve 成功后 affected_comments 的 status 通常为 solved;+comment-reopen 成功后通常为 open。
68
+ - simple 风格返回 SemiPlainContent;richtext 风格返回 ContentBlock。
69
+
70
+ ## 注意事项
71
+
72
+ - 划词评论按评论串解决/重开,但 [+comment-delete](lark-okr-comment-delete.md) 仍然只删除单条评论。
73
+ - 解决不是删除,之后可以用 +comment-reopen 恢复;删除后不可恢复。
74
+ - 该操作是写操作,执行前应确认 comment-id 和目标动作。
75
+
76
+ ## 参考
77
+
78
+ - [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
79
+ - [OKR 实体定义](lark-okr-entities.md) — Comment、评论串和状态规则
80
+ - [ContentBlock 格式](lark-okr-contentblock.md) — affected_comments 正文格式
81
+ - [okr +comment-get](lark-okr-comment-get.md) — 获取状态和 selection.id
82
+ - [okr +comment-delete](lark-okr-comment-delete.md) — 永久删除单条评论
83
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
@@ -10,9 +10,12 @@ Cycle (用户周期)
10
10
  ├── KeyResult (关键结果)
11
11
  │ └── Indicator (指标)
12
12
  │ └── list<Progress> (进展记录列表)
13
+ │ └── list<Comment> (评论列表)
13
14
  └── Indicator (指标)
14
15
  └── list<Progress> (进展记录列表)
16
+ └── list<Comment> (评论列表)
15
17
 
18
+ Cycle、Progress 也可以直接挂载 Comment。
16
19
  Alignment (对齐关系): Objective ↔ Objective
17
20
  Category (分类): Objective 的分组标签
18
21
  ```
@@ -49,8 +52,11 @@ Category (分类): Objective 的分组标签
49
52
  ### 常用术语
50
53
 
51
54
  - **当前周期**: 指周期的 start_time/end_time
52
- 指周期的 start_time / end_time 所在的时间段与当前时间重叠的周期(即: start_time <= 当前时间 且 end_time >= 当前时间)。 注意:时间重叠是判断当前周期的首要且必须的硬性条件,绝对不能仅仅根据 cycle_status == 1 去判断。 如果有多个符合时间重叠标准的周期,再在这些包含当前时间的周期中过滤,保留周期状态为 default (0) 或 normal (1) 的周期。如果仍然有多个,则选择其中较新的一个。当用户提及“上一个周期”,“下一个周期”一类的表述时,通常是以当前周期为准计算。
53
- - 如果用户没有提及,那么当前周期一般不考虑年度周期(起止时间从 01-01 至 12-31 的周期)
55
+ 指周期的 start_time / end_time 所在的时间段与当前时间重叠的周期(即: start_time <= 当前时间 且 end_time >= 当前时间)。
56
+ 注意:时间重叠是判断当前周期的首要且必须的硬性条件,绝对不能仅仅根据 cycle_status == 1 去判断。
57
+ 如果有多个符合时间重叠标准的周期,再在这些包含当前时间的周期中过滤,保留周期状态为 default (0) 或 normal (1)
58
+ 的周期。如果仍然有多个,则选择其中较新的一个。当用户提及“上一个周期”,“下一个周期”一类的表述时,通常是以当前周期为准计算。
59
+ - 如果用户没有提及,那么当前周期一般不考虑年度周期(起止时间从 01-01 至 12-31 的周期)
54
60
  - **所有者**: 绝大多数所有者都是用户,少部分租户启用了“团队OKR”功能,所有者可能是部门。用户身份下,只能编辑所有者为当前用户的
55
61
  OKR。
56
62
 
@@ -173,6 +179,64 @@ Category (分类): Objective 的分组标签
173
179
  > - `okr +progress-update` [lark-okr-progress-update.md](lark-okr-progress-update.md) 更新进展记录内容
174
180
  > - `okr +progress-delete` [lark-okr-progress-delete.md](lark-okr-progress-delete.md) 删除进展记录
175
181
  > - `okr +progress-list` [lark-okr-progress-list.md](lark-okr-progress-list.md) 获取目标/关键结果下的进展记录
182
+
183
+ ---
184
+
185
+ ## Comment (评论)
186
+
187
+ 评论可以挂载在 Cycle、Objective、KeyResult 或 Progress 上,用于对 OKR 实体或正文中的一段文字进行讨论。评论分为实体级评论和划词评论两种:
188
+
189
+ - **实体级评论**:直接附着在 Cycle 或 Progress 上。一条评论就是一个评论项,solve/reopen 只影响该评论。
190
+ - **划词评论**:附着在 Objective 或 KeyResult 的正文选区上,带有 `selection`。同一个 `selection.id`
191
+ 下的评论属于同一个评论串;solve/reopen 按评论串处理,但 delete 仍然只删除指定的一条评论。
192
+
193
+ ### Comment 字段
194
+
195
+ | 字段 | 类型 | 必填 | 说明 |
196
+ |------------------|--------------------|----|-----------------------------------------------------------------------------------------------|
197
+ | `id` | `string` | 是 | 评论 ID,int64 正整数。 |
198
+ | `target` | `CommentTarget` | 是 | 评论挂载对象,包含 `target_type` 和 `target_id`。类型为 `cycle`、`progress`、`objective` 或 `key_result`。 |
199
+ | `commentator_id` | `string` | 是 | 评论者 ID,返回 ID 类型由请求参数 `user_id_type` 决定。 |
200
+ | `status` | `string` | 是 | 评论状态:`open`(打开)或 `solved`(已解决)。 |
201
+ | `create_time` | `string` | 是 | 创建时间; |
202
+ | `update_time` | `string` | 是 | 最后更新时间; |
203
+ | `content` | `ContentBlock` | 否 | 评论正文,见 [ContentBlock 定义](lark-okr-contentblock.md)。 |
204
+ | `solver_id` | `string` | 否 | 解决评论的用户 ID。 |
205
+ | `solved_time` | `string` | 否 | 评论解决时间,毫秒时间戳。 |
206
+ | `ref_comment_id` | `string` | 否 | 被引用评论 ID。Progress/Cycle 等实体级评论可用它表示回复关系;Objective/KeyResult 的划词评论创建时可用它定位已有划词串,但新评论本身不建立引用关系。 |
207
+ | `selection` | `CommentSelection` | 否 | 划词信息。实体级评论为空;划词评论包含 selection ID 和可选的选区文本。 |
208
+
209
+ ### CommentTarget (评论目标)
210
+
211
+ | 字段 | 类型 | 必填 | 说明 |
212
+ |---------------|----------|----|------------------------------------------------|
213
+ | `target_type` | `string` | 是 | `cycle`、`progress`、`objective` 或 `key_result`。 |
214
+ | `target_id` | `string` | 是 | 对应 Cycle、Progress、Objective 或 KeyResult 的 ID。 |
215
+
216
+ ### CommentSelection (划词信息)
217
+
218
+ | 字段 | 类型 | 必填 | 说明 |
219
+ |-----------------|----------|----|-----------------------------|
220
+ | `id` | `string` | 是 | 划词 ID。同一 `id` 下的评论属于同一个评论串。 |
221
+ | `selected_text` | `string` | 否 | 划词锚定的正文文字。 |
222
+
223
+ ### 评论创建与状态规则
224
+
225
+ - Cycle/Progress 创建实体级评论时不传 `selected_text`;可以通过 `ref_comment_id` 回复已有评论。
226
+ - Objective/KeyResult 创建划词评论时,`selected_text` 与 `ref_comment_id` 二选一:前者新建划词,后者将评论挂入被引用评论所属的已有划词串。shortcut
227
+ 另外提供 `--select-all` 替代 `selected_text` 以选中 O/KR 内的全部内容。
228
+ - `solve` / `reopen` 的请求参数是单条评论 ID。对实体级评论只影响该评论;对划词评论会影响整条评论串。
229
+ - `delete` 永久删除指定评论,不会连带删除同一评论串的其他评论,且删除后不可找回。
230
+
231
+ > **SHORTCUT:**
232
+ > - `okr +comment-detail` [lark-okr-comment-detail.md](lark-okr-comment-detail.md) 获取周期下全部对象的评论并按评论串整理
233
+ > - `okr +comment-list` [lark-okr-comment-list.md](lark-okr-comment-list.md) 分页获取单个评论目标下的评论
234
+ > - `okr +comment-get` [lark-okr-comment-get.md](lark-okr-comment-get.md) 获取单条评论
235
+ > - `okr +comment-create` [lark-okr-comment-create.md](lark-okr-comment-create.md) 创建评论、回复或挂入已有划词串
236
+ > - `okr +comment-patch` [lark-okr-comment-patch.md](lark-okr-comment-patch.md) 修改评论正文
237
+ > - `okr +comment-delete` [lark-okr-comment-delete.md](lark-okr-comment-delete.md) 永久删除单条评论
238
+ > - `okr +comment-solve` [lark-okr-comment-solve-reopen.md](lark-okr-comment-solve-reopen.md) 解决评论/评论串
239
+ > - `okr +comment-reopen` [lark-okr-comment-solve-reopen.md](lark-okr-comment-solve-reopen.md) 重新打开评论/评论串
176
240
  ---
177
241
 
178
242
  ## Indicator (指标)