← 返回 技术博客

技术文章

让Agent执行任务:CLI、Dry Run与SSE如何构成可治理执行面

解释结构化CLI、Skills路由、Dry Run与SSE如何把Agent计划转化为可预览、可授权、可观察和可追责的企业任务。

2026/08/26技术博客HENGSHI14 分钟阅读
HENGSHI CLIAI AgentSkillsDry RunSSE

Article body

正文

大模型擅长理解目标和生成计划,企业系统则依赖确定的接口、参数和状态。两者之间需要一个可治理执行面。CLI适合Agent调用,因为命令结构清晰、输入输出可以序列化,也容易进入现有脚本、容器和审计体系。

Skills把业务语言映射到命令

一个面向Agent的CLI不应只暴露几百条孤立命令。Skills可以按数据、权限、仪表盘和工作流组织能力,说明前置条件、参数约束和失败处理。Agent先选择业务技能,再调用具体命令,减少把“授权用户查看看板”误解成“修改看板公开范围”的风险。

命令还需要稳定的结构化输出。成功结果返回资源ID、状态和下一步;失败结果区分权限不足、参数错误、网络超时和业务冲突。Agent据此决定修正参数、请求授权或停止任务。把人类可读日志当作唯一接口,会迫使模型猜测错误含义。

Dry Run让写操作先被看见

Agent准备创建、修改或删除资源时,Dry Run先计算影响范围。用户可以看到目标对象、权限变化、预计调用和不可逆风险,再决定是否执行。系统也能在这一阶段检查策略,例如禁止跨租户共享、限制批量导出、要求生产环境审批。

Dry Run的结果应该带签名或版本标识。正式执行时,平台确认资源状态没有变化;如果目标在预览后被别人修改,Agent重新生成预览,避免按旧计划覆盖新内容。

SSE提供长任务反馈

建模、批量查询和工作流可能持续数十秒或更久。SSE可以持续回传计划、进度、工具结果和错误,让用户知道任务卡在哪里。事件至少包含任务ID、步骤ID、时间、状态和可读说明,客户端可以重连并从上次位置继续接收。

进度流也帮助审计。团队能够还原Agent在某一步使用了哪个参数,为什么进入重试,以及用户何时批准了写操作。敏感字段在进入日志前需要脱敏,令牌与密钥不能出现在事件内容中。

执行面需要四条硬约束

  • 每条命令都有明确Schema,Agent不能拼接任意脚本。
  • 每次调用都使用当前用户与租户权限,工具不能继承超额服务账号权限。
  • 写操作支持预览、审批、幂等和回滚,失败后不会留下未知状态。
  • 长任务提供进度、取消与审计,用户可以随时接管。

模型会更新,执行合同需要保持稳定。企业把业务能力封装为受治理的CLI与API后,可以替换上层模型,也可以让不同Agent复用同一套安全工具。Agent的生产价值由可完成、可观察和可追责的任务决定。

工程细节与实施补充

1. 背景与问题域

1.1 AI Agent在BI场景中的执行困境

随着Claude Code、Codex等编码代理的崛起,以及OpenClaw、Hermes Agent等常驻型Agent的普及,AI Agent正在进入企业级数据分析的深水区。然而,当这些Agent尝试与BI系统交互时,一个根本性的矛盾浮现出来:BI系统的API表面往往庞大而复杂,而Agent的推理窗口有限、容错能力弱。

传统的BI API调用模式存在以下几类典型问题:

AI Agent在BI场景中的执行困境

这些问题在面向人类的CLI设计中尚可接受:人类可以通过文档、错误提示和交互式确认来弥补API的不完美。但对于一个完全依赖推理和代码生成的Agent而言,这些设计缺陷会被指数级放大,最终导致Agent在BI任务上的成功率远低于预期。

1.2 HENGSHI CLI的定位

HENGSHI CLI正是在这一背景下应运而生。它的核心定位是:给编码代理与常驻型Agent的BI执行层。这不是一个面向人类用户的传统CLI,而是一个面向AI Agent的工程化接口层,其设计目标与传统CLI有本质区别:

┌─────────────────────────────────────────────────────────────┐
│                    Agentic BI 三位一体架构                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    │
│   │    Agent    │───▶│     CLI     │───▶│  Headless   │    │
│   │   推理层     │    │   执行层     │    │    引擎      │    │
│   └─────────────┘    └─────────────┘    └─────────────┘    │
│         │                  │                  │            │
│         │           稳定化的命令树          低延迟API       │
│         │           Skills路由               查询路由       │
│         │           Dry-Run治理              缓存优化       │
│         │           SSE回显                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

在这个架构中,CLI承担的是执行层的职责:它接收Agent发出的高层意图(如“创建一个华东区域驾驶舱仪表板”),通过Skills路由将其分解为稳定的命令序列,并以Dry-Run和SSE机制确保整个过程可预测、可审查。


2. 核心特性解析

HENGSHI CLI的三大核心特性:Skills路由、Dry-Run治理与SSE回显:并非孤立的功能点,而是共同构成了一个面向Agent的BI操作保障体系。

2.1 Skills路由体系

传统的CLI工具通常提供一组扁平的命令,命令之间缺乏语义关联,Agent需要自行理解每个命令的含义和依赖关系。HENGSHI CLI引入了Skills路由体系,将BI操作按照语义和职责边界划分为三个独立的Skill层:

2.1.1 层次结构概览

┌──────────────────────────────────────────────────────────────┐
│                    Skills Router (路由层)                     │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─────────────────┐  ┌─────────────────┐  ┌──────────────┐ │
│  │  everest-core   │  │  everest-data   │  │everest-workflow││
│  │   (核心技能)     │  │   (数据技能)     │  │  (工作流技能)  ││
│  └────────┬────────┘  └────────┬────────┘  └──────┬───────┘│
│           │                    │                   │        │
│    规范化术语处理         资源定位处理          编排协调处理    │
│    认证与会话管理         app/dataset/model      跨域执行      │
│           │                    │                   │        │
└───────────┼────────────────────┼───────────────────┼────────┘
            ▼                    ▼                   ▼

2.1.2 everest-core:规范化与认证

everest-core 是整个Skills体系的基础层,负责处理所有BI操作都需要的基础能力:

  • 规范化术语处理:将Agent发出的自然语言描述转换为系统内部的标准术语。例如,当Agent说“列出所有报表”时,core层会将其规范化为对report资源的list操作;当Agent提到“数据集”时,core层会确保其指向dataset而非datasource。
  • 认证与会话管理:维护与衡石BI平台的连接状态,处理OAuth令牌刷新、会话续期等逻辑。Agent无需关心认证细节,只需确保请求带有有效的会话上下文。
  • 通用元数据操作:如获取当前租户信息、查询可用操作列表等元查询能力。
# everest-core 内部术语映射示例
TERM_NORMALIZATION = {
    "报表": "report",
    "报告": "report",
    "dashboard": "dashboard",
    "仪表板": "dashboard",
    "数据集": "dataset",
    "数据源": "datasource",
    "模型": "model",
    "应用": "app",
    "应用": "application"
}

2.1.3 everest-data:资源定位与操作

everest-data 负责BI系统中最核心的资源操作,包括应用(app)、数据集(dataset)和数据模型(model)的CRUD操作。这一层的设计重点是资源定位的确定性:给定一个模糊的描述,如何唯一确定目标资源。

# 资源定位的典型场景
$ everest dataset list --app retail-ops --output json

# 返回结构
{
  "datasets": [
    {
      "id": "ds_001",
      "name": "销售明细表",
      "app_id": "app_retail_ops",
      "created_at": "2026-03-15T10:30:00Z",
      "schema": { "columns": 42, "rows": 1250000 }
    },
    {
      "id": "ds_002",
      "name": "客户画像表",
      "app_id": "app_retail_ops",
      "created_at": "2026-03-18T14:22:00Z",
      "schema": { "columns": 28, "rows": 850000 }
    }
  ],
  "total": 2,
  "page_token": null
}

资源定位的关键挑战在于同名资源的歧义消解。当一个Agent发出“获取销售数据”这样的请求时,可能存在多个包含“销售”字样的数据集。everest-data通过以下策略解决这一问题:

  1. 上下文优先级:利用会话上下文中的最近访问应用(app)来缩小搜索范围
  2. 标签匹配:支持通过元数据标签进行精确过滤
  3. 模糊匹配评分:当精确匹配不存在时,返回按相关度排序的候选列表

2.1.4 everest-workflow:跨域执行编排

everest-workflow 是最高层的Skill,负责处理涉及多个资源、多个步骤的复杂BI操作。这类操作在传统CLI中往往需要Agent自行拼接多个命令,而everest-workflow提供了声明式的编排能力:

# 创建一个完整的仪表板工作流
$ everest workflow execute --manifest华东驾驶舱创建流程.json --dry-run

# manifest示例结构
{
  "name": "华东驾驶舱创建流程",
  "steps": [
    {
      "skill": "everest-data",
      "action": "dataset.query",
      "params": {
        "app": "retail-ops",
        "dataset": "销售明细表",
        "filters": { "region": "华东" }
      }
    },
    {
      "skill": "everest-data",
      "action": "model.create",
      "params": {
        "name": "华东销售分析模型",
        "dataset": "销售明细表(华东)",
        "metrics": ["sum(revenue)", "count(orders)", "avg(order_value)"]
      }
    },
    {
      "skill": "everest-data",
      "action": "dashboard.create",
      "params": {
        "app": "retail-ops",
        "title": "华东区域驾驶舱",
        "model": "华东销售分析模型"
      }
    }
  ]
}

workflow层的核心价值在于原子性与事务性。每个步骤可以独立执行,失败时支持从断点恢复;整体流程支持事务语义,确保要么全部成功,要么全部回滚。


3. Dry-Run治理机制

3. Dry-Run治理机制

3.1 为什么Agent需要Dry-Run

对于人类用户而言,CLI操作前可以看一眼命令、确认一下参数,感觉不对还能Ctrl+C取消。但Agent执行的是一个完整的代码生成-执行循环,它可能会在毫秒级时间内连续发出多个API请求,而这些请求的执行效果:尤其是数据变更类操作:往往是不可逆的。

Dry-Run(预演模式) 正是为解决这一问题而设计的。它的核心理念是:在真正执行之前,先用只读的方式模拟整个操作流程,让Agent和运维人员都能看清将要发生什么。

3.2 Dry-Run的技术实现

HENGSHI CLI的Dry-Run机制并非简单的“预览”:它是一个完整的安全治理层,包含以下几个关键组件:

3.2.1 操作影响分析

当Agent发出一个操作请求时,Dry-Run会首先分析该操作可能产生的影响:

# 授权操作的Dry-Run
$ everest authorize grant \
    --target-type app \
    --target-id app_42 \
    --user 123:editor \
    --dry-run

# 输出
┌─────────────────────────────────────────────────────────────┐
│                      DRY-RUN PREVIEW                        │
├─────────────────────────────────────────────────────────────┤
│ Operation: authorize.grant                                  │
│                                                             │
│ Target:                                                     │
│   Type   : app                                              │
│   ID     : app_42                                           │
│   Name   : 零售运营系统                                      │
│                                                             │
│ Action:                                                     │
│   Grant user 123 (editor) to app_42                         │
│                                                             │
│ Impact Analysis:                                            │
│   ┌─────────────┬─────────────────────────────────────┐   │
│   │  Risk Level │ LOW                                  │   │
│   │  Scope      │ Single app (app_42)                  │   │
│   │  Reversible │ YES (via revoke)                    │   │
│   └─────────────┴─────────────────────────────────────┘   │
│                                                             │
│ Prerequisites:                                              │
│   ✓ User 123 exists                                         │
│   ✓ Target app exists                                       │
│   ✓ No conflicting permission                               │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│ Preview passed · ready for approval                         │
└─────────────────────────────────────────────────────────────┘

3.2.2 影响范围可视化

对于高风险操作(如数据删除、权限变更),Dry-Run会展示操作的影响范围:

┌──────────────────────────────────────────────────────────────────┐
│                    DRY-RUN IMPACT REPORT                         │
├──────────────────────────────────────────────────────────────────┤
│ Operation: dataset.delete                                         │
│                                                             │
│ Target:                                                     │
│   Dataset: "客户画像表" (ds_002)                                 │
│   App    : retail-ops                                          │
│                                                             │
│ Dependencies Analysis:                                        │
│   ┌────────────────────────────────────────────────────┐      │
│   │ 依赖此数据集的对象将受影响:                          │      │
│   │                                                     │      │
│   │   • 模型 "华东客户分析" (model_007)                 │      │
│   │     └─ 引用字段: [customer_id, tags, segment]      │      │
│   │                                                     │      │
│   │   • 仪表板 "客户洞察驾驶舱" (dash_023)             │      │
│   │     └─ 依赖模型 model_007                          │      │
│   │                                                     │      │
│   │   • 分享链接 3 个                                   │      │
│   └────────────────────────────────────────────────────┘      │
│                                                             │
│ Cascading Effects:                                            │
│   ┌────────────────────────────────────────────────────┐      │
│   │  [LOW] 级联删除风险                                  │      │
│   │                                                     │      │
│   │  若删除此数据集,系统将:                              │      │
│   │   1. 移除模型 model_007 中的对应字段                 │      │
│   │   2. 将仪表板 dash_023 标记为"数据源不可用"         │      │
│   │   3. 使分享链接指向空数据集                           │      │
│   │                                                     │      │
│   │  用户访问影响: 约 45 人                              │      │
│   └────────────────────────────────────────────────────┘      │
│                                                             │
├──────────────────────────────────────────────────────────────────┤
│ ⚠️  Dry-Run blocked: High-impact operation requires explicit   │
│    approval. Use --confirm to proceed or --cancel to abort.     │
└──────────────────────────────────────────────────────────────────┘

3.2.3 审批工作流集成

在团队协作场景中,Dry-Run可以与审批工作流集成:

# 提交Dry-Run结果到审批队列
$ everest authorize grant \
    --target-type app \
    --target-id app_42 \
    --user 123:editor \
    --dry-run \
    --submit-approval

# 输出
DRY-RUN APPROVAL REQUEST
═══════════════════════════════════════════════════

Request ID : apr_20260401_001
Submitter  : agent:claude-code-session-42
Timestamp  : 2026-04-01T15:30:00Z
Operation  : authorize.grant

Pending Approval From: [@admin-role]
Expected Resolution: 24h

Your operation has been queued for human approval.
Agent will be notified via SSE when decision is made.

这种设计体现了AI与人类协作的治理理念:Agent可以在Dry-Run阶段探索和验证操作方案,最终由人类确认高风险操作的执行。


4. SSE回显机制

4.1 实时反馈的需求

当一个Agent发起一个可能耗时较长的操作(如数据导出、报表生成)时,它面临一个关键问题:如何知道操作进行到什么阶段了?是否遇到了错误?何时可以获取结果?

传统的轮询(polling)机制存在效率低下、响应延迟大的问题。SSE(Server-Sent Events) 为这一问题提供了优雅的解决方案:服务端主动推送操作进度和结果,Agent无需反复询问,只需监听一个持久连接即可。

4.2 HENGSHI CLI的SSE架构

┌────────────────────────────────────────────────────────────────────┐
│                        SSE Event Flow                               │
├────────────────────────────────────────────────────────────────────┤
│                                                                    │
│   Agent                         HENGSHI CLI                    BI  │
│     │                               │                            │  │
│     │  ┌─────────────────────┐      │                            │  │
│     │─▶│ 发起命令 (异步模式)   │──────▶│                            │  │
│     │  └─────────────────────┘      │                            │  │
│     │                               │  ┌──────────────────┐       │  │
│     │                               │─▶│ 建立SSE连接       │       │  │
│     │                               │  └────────┬─────────┘       │  │
│     │                               │           │                  │  │
│     │                               │           ▼                  │  │
│     │                               │  ┌──────────────────┐       │  │
│     │                               │─▶│ 转发事件到Agent   │──────▶│  │
│     │                               │  └──────────────────┘       │  │
│     │                               │                            │  │
│     │  ◀───────────────────────────────── event stream            │  │
│     │                               │                            │  │
│     │                               │                            │  │
│     ▼                               ▼                            ▼  │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

4.3 事件类型设计

HENGSHI CLI的SSE通道定义了以下标准事件类型:

HENGSHI CLI SSE事件类型设计

4.4 实际使用示例

# 启动SSE监听模式
$ everest dashboard create \
    --app retail-ops \
    "华东区域驾驶舱" \
    --async \
    --sse-url "http://localhost:9090/events/agent-42"

# 等待SSE事件...
event: operation:started
data: {"operation_id":"op_7a2f3c","type":"dashboard.create","timestamp":"2026-04-01T16:00:00Z"}

event: operation:progress
data: {"operation_id":"op_7a2f3c","percent":25,"current_step":"validating_app_access","details":"Checking access to retail-ops app"}

event: operation:progress
data: {"operation_id":"op_7a2f3c","percent":50,"current_step":"resolving_model","details":"Resolving default model for dashboard"}

event: operation:progress
data: {"operation_id":"op_7a2f3c","percent":75,"current_step":"creating_dashboard","details":"Creating dashboard resource"}

event: operation:completed
data: {"operation_id":"op_7a2f3c","result":{"dashboard_id":"dash_128","title":"华东区域驾驶舱","app":"retail-ops"},"output_location":"/results/op_7a2f3c.json"}

这种SSE回显机制的优势在于:

  1. 实时性:Agent可以在毫秒级别感知操作状态变化
  2. 可恢复性:即使Agent重启,只要记录了operation_id,可以从上次已知状态继续监听
  3. 可调试性:完整的事件日志为问题排查提供了详细依据
  4. 可组合性:Agent可以同时监听多个操作的事件流

5. 工程实践

5.1 集成到Agent工作流

将HENGSHI CLI集成到Agent的工作流中,通常遵循以下模式:

┌─────────────────────────────────────────────────────────────────┐
│                    Agent Workflow with HENGSHI CLI              │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
│  │  理解任务  │───▶│  Dry-Run │───▶│  执行命令 │───▶│  处理结果 │  │
│  └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
│       │                │               │               │       │
│       ▼                ▼               ▼               ▼       │
│  意图解析        验证方案安全性      SSE监听         结果存储   │
│  参数映射        影响范围评估       错误恢复         状态同步   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

5.2 错误处理策略

HENGSHI CLI的错误处理遵循以下原则:

  1. 可预测的错误码:每个错误都有标准化的错误码,便于Agent理解和处理
  2. 可恢复的错误分类:区分临时性错误(如网络超时)和永久性错误(如参数无效)
  3. 建议性的错误信息:错误信息不仅说明发生了什么,还建议如何解决
# 错误示例
$ everest dashboard create --app invalid-app "测试仪表板"

# 输出
Error [E_APP_NOT_FOUND]: Application 'invalid-app' not found
├─ Suggestion: Use 'everest app list' to see available applications
├─ Did you mean: 'retail-ops' (similarity: 0.72)
└─ Error ID: err_20260401_a1b2c3

5.3 性能考量

在高频调用场景中,HENGSHI CLI提供了以下优化机制:

  • 连接复用:保持与BI平台的持久连接,避免频繁握手
  • 批量操作:支持将多个同类操作打包执行
  • 缓存策略:对只读操作启用本地缓存,减少重复请求
# 批量查询示例
$ everest dataset batch-get \
    --ids ds_001,ds_002,ds_003 \
    --cache-ttl 300

# 输出
{
  "results": [...],
  "cache_hit": true,
  "cached_at": "2026-04-01T17:00:00Z"
}

6. 总结与展望

6.1 核心价值回顾

HENGSHI CLI作为Agentic BI三位一体架构的执行层,通过以下设计解决了AI Agent在BI场景中的核心挑战:

  1. Skills路由体系:将复杂的BI操作封装为语义清晰的技能模块,降低Agent的认知负担
  2. Dry-Run治理机制:在执行前提供完整的操作预览和影响分析,确保自动化行为的可预测性和可审计性
  3. SSE回显机制:为耗时操作提供实时反馈通道,使Agent能够准确感知执行状态

6.2 未来演进方向

随着AI Agent技术的持续演进,HENGSHI CLI的下一步发展可能包括:

  • 自然语言接口增强:支持Agent用自然语言描述BI任务,CLI自动路由到最合适的命令组合
  • 多模态响应:除文本外,支持返回图表、数据可视化等 richer 的结果形式
  • 智能重试策略:基于历史执行数据,自动学习最佳的重试时机和参数调整策略
  • 跨平台部署:支持在更多Agent运行环境中部署,包括云端、无服务器环境等

6.3 适用场景


资料与核验说明

内部资料用于梳理衡石能力与工程方法;竞品和版本信息按2026年8月26日可访问的官方页面复核。产品功能会受版本、地区、授权和部署模式影响,正式采购与发布前应再做一次现场确认。

HENGSHI SENSE产品与技术白皮书

HENGSHI SENSE

丰富的资源 完整的生态

邀您成为衡石伙伴

立即加入

企业级部署、产品集成与试用咨询均可快速响应