- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段 - 强制每个任务都必须有唯一 id,且由用户负责生成 - 修改合并模式逻辑,merge=true 下保留未提及的旧任务 - 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress) - 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled - 优化状态转换校验,允许特定状态间合法切换 - 简化任务变更消息,移除详细的新增/更新/移除统计 - 更新文档和示例,明确 id 必须由用户生成和使用 - 修复和补充测试,增强状态转换和合并模式验证 - 调整任务时间戳生成逻辑,统一使用当前时间及索引 - 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
6.3 KiB
6.3 KiB
markdown +diff
前置条件: 先阅读
../lark-shared/SKILL.md了解认证、全局参数和安全规则。
比较 Drive 中原生 Markdown 的两个历史版本,或比较远端 Markdown 与本地 .md 草稿。需要历史版本号时,先用 drive +version-history 获取 version,不要使用 tag。
命令
# 比较两个远端版本
lark-cli markdown +diff \
--file-token boxcnxxxx \
--from-version 7633658129540910621 \
--to-version 7633658129540910628
# 比较历史版本与远端最新版本
lark-cli markdown +diff \
--file-token boxcnxxxx \
--from-version 7633658129540910621
# 比较远端最新版本与本地草稿
lark-cli markdown +diff \
--file-token boxcnxxxx \
--file ./draft.md \
--format pretty
# 比较指定远端版本与本地草稿
lark-cli markdown +diff \
--file-token boxcnxxxx \
--from-version 7633658129540910621 \
--file ./draft.md
# 预览底层请求
lark-cli markdown +diff \
--file-token boxcnxxxx \
--from-version 7633658129540910621 \
--to-version 7633658129540910628 \
--dry-run
参数
| 参数 | 必填 | 说明 |
|---|---|---|
--file-token |
是 | 目标 Markdown 文件 token |
--from-version |
否 | 基准远端版本;不传 --file 时必填,传 --file 时省略表示“远端最新 vs 本地文件” |
--to-version |
否 | 目标远端版本;要求同时传 --from-version,且不能与 --file 一起使用。省略时表示远端最新版本 |
--file |
否 | 本地 .md 文件路径;传入后进入“远端 vs 本地”比较模式 |
--context-lines |
否 | unified diff 每个 hunk 前后保留的上下文行数,默认 3 |
--format |
否 | 仅支持 json(默认)和 pretty |
关键行为
--file存在时:- 省略
--from-version= 比较“远端最新版本 vs 本地文件” - 传入
--from-version= 比较“指定远端版本 vs 本地文件”
- 省略
--to-version只能用于“远端版本 vs 远端版本”,不能与--file同时出现--format pretty输出带颜色的 unified diff;--format json返回结构化摘要和完整 diff 文本- 无差异时:
json输出里changed=falsepretty输出固定为No differences.
返回值
{
"ok": true,
"identity": "user",
"data": {
"changed": true,
"mode": "remote_vs_remote",
"file_token": "boxcnxxxx",
"from_version": "7633658129540910621",
"to_version": "7633658129540910628",
"from_label": "a/boxcnxxxx@version:7633658129540910621",
"to_label": "b/boxcnxxxx@version:7633658129540910628",
"added_lines": 3,
"deleted_lines": 2,
"context_lines": 3,
"hunks": [
{
"header": "@@ -1,6 +1,7 @@",
"old_start": 1,
"old_lines": 6,
"new_start": 1,
"new_lines": 7
}
],
"diff": "--- a/boxcnxxxx@version:7633658129540910621\n+++ b/boxcnxxxx@version:7633658129540910628\n@@ -1,2 +1,2 @@\n..."
}
}
完整字段说明:
| 字段 | 层级 | 含义 |
|---|---|---|
ok |
顶层 | CLI 通用成功标记;true 表示命令执行成功 |
identity |
顶层 | 本次执行使用的身份,通常是 user 或 bot |
data |
顶层 | 本次 diff 的业务结果对象 |
changed |
data |
是否存在差异;true 表示两侧内容不同,false 表示完全一致 |
mode |
data |
比较模式;remote_vs_remote = 远端对远端,remote_vs_local = 远端对本地 |
file_token |
data |
被比较的远端 Markdown 文件 token |
from_version |
data |
基准远端版本号;远端最新 vs 本地时可能为空字符串 |
to_version |
data |
目标远端版本号;当目标侧是远端最新版本或本地文件时通常为空字符串 |
from_label |
data |
unified diff 基准侧标签名,会直接出现在 diff 文本的 --- 头部 |
to_label |
data |
unified diff 目标侧标签名,会直接出现在 diff 文本的 +++ 头部 |
added_lines |
data |
新增行数统计 |
deleted_lines |
data |
删除行数统计 |
context_lines |
data |
每个 hunk 前后保留的上下文行数,对应传入的 --context-lines |
hunks |
data |
结构化的变更块摘要数组;每个元素对应 patch 里的一个 @@ ... @@ 段 |
diff |
data |
完整 unified diff 文本;最适合直接阅读或保存 |
local_file |
data |
仅在 remote_vs_local 模式下出现;值就是传给 --file 的本地 Markdown 路径 |
标签字段补充:
from_label/to_label只用于标识 diff 两侧,不代表额外 API 字段from_label表示基准侧,to_label表示目标侧- 远端版本通常形如
a/<file_token>@version:<version>、b/<file_token>@version:<version> - 当目标侧是远端最新版本时,
to_label形如b/<file_token>@latest - 当目标侧是本地文件时,
to_label形如b/./draft.md
hunks 子字段说明:
| 字段 | 含义 |
|---|---|
header |
原始 hunk 头,例如 @@ -3,1 +3,1 @@ |
old_start |
旧内容从第几行开始 |
old_lines |
旧内容这段覆盖多少行 |
new_start |
新内容从第几行开始 |
new_lines |
新内容这段覆盖多少行 |
补充说明:
hunks适合 agent 或脚本快速定位变更范围;完整逐行内容仍以diff字段为准changed=false时,hunks通常为空数组,diff通常为空字符串;如果使用--format pretty,终端输出会是No differences.
远端 vs 本地时会额外返回:
{
"local_file": "./draft.md"
}
local_file- 只有传了
--file、进入“远端 vs 本地”模式时才会返回 - 值就是本次命令实际比较的本地 Markdown 路径,也就是你传给
--file的那个路径 - 它表示“目标侧本地文件”,不是临时下载文件,也不是远端文件名
- 如果没有这个字段,说明本次是“远端版本 vs 远端版本”
- 只有传了
参考
- lark-markdown — Markdown 域总览
- lark-drive-version-history — 获取可用于 diff 的历史版本号
- lark-shared — 认证和全局参数