CLI 统一设计:Local + Remote Workflow (git-style 命名) — Khala #120

Open
opened 2026-04-25 03:36:36 +00:00 by xiaomo · 0 comments
Owner

acdea25b595a8484d3ae3d2445ea3ec3601ac760

CLI 统一设计:Local + Remote Workflow

关联 #119 (Khala RFC)

目标

将 remote (cloud) workflow 整合进现有 nerve CLI,采用 git-style 命名,local 和 remote 共用同一套命令语义。

命名规则

code-review          → local workflow
origin/code-review   → remote workflow (on khala)

无前缀 = local,前缀 = remote name。默认 remote 叫 origin

CLI 结构变更

nerve
├── remote
│   ├── add <name> <url>
│   ├── list
│   └── remove <name>
├── workflow
│   ├── list              # 默认只显示 local
│   ├── list --remote     # 显示 remote
│   ├── list --all        # local + remote
│   ├── run <name>        # 统一入口,识别前缀分发
│   │                     #   无前缀 → IPC 触发 daemon
│   │                     #   origin/xxx → REST POST 到 remote
│   ├── inspect <runId>   # 同上,remote run 走 REST 查询
│   └── init <name>       # scaffold,origin/xxx 自动 binding: cloud
├── init [workspace]
├── start / stop / status
├── logs
├── validate
└── sense
    ├── list
    └── trigger <name>

变更点:

  • trigger 统一为 run(更直觉)
  • nerve init workflow 移入 nerve workflow init(子命令更自然)
  • 新增 nerve remote 管理 remote 连接

Remote Config

nerve.yaml 中新增 remotes section:

remotes:
  origin: https://khala.shazhou.workers.dev

预留多 remote 支持,第一版只实现 origin

Workflow 描述统一

Local 和 remote workflow 共用同一套描述结构:

  • name — workflow 名称
  • prompt — role prompt(local 是代码,remote 是声明式 prompt)
  • maxRounds — 最大轮次
  • dryRun — 支持,remote 同样可以 dry run

nerve workflow init origin/code-review → scaffold 出 cloud binding 的模板,结构与 local 一致。

执行模型

Agent 执行 remote workflow step,本质上是一个本地 workflow:

KhalaSense 收到 turn event
  → 触发本地 workflow "remote-step-executor"
  → input: role prompt + turn instruction + thread query API
  → 本地 LLM + tools 执行
  → output: POST response 回 khala

本地 workflow 引擎不需要改动,只是多了一个 "remote step executor" workflow 模板。

迁移

  • nerve workflow trigger → deprecated,alias 到 nerve workflow run
  • nerve init workflow → deprecated,alias 到 nerve workflow init

Open Questions

  1. nerve workflow init scaffold 时,remote workflow 的默认模板长什么样?
  2. nerve workflow run origin/xxx --dry-run 的 dry run 语义:只在本地模拟,还是也通知 remote?
  3. nerve workflow list --remote 要不要缓存 remote 列表?
acdea25b595a8484d3ae3d2445ea3ec3601ac760 ## CLI 统一设计:Local + Remote Workflow 关联 #119 (Khala RFC) ### 目标 将 remote (cloud) workflow 整合进现有 nerve CLI,采用 git-style 命名,local 和 remote 共用同一套命令语义。 ### 命名规则 ``` code-review → local workflow origin/code-review → remote workflow (on khala) ``` 无前缀 = local,前缀 = remote name。默认 remote 叫 `origin`。 ### CLI 结构变更 ``` nerve ├── remote │ ├── add <name> <url> │ ├── list │ └── remove <name> ├── workflow │ ├── list # 默认只显示 local │ ├── list --remote # 显示 remote │ ├── list --all # local + remote │ ├── run <name> # 统一入口,识别前缀分发 │ │ # 无前缀 → IPC 触发 daemon │ │ # origin/xxx → REST POST 到 remote │ ├── inspect <runId> # 同上,remote run 走 REST 查询 │ └── init <name> # scaffold,origin/xxx 自动 binding: cloud ├── init [workspace] ├── start / stop / status ├── logs ├── validate └── sense ├── list └── trigger <name> ``` **变更点:** - `trigger` 统一为 `run`(更直觉) - `nerve init workflow` 移入 `nerve workflow init`(子命令更自然) - 新增 `nerve remote` 管理 remote 连接 ### Remote Config 在 `nerve.yaml` 中新增 `remotes` section: ```yaml remotes: origin: https://khala.shazhou.workers.dev ``` 预留多 remote 支持,第一版只实现 `origin`。 ### Workflow 描述统一 Local 和 remote workflow 共用同一套描述结构: - `name` — workflow 名称 - `prompt` — role prompt(local 是代码,remote 是声明式 prompt) - `maxRounds` — 最大轮次 - `dryRun` — 支持,remote 同样可以 dry run `nerve workflow init origin/code-review` → scaffold 出 cloud binding 的模板,结构与 local 一致。 ### 执行模型 Agent 执行 remote workflow step,本质上是一个本地 workflow: ``` KhalaSense 收到 turn event → 触发本地 workflow "remote-step-executor" → input: role prompt + turn instruction + thread query API → 本地 LLM + tools 执行 → output: POST response 回 khala ``` 本地 workflow 引擎不需要改动,只是多了一个 "remote step executor" workflow 模板。 ### 迁移 - `nerve workflow trigger` → deprecated,alias 到 `nerve workflow run` - `nerve init workflow` → deprecated,alias 到 `nerve workflow init` ### Open Questions 1. `nerve workflow init` scaffold 时,remote workflow 的默认模板长什么样? 2. `nerve workflow run origin/xxx --dry-run` 的 dry run 语义:只在本地模拟,还是也通知 remote? 3. `nerve workflow list --remote` 要不要缓存 remote 列表?
tuanzi changed title from CLI 统一设计:Local + Remote Workflow (git-style 命名) to CLI 统一设计:Local + Remote Workflow (git-style 命名) — Khala 2026-04-25 03:58:00 +00:00
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#120