Files

7.4 KiB
Raw Permalink Blame History

okr +create

前置条件: 先阅读 lark-shared/SKILL.md 了解认证、全局参数和安全规则。

创建单个 OKR 目标Objective或关键结果Key Result。这是单条写入场景的首选 shortcut如果需要一次创建多个 Objective 及其 KR可使用 +batch-create

推荐命令

# 在指定周期下创建一个 Objective默认 simple 风格)
lark-cli okr +create \
  --level objective \
  --cycle-id 7000000000000000001 \
  --content '{"text":"提升北极星指标","mention":["ou_xxxxxxxx"]}' \
  --notes '{"text":"重点关注活跃用户和转化漏斗"}' \
  --as user

# 在已有 Objective 下创建一个 KR
lark-cli okr +create \
  --level key-result \
  --objective-id 7000000000000000002 \
  --content '{"text":"季度留存率提升到 45%"}' \
  --as user

# 使用 richtext 风格创建 Objective完整 ContentBlock JSON
lark-cli okr +create \
  --level objective \
  --cycle-id 7000000000000000001 \
  --style richtext \
  --content '{"blocks":[{"block_element_type":"paragraph","paragraph":{"elements":[{"paragraph_element_type":"textRun","text_run":{"text":"建立跨部门协作机制"}}]}}]}' \
  --as user

# 预览 API 调用而不实际执行
lark-cli okr +create \
  --level key-result \
  --objective-id 7000000000000000002 \
  --content '{"text":"完成 3 次核心流程优化"}' \
  --dry-run \
  --as user

参数

参数 必填 默认值 说明
--level 创建层级:objective(创建目标)| key-result(在已有目标下创建 KR
--cycle-id 条件 OKR 周期 IDint64 类型)。当 --level=objective必填
--objective-id 条件 Objective IDint64 类型)。当 --level=key-result必填
--style simple 内容输入风格:simple(半纯文本 JSON推荐 | richtext(完整 ContentBlock JSON。请参考 ContentBlock 格式
--content 内容。根据 --style 指定格式。支持 @文件路径 从文件读取或 - 从 stdin 读取。
--notes Objective 备注,仅 --level=objective 支持。根据 --style 指定格式,支持 @文件路径- 从 stdin 读取。
--category-id Objective 分类 ID--level=objective 支持。通常不需要传入,见下方“分类提示”。
--user-id-type open_id 用户 ID 类型:open_id | union_id | user_id。影响 mention 中用户 ID 的解释方式。
--dry-run 预览 API 调用而不实际执行。
--format json 输出格式。

分类提示:当用户明确要求设置 Objective 分类,或创建 Objective 返回 invalid parameters 且怀疑租户强制开启分类时,可以配置 --category-id 参数进行创建。先运行 lark-cli okr categories list --as user 查看可用分类,然后选择一个语义合适且 enabled=true 的分类 ID 作为 --category-id。分类创建后可以再调整;不必因为分类选择停下等待用户确认。

输入格式

--style simple(默认)

推荐大多数创建场景使用 simple 风格。--content--notes 都使用 SemiPlainContent JSON

{
  "text": "提升北极星指标",
  "mention": ["ou_xxxxxxxx"]
}

规则:

  • text 必填,且不能为空白字符串
  • mention 可选;如果传入,数组中的每个用户 ID 都不能为空字符串
  • --notes 仅适用于 Objective创建 KR 时传 --notes 会报错
  • 同一条命令只有一个 flag 可以使用 - 读取 stdin如果 --content ---notes 请使用内联 JSON 或 @文件路径

--style richtext

当你需要精确控制段落结构、插入文档链接,或使用完整富文本块结构时,使用 richtext 风格:

{
  "blocks": [
    {
      "block_element_type": "paragraph",
      "paragraph": {
        "elements": [
          {
            "paragraph_element_type": "textRun",
            "text_run": {
              "text": "建立跨部门协作机制"
            }
          }
        ]
      }
    }
  ]
}

规则:

  • blocks 至少需要有一个非空段落或图片块
  • 不能传空 blocks,也不能传只有空段落元素的内容
  • 更多结构说明见 ContentBlock 富文本格式

工作流程

  1. 如果要创建 Objective先使用 +cycle-list 获取目标周期的 cycle_id
  2. 如果要给已有 Objective 新增 KR先通过 +cycle-detail 或其他 OKR 查询命令拿到 objective_id
  3. 选择输入风格:
    • 推荐simple,适合普通文本和 mention。
    • 需要复杂富文本时:richtext
  4. 执行 lark-cli okr +create ...
  5. 报告结果:
    • 创建 Objective 时返回新的 objective_id
    • 创建 KR 时返回新的 key_result_id,并附带父 objective_id

Dry-run 对应接口

  • --level=objective
    • POST /open-apis/okr/v2/cycles/:cycle_id/objectives
  • --level=key-result
    • POST /open-apis/okr/v2/objectives/:objective_id/key_results

输出

创建 Objective 成功

{
  "level": "objective",
  "objective_id": "7000000000000000002"
}

创建 KR 成功

{
  "level": "key-result",
  "objective_id": "7000000000000000002",
  "key_result_id": "7000000000000000003"
}

常见错误与处理

  • --level=objective 但未传 --cycle-id
    • 补充有效的周期 ID
  • --level=key-result 但未传 --objective-id
    • 补充已有 Objective 的 ID
  • --content 为空、不是合法 JSON或内容结构为空
    • --style 对应格式修正输入
  • simple 风格中传了 docsimages
    • 改用 --style richtext,或移除这些字段

何时用 +create何时用 +batch-create

命令 适用场景
+create 创建单个 Objective或向已有 Objective 新增单个 KR
+batch-create 一次创建多个 Objective并可同时为每个 Objective 创建多个 KR

参考