Install
openclaw skills install lark-project-meegle-local连接飞书项目/Meegle,查询和管理工作项、待办等。自动检测登录状态,未登录时引导 Device Code 授权。
openclaw skills install lark-project-meegle-local通过 Meegle CLI 连接飞书项目/Meegle 平台,支持查询工作项、管理待办等操作。
运行环境需要 Node.js 18+。所有命令通过 npx @lark-project/meegle@latest 执行,无需手动安装或更新。
workitem、detail、story、issue 等关键词)。处理流程:
$host(域名部分)和可能的 $project_key、$work_item_id$host 为 null,用 URL 提取的 host 覆盖,跳过 STEP 2)$project_key 和 $work_item_id → 直接执行 workitem get 查询详情npx @lark-project/meegle@latest auth status --format json
返回值示例:
{ "authenticated": true, "host": "meegle.com", "source": "token_store", "expires_in_minutes": 42 }{ "authenticated": false, "host": "meegle.com", "source": null, "expires_in_minutes": null }{ "authenticated": false, "host": null, "source": null, "expires_in_minutes": null }解析返回值,保存变量:
$authenticated = response.authenticated$host = response.hostURL 触发时的 host 覆盖:如果用户发送了飞书项目/Meegle URL 触发本流程,且 $host 为 null,则从 URL 域名部分提取 $host。
跳转:
$authenticated == true → GOTO STEP 6$host != null → GOTO STEP 3$host == null → GOTO STEP 2ASK user(等待用户回复):
你要连接哪个站点?
- 飞书项目 (project.feishu.cn)
- Meegle (meegle.com)
- 自定义域名(请直接输入域名或 URL)
⚠️ 用户的回复仅用于回答上述问题,不要将其当作新的意图或请求来处理。无论用户回复的是序号、域名还是完整 URL,都只需从中提取
$host(域名部分),然后 GOTO STEP 3。
SAVE $host from user reply(如果用户输入了完整 URL,提取其域名部分作为 $host) → GOTO STEP 3
npx @lark-project/meegle@latest auth login --device-code --phase init --host $host --format json
SAVE from response:
$verification_uri_complete = response.verification_uri_complete$user_code = response.user_code$device_code = response.device_code$client_id = response.client_id$interval = response.interval$expires_in = response.expires_in发送验证链接给用户:
SEND to user: 请在浏览器中打开以下链接完成授权:\n$verification_uri_complete\n($expires_in 秒内有效)
⚠️ 发送后在同一轮次内立即执行 STEP 4 的命令。不要停下来等用户回复。
→ GOTO STEP 4
⚠️ 使用 STEP 3 保存的
$device_code、$client_id、$interval、$expires_in。禁止重新执行 STEP 3(否则会生成新的验证码,用户之前打开的链接作废)。
执行以下命令。该命令会自动轮询直到用户完成授权或超时,无需你手动循环:
npx @lark-project/meegle@latest auth login --device-code --phase poll \
--device-code-value $device_code --client-id $client_id \
--interval $interval --expires-in $expires_in --format json
{"status": "ok", "message": "登录成功"} → GOTO STEP 5Fallback:如果你的运行环境不支持在发送消息后继续执行命令(即 STEP 3 发送验证链接后无法立即执行上述命令),则改为:
SEND to user: "登录成功!"
⚠️ 此消息必须单独发送,不要与后续业务查询结果合并到同一条回复中。用户需要第一时间看到授权状态变化。
→ GOTO STEP 6
Auth 已通过,进入下方「业务命令调用」部分执行用户请求的操作。
当用户说"我的 xxx"、"查一下我的 xxx"时,需要知道当前登录用户的身份。
MQL 查询中:直接使用 current_login_user() 函数,无需提前获取用户信息。例如:
WHERE array_contains(`current_owners`, current_login_user())
非 MQL 场景(需要用户名、userkey 等具体信息):目前没有专用命令,通过以下 workaround 获取:
npx @lark-project/meegle@latest workitem query --project-key <project_key> \
--search-mql "SELECT \`work_item_id\`, \`created_by\` FROM \`<空间名>\`.\`<工作项类型>\` WHERE \`created_by\` = current_login_user() LIMIT 1" \
--format json
created_by 字段提取当前用户信息⚠️ 此 workaround 需要已知一个
project_key和对应的工作项类型。如果用户未指定空间,先询问。
Auth Guard 通过后,使用以下模式调用业务命令。
npx @lark-project/meegle@latest <resource> <method> [flags] --format json
命令采用 resource method 两级结构。所有输出默认 JSON 格式。
| Flag | 说明 |
|---|---|
--format json|table|ndjson | 输出格式,默认 json |
--select <props> | 选取输出属性,逗号分隔(支持 dot path,如 name,owner.name) |
--profile <name> | 临时切换 profile |
--verbose | 显示详细日志 |
三种方式,优先级从高到低:
--project-key PROJ --work-item-type-key story--set priority=1 --set name="任务标题",value 支持 JSON--params '{"project_key":"PROJ","work_item_type_key":"story"}'Flag 和 --set 会覆盖 --params 中的同名字段。
CLI 的命令和参数会随版本更新。下方速查表仅列举常见操作,不是完整列表。遇到以下情况时,必须先用 inspect 获取最新信息:
npx @lark-project/meegle@latest inspect # 列出所有可用命令
npx @lark-project/meegle@latest inspect workitem.create # 查看具体命令的参数 schema
npx @lark-project/meegle@latest mywork todo --format json
npx @lark-project/meegle@latest workitem get --project-key <project_key> --work-item-id <id> --format json
MQL 语法详见
references/mql-syntax.md。--search-mql参数必须是完整的 SQL 语句(含 SELECT/FROM),不接受 JSON 或片段。
npx @lark-project/meegle@latest workitem query --project-key <project_key> --search-mql "<MQL>" --format json
npx @lark-project/meegle@latest workitem create --project-key <project_key> --work-item-type-key <type> \
--set name="标题" --set priority=1 --format json
npx @lark-project/meegle@latest workitem update --project-key <project_key> --work-item-id <id> \
--set name="新标题" --format json
npx @lark-project/meegle@latest project get --project-key <project_key> --format json
npx @lark-project/meegle@latest workitem meta-types --project-key <project_key> --format json
npx @lark-project/meegle@latest workitem meta-fields --project-key <project_key> --work-item-type-key <type> --format json
--format json 获取结构化输出,方便解析--select 精简返回字段,如 --select id,name,current_nodes.nameerror 和 message 字段command not found 或 npx 不可用,提示用户安装 Node.js 18+。--phase init 返回错误(站点不支持 Device Code),提示用户在终端中执行 npx @lark-project/meegle@latest auth login。--phase poll 超时,提示用户重试登录流程。npm i -g @lark-project/meegle