@numa-tech/numa 1.15.0 → 1.16.0
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 +53 -4
- package/dist/ai-registry/commands.d.ts +8 -1
- package/dist/ai-registry/commands.js +70 -15
- package/dist/ai-registry/commands.js.map +1 -1
- package/dist/ai-registry/mcp-installer.js +17 -0
- package/dist/ai-registry/mcp-installer.js.map +1 -1
- package/dist/ai-registry/sync.js +3 -2
- package/dist/ai-registry/sync.js.map +1 -1
- package/dist/cli.js +26 -14
- package/dist/cli.js.map +1 -1
- package/dist/command-catalog.js +7 -3
- package/dist/command-catalog.js.map +1 -1
- package/dist/interactive/entry.d.ts +2 -0
- package/dist/interactive/entry.js +91 -0
- package/dist/interactive/entry.js.map +1 -0
- package/dist/interactive/mcp.d.ts +4 -0
- package/dist/interactive/mcp.js +88 -0
- package/dist/interactive/mcp.js.map +1 -0
- package/dist/interactive/prompts.d.ts +26 -0
- package/dist/interactive/prompts.js +79 -0
- package/dist/interactive/prompts.js.map +1 -0
- package/dist/interactive/registry.d.ts +28 -0
- package/dist/interactive/registry.js +147 -0
- package/dist/interactive/registry.js.map +1 -0
- package/dist/maintenance/modules.js +1 -1
- package/dist/maintenance/modules.js.map +1 -1
- package/dist/mcp/catalog.d.ts +35 -0
- package/dist/mcp/catalog.js +203 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/commands.d.ts +3 -0
- package/dist/mcp/commands.js +71 -29
- package/dist/mcp/commands.js.map +1 -1
- package/dist/mcp/environment.d.ts +5 -0
- package/dist/mcp/environment.js +35 -0
- package/dist/mcp/environment.js.map +1 -0
- package/dist/mcp/inspect.d.ts +35 -0
- package/dist/mcp/inspect.js +17 -0
- package/dist/mcp/inspect.js.map +1 -0
- package/dist/mcp/install.d.ts +8 -1
- package/dist/mcp/install.js +15 -2
- package/dist/mcp/install.js.map +1 -1
- package/dist/server.d.ts +2 -3
- package/dist/server.js +19 -7
- package/dist/server.js.map +1 -1
- package/package.json +4 -4
- package/skills/numa-cli/SKILL.md +2 -1
- package/skills/numa-cli/evals/evals.json +12 -0
- package/skills/numa-cli/numa-skill.json +1 -1
- package/skills/numa-cli/references/cli-mcp.md +48 -1
package/dist/server.js
CHANGED
|
@@ -2,7 +2,6 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { authenticatedBackendRequest } from "./backend.js";
|
|
4
4
|
import { CLI_NAME, PACKAGE_VERSION, PRODUCT_NAME } from "./branding.js";
|
|
5
|
-
import { COMMAND_CATALOG } from "./command-catalog.js";
|
|
6
5
|
import { loadConfig } from "./config.js";
|
|
7
6
|
import { initializeApplicationMembership } from "./authorization/enrollment.js";
|
|
8
7
|
import { currentIdentity, requireAnyRole, RoleRequiredError } from "./identity.js";
|
|
@@ -10,7 +9,7 @@ import { AuthError, completeBrowserLogin, deleteTokenCache, readTokenCache, star
|
|
|
10
9
|
import { registerWecomTools } from "./wecom/tools.js";
|
|
11
10
|
import { registerNotionTools } from "./notion/tools.js";
|
|
12
11
|
import { registerOssTools } from "./oss/tools.js";
|
|
13
|
-
import {
|
|
12
|
+
import { selectMcpTools, searchModules, moduleCommands } from "./mcp/catalog.js";
|
|
14
13
|
const sessions = new Map();
|
|
15
14
|
function textResult(text, structuredContent, isError = false) {
|
|
16
15
|
return {
|
|
@@ -28,16 +27,29 @@ function errorResult(error) {
|
|
|
28
27
|
return textResult(`Error: ${message}`, { ok: false, code, message }, true);
|
|
29
28
|
}
|
|
30
29
|
export function createServer(dependencies = {}) {
|
|
30
|
+
const selection = selectMcpTools(dependencies);
|
|
31
31
|
const server = new McpServer({
|
|
32
|
-
name: `${CLI_NAME}-platform-cli`,
|
|
32
|
+
name: dependencies.serverName ?? `${CLI_NAME}-platform-cli`,
|
|
33
33
|
version: PACKAGE_VERSION
|
|
34
|
-
});
|
|
35
|
-
const
|
|
34
|
+
}, { instructions: selection.instructions });
|
|
35
|
+
const register = server.registerTool.bind(server);
|
|
36
|
+
server.registerTool = (...args) => {
|
|
37
|
+
const tool = register(...args);
|
|
38
|
+
if (!selection.tools.includes(args[0]))
|
|
39
|
+
tool.remove();
|
|
40
|
+
return tool;
|
|
41
|
+
};
|
|
42
|
+
const modules = new Set(selection.modules);
|
|
43
|
+
server.registerTool("numa_module_catalog", {
|
|
44
|
+
description: "Search Numa modules by task, keyword or Skill name. Discovery does not enable tools. Reports available and currently enabled tools; restart with a new configuration to change selection.",
|
|
45
|
+
inputSchema: { query: z.string().max(256).optional() },
|
|
46
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
47
|
+
}, async ({ query }) => jsonResult({ modules: searchModules(query).map(m => ({ ...m, enabled: selection.modules.includes(m.id), enabledTools: m.tools.filter(t => selection.tools.includes(t)) })), enabledTools: selection.tools }));
|
|
36
48
|
if (modules.has("notion"))
|
|
37
49
|
registerNotionTools(server);
|
|
38
50
|
server.registerTool("numa_command_catalog", {
|
|
39
51
|
title: `Get ${PRODUCT_NAME} CLI Command Catalog`,
|
|
40
|
-
description: "List CLI
|
|
52
|
+
description: "List CLI counterparts of enabled MCP tools. This is documentation, not a shell executor or a full CLI command catalog.",
|
|
41
53
|
inputSchema: {},
|
|
42
54
|
annotations: {
|
|
43
55
|
readOnlyHint: true,
|
|
@@ -45,7 +57,7 @@ export function createServer(dependencies = {}) {
|
|
|
45
57
|
idempotentHint: true,
|
|
46
58
|
openWorldHint: false
|
|
47
59
|
}
|
|
48
|
-
}, async () => jsonResult({ schema_version: 1, commands:
|
|
60
|
+
}, async () => jsonResult({ schema_version: 1, modules: selection.modules, tools: selection.tools, commands: moduleCommands(selection.modules, selection.tools) }));
|
|
49
61
|
if (modules.has("auth")) {
|
|
50
62
|
server.registerTool("numa_auth_status", {
|
|
51
63
|
title: `Get ${PRODUCT_NAME} Auth Status`,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@numa-tech/numa",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
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": [
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"typecheck": "turbo run typecheck root:typecheck",
|
|
35
35
|
"root:typecheck": "tsc --noEmit",
|
|
36
36
|
"test": "turbo run test root:test",
|
|
37
|
-
"root:test": "node --import tsx --test src/branding.test.ts src/app-config.test.ts src/platform-profile.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/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/commands.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/pipeline/client.test.ts src/pipeline/commands.test.ts src/gitops/client.test.ts src/gitops/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/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/enrollment.test.ts src/authorization/group-client.test.ts src/authorization/group-commands.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",
|
|
37
|
+
"root:test": "node --import tsx --test src/branding.test.ts src/app-config.test.ts src/platform-profile.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/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/commands.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/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/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/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/enrollment.test.ts src/authorization/group-client.test.ts src/authorization/group-commands.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",
|
|
38
38
|
"pack:check": "turbo run pack:check root:pack:check",
|
|
39
39
|
"root:pack:check": "node scripts/check-root-package.mjs",
|
|
40
40
|
"boundaries": "node scripts/check-workspace-boundaries.mjs",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@clack/prompts": "^1.7.0",
|
|
59
59
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
60
|
-
"@numa-tech/cli-auth": "1.
|
|
61
|
-
"@tokensrc/codex": "1.
|
|
60
|
+
"@numa-tech/cli-auth": "1.16.0",
|
|
61
|
+
"@tokensrc/codex": "1.16.0",
|
|
62
62
|
"ali-oss": "^6.23.0",
|
|
63
63
|
"commander": "^14.0.3",
|
|
64
64
|
"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
|
+
version: "1.3.0"
|
|
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
|
|
|
@@ -14,6 +14,7 @@ description: Numa CLI 与 Skills/MCP 统一入口。用于 numa command not foun
|
|
|
14
14
|
- 首次执行 CLI:完整读取 [启动与版本契约](references/cli-bootstrap.md)。
|
|
15
15
|
- 发现和安装 Skill:使用下文核心流程;依赖安装仍需确认。
|
|
16
16
|
- 项目锁定/同步、上传/审核/发布或 MCP 接入:完整读取 [Skills 与 MCP 工作流](references/skills-workflows.md),执行命令前读取其链接的资源命令契约。
|
|
17
|
+
- 模块检索、交互安装和自定义 MCP 环境变量:完整读取 [CLI MCP 服务与安装](references/cli-mcp.md)。
|
|
17
18
|
- 将 CLI 的 OSS/企微能力接入 WorkBuddy、Claude、Codex、ChatGPT 等 Agent:完整读取 [CLI MCP 服务与安装](references/cli-mcp.md)。
|
|
18
19
|
- 自动更新开关、跟踪状态或维护检查:读取 [更新与维护](references/skills-updates.md)。
|
|
19
20
|
|
|
@@ -120,6 +120,18 @@
|
|
|
120
120
|
"prompt": "用机器 Client worker 的 /protected/worker.secret 配置 Claude MCP,不要用我的个人账号。",
|
|
121
121
|
"expected_output": "明确 client_credentials 与 Secret 文件路径,Issuer/API 由既有 profile 提供;不读取秘密,不回退 browser;安装精确版本并验证真实身份。",
|
|
122
122
|
"files": []
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": 13,
|
|
126
|
+
"prompt": "我想只查询 OSS 文件,安装到 WorkBuddy 用户范围。添加 LOG_LEVEL=debug,不要企微或上传工具。已经授权安装。",
|
|
127
|
+
"expected_output": "核实运行时帮助后通过 modules 和 mcp tools 查能力,选择 oss 及只读查询工具,保留目标与身份。传 --env LOG_LEVEL=debug,先 plan --json 后完整参数安装,不启无人操作的 TUI,不重复确认,不执行 OSS 写入。",
|
|
128
|
+
"files": []
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": 14,
|
|
132
|
+
"prompt": "给同事一个交互安装 numa-wecom Skill 的办法;我用 CI 安装时不希望出现提示。",
|
|
133
|
+
"expected_output": "核实版本支持后,人类终端用 skills install --interactive 选择授权空间、online 版本、Agent、范围并确认依赖;CI 使用完整参数 --plan --json,再按授权加 --with-dependencies 执行。解释非 TTY/JSON 不询问,缺少必要参数报错。",
|
|
134
|
+
"files": []
|
|
123
135
|
}
|
|
124
136
|
]
|
|
125
137
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- `numa mcp install-cli`:安装上述 CLI 自身的服务,不需要查询 Nacos namespace。
|
|
10
10
|
- `numa mcp install NAME` / `bridge`:安装或桥接企业 Registry 的 MCP 资源,继续遵循 [资源工作流](skills-workflows.md) 与 Router 授权。
|
|
11
11
|
|
|
12
|
-
安装默认模块为 `auth,oss,wecom`。可用 `--modules auth,oss,wecom,notion` 调整;`platform`
|
|
12
|
+
安装默认模块为 `auth,oss,wecom`。可用 `--modules auth,oss,wecom,notion` 调整;`platform` 暴露通用平台请求工具,只有明确需要时才加入。默认附带 `numa_command_catalog` 和 `numa_module_catalog`;工具过滤可以继续缩小公共工具集合。直接 `serve` 不传模块时保留全部模块,以兼容已有配置。
|
|
13
13
|
|
|
14
14
|
## 主动安装到 Agent
|
|
15
15
|
|
|
@@ -72,3 +72,50 @@ ID 必须是真实的 `tunnel_` 加 32 位小写十六进制字符。自动初
|
|
|
72
72
|
OSS 暴露 grants/list/search/stat/download/upload/delete,详见 `numa-oss-access`。企微暴露 capabilities/recipients/recipient_by_email/send/status 和受控映射工具,详见 `numa-wecom`。均沿用 CLI 的当前身份、平台授权和审计,不提供任意 shell 执行工具。
|
|
73
73
|
|
|
74
74
|
从 Agent 刷新或重启 MCP 后读取 tools/list,核对所选模块;再执行用户任务需要的只读查询。不要为了验证安装发送消息、上传或删除文件。下载会写 MCP 服务所在机器,上传读取该机器路径;尤其 ChatGPT Tunnel 下不能假定聊天附件已存在本地。写入工具的 `confirmed:true` 只在用户已明确授权目标与内容时传入。最终分别报告配置写入、服务连接、工具发现及真实业务结果。
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## 模块检索与交互安装(下一版本能力)
|
|
78
|
+
|
|
79
|
+
先核对实际运行时的 `modules --help`、`mcp install-cli --help` 和 `skills install --help`。
|
|
80
|
+
这些新增功能准备随下一版发布,不能仅凭本 Skill 假定 npm latest 已支持。
|
|
81
|
+
|
|
82
|
+
人类用户在 TTY 无参运行 `numa` 进入选择入口;`numa mcp`、`numa skills` 进入对应安装向导。
|
|
83
|
+
`mcp install-cli`、`mcp install`、`skills install` 缺少目标时引导补齐。显式 `--interactive` 强制向导,
|
|
84
|
+
保留已有参数。`--no-interactive`、JSON 和非终端不询问;参数完整的调用直接使用默认值执行。
|
|
85
|
+
|
|
86
|
+
Agent 不启动无人操作的 TUI。先用 `numa modules --search QUERY --json` 找到适合用途的模块,
|
|
87
|
+
再用 `numa mcp tools --modules MODULES --json` 核实真实工具、描述和 schema。
|
|
88
|
+
只在目标、范围、版本或身份缺失时通过宿主提问能力收集信息;用户已指定或已授权的内容不重复确认。
|
|
89
|
+
生成 `--plan --json` 的具体结果,然后按已批准范围使用完整参数执行。
|
|
90
|
+
|
|
91
|
+
- `--modules auth,oss,wecom,notion,platform` 选择业务模块;模块结果包含相关 Skills 名称。
|
|
92
|
+
- `--tools NAME,NAME` 仅暴露所选工具,`--exclude-tools NAME,NAME` 排除工具;未知或不属于模块的名称报错。
|
|
93
|
+
- `--server-name NAME` 设置协议名称,`--server-description TEXT` 设置用途;真实模块和工具范围自动追加。
|
|
94
|
+
- `numa_module_catalog` 仅用于发现,不会扩大工具权限。`numa_command_catalog` 只返回实际启用工具的 CLI 对应项。
|
|
95
|
+
- 人类向导可选择只读集合;该集合依据工具只读标注生成,不代替服务端授权。
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
numa modules --search 文件 --json
|
|
99
|
+
numa mcp install-cli --agent workbuddy --scope user --modules oss \
|
|
100
|
+
--tools numa_oss_search,numa_oss_stat --server-description '授权文件查询' \
|
|
101
|
+
--env LOG_LEVEL=info --plan --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 追加环境变量
|
|
105
|
+
|
|
106
|
+
`mcp install-cli --env NAME=VALUE` 可重复,写入 MCP 子进程环境并保留生成器原有变量;值支持等号和空字符串。
|
|
107
|
+
重复变量名会拒绝。敏感字段在输出计划中隐藏,向导用隐藏输入;实际值写入私有客户端配置或 Tunnel launcher。
|
|
108
|
+
不要把秘密写进聊天、命令示例或共享日志。CLI 身份字段使用专门的 `--auth-mode`、`--client-id`、
|
|
109
|
+
`--client-secret-file`,禁止通过 `--env` 覆盖身份模式、Client ID、Secret 或 Secret 文件路径。
|
|
110
|
+
普通业务配置可通过环境变量追加;不修改 `.zshenv`,不自行换平台地址。
|
|
111
|
+
|
|
112
|
+
企业 `mcp install NAME --transport bridge --env NAME=VALUE` 也支持本地启动环境。
|
|
113
|
+
远程 HTTP/ChatGPT endpoint 没有可配置的本地环境,不能使用 `--env`。
|
|
114
|
+
Registry 不把这些值存入 manifest/lock;在新机器恢复时重新提供自定义环境变量。
|
|
115
|
+
|
|
116
|
+
## 交互安装 Skills
|
|
117
|
+
|
|
118
|
+
`numa skills install --interactive` 依次选择可安装的 namespace/instance、资源、已发布版本、Agent 和 scope。
|
|
119
|
+
输入关键词检索当前页,使用下一页或精确名称继续定位。只安装 online 版本;草稿和待审版本不进入版本选项。
|
|
120
|
+
写入前展示依赖、摘要、来源和目标路径,确认包含必要依赖。选择精确版本意味着固定版本;自动更新设置另按更新指引管理。
|
|
121
|
+
Agent 继续使用资源工作流的 inspect 与 plan,并在已批准依赖时传 `--with-dependencies`;完整参数调用不会等待终端确认。
|