@numa-tech/numa 1.26.8 → 1.26.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -2
- package/dist/ai-registry/commands.js +192 -129
- package/dist/ai-registry/commands.js.map +1 -1
- package/dist/ai-registry/install-conflicts.d.ts +9 -0
- package/dist/ai-registry/install-conflicts.js +59 -0
- package/dist/ai-registry/install-conflicts.js.map +1 -0
- package/dist/ai-registry/install-defaults.js +3 -2
- package/dist/ai-registry/install-defaults.js.map +1 -1
- package/dist/cli.js +39 -28
- package/dist/cli.js.map +1 -1
- package/dist/command-catalog.js +10 -3
- package/dist/command-catalog.js.map +1 -1
- package/dist/interactive/entry.js +1 -1
- package/dist/interactive/entry.js.map +1 -1
- package/dist/interactive/prompts.js +1 -1
- package/dist/interactive/prompts.js.map +1 -1
- package/dist/interactive/registry.d.ts +15 -0
- package/dist/interactive/registry.js +51 -2
- package/dist/interactive/registry.js.map +1 -1
- package/dist/jev/client.d.ts +17 -0
- package/dist/jev/client.js +127 -0
- package/dist/jev/client.js.map +1 -0
- package/dist/jev/commands.d.ts +8 -0
- package/dist/jev/commands.js +40 -0
- package/dist/jev/commands.js.map +1 -0
- package/dist/jev/errors.d.ts +39 -0
- package/dist/jev/errors.js +48 -0
- package/dist/jev/errors.js.map +1 -0
- package/dist/jev/input.d.ts +11 -0
- package/dist/jev/input.js +126 -0
- package/dist/jev/input.js.map +1 -0
- package/dist/jev/profile.d.ts +3 -0
- package/dist/jev/profile.js +26 -0
- package/dist/jev/profile.js.map +1 -0
- package/dist/jev/response.d.ts +3 -0
- package/dist/jev/response.js +38 -0
- package/dist/jev/response.js.map +1 -0
- package/dist/kb/web-page.js +70 -13
- package/dist/kb/web-page.js.map +1 -1
- package/dist/kb/web-queue.d.ts +3 -0
- package/dist/kb/web-queue.js +21 -1
- package/dist/kb/web-queue.js.map +1 -1
- package/dist/kb/web.js +12 -0
- package/dist/kb/web.js.map +1 -1
- package/dist/mcp-gateway/runtime.d.ts +95 -0
- package/dist/mcp-gateway/runtime.js +25 -3
- package/dist/mcp-gateway/runtime.js.map +1 -1
- package/docs/design/kb-web-workspace.md +19 -1
- package/docs/module-maintenance-and-skills-updates.md +18 -0
- package/examples/jev/README.md +6 -2
- package/examples/oss/__pycache__/roundtrip.cpython-314.pyc +0 -0
- package/examples/oss/__pycache__/test_roundtrip.cpython-314.pyc +0 -0
- package/package.json +4 -4
- package/skills/numa-cli/SKILL.md +10 -6
- package/skills/numa-cli/evals/evals.json +27 -0
- package/skills/numa-cli/numa-skill.json +1 -1
- package/skills/numa-cli/references/authoring.md +29 -0
- package/skills/numa-cli/references/cli-bootstrap.md +3 -3
- package/skills/numa-jev/SKILL.md +11 -9
- package/skills/numa-jev/numa-skill.json +5 -2
- package/skills/numa-jev/references/application-integration.md +2 -2
- package/skills/numa-jev/references/cli-usage.md +62 -0
- package/skills/numa-jev/references/mcp-usage.md +3 -1
|
@@ -63,7 +63,7 @@ Profile 的平台 tenant 继续用于身份配置;KB 的业务 tenant 通过 `
|
|
|
63
63
|
|
|
64
64
|
使用已有 `services.kb.configuration` JSON 扩展 `environments` 与 `defaultEnvironment`,复用平台已有服务配置存储和发布流程,无需增加另一套环境配置文件或数据库表。发布者必须同时维护对应 authority;客户端在使用前验证引用、完整字段和地址。默认环境的路由必须与顶层 KB 服务字段一致,旧 CLI 继续使用顶层字段。
|
|
65
65
|
|
|
66
|
-
-
|
|
66
|
+
- 未发布环境列表:显示已有 KB 路由的实际命名空间或主机,保持旧配置与空环境键。
|
|
67
67
|
- 只有环境列表、无显式默认项:保留现有默认服务,并提供其他环境选项。
|
|
68
68
|
- `kb --environment <code> ...`:所有 KB 命令选择该环境。
|
|
69
69
|
- `login/auth status/auth logout --service kb --environment <code>`:使用相同环境身份与缓存。
|
|
@@ -114,3 +114,21 @@ Profile 的平台 tenant 继续用于身份配置;KB 的业务 tenant 通过 `
|
|
|
114
114
|
环境列表仅来自当前 Profile 正式下发的 `services.kb.configuration.environments`,不枚举集群或拼接其他环境的地址。旧 Profile 只有顶层 KB 路由时仍保留原来的空环境键及队列绑定,但不再显示“当前默认配置”:已知 `apps-gw-<namespace>.mcisaas.com` 路由显示地址中的 namespace;其他地址显示实际主机、端口和路径。此提取仅用于展示,不影响地址或身份源选择,也不使用 Profile 自身的 `environment` 代替 KB 的环境。
|
|
115
115
|
|
|
116
116
|
需要增加环境时,应通过平台下发完整路由与对应 authority。客户端支持多个已发布环境,现有单路由不代表账号只具有一个环境的访问权限。
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## 批量下载与删除
|
|
120
|
+
|
|
121
|
+
文档列表提供逐项勾选、全选当前页、已选数量,以及“下载所选”和“删除所选”。
|
|
122
|
+
搜索、翻页或切换知识库/租户/环境时清空勾选,避免作用到不可见项目。右键已选文档也能操作整组选项。
|
|
123
|
+
|
|
124
|
+
批量下载一次选择保存目录,完整验证下载票据后统一加入已有持久化传输队列,最多同时下载三项。
|
|
125
|
+
同批同名文件添加数字后缀分别保存;已有文件沿用传输层的禁止覆盖保护。每次最多选择当前页 100 项。
|
|
126
|
+
下载任务沿用暂停、恢复与停止传输操作;票据及签名地址不返回浏览器或存储在任务记录中。
|
|
127
|
+
|
|
128
|
+
删除前列出文件名及环境、租户、知识库,一次确认后逐项调用 KB 文档删除接口。
|
|
129
|
+
删除操作清理文档及相关索引,不直接删除 OSS 对象。包含无管理权限文档时禁用批量删除。
|
|
130
|
+
界面显示进度及失败项目;身份失效或写入结果未知时停止剩余项,要求核对后再处理,不自动重试删除。
|
|
131
|
+
成功项刷新后移除,失败项仍在当前页时保持勾选。删除期间需要保持页面打开。
|
|
132
|
+
|
|
133
|
+
验证:真实页面处理函数覆盖多选/全选/权限/目标固定/部分失败/未知结果停止;本地 HTTP 验证选择上限、重复项、
|
|
134
|
+
租户与知识库隔离、原生目录选择;传输队列验证批次规划失败不留半批任务、同名路径和敏感票据不落盘。
|
|
@@ -54,6 +54,24 @@ v1 不支持多个消费者与基础包的联合原子升级/版本范围求解
|
|
|
54
54
|
旧 CLI 不解析此元数据;先发布支持依赖的新 CLI,再发布 `numa-cli@1.1.0`,最后发布业务
|
|
55
55
|
Skills 1.1.0。Skill 文档保留旧 CLI 的经用户同意、逐个安装基础包的降级指引。
|
|
56
56
|
|
|
57
|
+
## 批量安装与同名目录
|
|
58
|
+
|
|
59
|
+
运行 `numa skills install --interactive` 可搜索并勾选多个 Skills,再勾选多个目标 Agents。
|
|
60
|
+
按空格勾选、回车确认;每个 Skill 独立选择已发布版本,共用来源、安装范围和目标客户端。
|
|
61
|
+
同一物理目录只安装一次(例如 ChatGPT 与 Codex)。也可直接指定:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
numa skills install numa-cli numa-notion --agent claude,codex --interactive
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
发现已登记且未修改的安装时,保留文件并提示使用“更新已安装 Skills”;项目级安装提示
|
|
68
|
+
`registry upgrade`,尚未登记更新信息的旧安装提示先接管。发现本地自建、未登记或修改过的
|
|
69
|
+
同名 Skill 时,交互询问是否备份后覆盖,拒绝则保留原文件并继续其他项。
|
|
70
|
+
非交互模式保留已有文件,只有显式 `--force` 才会备份替换。
|
|
71
|
+
冲突处理在写入依赖之前完成;依赖变更仍单独展示并确认。
|
|
72
|
+
批量结果逐项列出成功、保留和失败;取消后不会开始后续项,已完成项保留。
|
|
73
|
+
`--json` 输出一个包含各 Skill 结果的报告;单 Skill、单 Agent 的成功结果保持兼容。
|
|
74
|
+
|
|
57
75
|
## 一次性升级已安装 Skills
|
|
58
76
|
|
|
59
77
|
`numa skills` 的交互首页提供“安装新 Skills”和“更新已安装 Skills”。选择更新后,
|
package/examples/jev/README.md
CHANGED
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
## 终端 Agent / WorkBuddy
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
安装同来源 `numa-cli` 与 `numa-jev` Skill 后,沿用 CLI 入口直接提交 [合成请求](../../skills/numa-jev/assets/decision.json):
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
```sh
|
|
10
|
+
numa jev decide --file skills/numa-jev/assets/decision.json --json
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
请求形状为 `{state, questions, model?}`,CLI 直接调用平台 HTTP API。读取 `status`、`data.answers`、`availability` 或 `next_action`;无需 MCP 连接、工具发现、capabilities 或试探性推理。完整错误和结果未知处理见 [CLI 指引](../../skills/numa-jev/references/cli-usage.md)。
|
|
10
14
|
|
|
11
15
|
## ChatGPT
|
|
12
16
|
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@numa-tech/numa",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.9",
|
|
4
4
|
"description": "Cross-platform CLI for the Numa internal developer platform with Keycloak authentication and MCP support.",
|
|
5
5
|
"author": "numa-tech",
|
|
6
6
|
"keywords": [
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"dev:oss-web": "tsx src/cli.ts oss web",
|
|
52
52
|
"test:oss-web": "node --import tsx --test src/oss/web.test.ts src/oss/web-session.test.ts src/oss/web-transfers.test.ts src/oss/web-command.test.ts src/oss/local-picker.test.ts src/oss/transfer-paths.test.ts src/oss/transfer-worker.test.ts src/oss/transfer-queue.test.ts src/oss/web-page.test.ts src/oss/file-operations.test.ts src/oss/download-links.test.ts src/local-web/context-menu.test.ts",
|
|
53
53
|
"test:oss-auth-code": "node scripts/test-oss-auth-code.mjs",
|
|
54
|
-
"root:test": "node --import tsx --test --test-concurrency=4 src/mcp-gateway/profile.test.ts src/mcp-gateway/runtime.test.ts src/mcp-gateway/install.test.ts src/branding.test.ts src/app-config.test.ts src/platform-profile.test.ts src/profile-migration.test.ts src/identity.test.ts src/backend.test.ts src/oauth.test.ts src/web-console.test.ts src/cli-options.test.ts src/mail/client.test.ts src/wecom/client.test.ts src/wecom/commands.test.ts src/wecom/tools.test.ts src/ai-registry/client.test.ts src/ai-registry/bootstrap.test.ts src/ai-registry/install-defaults.test.ts src/ai-registry/workspace.test.ts src/ai-registry/namespace.test.ts src/compatibility/registry-instance.test.ts src/ai-registry/sync.test.ts src/ai-registry/bridge.test.ts src/ai-registry/skill-installer.test.ts src/ai-registry/skill-uninstaller.test.ts src/ai-registry/skill-dependencies.test.ts src/ai-registry/updates.test.ts src/maintenance/scheduler.test.ts src/maintenance/codex.test.ts src/ai-registry/mcp-installer.test.ts src/media/client.test.ts src/media/commands.test.ts src/media/transfers.test.ts src/oss/client.test.ts src/oss/governance.test.ts src/oss/commands.test.ts src/oss/auth-code.test.ts src/oss/clipboard.test.ts src/oss/web.test.ts src/oss/web-session.test.ts src/oss/web-transfers.test.ts src/oss/web-command.test.ts src/oss/local-picker.test.ts src/oss/transfer-paths.test.ts src/oss/transfer-worker.test.ts src/oss/transfer-queue.test.ts src/oss/web-page.test.ts src/oss/file-operations.test.ts src/oss/download-links.test.ts src/oss/bootstrap.test.ts src/oss/transfers.test.ts src/oss/search.test.ts src/oss/tools.test.ts src/mcp/install.test.ts src/mcp/catalog.test.ts src/tasks/runtime.test.ts src/tasks/stdio.test.ts src/tasks/wecom-notify.test.ts src/tasks/oss-query.test.ts src/interactive/wizard.test.ts src/pipeline/client.test.ts src/pipeline/commands.test.ts src/gitops/client.test.ts src/gitops/commands.test.ts src/gitops/workload-input.test.ts src/gitops/workload-client.test.ts src/gitops/workload-commands.test.ts src/repositories/client.test.ts src/repositories/commands.test.ts src/publications/scanner.test.ts src/publications/client.test.ts src/publications/commands.test.ts src/jenkins-jobs/client.test.ts src/jenkins-jobs/commands.test.ts src/clusters/client.test.ts src/clusters/commands.test.ts src/clusters/kubeconfig-discovery.test.ts src/teams/client.test.ts src/teams/commands.test.ts src/authorization/bootstrap-client.test.ts src/authorization/commands.test.ts src/authorization/access-request-client.test.ts src/authorization/access-request-commands.test.ts src/application-candidates/client.test.ts src/application-candidates/commands.test.ts src/application-onboarding/client.test.ts src/application-onboarding/commands.test.ts src/application-onboarding/tui.test.ts src/chatgpt-desktop.test.ts src/codex-integration.test.ts scripts/release-all.test.mjs src/authorization/application-commands.test.ts src/authorization/application-client.test.ts src/authorization/application-schemas.test.ts src/notion/client.test.ts src/notion/commands.test.ts src/notion/tools.test.ts src/notion/machine-cli.test.ts src/cloud/accounts.test.ts src/cloud/bootstrap.test.ts src/cloud/business-bootstrap.test.ts src/cloud/maintenance.test.ts src/cloud/wizard.test.ts src/cloud/oss-bootstrap.test.ts src/business-issuer.test.ts src/login-configuration.test.ts src/login-recovery.test.ts src/ai-registry/mcp-management.test.ts src/ai-registry/mcp-runtime.test.ts src/ai-registry/mcp-stdio.test.ts src/kb/client.test.ts src/kb/config.test.ts src/kb/commands.test.ts src/kb/login.test.ts src/kb/transfers.test.ts src/kb/contract.test.ts src/authorization/environment-governance-client.test.ts src/authorization/environment-governance-commands.test.ts src/authorization/environment-publication.test.ts src/authorization/managed-keycloak.test.ts src/authorization/managed-keycloak-producer.test.ts src/kb/web.test.ts src/kb/web-queue.test.ts src/local-web/context-menu.test.ts src/kb/web-login.test.ts src/kb/capabilities.test.ts",
|
|
54
|
+
"root:test": "node --import tsx --test --test-concurrency=4 src/mcp-gateway/profile.test.ts src/mcp-gateway/runtime.test.ts src/mcp-gateway/install.test.ts src/branding.test.ts src/app-config.test.ts src/platform-profile.test.ts src/profile-migration.test.ts src/identity.test.ts src/backend.test.ts src/oauth.test.ts src/web-console.test.ts src/cli-options.test.ts src/mail/client.test.ts src/wecom/client.test.ts src/wecom/commands.test.ts src/wecom/tools.test.ts src/ai-registry/client.test.ts src/ai-registry/bootstrap.test.ts src/ai-registry/install-defaults.test.ts src/ai-registry/workspace.test.ts src/ai-registry/namespace.test.ts src/compatibility/registry-instance.test.ts src/ai-registry/sync.test.ts src/ai-registry/bridge.test.ts src/ai-registry/skill-installer.test.ts src/ai-registry/skill-uninstaller.test.ts src/ai-registry/skill-dependencies.test.ts src/ai-registry/updates.test.ts src/maintenance/scheduler.test.ts src/maintenance/codex.test.ts src/ai-registry/mcp-installer.test.ts src/media/client.test.ts src/media/commands.test.ts src/media/transfers.test.ts src/oss/client.test.ts src/oss/governance.test.ts src/oss/commands.test.ts src/oss/auth-code.test.ts src/oss/clipboard.test.ts src/oss/web.test.ts src/oss/web-session.test.ts src/oss/web-transfers.test.ts src/oss/web-command.test.ts src/oss/local-picker.test.ts src/oss/transfer-paths.test.ts src/oss/transfer-worker.test.ts src/oss/transfer-queue.test.ts src/oss/web-page.test.ts src/oss/file-operations.test.ts src/oss/download-links.test.ts src/oss/bootstrap.test.ts src/oss/transfers.test.ts src/oss/search.test.ts src/oss/tools.test.ts src/mcp/install.test.ts src/mcp/catalog.test.ts src/tasks/runtime.test.ts src/tasks/stdio.test.ts src/tasks/wecom-notify.test.ts src/tasks/oss-query.test.ts src/interactive/wizard.test.ts src/pipeline/client.test.ts src/pipeline/commands.test.ts src/gitops/client.test.ts src/gitops/commands.test.ts src/gitops/workload-input.test.ts src/gitops/workload-client.test.ts src/gitops/workload-commands.test.ts src/repositories/client.test.ts src/repositories/commands.test.ts src/publications/scanner.test.ts src/publications/client.test.ts src/publications/commands.test.ts src/jenkins-jobs/client.test.ts src/jenkins-jobs/commands.test.ts src/clusters/client.test.ts src/clusters/commands.test.ts src/clusters/kubeconfig-discovery.test.ts src/teams/client.test.ts src/teams/commands.test.ts src/authorization/bootstrap-client.test.ts src/authorization/commands.test.ts src/authorization/access-request-client.test.ts src/authorization/access-request-commands.test.ts src/application-candidates/client.test.ts src/application-candidates/commands.test.ts src/application-onboarding/client.test.ts src/application-onboarding/commands.test.ts src/application-onboarding/tui.test.ts src/chatgpt-desktop.test.ts src/codex-integration.test.ts scripts/release-all.test.mjs src/authorization/application-commands.test.ts src/authorization/application-client.test.ts src/authorization/application-schemas.test.ts src/notion/client.test.ts src/notion/commands.test.ts src/notion/tools.test.ts src/notion/machine-cli.test.ts src/cloud/accounts.test.ts src/cloud/bootstrap.test.ts src/cloud/business-bootstrap.test.ts src/cloud/maintenance.test.ts src/cloud/wizard.test.ts src/cloud/oss-bootstrap.test.ts src/business-issuer.test.ts src/login-configuration.test.ts src/login-recovery.test.ts src/ai-registry/mcp-management.test.ts src/ai-registry/mcp-runtime.test.ts src/ai-registry/mcp-stdio.test.ts src/kb/client.test.ts src/kb/config.test.ts src/kb/commands.test.ts src/kb/login.test.ts src/kb/transfers.test.ts src/kb/contract.test.ts src/authorization/environment-governance-client.test.ts src/authorization/environment-governance-commands.test.ts src/authorization/environment-publication.test.ts src/authorization/managed-keycloak.test.ts src/authorization/managed-keycloak-producer.test.ts src/kb/web.test.ts src/kb/web-queue.test.ts src/local-web/context-menu.test.ts src/kb/web-login.test.ts src/kb/capabilities.test.ts src/jev/input.test.ts src/jev/profile.test.ts src/jev/client.test.ts src/jev/commands.test.ts",
|
|
55
55
|
"pack:check": "turbo run pack:check root:pack:check",
|
|
56
56
|
"root:pack:check": "node scripts/check-root-package.mjs",
|
|
57
57
|
"boundaries": "node scripts/check-workspace-boundaries.mjs",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@clack/prompts": "^1.7.0",
|
|
79
79
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
80
|
-
"@numa-tech/cli-auth": "1.26.
|
|
81
|
-
"@tokensrc/codex": "1.26.
|
|
80
|
+
"@numa-tech/cli-auth": "1.26.9",
|
|
81
|
+
"@tokensrc/codex": "1.26.9",
|
|
82
82
|
"ali-oss": "^6.23.0",
|
|
83
83
|
"commander": "^14.0.3",
|
|
84
84
|
"ink": "^6.8.0",
|
package/skills/numa-cli/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: numa-cli
|
|
3
3
|
metadata:
|
|
4
|
-
version: "1.4.
|
|
4
|
+
version: "1.4.2"
|
|
5
5
|
description: Numa CLI 与 Skills/MCP 统一入口。用于 numa command not found、npx/Windows 启动、登录及环境检查、发现和安装企业 Skill、依赖与自动更新、项目 registry 锁定同步、上传审核发布,以及 CLI 自身的 stdio MCP、OSS/企微工具和 Agent 安装接入。其他 Numa 业务 Skill 依赖本 Skill;企微、Notion、OSS 和部署任务交给对应专用 Skill,Nacos 基础设施管理交给 numa-nacos。
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -11,21 +11,24 @@ description: Numa CLI 与 Skills/MCP 统一入口。用于 numa command not foun
|
|
|
11
11
|
|
|
12
12
|
## 正常业务任务的固定入口
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
初始化时根据业务 Skill 与宿主已暴露的能力确定入口并沿用;Jev 固定使用下表的 CLI HTTP 入口,其他任务:连接 Numa MCP 就调用业务任务工具;仅无 Numa MCP 且已有固定 CLI 入口时使用 CLI。运行中的 MCP 缺工具、认证或权限失败时报告具体缺口,不自动切换终端、个人身份或复制秘密。
|
|
15
15
|
|
|
16
16
|
| 任务 | MCP | CLI |
|
|
17
17
|
| --- | --- | --- |
|
|
18
18
|
| 企微通知 | `numa_wecom_notify` | `npx -y @numa-tech/numa@latest task run wecom.notify --input-file /ABS/task.json --json` |
|
|
19
|
+
| Jev 语义判断 | 终端任务使用 CLI;远程 MCP 为独立接入 | `npx -y @numa-tech/numa@latest jev decide --file /ABS/request.json --json` |
|
|
19
20
|
| OSS 查询 | `numa_oss_query` | `npx -y @numa-tech/numa@latest task run oss.query --input-file /ABS/task.json --json` |
|
|
20
21
|
|
|
21
|
-
`--input-file -`
|
|
22
|
+
`--input-file -` 支持标准输入。企微/OSS 两种入口共用进程内任务函数;MCP 直接使用 `npx -y @numa-tech/numa@latest serve` 从 `mcp.json` 收到的环境变量,不启动另一个 CLI。正常任务直接调用,不额外执行 `commands`、`--help`、`auth status`、`whoami`、`config`、capabilities 或 Grant discovery;这些确定性判断在任务内完成,服务端执行授权。
|
|
22
23
|
|
|
23
|
-
统一返回 `succeeded`、`needs_input`、`blocked`、`pending`。按业务 Skill 解释结果,只有缺项/歧义需要用户补充。`pending`
|
|
24
|
+
统一返回 `succeeded`、`needs_input`、`blocked`、`pending`。按业务 Skill 解释结果,只有缺项/歧义需要用户补充。`pending` 的通知仅查原请求号,不重新发送。Jev 的 `pending` 表示付费推理结果未知,当前无查询接口,不虚构恢复命令或自动重放;具体操作遵循 `next_action`。Jev 正常请求自行校验输入与响应,并附带 availability,无需 AI 再做可用性测试。`npx -y @numa-tech/numa@latest task inspect NAME --json` 用于初始化、schema 查询或故障诊断,不是每次任务的检查步骤。
|
|
24
25
|
|
|
25
26
|
新任务入口必须由实际运行时提供;Skill 版本与 CLI 版本独立,不假定 npm latest 已发布支持。工具已加载即可使用;若明确缺少,报告所需能力和升级要求,不循环发现或静默换版本。旧命令仍供其他业务、兼容流程与诊断使用。
|
|
26
27
|
|
|
27
28
|
## 按任务读取
|
|
28
29
|
|
|
30
|
+
- 制作或修改任何 Numa CLI 业务 Skill:必须参考 [编写契约](references/authoring.md),把硬指标、规则与可执行诊断放进 CLI/应用代码,减少 AI 往返。
|
|
31
|
+
|
|
29
32
|
- 尚未建立 CLI 入口或排查启动失败:完整读取 [启动与版本契约](references/cli-bootstrap.md)。
|
|
30
33
|
- 发现和安装 Skill:使用下文核心流程;依赖安装仍需确认。
|
|
31
34
|
- 项目锁定/同步、上传/审核/发布或 MCP 接入:完整读取 [Skills 与 MCP 工作流](references/skills-workflows.md),执行命令前读取其链接的资源命令契约。
|
|
@@ -37,9 +40,9 @@ description: Numa CLI 与 Skills/MCP 统一入口。用于 numa command not foun
|
|
|
37
40
|
|
|
38
41
|
## 先建立运行入口
|
|
39
42
|
|
|
40
|
-
仅在尚未建立入口时完整阅读 [CLI 启动与版本契约](references/cli-bootstrap.md)。默认使用 `npx -y @numa-tech/numa@latest`,无需全局安装;说明首次可能下载至 npm
|
|
43
|
+
仅在尚未建立入口时完整阅读 [CLI 启动与版本契约](references/cli-bootstrap.md)。默认使用 `npx -y @numa-tech/numa@latest`,无需全局安装;说明首次可能下载至 npm 缓存,直接执行业务 Skill 已明确的命令;版本发现仅在初始化管理或实际启动/能力失败时进行,已有固定入口继续沿用。组织指定版本或本任务已确认的 npx/本地 Node 入口继续沿用。Windows npx.ps1 受限可用 npx.cmd,不降低执行策略。
|
|
41
44
|
|
|
42
|
-
初始化其他旧命令路径时按需要核实 commands --json、模块及精确子命令帮助;正常 task 路径不重复执行。根帮助退出 0 不代表模块存在。缺少功能时请求用户批准版本切换,不自动升级或发布 CLI。遇到 CLI、Node、网络、登录、业务授权失败,要区分具体阶段,不以更换身份、读取凭据或直连上游解决。
|
|
45
|
+
初始化其他旧命令路径时按需要核实 commands --json、模块及精确子命令帮助;正常 task / Jev 路径不重复执行。根帮助退出 0 不代表模块存在。缺少功能时请求用户批准版本切换,不自动升级或发布 CLI。遇到 CLI、Node、网络、登录、业务授权失败,要区分具体阶段,不以更换身份、读取凭据或直连上游解决。
|
|
43
46
|
|
|
44
47
|
## 主动发现适合任务的 Skill
|
|
45
48
|
|
|
@@ -62,6 +65,7 @@ npx -y @numa-tech/numa@latest skills install NAME --namespace NAMESPACE --instan
|
|
|
62
65
|
|
|
63
66
|
## 与业务 Skill 的分工
|
|
64
67
|
|
|
68
|
+
- numa-jev:直接 CLI HTTP 语义判断与类型化结果处理。
|
|
65
69
|
- numa-wecom:企微收件人和发送/回执。
|
|
66
70
|
- numa-notion:Notion 内容与 Grant 范围。
|
|
67
71
|
- numa-oss-access:OSS 授权对象操作。
|
|
@@ -144,6 +144,33 @@
|
|
|
144
144
|
"prompt": "WorkBuddy 已连接旧版 numa-cli MCP,仅提供 numa_wecom_send,没有 numa_wecom_notify;用户希望按新版 Skill 快速发送。离线演练,不实际执行工具。",
|
|
145
145
|
"expected_output": "报告任务工具缺失,说明检查模块/工具过滤与运行时升级;Skill 更新不会更新 MCP 固定 CLI 版本。不擅自终端回退、切换身份、拼装旧版发送链路或声称 npm latest 已支持。",
|
|
146
146
|
"files": []
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": 17,
|
|
150
|
+
"prompt": "已有 Numa CLI 入口,请用 Jev 判断这张工单该分给哪个团队。",
|
|
151
|
+
"expected_output": "直接调用 jev decide,不先执行 help/auth status/capabilities/--check 或 MCP 发现。相同 state 上独立问题合并,消费 CLI 的状态和诊断。",
|
|
152
|
+
"expectations": [
|
|
153
|
+
"直接调用 jev decide,不先执行 help/auth status/capabilities/--check 或 MCP 发现。",
|
|
154
|
+
"相同 state 上独立问题合并,消费 CLI 的状态和诊断。"
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"id": 18,
|
|
159
|
+
"prompt": "Jev 返回 pending、execution.state=unknown,请自动重试直到成功。",
|
|
160
|
+
"expected_output": "说明可能已经计费,不自动重放或改走 MCP。不虚构 Jev 结果查询命令;依据 next_action 处理。",
|
|
161
|
+
"expectations": [
|
|
162
|
+
"说明可能已经计费,不自动重放或改走 MCP。",
|
|
163
|
+
"不虚构 Jev 结果查询命令;依据 next_action 处理。"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": 19,
|
|
168
|
+
"prompt": "新增一个 Numa CLI 业务 Skill,让 AI 先检查环境、登录、健康、字段和概率再调用。",
|
|
169
|
+
"expected_output": "参考 references/authoring.md,将确定性校验及诊断放进 CLI/应用代码。正常任务直接调用;缺少的执行器能力先实现测试,不在 Skill 中伪称存在。",
|
|
170
|
+
"expectations": [
|
|
171
|
+
"参考 references/authoring.md,将确定性校验及诊断放进 CLI/应用代码。",
|
|
172
|
+
"正常任务直接调用;缺少的执行器能力先实现测试,不在 Skill 中伪称存在。"
|
|
173
|
+
]
|
|
147
174
|
}
|
|
148
175
|
]
|
|
149
176
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Numa 业务 Skill 编写契约
|
|
2
|
+
|
|
3
|
+
以后制作或修改 Numa CLI 相关 Skill,先参考 `numa-cli/SKILL.md` 与本页,再读取对应业务命令的真实实现。目标是让 AI 提交意图与事实,让 CLI 执行确定性判断,一次业务调用返回结果或明确下一步。
|
|
4
|
+
|
|
5
|
+
## 默认执行路径
|
|
6
|
+
|
|
7
|
+
- 明确固定入口和最小可执行示例。已有授权、目标和参数足够时直接调用业务命令;不要把 commands/help、版本探测、auth status、whoami、config、capabilities、健康探测或试探性业务调用列为常规前置步骤。
|
|
8
|
+
- 初始化选择入口、实际缺少能力、明确诊断请求与正常业务任务分开描述;不因基础 Skill 的初始化章节又给每项任务增加一轮预检。
|
|
9
|
+
- 复用当前平台身份。CLI 获取/刷新凭据,服务端授权;失败不能自动更换身份、环境、MCP/HTTP 入口或直连供应商。Jev 默认直接 CLI HTTP;其他业务沿用各自已建立入口。
|
|
10
|
+
- 同一状态上的独立语义问题尽量合并;只有后续问题依赖前一个答案时才增加调用。不要让 AI 用另一条模型调用复核确定性的格式与算术。
|
|
11
|
+
|
|
12
|
+
## 把确定性工作交给执行器
|
|
13
|
+
|
|
14
|
+
CLI/应用代码负责 schema、必填项、字段约束、输入输出大小、目标解析、身份配置一致性、数值范围、概率分布、已明确的阈值和业务规则。AI 负责意图、证据选择、语义问题与结果解释。
|
|
15
|
+
|
|
16
|
+
不要在 Skill 中虚构执行器尚未实现的能力。先补实现和测试,再描述新契约。结构有效不代表事实正确;领域阈值不能用演示数字替代用户政策,概率也不能授予写入权限。
|
|
17
|
+
|
|
18
|
+
## 结果与恢复
|
|
19
|
+
|
|
20
|
+
新的任务入口优先输出单个稳定 JSON 文档,状态采用 `succeeded`、`needs_input`、`blocked`、`pending`,并提供安全错误码和可执行 `next_action`。输入错误尽可能附带字段、约束和允许值,避免 AI 另查帮助;无需回显原始敏感值。
|
|
21
|
+
|
|
22
|
+
区分尚未发送、明确拒绝和执行结果未知。涉及计费或写入的请求不自动重放;可查询时给出已有请求的查询入口,不可查询时直说,不编造恢复命令。明确区分平台认证/授权与上游认证/授权,避免引导反复登录。诊断命令成功不等于业务链路成功。
|
|
23
|
+
|
|
24
|
+
## 交付检查
|
|
25
|
+
|
|
26
|
+
- 用离线 mock/契约测试验证:正常任务一次业务请求、非法输入零请求、失败有明确下一步、结果未知不自动重试、stdout 可解析且不泄漏凭据。
|
|
27
|
+
- 检查 Skill 所有示例、参考文档与 CLI 实现一致;诊断命令不可写成正常执行的必经步骤。
|
|
28
|
+
- Skill frontmatter 与 manifest 版本一致,精确依赖存在且符合发布顺序。源码候选版、npm 发布、企业 Skill 发布、宿主重新加载分别报告。
|
|
29
|
+
- 需要线上业务评估时使用代表性样本和明确任务授权;不要把反复可用性测试交给每次使用 Skill 的 AI。
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Numa CLI 启动与版本契约
|
|
2
2
|
|
|
3
|
-
安装 Skill 不会安装 Numa CLI。本页用于首次初始化、旧命令兼容路径或故障诊断。已连接 MCP 的正常任务直接使用主 Skill 指定的任务工具,不运行终端检查;已有 task
|
|
3
|
+
安装 Skill 不会安装 Numa CLI。本页用于首次初始化、旧命令兼容路径或故障诊断。已连接 MCP 的正常任务直接使用主 Skill 指定的任务工具,不运行终端检查;已有 task / Jev 入口也不逐项重做以下前置检查。业务 Skill 已给出明确命令时,首次 npx 启动也可以直接执行该命令,不先探测版本和帮助。
|
|
4
4
|
|
|
5
5
|
## 选择唯一入口
|
|
6
6
|
|
|
7
7
|
1. 默认通过 `npx -y @numa-tech/numa@latest` 启动,不检查或依赖全局 `numa`。首次可能下载官方包到 npm 缓存;需要 Node.js/npm 与网络(已有缓存时按 npm 行为复用)。组织指定版本优先;本任务已确认的固定 npx 版本或用户明确批准的本地 Node 入口继续沿用。
|
|
8
|
-
2.
|
|
8
|
+
2. 仅用户要求初始化管理、固定版本或实际出现兼容问题时发现一次实际版本(不是正常业务调用的前置步骤):
|
|
9
9
|
|
|
10
10
|
```sh
|
|
11
11
|
npx -y @numa-tech/numa@latest --cli-version
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
## 核实实际命令能力
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
仅命令未知、实际报能力缺失或用户要求诊断时,使用同一入口运行 `commands --json`、模块和精确子命令的 `--help`。帮助退出码 0 但只显示根命令,不证明模块存在。验证实际子命令、选项和输出字段,不只看版本号。
|
|
23
23
|
|
|
24
24
|
现有版本缺少必要命令时,报告能力缺口;请求或沿用用户已批准的版本切换/开发入口,再重新核验。不要擅自升级、构建或发布 CLI,不编造参数,不绕过平台调用上游服务。即使最新包也可能尚未发布某模块。只读降级仅使用该 Skill 明确允许且实际存在的命令;不能以降级名义执行未授权写入。
|
|
25
25
|
|
package/skills/numa-jev/SKILL.md
CHANGED
|
@@ -2,21 +2,22 @@
|
|
|
2
2
|
name: numa-jev
|
|
3
3
|
license: MIT
|
|
4
4
|
metadata:
|
|
5
|
-
version: "0.1.
|
|
6
|
-
description:
|
|
5
|
+
version: "0.1.1"
|
|
6
|
+
description: 通过 Numa Jev CLI 直接调用企业平台 API,使用 TypeSafe 的结构化判断,协助终端 Agent、ChatGPT 做分类、路由、评分和验证,或为 K8s 自研 Agent 编写集成代码。按任务构造 state 与 choice、score、noul 问题,处理概率和失败;使用 Numa 用户或服务身份,不管理 OpenRouter 密钥。
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Numa Jev
|
|
10
10
|
|
|
11
11
|
Jev 为应用提供可组合的语义判断,不替代写代码或对话的主模型。代码处理规则、计算、查找、授权和执行,Jev 回答需要语义理解的具体问题。
|
|
12
12
|
|
|
13
|
-
本包基于官方 `typesafe-ai` Skill 定制,保留问题设计方法,改为企业
|
|
13
|
+
本包基于官方 `typesafe-ai` Skill 定制,保留问题设计方法,改为企业 CLI / 平台接入。来源与许可见 [来源记录](references/upstream.md) 和 [LICENSE](LICENSE)。这是源码版本,安装、企业发布、MCP 注册和目标环境部署分别核验。
|
|
14
14
|
|
|
15
15
|
## 选择使用方式
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
17
|
+
- **终端中做判断(默认)**:读取 [CLI 调用指引](references/cli-usage.md),直接调用 `numa jev decide --file request.json --json`。CLI 通过平台 HTTP API 完成校验、身份处理和可用性反馈;不先运行 capabilities、--check、帮助、认证检查或试探性推理,即使宿主同时连接了 MCP 也沿用此 CLI 路径。
|
|
18
|
+
- **仅有远程工具的 ChatGPT**:只有用户明确要求 MCP 接入时读取 [远程 MCP 指引](references/mcp-usage.md)。这条独立接入路径不作为 CLI 失败时的回退;不能假定 ChatGPT 会加载本地 Skill。
|
|
19
|
+
- **为应用接入 Jev**:读取 [应用集成指引](references/application-integration.md),优先生成调用平台 HTTP API 的代码;K8s 运行时使用独立服务身份,不需要安装 Skill。
|
|
20
|
+
- **安装或修复启动**:加载同来源基础 Skill `numa-cli@1.4.2`。仅首次建立入口、实际缺少命令或用户要求诊断时核实启动能力;正常任务不重复探测。依赖 manifest 只声明 Skill,安装本包不会自动安装 CLI 或连接 MCP。源码能力不等于已发布;缺少功能时按既有授权处理升级。
|
|
20
21
|
|
|
21
22
|
终端、ChatGPT 和服务端调用都通过平台授权。客户端不索取 OpenRouter Key,不设置上游代理,不因连接失败直连 OpenRouter。**平台到 OpenRouter 必须走已配置的服务端出网代理**;故障交给平台维护者处理,客户端不得解除代理或改换身份。
|
|
22
23
|
|
|
@@ -32,7 +33,7 @@ Jev 为应用提供可组合的语义判断,不替代写代码或对话的主
|
|
|
32
33
|
|
|
33
34
|
完整问题写进 `instructions`,候选定义写进 `criteria`。问题 ID 仅用于结果索引,不能替代问题语义。引用嵌套上下文时使用明确路径,例如 `ticket.message`。模型无法选择未提供的候选;选择原文值之前先检查候选覆盖。
|
|
34
35
|
|
|
35
|
-
每个问题描述一个可独立使用的判断。官方支持结构化描述;企业 MCP
|
|
36
|
+
每个问题描述一个可独立使用的判断。官方支持结构化描述;企业 MCP 和平台可能有更窄的校验,以当前 CLI 的字段诊断和平台契约为准,无需事先查询 capabilities。暂不支持某种结构时,将必要定义表述清楚,避免丢失含义,也不要绕过平台。
|
|
36
37
|
|
|
37
38
|
**同一 state 上相互独立的问题合并为一次请求**。问题不能看到同批其他答案;预先提出的分支问题须明确假设,由代码只消费适用分支。只有需要前一步答案来查资料、构造新状态或生成下一组选项时,才发下一次请求。遵守平台问题数与大小限制,统计实际用量。
|
|
38
39
|
|
|
@@ -42,13 +43,14 @@ Jev 为应用提供可组合的语义判断,不替代写代码或对话的主
|
|
|
42
43
|
- `noul` 是 0–1 的成立概率,无独立 confidence;接近 0.5 表示 yes/no 难分,不表示“中等程度”。
|
|
43
44
|
- Choice/Score 的 confidence 描述分布集中程度,不证明事实正确,也不授予执行权限。阈值须用用户领域样本和误判后果验证;不要把演示阈值当通用政策。
|
|
44
45
|
- 评分可以组合权重、排序或筛选;必须命中的规则单独判断,不能用其他高分抵消。证据与问题未变时,调整业务权重不必重新推理。
|
|
46
|
+
- 输入限制、答案覆盖、题型、候选范围、概率区间与分布总和由 CLI 校验,AI 不重复做可用性测试或硬指标复核。读取 `status` 与 `next_action`:成功消费答案;needs_input 修正缺项;blocked 按诊断处理;pending 说明可能已计费,不自动重放。CLI 暂无结果查询接口,不能虚构轮询命令。
|
|
45
47
|
- 已知规则和最终执行留在代码/业务工作流。低置信度时按业务要求澄清或交给人/主 LLM;无需消费的分支不因低置信度影响主路径。
|
|
46
48
|
- 分清观察事实与推断;状态已变化时检查旧答案是否仍适用。报告类型化结果和必要用量,不编造 Jev 的推理过程。解释文字由当前 Agent 根据输入和答案组织。
|
|
47
49
|
|
|
48
50
|
## 文档与验证
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
只有开发集成需要核实上游细节时才从 [官方索引](https://docs.typesafe.ai/llms.txt) 查相关页面,重点读取 [API](https://docs.typesafe.ai/api)、[置信度](https://docs.typesafe.ai/confidence) 和贴近业务的 cookbook;OpenRouter 的传输契约见 [Jev Decisions](https://openrouter.ai/docs/guides/community/jev)。官方直连地址、API Key 和 SDK 默认重试配置不能直接搬到企业调用中。
|
|
51
53
|
|
|
52
54
|
需要探索设计时,可从候选值选择、证据相关性、组合评分、声明验证和状态变化后的再判断中选择适合目标的形态,不局限于分类。以代表性样本验证最终业务行为,分别定位证据缺失、判断错误、组合代码错误和服务故障。
|
|
53
55
|
|
|
54
|
-
[请求示例](assets/decision.json)
|
|
56
|
+
[请求示例](assets/decision.json) 是合成客服状态,含三个独立问题。正常任务直接调用,CLI 自动验证形状;开发阶段可离线验证业务分支。实际调用会产生上游用量,执行范围沿用用户任务授权。平台 capability 成功不等于 OpenRouter 推理链路已验证。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 为 K8s Agent 开发集成
|
|
2
2
|
|
|
3
|
-
Skill 在开发阶段指导编码 Agent,运行容器不需要读取 Skill
|
|
3
|
+
Skill 在开发阶段指导编码 Agent,运行容器不需要读取 Skill。应用优先直接调用平台 HTTP;只有显式选择远程工具集成时才使用已有 MCP 客户端调用 [同一工具合同](mcp-usage.md);两者必须保留真实服务主体,不能共享某个管理员的个人登录缓存。
|
|
4
4
|
|
|
5
5
|
## HTTP 合同
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ API base 使用目标环境已确认的配置,必要时包含网关服务前
|
|
|
9
9
|
- `GET /api/v1/jev/capabilities`:`jev-runtime-access/view`。
|
|
10
10
|
- `POST /api/v1/jev/decisions`:`jev-runtime-access/edit`,JSON 正文为 `{state, questions, model?}`,**HTTP 不带 MCP 的 `body` 外层**。
|
|
11
11
|
|
|
12
|
-
成功 HTTP body 是原生结果 `{model, answers, usage, id?, provider?}`,没有 MCP 的 `structuredContent` 或 `status/data` 外层。API 失败保留 HTTP
|
|
12
|
+
成功 HTTP body 是原生结果 `{model, answers, usage, id?, provider?}`,没有 MCP 的 `structuredContent` 或 `status/data` 外层。API 失败保留 HTTP 状态与平台安全错误码,不能按成功答案解析。恢复原则见 [CLI 指引](cli-usage.md)(CLI 的 status/next_action 是本地封装,HTTP API 本身不返回这些字段)。
|
|
13
13
|
|
|
14
14
|
配置固定平台地址并限制重定向;使用服务端正常校验的 TLS。令牌只发到配置的企业服务端点,不传到 OpenRouter。设置超时和应用并发上限;每副本的并发限制不等于跨集群消费额度。POST 默认不自动重试,SDK/HTTP 框架的隐式重试也要关闭。
|
|
15
15
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Jev CLI:直接提交业务请求
|
|
2
|
+
|
|
3
|
+
正常任务沿用已建立的 CLI 入口,直接执行:
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
numa jev decide --file request.json --json
|
|
7
|
+
# 或通过标准输入
|
|
8
|
+
cat request.json | numa jev decide --file - --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
无需先运行 `--help`、`--check`、`capabilities`、`auth status`、`whoami` 或 MCP 发现,也不发送一条试探性推理。CLI 会在真实请求中报告输入、身份、权限和服务问题。首次启动沿用基础 Skill 的 npx 入口;只有实际缺少命令或启动失败时才诊断版本。本实现目前是源码能力,不能据此声称 npm latest 已包含它。
|
|
12
|
+
|
|
13
|
+
输入使用 `{state, questions, model?}`,示例见 [decision.json](../assets/decision.json)。CLI 直接 POST 到当前平台 `/api/v1/jev/decisions`,保留 API 网关前缀,不经过 MCP,不包装 `body`,也不启动 `numa serve`。默认省略 model,由平台选择。
|
|
14
|
+
|
|
15
|
+
## CLI 与 AI 的分工
|
|
16
|
+
|
|
17
|
+
AI 提供任务事实、语义问题与候选;同一 state 上独立问题合并提交。CLI 负责 UTF-8、JSON 重复字段、大小、深度、模型范围、问题数与候选限制,在任何身份解析或网络调用之前拒绝非法输入;成功响应还校验答案覆盖、题型、选择范围、分值、confidence、概率分布总和与用量。
|
|
18
|
+
|
|
19
|
+
不要让 AI 重复计算这些硬指标,也不要因 CLI 已通过校验再请求一次 Jev“确认结果”。CLI 的校验通过只证明结构和数值符合契约,不证明语义判断正确。领域阈值、权重及执行权限来自用户或已有业务政策;CLI 尚无通用业务规则引擎,不虚构阈值或未实现的 policy 参数。确定性业务计算放入应用代码,证据未变化时不重新推理。
|
|
20
|
+
|
|
21
|
+
## 身份与请求边界
|
|
22
|
+
|
|
23
|
+
复用 `loadConfig("platform")` 和现有 `numa login --platform` 身份;凭据获取/正常刷新在 CLI 内处理,AI 不读取 Token 或 Secret。机器身份由受管环境提供;机器身份 401 或凭据获取失败返回 inspect_identity,不要求浏览器登录。配置、身份或授权失败不自动换用户、namespace、MCP 或供应商入口。
|
|
24
|
+
|
|
25
|
+
不接受 MCP 的 `--namespace`、`--service`、`--gateway`、`--endpoint` 等选择参数。平台负责上游密钥、代理和授权。决策可能计费;CLI 每次调用只提交一次决策,401、限流、超时和响应异常都不自动重放。
|
|
26
|
+
|
|
27
|
+
## 一个 JSON 结果决定下一步
|
|
28
|
+
|
|
29
|
+
命令无论是否带 `--json` 都输出单个 JSON 文档;正常响应为:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"ok": true,
|
|
34
|
+
"status": "succeeded",
|
|
35
|
+
"data": {"model": "实际模型", "answers": {"urgent": {"type": "noul", "noul": 0.9}}, "usage": {}},
|
|
36
|
+
"availability": {"state": "available", "source": "decision"},
|
|
37
|
+
"validation": {"input": "passed", "response": "passed"},
|
|
38
|
+
"execution": {"state": "completed", "automatic_retry": false}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
| status | 含义与行动 |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| `succeeded` | 使用 `data.answers` 和 `data.usage`,无需另做可用性测试 |
|
|
45
|
+
| `needs_input` | 按 `error.details.issues` 的字段和原因修正输入后直接调用;本地错误的 execution 为 `not_sent` |
|
|
46
|
+
| `blocked` | 按 `next_action` 处理当前身份登录、授权、配置或限流;上游密钥/权限故障交管理员,不反复登录 |
|
|
47
|
+
| `pending` | 请求可能已执行和计费,`execution.state=unknown`;保留错误与已有结果信息,核对后再决定是否重试,不自动补发 |
|
|
48
|
+
|
|
49
|
+
`questions[0]` 等诊断路径表示请求中的问题顺序,从 0 开始,避免回显敏感的问题 ID。平台拒绝可能只提供安全错误码,不保证附带逐字段诊断。非零退出码仍须读取 JSON:输入错误 2、平台认证 3、平台权限 4、其他错误 1。上游 403 属于服务故障,不是平台身份权限不足。
|
|
50
|
+
|
|
51
|
+
`pending` 不表示存在可轮询任务;当前没有 Jev 结果查询接口,也不能虚构恢复命令或请求号。CLI 不把未知结果改成概率 0。
|
|
52
|
+
|
|
53
|
+
## 可选诊断
|
|
54
|
+
|
|
55
|
+
仅用户主动诊断或开发契约时使用:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
numa jev decide --file request.json --check --json
|
|
59
|
+
numa jev capabilities --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`--check` 离线校验,返回 `availability.state=not_checked`,不会登录、联网或创建业务客户端;正常调用已包含同样校验。capabilities 只读取配置与限制,其 `inference_verified=false`,不证明真实推理链路可用;也不是决定是否执行正常任务的前置步骤。
|