Kimi CLI Prompt Flow:Mermaid 流程图驱动对话技术分析

一、新闻概述

1. 标题

Kimi KLIP-10:Mermaid Prompt Flow (--prompt-flow) 提案技术分析

2. 发布时间

2026 年 1 月 15 日

3. 来源

MoonshotAI/kimi-cli 仓库 KLIP 提案

二、核心内容

1. 事件摘要

A. 主要内容

Kimi CLI 项目提出 KLIP-10 提案,计划新增 --prompt-flow 功能,允许用户使用 Mermaid 流程图描述对话流程,实现可视化的 AI 对话编排。

B. 核心亮点

  • 使用 Mermaid flowchart 语法定义对话流程
  • 支持分支决策节点,LLM 可通过选择标签决定下一节点
  • 提供 Ralph 模式自动迭代功能
  • 与现有 UI 模式完全兼容

2. 关键信息

A. 提案编号

KLIP-10(Kimi CLI Improvement Proposal)

B. 实现状态

已实现(Implemented)

C. 涉及产品

Kimi CLI - 月之暗面推出的命令行 AI 工具

3. 背景介绍

A. 前置版本

当前 Kimi CLI 仅支持交互式输入或 --command 单次输入驱动对话。

B. 相关上下文

该提案属于 Kimi CLI 的 KLIP(Kimi CLI Improvement Proposal)改进提案系列,旨在通过可视化方式增强 CLI 工具的交互能力。

三、详细报道

1. 主要内容

A. 功能更新

该提案引入了 Prompt Flow 机制,允许用户使用 Mermaid 流程图定义对话流程。核心特性包括:

  1. 流程图驱动:用 Mermaid flowchart 描述对话流程,每个节点对应一次对话轮次
  2. 分支决策:支持决策节点,根据 LLM 输出的选择标签走向不同分支
  3. 可视化编排:通过 BEGIN/END 节点包裹流程,中间节点为 prompt
  4. 上下文共享:在同一 session/context 中持续推进直到 END

B. 技术改进

核心数据结构

FlowNodeKind = Literal["begin", "end", "task", "decision"]

@dataclass(frozen=True, slots=True)
class FlowNode:
    id: str
    label: str | list[ContentPart]  # 支持富文本内容
    kind: FlowNodeKind

@dataclass(frozen=True, slots=True)
class FlowEdge:
    src: str
    dst: str
    label: str | None

@dataclass(slots=True)
class PromptFlow:
    nodes: dict[str, FlowNode]
    outgoing: dict[str, list[FlowEdge]]
    begin_id: str
    end_id: str

执行机制

新增 FlowRunner 类处理 flow 执行逻辑,KimiSoul 通过持有 _flow_runner 实例来支持 prompt flow。

graph TB
    User[用户] -->|1. 加载 .mmd 文件| CLI[CLI --prompt-flow]
    CLI -->|2. 解析 Mermaid| Parser[流程图解析器]
    Parser -->|3. 构建 PromptFlow| Flow[PromptFlow 实例]
    Flow -->|4. 创建 FlowRunner| Runner[FlowRunner]
    Runner -->|5. /begin 触发| Soul[KimiSoul]
    Soul -->|6. 执行节点| LLM[LLM API]
    LLM -->|7. 返回 <choice>| Parser2[选择解析器]
    Parser2 -->|8. 匹配边| NextNode[下一节点]
    NextNode -->|9. 继续执行| Soul
    Soul -->|10. 到达 END| End[结束]

Prompt Flow 执行流程

C. Mermaid 语法支持

支持的语法子集

  1. Header:flowchart TD / flowchart LR / graph TD
  2. 注释行:%% ...
  3. 节点类型:

    • ID[文本] - 普通节点
    • ID([文本]) - 开始/结束节点
    • ID{文本} - 分支节点
  4. 边定义:

    • A --> B
    • A -->|label| B
    • A -- label --> B
  5. 引号包裹:ID["含特殊字符的文本"]

不支持:子图、链式多节点、复杂连线形态、label 中包含 |

2. 技术细节

A. 分支节点处理

分支节点的 prompt 组装示意:

{node.label}

Available branches:
- 是
- 否

Reply with a choice using <choice>...</choice>.

选择解析规则

  1. 从 assistant message 最后一条读取文本
  2. 使用正则 r"(1*)" 抽取最后一个 choice 标签
  3. 不强制 choice 在末尾,LLM 可在 choice 后追加解释
  4. 若缺失或无匹配:自动重试

B. Ralph 模式

Ralph 模式是一种特殊的自动迭代模式,流程结构为:

BEGIN → R1(执行用户 prompt) → R2(决策节点)
→ CONTINUE(回到 R2) / STOP → END

通过 --max-ralph-iterations 参数启用,会自动将用户输入包装成带 CONTINUE/STOP 分支的循环流程。

graph LR
    BEGIN([BEGIN]) --> R1[R1: 执行用户 prompt]
    R1 --> R2{R2: 决策节点}
    R2 -->|CONTINUE| R2
    R2 -->|STOP| END([END])

Ralph 模式流程

C. 校验规则

  1. BEGIN/END 通过节点 label 匹配,大小写不敏感
  2. 必须且只能有一个 BEGIN、一个 END
  3. BEGIN 只允许 1 条出边;END 不允许出边
  4. 非分支节点要求恰好 1 条出边(除非它是 END)
  5. 分支节点要求出边 label 全部非空且唯一
  6. 未显式声明的节点允许隐式创建

D. 错误处理

异常层次结构:

class PromptFlowError(ValueError):
    """Prompt flow 解析/验证基类错误"""

class PromptFlowParseError(PromptFlowError):
    """Mermaid flowchart 解析失败"""

class PromptFlowValidationError(PromptFlowError):
    """Flowchart 校验失败"""

3. 数据与事实

A. 文件大小

10.5 KB,305 行(239 行代码)

B. 提交信息

  • 作者:stdrc
  • 提交:e082795
  • 时间:2026-01-15

C. 兼容性

  • 与 Ralph 模式互斥
  • 与所有 UI 模式兼容(shell/print/wire/acp)
  • 与 --continue/--session 兼容

四、影响分析

1. 行业影响

A. 技术趋势

  • CLI 工具向可视化、可编程方向发展
  • AI 交互模式从简单问答转向复杂流程编排
  • Mermaid 等标准化图表语言在工程领域应用扩展

B. 竞争格局

  • 相较于传统 CLI 工具,Kimi CLI 通过 Prompt Flow 提供了更灵活的交互方式
  • 与 Claude Code、GitHub Copilot CLI 等 AI 工具形成差异化竞争

2. 用户影响

A. 现有用户

  • 可视化流程降低复杂任务编排门槛
  • Ralph 模式支持自动迭代,减少重复输入

B. 潜在用户

  • 对可视化编程感兴趣的开发者
  • 需要结构化 AI 工作流的用户

C. 学习曲线

  • 需要掌握 Mermaid 基础语法
  • 理解 Prompt Flow 执行模型

3. 技术趋势

A. 技术方向

  • AI 交互工具从命令式转向声明式
  • 流程编排与 AI 能力深度结合
  • 标准化图表语言成为 DSL 的一种形态

B. 生态影响

  • 可能催生更多基于 Mermaid 的工具链
  • 推动 CLI 工具的可视化编程范式

五、各方反应

1. 官方回应

该提案已标记为 Implemented 状态,表明 MoonshotAI 团队已认可并完成实现。

2. 业内评价

A. 技术亮点

  • Mermaid 语法子集的选择体现了实用主义设计哲学
  • 分支节点的 choice 标签机制巧妙地解决了 LLM 输出结构化问题
  • Ralph 模式提供了自动迭代的便捷方式

B. 设计考量

  • 仅支持最小子集,避免复杂度爆炸
  • 与现有 UI 和 session 机制兼容,保证平滑升级
  • 内置 max_moves 防止死循环

3. 潜在挑战

A. 限制

  • 不支持完整 Mermaid 语法,可能限制复杂场景
  • 从 prompt flow 中断处恢复功能未实现
  • 分支 label 要求短且稳定

B. 扩展性

  • 当前实现可能难以处理超大规模流程图
  • 循环依赖和复杂分支逻辑可能需要更强大的验证机制

六、相关链接

1. 官方资源

  • KLIP-10 提案文档
  • Kimi CLI GitHub 仓库
  • Mermaid 官方文档

2. 相关技术

  • Mermaid 图表语言
  • LLM 结构化输出
  • CLI 工具设计模式

3. 参考实现

  • src/kimi_cli/flow.py - 流程解析与数据结构
  • src/kimi_cli/soul/kimisoul.py - FlowRunner 与 KimiSoul 扩展
  • src/kimi_cli/cli/__init__.py - CLI 集成

参考资料

  1. KLIP-10: Mermaid Prompt Flow (--prompt-flow)
  2. Kimi CLI GitHub Repository
  3. Mermaid Documentation

  1. <
最后修改:2026 年 01 月 17 日
如果觉得我的文章对你有用,请随意赞赏