PicoBot/.agents/skills/lark-apps/references/lark-apps-db-execute.md
ooodc a7883dbed9 refactor(todo): 重构待办事项管理逻辑及更新状态规则
- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段
- 强制每个任务都必须有唯一 id,且由用户负责生成
- 修改合并模式逻辑,merge=true 下保留未提及的旧任务
- 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress)
- 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled
- 优化状态转换校验,允许特定状态间合法切换
- 简化任务变更消息,移除详细的新增/更新/移除统计
- 更新文档和示例,明确 id 必须由用户生成和使用
- 修复和补充测试,增强状态转换和合并模式验证
- 调整任务时间戳生成逻辑,统一使用当前时间及索引
- 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
2026-06-13 09:22:33 +08:00

2.9 KiB
Raw Blame History

apps +db-execute

经妙搭服务端在应用数据库执行 SQL。运行时命令事实以 lark-cli apps +db-execute --help 为准。

何时用

用于通过妙搭服务端执行应用数据库 SQL。不要从环境变量里取连接串裸连数据库本地调试也走这个 shortcut。

命令骨架

  • 必填:--app-id,以及 --sql / --file 二选一(互斥)。
  • --sql:内联 SQL 文本;传 - 时从 stdin 读。绝对路径文件经 stdin 传入:--sql - < <absolute-path>shell 解析路径CLI 仅接收内容)。
  • --file.sql 文件路径,需为工作目录内的相对路径(如 --file ./migration.sql);绝对路径、或经 ../符号链接越出工作目录的路径会被拒绝。文件不在工作目录内时,改用 --sql - < <文件路径> 经 stdin 传入。
  • --env 枚举:dev / online默认 dev;需要操作线上环境数据库时,显式指定 --env online
  • risk 是 high-risk-writeSQL 可含 DML/DDL任何执行都需 --yes,否则返回 confirmation_required / exit 10。--dry-run 预览不需要 --yes
  • CLI 永远传 transactional=false;不默认包事务。

示例

lark-cli apps +db-execute --app-id app_xxx --env dev --sql "select * from orders limit 5" --yes
lark-cli apps +db-execute --app-id app_xxx --env dev --file ./migration.sql --dry-run
# 绝对路径文件 / cwd 不固定:经 stdin 传入
lark-cli apps +db-execute --app-id app_xxx --env dev --sql - --yes < /Users/.../migrations/0001_init.sql

输出契约

  • 成功默认 JSON 读取 data.results[];每个元素对应一条 SQL常见字段有 sql_typedatarecord_countaffected_rows
  • pretty 会按 SELECT/DML/DDL 自适应渲染;多语句会逐条显示 Statement 摘要。
  • 失败可能仍有前序语句已执行;此时 stdout 输出 ok:false 的 envelopeexit 非 0dataresults[](全部逐条结果,失败语句 sql_typeERROR)、statement_indexerror_codeerror_messagerolled_backnote,决定从哪条继续。

Agent 规则

  • 该命令为 high-risk-write执行一律需 --yes;无 --yes 会返回 confirmation_required / exit 10。
    • 只读查询、以及不删除/不丢失既有数据且可撤回的语句:已授权时可直接带 --yes 执行。
    • 会删除或丢失既有数据、或难以撤回的语句:先 --dry-run 预览(无需 --yes),向用户确认后再带 --yes 执行;不要在用户不知情时自动补 --yes
  • 多语句失败时,失败前的语句可能已经 auto-commit。不要整批重跑按错误 detail/hint 修失败语句,并从剩余语句继续。
  • 如果需要原子性,让用户在 SQL 内显式写 BEGIN / COMMIT,不要假设 CLI 会包事务。
  • 不要把数据库连接串从 env 中取出来裸连。