RFC: 统一 invoke 接口 — 三合一 #1

Open
opened 2026-04-18 07:01:48 +00:00 by xiaomo · 1 comment
Owner

背景

Sigil 目前有三个独立端点:querydeployinvoke

为配合 Pulseflare 架构(Sigil 作为唯一 executor 出口),提议将三个端点合并为一个 invoke

方案

现状 → 目标

现在 改造后
POST /query invoke("sigil.discover", { q, mode, limit })
POST /deploy invoke("sigil.deploy", { name, code, schema, ... })
POST /invoke invoke(capability, params) — 不变

内置 Capabilities

  • sigil.discover — 搜索/发现能力(替代 /query)
  • sigil.deploy — 发布能力(替代 /deploy)
  • sigil.list — 列出所有能力
  • sigil.inspect — 查看能力详情
  • sigil.delete — 删除能力

实现步骤

  1. Worker 注册内置 capabilities(走和外部 capability 相同的路径)
  2. POST /invoke 作为唯一入口
  3. 旧路由 /query/deploy 保留做兼容(internally 转发到 invoke)
  4. OC tool 从 3 个合并为 1 个 sigil_invoke
  5. 清理旧路由

好处

  • API 从 3 → 1
  • Sigil 自举:管理操作也是 capability
  • Pulseflare 只依赖一个原语:invoke(name, input)
  • Rule 可以动态注册新 capability

关联

  • pulse#5 Pulseflare RFC

—— 小墨 🖊️

## 背景 Sigil 目前有三个独立端点:`query`、`deploy`、`invoke`。 为配合 Pulseflare 架构(Sigil 作为唯一 executor 出口),提议将三个端点合并为一个 `invoke`。 ## 方案 ### 现状 → 目标 | 现在 | 改造后 | |---|---| | `POST /query` | `invoke("sigil.discover", { q, mode, limit })` | | `POST /deploy` | `invoke("sigil.deploy", { name, code, schema, ... })` | | `POST /invoke` | `invoke(capability, params)` — 不变 | ### 内置 Capabilities - `sigil.discover` — 搜索/发现能力(替代 /query) - `sigil.deploy` — 发布能力(替代 /deploy) - `sigil.list` — 列出所有能力 - `sigil.inspect` — 查看能力详情 - `sigil.delete` — 删除能力 ### 实现步骤 1. Worker 注册内置 capabilities(走和外部 capability 相同的路径) 2. `POST /invoke` 作为唯一入口 3. 旧路由 `/query`、`/deploy` 保留做兼容(internally 转发到 invoke) 4. OC tool 从 3 个合并为 1 个 `sigil_invoke` 5. 清理旧路由 ### 好处 - API 从 3 → 1 - Sigil 自举:管理操作也是 capability - Pulseflare 只依赖一个原语:`invoke(name, input)` - Rule 可以动态注册新 capability ### 关联 - pulse#5 Pulseflare RFC —— 小墨 🖊️
Author
Owner

验收标准

P0 — 接口层(必须)

  • POST /invoke 能调内置 capability(sigil.discover / sigil.deploy / sigil.list / sigil.delete)
  • POST /invoke 能调外部 capability(现有的不受影响)
  • 旧路由 /query/deploy 仍然能用(兼容期)

P0 — 自举测试

# 发现
curl -X POST /invoke -d '{"capability":"sigil.discover","params":{"q":"llm"}}'
# 部署
curl -X POST /invoke -d '{"capability":"sigil.deploy","params":{"name":"test-echo","execute":"return input"}}'
# 调用
curl -X POST /invoke -d '{"capability":"test-echo","params":{"msg":"hello"}}'
# 删除
curl -X POST /invoke -d '{"capability":"sigil.delete","params":{"name":"test-echo"}}'

全链路走通 = 自举成功

P1 — OC 集成(后续)

  • OC tool 合并为 1 个 sigil_invoke

P1 — Pulseflare 对接(后续)

  • tick 里只用 invoke(name, input)

—— 小墨 🖊️

## 验收标准 ### P0 — 接口层(必须) - [ ] `POST /invoke` 能调内置 capability(sigil.discover / sigil.deploy / sigil.list / sigil.delete) - [ ] `POST /invoke` 能调外部 capability(现有的不受影响) - [ ] 旧路由 `/query`、`/deploy` 仍然能用(兼容期) ### P0 — 自举测试 ```bash # 发现 curl -X POST /invoke -d '{"capability":"sigil.discover","params":{"q":"llm"}}' # 部署 curl -X POST /invoke -d '{"capability":"sigil.deploy","params":{"name":"test-echo","execute":"return input"}}' # 调用 curl -X POST /invoke -d '{"capability":"test-echo","params":{"msg":"hello"}}' # 删除 curl -X POST /invoke -d '{"capability":"sigil.delete","params":{"name":"test-echo"}}' ``` 全链路走通 = 自举成功 ### P1 — OC 集成(后续) - [ ] OC tool 合并为 1 个 sigil_invoke ### P1 — Pulseflare 对接(后续) - [ ] tick 里只用 invoke(name, input) —— 小墨 🖊️
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/sigil#1