这是一个关键的升级——从“用户主动调用工具”到“用户通过自然语言描述意图，系统自动编排完成”。核心变化在于：**MCP/CLI 需要从“命令执行器”升级为“意图理解与任务规划系统”**。

## 一、本质问题分析

聊天搭建的难点：
1. **意图歧义**："做一个员工信息表" → 是数据表格？还是表单录入？还是两者兼具？
2. **信息缺失**：用户不会一次性提供所有细节（校验规则、数据源、布局等）
3. **上下文依赖**：后续需求依赖之前已创建的组件
4. **纠错与迭代**：用户会说"不对，把那个下拉框改成单选按钮"

## 二、核心架构调整：引入"意图-规划-执行"三层

```mermaid
graph LR
    A[用户聊天] --> B[意图理解层<br/>MCP + LLM]
    B --> C[任务规划层<br/>CLI Planner]
    C --> D[原子执行层<br/>CLI Executor]
    D --> E[反馈生成器<br/>自然语言输出]
    E --> A
```

### 关键设计变更

| 层级 | 传统设计 | 聊天式设计 |
|:---|:---|:---|
| MCP | 提供原子工具 | 额外提供**意图模板**和**上下文查询** |
| CLI | 执行单条命令 | 增加**规划器**和**对话状态管理** |
| 输出 | 结构化JSON | **自然语言 + 可操作按钮** |

## 三、MCP 增强设计：意图理解的基础设施

### 1. 新增 Resources：意图模板库

```javascript
// mcp.resource("intent://form/create")
{
  "intent": "创建表单",
  "requiredSlots": ["表单名称"],
  "optionalSlots": [
    {"name": "字段列表", "default": ["名称", "提交时间"]},
    {"name": "数据源", "suggestFrom": "business://api/list"},
    {"name": "校验规则", "pattern": "常见规则集合"}
  ],
  "examples": [
    "创建一个投诉表单",
    "做一个员工入职登记表，包含姓名、部门、入职日期"
  ],
  "disambiguation": {
    "员工表": ["数据表格（查看）", "录入表单（填写）", "混合视图"],
    "下拉框": ["单选下拉", "多选下拉", "级联选择"]
  }
}
```

### 2. 新增 Tools：主动澄清与增量修改

```python
# Tool: clarify_intent
def clarify_intent(ambiguous_text: str) -> dict:
    """当检测到歧义时，返回澄清问题"""
    return {
        "ambiguities": [
            {"target": "员工表", "options": ["数据表格", "录入表单", "详情页"]}
        ],
        "clarifying_questions": [
            "您想创建一个用于'查看员工列表'的表格，还是用于'填写信息'的表单？"
        ]
    }

# Tool: get_current_context  
def get_current_context(resource_path: str) -> dict:
    """获取当前应用状态，用于处理'把那个下拉框改成按钮'这类引用"""
    return {
        "recently_modified": ["form:employee_form", "field:department"],
        "available_references": {
            "那个表单": "employee_form",
            "下拉框": "field:department.type=select"
        }
    }
```

## 四、CLI 核心升级：规划器（Planner）

### 1. 新增命令模式：`plan` 与 `execute`

```bash
# 用户："帮我做一个产品订单系统"
lowcode plan --from-chat "产品订单系统" --save plan_001.json

# 规划器输出 plan_001.json
{
  "original_intent": "产品订单系统",
  "assumptions": [
    "需要订单表单（产品选择、数量、收货地址）",
    "需要订单列表查看页",
    "数据存储使用平台默认API"
  ],
  "missing_info": [
    {"slot": "产品列表数据源", "question": "产品列表从哪里获取？", "priority": "high"},
    {"slot": "是否需要支付功能", "question": "是否需要集成支付？"}
  ],
  "execution_plan": [
    {"step": 1, "action": "create_data_source", "params": {"type": "待确认"}},
    {"step": 2, "action": "create_form", "depends_on": [1]},
    {"step": 3, "action": "create_table_view", "depends_on": [2]}
  ],
  "estimated_commands": ["lowcode create ...", "lowcode add field ..."]
}

# 用户确认后执行
lowcode execute plan_001.json --interactive
```

### 2. 对话状态管理

CLI 需要维护一个**会话上下文**文件 `.lowcode/conversation.json`：

```json
{
  "session_id": "chat_20250609_001",
  "current_app": "order_system",
  "pending_clarifications": [
    {"id": "q1", "question": "产品列表从哪来？", "status": "waiting"}
  ],
  "operation_history": [
    {"user": "创建订单表单", "executed": ["create_form", "add_field x3"]},
    {"user": "把价格改成只读", "executed": ["update_field_attr"]}
  ],
  "context_references": {
    "那个表单": "order_form",
    "价格字段": "order_form.fields.price"
  }
}
```

### 3. 新增命令：智能修改

```bash
# 处理"把那个下拉框改成单选按钮"
lowcode modify --from-context "那个下拉框" --change "type=radio"

# CLI 自动解析：
# 1. 读取 conversation.json，找到最近提及的下拉框
# 2. 定位到 field_id
# 3. 执行 lowcode set field --id xxx --type radio
# 4. 输出："已将'部门选择'下拉框改为单选按钮 ✅"
```

## 五、用户体验流程设计（完整示例）

### 场景：用户通过聊天创建"员工反馈系统"

#### 第1轮：初始意图
**用户**：帮我做一个员工反馈系统

**系统（MCP + CLI Planner）**：
```
好的，我来帮您创建员工反馈系统。

📋 我的理解：
- 需要员工提交反馈的表单
- 需要查看反馈列表的管理页面

❓ 需要您确认：
1. 反馈包含哪些内容？（如：标题、内容、匿名选项）
2. 是否需要员工登录验证？
3. 反馈提交后是否需要审批流程？

💡 您也可以直接说"做一个简单版"，我会使用默认配置。
```

#### 第2轮：补充信息
**用户**：简单版就行，包含标题、内容、匿名勾选，不需要登录

**系统（规划器生成计划）**：
```
明白！我将为您创建：

📝 反馈表单
- 标题（文本输入，必填）
- 内容（多行文本，必填）  
- 匿名（勾选框，默认否）

📊 反馈列表
- 显示所有提交
- 按时间倒序

是否继续？(回复"是"或直接提出修改)
```

**用户**：是

**系统执行**：
```bash
# 后台执行 CLI 命令
lowcode create app --name feedback_system --template minimal
lowcode add form --id feedback_form --title "提交反馈"
lowcode add field --form feedback_form --label "标题" --type input --required
lowcode add field --form feedback_form --label "内容" --type textarea --required
lowcode add field --form feedback_form --label "匿名" --type checkbox --default false
lowcode add table --data-source feedback_api --columns "标题,内容,匿名,提交时间"
```

**系统输出**：
```
✅ 员工反馈系统已创建！

📎 访问地址：https://your-platform/feedback_system
🔧 后续可修改：
- "添加评分字段"（1-5星）
- "限制匿名用户每天最多提交3次"
- "导出反馈数据为Excel"

需要调整什么吗？
```

#### 第3轮：迭代修改
**用户**：把匿名改成默认勾选

**系统**：
```bash
# CLI 解析上下文并执行
lowcode modify --target feedback_form.anonymous --set default=true
```
```
✅ 已将"匿名"选项的默认状态改为"已勾选"

当前表单效果：
- 标题 [________]
- 内容 [________]  
- 匿名 [✓] 匿名提交
```

## 六、关键成功要素（聊天式专属）

### 1. 主动澄清与建议
- 不仅被动执行，要主动询问缺失信息
- 提供**智能补全建议**（如检测到"邮箱"，自动建议邮箱校验）
- 相似度匹配：用户说"做个打卡"，系统关联到"考勤表单+日历视图"

### 2. 可逆操作与版本控制
```bash
# 用户："不对，回到上一步"
lowcode undo --last-change

# 或使用自然语言
lowcode chat "撤销刚才添加的评分字段"
```

### 3. 多模态输出（聊天界面内）
```
✅ 表单已创建

[预览卡片]
┌─────────────────────┐
│ 员工反馈表单          │
│ 标题：[      ]       │
│ 内容：[      ]       │
│ 匿名：[✓]            │
│         [提交]       │
└─────────────────────┘

[操作按钮] 📝编辑  👁预览  📤分享
```

### 4. 渐进式披露
不要一次性输出所有信息，采用**摘要+展开**模式：
```
✅ 已创建"订单系统"（包含3个页面，12个组件）
📊 详情: lowcode status --verbose
🔄 修改: "在商品选择旁加个库存提示"
```

## 七、技术实现建议

### MCP Server 增强接口
```python
# 新增协议端点
@mcp.tool()
async def chat_plan(intent: str, context: dict) -> Plan:
    """从自然语言意图生成执行计划"""
    
@mcp.tool()  
async def chat_modify(reference: str, change: str) -> ChangeResult:
    """处理自然语言修改请求"""
    
@mcp.resource()
async def get_intent_templates() -> List[IntentTemplate]:
    """返回所有支持的意图模板"""
```

### CLI 新增子命令
```bash
lowcode chat                    # 进入聊天模式
lowcode chat "创建登录表单"      # 单轮对话
lowcode plan --interactive      # 交互式规划
lowcode undo/redo               # 对话级撤销
lowcode status --conversation   # 查看对话上下文
```

### 对话状态持久化
```yaml
# .lowcode/state.yaml
conversation:
  mode: "chat"
  turn: 3
  pending_questions:
    - "数据源从哪里获取？"
  last_plan: plan_001.json
  checkpoints:
    - timestamp: "2025-06-09T10:00:00Z"
      snapshot: "after_form_creation"
```

## 总结

实现"聊天式搭建"的关键不再是工具本身的功能，而是**意图理解、任务规划、对话管理**三者的闭环：

1. **MCP 提供意图模板库**：让系统知道用户可能想要什么
2. **CLI Planner 负责拆解**：将自然语言转为可执行计划
3. **对话状态管理**：维护上下文，支持"那个""上一步"等引用
4. **主动澄清机制**：遇到歧义立即提问，避免错误执行

最终效果：用户像和产品经理对话一样描述需求，系统在后台自动编排 MCP 和 CLI 完成搭建，并支持自然的迭代修改。