@gt-fe/eap-cli 0.2.19 → 0.2.21
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 +304 -304
- package/dist/static/playground-app/assets/{index-Bg09N-Dc.css → index-B3p2mvcC.css} +1 -1
- package/dist/static/playground-app/assets/{index-CjAzCUkk.js → index-EGQ_46bX.js} +65 -65
- package/dist/static/playground-app/index.html +2 -2
- package/dist/templates/README.md +51 -51
- package/dist/templates/agent-api-orchestration/README.md +326 -326
- package/dist/templates/agent-api-orchestration/eap.config.json +1 -1
- package/dist/templates/agent-api-orchestration/graph.json +35 -35
- package/dist/templates/agent-api-orchestration/package.json +1 -1
- package/dist/templates/dag-workflow/README.md +102 -102
- package/dist/templates/dag-workflow/agent.manifest.json +19 -19
- package/dist/templates/dag-workflow/eap.config.json +1 -1
- package/dist/templates/dag-workflow/gitignore +51 -51
- package/dist/templates/dag-workflow/graph.json +51 -51
- package/dist/templates/dag-workflow/skills/README.md +116 -116
- package/dist/templates/plan-and-execute/README.md +109 -109
- package/dist/templates/plan-and-execute/agent.manifest.json +19 -19
- package/dist/templates/plan-and-execute/eap.config.json +1 -1
- package/dist/templates/plan-and-execute/eap.lock.yaml +5 -5
- package/dist/templates/plan-and-execute/gitignore +51 -51
- package/dist/templates/plan-and-execute/graph.json +49 -49
- package/dist/templates/plan-and-execute/skills/README.md +120 -120
- package/dist/templates/simple-flow/README.md +87 -87
- package/dist/templates/simple-flow/agent.manifest.json +19 -19
- package/dist/templates/simple-flow/eap.config.json +1 -1
- package/dist/templates/simple-flow/gitignore +51 -51
- package/dist/templates/simple-flow/graph.json +32 -32
- package/dist/templates/simple-flow/package.json +10 -10
- package/dist/templates/simple-flow/skills/README.md +113 -113
- package/dist/templates/single-agent-with-tools/README.md +138 -138
- package/dist/templates/single-agent-with-tools/agent.manifest.json +19 -19
- package/dist/templates/single-agent-with-tools/eap.config.json +1 -1
- package/dist/templates/single-agent-with-tools/eap.lock.yaml +5 -5
- package/dist/templates/single-agent-with-tools/gitignore +51 -51
- package/dist/templates/single-agent-with-tools/graph.json +41 -41
- package/dist/templates/single-agent-with-tools/skills/README.md +119 -119
- package/dist/templates/single-agent-with-tools/tools/http-weather/toolset.manifest.json +73 -73
- package/dist/templates/single-agent-with-tools/tools/web-search/toolset.manifest.json +41 -41
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,304 +1,304 @@
|
|
|
1
|
-
# @gt-fe/eap-cli
|
|
2
|
-
|
|
3
|
-
`@gt-fe/eap-cli` 是 EAP 单 Agent 项目的命令行入口。它负责命令参数、登录交互、终端输出、Playground 和聊天体验;项目发现、依赖安装、Runtime 目录物化、服务创建、打包与验包统一委托给 `@gt-fe/eap-sdk`。
|
|
4
|
-
|
|
5
|
-
如果你是第一次开发 Agent,请先阅读 [场景一:常规 Agent 开发手册](../../docs/developer-guide.md)。本文是 CLI 命令和选项的详细参考。
|
|
6
|
-
|
|
7
|
-
跨模块的开发、配置、交付和排障入口见 [dev-tools 文档](../../docs/README.md)。
|
|
8
|
-
|
|
9
|
-
## 安装
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install -g @gt-fe/eap-cli
|
|
13
|
-
eap --help
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
使用 npm 私服时,在 `~/.npmrc` 中配置:
|
|
17
|
-
|
|
18
|
-
```ini
|
|
19
|
-
@gt-fe:registry=https://npm.your-company.com/
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## 项目结构
|
|
23
|
-
|
|
24
|
-
一个项目只包含一个 Agent:
|
|
25
|
-
|
|
26
|
-
```text
|
|
27
|
-
<project>/
|
|
28
|
-
├── agent.manifest.json
|
|
29
|
-
├── graph.json
|
|
30
|
-
├── eap.config.json
|
|
31
|
-
├── eap.lock.yaml
|
|
32
|
-
├── tools/<code>/...
|
|
33
|
-
├── skills/<code>/...
|
|
34
|
-
├── .eap/
|
|
35
|
-
│ ├── remote/
|
|
36
|
-
│ ├── runtime/agents/<agentCode>/<version>/preinstall/...
|
|
37
|
-
│ └── package/
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
开发者维护根级配置和本地 Tool/Skill;`.eap/` 是 SDK/CLI 生成的缓存状态。CLI Runtime 默认读取 `.eap/runtime`,不直接读取项目源目录。`eap.config.json` 的 `localToolDirectories` / `localSkillDirectories` 可列出项目内外的资源父目录,模板默认分别是 `["./tools"]` / `["./skills"]`;其中直接子目录根部有 `toolset.manifest.json` 或 `SKILL.md` / `skill.md` 时会随 Runtime 一起物化。
|
|
41
|
-
|
|
42
|
-
Agent code 和版本来自根级 `agent.manifest.json`,因此 `dev`、`chat`、`install` 和 `publish` 都不接受 Agent code/version 选择参数。
|
|
43
|
-
|
|
44
|
-
## 创建与更新项目
|
|
45
|
-
|
|
46
|
-
正式开发主路径是先在开发者平台创建 Agent 源数据并取得 code,再用 `eap create` 准备本地项目,最后进入项目目录同步平台配置:
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
eap config platform.portalUrl https://portal.example
|
|
50
|
-
eap config platform.foundationServiceUrl https://service.example
|
|
51
|
-
eap login
|
|
52
|
-
eap create sales-assistant --template single-agent-with-tools
|
|
53
|
-
cd sales-assistant
|
|
54
|
-
eap init <agent-code> --version 1.0.0
|
|
55
|
-
eap install
|
|
56
|
-
eap validate
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
交互式终端里,向导默认值使用命令行已给出的项目名和 `--template`,不要一路回车就当成默认 ReAct。含 `@gt-fe/eap-sdk` 的模板会把依赖写成当前 SDK 版本范围(现在是 `^0.2.1`)。
|
|
60
|
-
|
|
61
|
-
仅需本地模板时,可以直接创建:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
eap create sales-assistant \
|
|
65
|
-
--template single-agent-with-tools \
|
|
66
|
-
--dir ./sales-assistant
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
内置模板:
|
|
70
|
-
|
|
71
|
-
| 模板 | 场景 |
|
|
72
|
-
|---|---|
|
|
73
|
-
| `simple-flow` | 固定步骤顺序执行 |
|
|
74
|
-
| `single-agent-with-tools` | 单 Agent + ReAct Tool 调用 |
|
|
75
|
-
| `plan-and-execute` | 规划后逐步执行 |
|
|
76
|
-
| `dag-workflow` | 并行扇出后合并 |
|
|
77
|
-
| `agent-api-orchestration` | 面向前端智能体页面的 Agent API 服务 |
|
|
78
|
-
|
|
79
|
-
所有模板都使用根级单 Agent 布局。工作流语义由 `graph.json` 定义,Agent Manifest 不包含 `mode`。包含 Tool 的模板自带本地、已锁定的 `echo-tool`。`single-agent-with-tools` 另默认锁定 `http-weather`。
|
|
80
|
-
|
|
81
|
-
## 常用开发流程
|
|
82
|
-
|
|
83
|
-
使用 Registry Tool/Skill 的完整流程:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
eap login
|
|
87
|
-
eap install search-tool --type tool --version 1.2.0
|
|
88
|
-
eap install
|
|
89
|
-
eap validate --strict
|
|
90
|
-
eap dev
|
|
91
|
-
eap chat
|
|
92
|
-
eap package
|
|
93
|
-
eap publish
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
`eap install <code> --type tool|skill --version <version>` 下载一个精确版本的 Registry Tool 或 Skill,写入 `.eap/remote`,并更新根级 Manifest 与 `eap.lock.yaml`。不带资源参数时,`eap install` 根据锁文件恢复缺失的 Registry 缓存,同时从当前项目的 `tools/<code>` 或 `skills/<code>` 自动发现并刷新已声明本地 Tool/Skill 的版本和相对路径。开发锁不保存资源摘要,package 物化时才从实际入口文件计算。该命令自动从当前工作目录发现 Agent 项目,不需要 `--root`。
|
|
97
|
-
|
|
98
|
-
## 核心命令
|
|
99
|
-
|
|
100
|
-
| 命令 | 说明 | 主要 SDK API |
|
|
101
|
-
|---|---|---|
|
|
102
|
-
| `eap init <code> [--version <version>] [--reset]` | 同步 Portal Agent 信息并合并 Tool/Skill/Subagent 引用;`--reset` 经确认后清理 `.eap/` 和 `eap.lock.yaml` 再全量重置资源;资源始终通过安装流程处理 | SDK Manifest/资源安装 API |
|
|
103
|
-
| `eap create [name]` | 从内置模板创建本地 Agent 项目 | 模板复制 |
|
|
104
|
-
| `eap install [code] --type tool\|skill [--version <version>]` | 带资源参数时安装 Registry 资源;省略版本时使用版本列表第一项;省略资源参数时同步缓存并刷新项目目录中的本地资源锁定记录 | `installAgentResource()` / `installAgentDependencies()` |
|
|
105
|
-
| `eap uninstall <code>` | 自动识别本地或 Registry 资源,清理目录/缓存、Manifest 引用和锁记录 | `uninstallAgentResource()` |
|
|
106
|
-
| `eap validate` | 校验源文件、Graph、锁文件和资源路径 | `validateAgentProject()` |
|
|
107
|
-
| `eap dev [port]` | 物化 Runtime,启动本地 HTTP 服务和 Playground | `prepareAgentRuntime()` + `createAgent()` + `startAgentHttpServer()` |
|
|
108
|
-
| `eap chat` | 物化 Runtime,进程内调用 Runtime 并在交互式终端聊天(需要 TTY) | `prepareAgentRuntime()` + `createAgent()` |
|
|
109
|
-
| `eap package` | 生成确定性的单 Agent Runtime 部署包或 standalone Runtime 目录 | `packageAgentProject()` / `packageStandaloneAgentProject()` |
|
|
110
|
-
| `eap publish` | 验包、上传包并回写唯一 Agent Version 的 artifact | `readAgentPackage()` |
|
|
111
|
-
|
|
112
|
-
### `eap install`
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
eap install search-tool \
|
|
116
|
-
--type tool \
|
|
117
|
-
--version 1.2.0
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
- `--type` 仅支持 `tool` 和 `skill`。
|
|
121
|
-
- 必须指定精确版本。
|
|
122
|
-
- 需要当前平台登录 Token。
|
|
123
|
-
- 本地资源直接放在当前项目的 `tools/<code>` 或 `skills/<code>`;执行不带资源参数的 `eap install` 时自动刷新本地锁定记录,不需要额外安装参数。
|
|
124
|
-
- 单 Agent 物化流程暂不支持安装 Subagent。
|
|
125
|
-
- 交互式终端直接执行 `eap install` 时,可选择安装 Registry 资源或同步资源。
|
|
126
|
-
- 非交互环境中不带资源参数的 `eap install` 始终执行同步,适合 CI。
|
|
127
|
-
|
|
128
|
-
本地资源按以下约定发现:
|
|
129
|
-
|
|
130
|
-
```text
|
|
131
|
-
tools/<code>/toolset.manifest.json
|
|
132
|
-
skills/<code>/SKILL.md
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
如果同一 code 同时存在本地目录和 Registry 锁定记录,命令会报冲突,不会隐式覆盖。
|
|
136
|
-
|
|
137
|
-
### `eap uninstall`
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
eap uninstall echo-tool
|
|
141
|
-
eap uninstall search-tool --type tool
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
命令根据当前项目的 `eap.lock.yaml` 和本地目录自动识别资源来源,不需要 `--root`。卸载会清理对应的本地目录或 `.eap/remote` 缓存、Agent Manifest 引用和锁定记录;`--type` 仅在同一 code 被识别为多种资源类型时使用。
|
|
145
|
-
|
|
146
|
-
### `eap validate`
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
eap validate
|
|
150
|
-
eap validate --strict
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
严格模式把 warning 也视为失败。校验不会修复依赖,也不会生成 Runtime 目录。
|
|
154
|
-
|
|
155
|
-
### `eap dev`
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
eap dev # 默认监听 0.0.0.0:3000
|
|
159
|
-
eap dev 8080 # 指定本地服务端口
|
|
160
|
-
eap dev --tool-mode mcp
|
|
161
|
-
eap dev --no-ui
|
|
162
|
-
eap dev --ui-port 5174
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
启动顺序:
|
|
166
|
-
|
|
167
|
-
```text
|
|
168
|
-
发现并校验当前项目
|
|
169
|
-
→ 根据 eap.lock.yaml 生成 .eap/runtime
|
|
170
|
-
→ 设置 EAP_PREINSTALL_ROOT
|
|
171
|
-
→ 创建 @gt-fe/eap-runtime
|
|
172
|
-
→ 启动 Agent HTTP 服务
|
|
173
|
-
→ 启动 Playground(默认)
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
`eap dev` 不是源码 watch 命令,也不会执行项目的 `npm run dev`。当前实现会在启动时重新生成 `.eap/runtime`;源文件变更后需要重新启动命令。CLI 不读取模板项目的 `EAP_RUNTIME_ROOT`,Runtime 路径保持在 `.eap/runtime`。
|
|
177
|
-
|
|
178
|
-
`eap dev` 开启本地会话持久化,会话和消息保存在 Runtime 根目录旁的 sessions 目录,默认是
|
|
179
|
-
`.eap/sessions`,不会进入部署包。Playground 启动时会自动恢复当前用户和 Agent 最近一次会话。
|
|
180
|
-
|
|
181
|
-
### `eap chat`
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
eap chat
|
|
185
|
-
eap chat --tool-mode mcp
|
|
186
|
-
eap chat --restore
|
|
187
|
-
eap chat --session <session-id>
|
|
188
|
-
eap chat --invoke
|
|
189
|
-
eap chat --verbose
|
|
190
|
-
eap chat --no-color
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
本仓库里的 CLI 通过 workspace 使用仓库根目录 `runtime/`(npm 名 `@gt-fe/eap-runtime`)。全局 `npm i -g` 的 CLI 仍走私服 Runtime 版本,横幅可能显示 `0.0.15`。
|
|
194
|
-
|
|
195
|
-
`eap chat` 需要交互式终端(TTY),在 CLI 进程内通过 SDK 创建 Agent,不要求预先启动 `eap dev`。默认使用 Runtime stream;`--invoke` 切换为整包调用。任务结束后任务头带总耗时:`┌─ ✓ Task … · 12.3s (12300ms)`,失败同样(`✗`)。工具行 `→ 入参` 来自 `tool.called` / `tool.progress` 的 `arguments`;`← 出参` 是工具返回。同一工具名并行多次(如多个 `query_dataset_data`)按 `toolCallId` 分行,各自保留入参。MCP 调用成功但业务正文报错(如数据集 999)仍显示 `✓`,入参同样输出。`--verbose` 展开入参/出参 JSON。
|
|
196
|
-
|
|
197
|
-
聊天用户优先用 `eap login` 会话。本地没 login、也没起 Foundation 时,用调试身份(`EAP_CHAT_USER` / `default-user` + `debug-token`)。钥匙放工程 `.env.local` 的 `OPENAI_API_KEY`,不要写进 `eap.config.json`。默认创建新会话;使用 `--restore` 恢复最近一次会话,`--session <session-id>` 恢复指定会话,REPL 内 `/new` 或 `/clear` 新建会话。
|
|
198
|
-
|
|
199
|
-
REPL 内置命令:
|
|
200
|
-
|
|
201
|
-
| 命令 | 说明 |
|
|
202
|
-
|---|---|
|
|
203
|
-
| `/` | 输入后显示命令建议;↑↓ 移动高亮,Tab 或行末 → 补进输入框,Enter 执行 |
|
|
204
|
-
| `/help` | 查看内置命令 |
|
|
205
|
-
| `/session` | 查看当前会话 |
|
|
206
|
-
| `/history` | 上下键选择当前用户、当前 Agent 的历史会话并继续对话 |
|
|
207
|
-
| `/new` | 开始新对话 |
|
|
208
|
-
| `/clear` | 清屏并开始新会话 |
|
|
209
|
-
| `/exit` | 退出 |
|
|
210
|
-
|
|
211
|
-
聊天界面由 Ink 渲染。普通文本会直接发送给 Agent;以 `/` 开头时仍可像普通文本一样继续编辑,命令建议只显示在输入框下方,不会抢走输入焦点。`Tab`(或光标在行末时按 `→`)把高亮命令补进输入框,再 `Enter` 执行。`Esc` 会收起命令建议或返回历史会话列表;在主输入框连续按两次 `Esc` 才会退出聊天。
|
|
212
|
-
|
|
213
|
-
### `eap package`
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
eap package
|
|
217
|
-
eap package --output ./dist/sales-assistant.tar.gz
|
|
218
|
-
eap package --target standalone --output ./.eap/runtime
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
交互式执行时会先选择使用当前 `agent.manifest.json` 版本,或更新版本号;选择更新后会先写回本地 manifest,再生成部署包或 standalone Runtime。非交互环境默认使用当前版本。
|
|
222
|
-
|
|
223
|
-
默认输出:
|
|
224
|
-
|
|
225
|
-
```text
|
|
226
|
-
.eap/package/eap-agent-project-<code>-<version>.tar.gz
|
|
227
|
-
.eap/package/eap-agent-project-<code>-<version>.tar.gz.sha256
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
`--target standalone` 默认生成 `.eap/runtime/agents/<code>/<version>/`,供构建后的
|
|
231
|
-
`dist/index.js` 通过 `createAgent({ runtimeRoot })` 启动;是否提供 HTTP 由
|
|
232
|
-
`startAgentHttpServer()` 决定,不生成 TAR.GZ。
|
|
233
|
-
|
|
234
|
-
`eap-package.json.files[].digest` 校验包内单个 Runtime 文件;旁边的 `.sha256` 校验整个 TAR.GZ。完整摘要约定见 [dev-tools 文档](../../docs/README.md#sha-256-摘要约定)。
|
|
235
|
-
|
|
236
|
-
包根目录直接包含物化后的 Agent 版本内容(例如 `agent.manifest.json`、`graph.json`、`eap.config.json`、`eap.lock.yaml`、`preinstall/`)和 `eap-package.json`。Registry 与本地 Tool/Skill 都位于 `preinstall/`,包内不会生成开发者分层资源目录。以下内容不会进入生产包:
|
|
237
|
-
|
|
238
|
-
- `.eap/remote`
|
|
239
|
-
- `.eap/sessions`
|
|
240
|
-
- checkpoint
|
|
241
|
-
- 其他开发缓存
|
|
242
|
-
|
|
243
|
-
### `eap publish`
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
eap publish
|
|
247
|
-
eap publish --package ./dist/sales-assistant.tar.gz
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
`publish` 先调用 SDK 验证 TAR.GZ 包内容,上传对象存储后将返回地址回写到包内唯一 Agent Version。默认按当前项目 `agent.manifest.json` 的 code/version 读取 `.eap/package/eap-agent-project-<code>-<version>.tar.gz`。
|
|
251
|
-
|
|
252
|
-
## 登录与配置
|
|
253
|
-
|
|
254
|
-
### 登录
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
eap login # 默认 CAS 浏览器登录
|
|
258
|
-
eap login --token <jwt> # 直接提供 Token(校验后登录)
|
|
259
|
-
eap login --cas-port 3210 # 指定本地回调端口
|
|
260
|
-
eap logout
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
当前用户身份、角色、权限和平台 Token 统一保存在:
|
|
264
|
-
|
|
265
|
-
```text
|
|
266
|
-
~/.eap/config.json
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
可使用 `EAP_CONFIG_DIR` 修改目录。登录状态只有一份,不随 CLI profile 或 Runtime storage profile 切换;`EAP_TOKEN` 可以临时覆盖已保存 Token。
|
|
270
|
-
|
|
271
|
-
### 全局配置
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
eap config --list
|
|
275
|
-
eap config platform.portalUrl https://portal.example
|
|
276
|
-
eap config platform.foundationServiceUrl https://service.example
|
|
277
|
-
eap config profile --list
|
|
278
|
-
eap config profile dev --use
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
CLI profile 只用于平台地址等 CLI 配置覆盖,不改变当前登录用户。
|
|
282
|
-
|
|
283
|
-
### 项目配置
|
|
284
|
-
|
|
285
|
-
`eap.config.json` 保存平台端点和 Runtime 开发配置。SDK 在创建服务时将其映射到 Runtime 环境变量,其中:
|
|
286
|
-
|
|
287
|
-
- 顶层 `version` 必须严格等于当前安装的 `@gt-fe/eap-sdk` package version。
|
|
288
|
-
- 顶层 `localToolDirectories`、`localSkillDirectories` 可省略或为空数组;目录不存在、没有入口文件或入口内容不规范都不会在物化阶段报错。
|
|
289
|
-
- `platform.portalUrl` 映射为 `EAP_PLATFORM_ENDPOINT`。
|
|
290
|
-
- `platform.foundationServiceUrl` 映射为 `FOUNDATION_SERVICE_URL`。
|
|
291
|
-
- `EAP_PREINSTALL_ROOT` 始终指向当前 `runtimeRoot`,CLI 默认是 `<project>/.eap/runtime`。
|
|
292
|
-
- 当前用户 Token 映射为 `EAP_DELEGATION_TOKEN`。
|
|
293
|
-
- `runtime.llm.models.<模型名>`(仅 `deploymentContext=dev`)按模型映射网关。`EAP_LLM_CONNECTIONS` 只带 `apiKeyEnv` 引用,不含明文密钥。`apiKey` 支持 `${ENV_VAR}`,密钥放 `.env.local`。未配钥匙时启动失败,不会掉进 Echo。
|
|
294
|
-
|
|
295
|
-
## 其他命令
|
|
296
|
-
|
|
297
|
-
| 命令 | 说明 |
|
|
298
|
-
|---|---|
|
|
299
|
-
| `eap list <code> [--type agent|tool|skill]` | 查看某个资源 code 的版本历史 |
|
|
300
|
-
| `eap info <code>` | 查看 Agent/Tool/Skill 详情 |
|
|
301
|
-
| `eap doctor` | 检查 Node、依赖和平台连通性 |
|
|
302
|
-
| `eap upgrade` | 检查或升级 `@gt-fe/eap-cli` |
|
|
303
|
-
|
|
304
|
-
具体参数以 `eap <command> --help` 为准。
|
|
1
|
+
# @gt-fe/eap-cli
|
|
2
|
+
|
|
3
|
+
`@gt-fe/eap-cli` 是 EAP 单 Agent 项目的命令行入口。它负责命令参数、登录交互、终端输出、Playground 和聊天体验;项目发现、依赖安装、Runtime 目录物化、服务创建、打包与验包统一委托给 `@gt-fe/eap-sdk`。
|
|
4
|
+
|
|
5
|
+
如果你是第一次开发 Agent,请先阅读 [场景一:常规 Agent 开发手册](../../docs/developer-guide.md)。本文是 CLI 命令和选项的详细参考。
|
|
6
|
+
|
|
7
|
+
跨模块的开发、配置、交付和排障入口见 [dev-tools 文档](../../docs/README.md)。
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @gt-fe/eap-cli
|
|
13
|
+
eap --help
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
使用 npm 私服时,在 `~/.npmrc` 中配置:
|
|
17
|
+
|
|
18
|
+
```ini
|
|
19
|
+
@gt-fe:registry=https://npm.your-company.com/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 项目结构
|
|
23
|
+
|
|
24
|
+
一个项目只包含一个 Agent:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
<project>/
|
|
28
|
+
├── agent.manifest.json
|
|
29
|
+
├── graph.json
|
|
30
|
+
├── eap.config.json
|
|
31
|
+
├── eap.lock.yaml
|
|
32
|
+
├── tools/<code>/...
|
|
33
|
+
├── skills/<code>/...
|
|
34
|
+
├── .eap/
|
|
35
|
+
│ ├── remote/
|
|
36
|
+
│ ├── runtime/agents/<agentCode>/<version>/preinstall/...
|
|
37
|
+
│ └── package/
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
开发者维护根级配置和本地 Tool/Skill;`.eap/` 是 SDK/CLI 生成的缓存状态。CLI Runtime 默认读取 `.eap/runtime`,不直接读取项目源目录。`eap.config.json` 的 `localToolDirectories` / `localSkillDirectories` 可列出项目内外的资源父目录,模板默认分别是 `["./tools"]` / `["./skills"]`;其中直接子目录根部有 `toolset.manifest.json` 或 `SKILL.md` / `skill.md` 时会随 Runtime 一起物化。
|
|
41
|
+
|
|
42
|
+
Agent code 和版本来自根级 `agent.manifest.json`,因此 `dev`、`chat`、`install` 和 `publish` 都不接受 Agent code/version 选择参数。
|
|
43
|
+
|
|
44
|
+
## 创建与更新项目
|
|
45
|
+
|
|
46
|
+
正式开发主路径是先在开发者平台创建 Agent 源数据并取得 code,再用 `eap create` 准备本地项目,最后进入项目目录同步平台配置:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
eap config platform.portalUrl https://portal.example
|
|
50
|
+
eap config platform.foundationServiceUrl https://service.example
|
|
51
|
+
eap login
|
|
52
|
+
eap create sales-assistant --template single-agent-with-tools
|
|
53
|
+
cd sales-assistant
|
|
54
|
+
eap init <agent-code> --version 1.0.0
|
|
55
|
+
eap install
|
|
56
|
+
eap validate
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
交互式终端里,向导默认值使用命令行已给出的项目名和 `--template`,不要一路回车就当成默认 ReAct。含 `@gt-fe/eap-sdk` 的模板会把依赖写成当前 SDK 版本范围(现在是 `^0.2.1`)。
|
|
60
|
+
|
|
61
|
+
仅需本地模板时,可以直接创建:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
eap create sales-assistant \
|
|
65
|
+
--template single-agent-with-tools \
|
|
66
|
+
--dir ./sales-assistant
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
内置模板:
|
|
70
|
+
|
|
71
|
+
| 模板 | 场景 |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `simple-flow` | 固定步骤顺序执行 |
|
|
74
|
+
| `single-agent-with-tools` | 单 Agent + ReAct Tool 调用 |
|
|
75
|
+
| `plan-and-execute` | 规划后逐步执行 |
|
|
76
|
+
| `dag-workflow` | 并行扇出后合并 |
|
|
77
|
+
| `agent-api-orchestration` | 面向前端智能体页面的 Agent API 服务 |
|
|
78
|
+
|
|
79
|
+
所有模板都使用根级单 Agent 布局。工作流语义由 `graph.json` 定义,Agent Manifest 不包含 `mode`。包含 Tool 的模板自带本地、已锁定的 `echo-tool`。`single-agent-with-tools` 另默认锁定 `http-weather`。
|
|
80
|
+
|
|
81
|
+
## 常用开发流程
|
|
82
|
+
|
|
83
|
+
使用 Registry Tool/Skill 的完整流程:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
eap login
|
|
87
|
+
eap install search-tool --type tool --version 1.2.0
|
|
88
|
+
eap install
|
|
89
|
+
eap validate --strict
|
|
90
|
+
eap dev
|
|
91
|
+
eap chat
|
|
92
|
+
eap package
|
|
93
|
+
eap publish
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`eap install <code> --type tool|skill --version <version>` 下载一个精确版本的 Registry Tool 或 Skill,写入 `.eap/remote`,并更新根级 Manifest 与 `eap.lock.yaml`。不带资源参数时,`eap install` 根据锁文件恢复缺失的 Registry 缓存,同时从当前项目的 `tools/<code>` 或 `skills/<code>` 自动发现并刷新已声明本地 Tool/Skill 的版本和相对路径。开发锁不保存资源摘要,package 物化时才从实际入口文件计算。该命令自动从当前工作目录发现 Agent 项目,不需要 `--root`。
|
|
97
|
+
|
|
98
|
+
## 核心命令
|
|
99
|
+
|
|
100
|
+
| 命令 | 说明 | 主要 SDK API |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| `eap init <code> [--version <version>] [--reset]` | 同步 Portal Agent 信息并合并 Tool/Skill/Subagent 引用;`--reset` 经确认后清理 `.eap/` 和 `eap.lock.yaml` 再全量重置资源;资源始终通过安装流程处理 | SDK Manifest/资源安装 API |
|
|
103
|
+
| `eap create [name]` | 从内置模板创建本地 Agent 项目 | 模板复制 |
|
|
104
|
+
| `eap install [code] --type tool\|skill [--version <version>]` | 带资源参数时安装 Registry 资源;省略版本时使用版本列表第一项;省略资源参数时同步缓存并刷新项目目录中的本地资源锁定记录 | `installAgentResource()` / `installAgentDependencies()` |
|
|
105
|
+
| `eap uninstall <code>` | 自动识别本地或 Registry 资源,清理目录/缓存、Manifest 引用和锁记录 | `uninstallAgentResource()` |
|
|
106
|
+
| `eap validate` | 校验源文件、Graph、锁文件和资源路径 | `validateAgentProject()` |
|
|
107
|
+
| `eap dev [port]` | 物化 Runtime,启动本地 HTTP 服务和 Playground | `prepareAgentRuntime()` + `createAgent()` + `startAgentHttpServer()` |
|
|
108
|
+
| `eap chat` | 物化 Runtime,进程内调用 Runtime 并在交互式终端聊天(需要 TTY) | `prepareAgentRuntime()` + `createAgent()` |
|
|
109
|
+
| `eap package` | 生成确定性的单 Agent Runtime 部署包或 standalone Runtime 目录 | `packageAgentProject()` / `packageStandaloneAgentProject()` |
|
|
110
|
+
| `eap publish` | 验包、上传包并回写唯一 Agent Version 的 artifact | `readAgentPackage()` |
|
|
111
|
+
|
|
112
|
+
### `eap install`
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
eap install search-tool \
|
|
116
|
+
--type tool \
|
|
117
|
+
--version 1.2.0
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
- `--type` 仅支持 `tool` 和 `skill`。
|
|
121
|
+
- 必须指定精确版本。
|
|
122
|
+
- 需要当前平台登录 Token。
|
|
123
|
+
- 本地资源直接放在当前项目的 `tools/<code>` 或 `skills/<code>`;执行不带资源参数的 `eap install` 时自动刷新本地锁定记录,不需要额外安装参数。
|
|
124
|
+
- 单 Agent 物化流程暂不支持安装 Subagent。
|
|
125
|
+
- 交互式终端直接执行 `eap install` 时,可选择安装 Registry 资源或同步资源。
|
|
126
|
+
- 非交互环境中不带资源参数的 `eap install` 始终执行同步,适合 CI。
|
|
127
|
+
|
|
128
|
+
本地资源按以下约定发现:
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
tools/<code>/toolset.manifest.json
|
|
132
|
+
skills/<code>/SKILL.md
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
如果同一 code 同时存在本地目录和 Registry 锁定记录,命令会报冲突,不会隐式覆盖。
|
|
136
|
+
|
|
137
|
+
### `eap uninstall`
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
eap uninstall echo-tool
|
|
141
|
+
eap uninstall search-tool --type tool
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
命令根据当前项目的 `eap.lock.yaml` 和本地目录自动识别资源来源,不需要 `--root`。卸载会清理对应的本地目录或 `.eap/remote` 缓存、Agent Manifest 引用和锁定记录;`--type` 仅在同一 code 被识别为多种资源类型时使用。
|
|
145
|
+
|
|
146
|
+
### `eap validate`
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
eap validate
|
|
150
|
+
eap validate --strict
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
严格模式把 warning 也视为失败。校验不会修复依赖,也不会生成 Runtime 目录。
|
|
154
|
+
|
|
155
|
+
### `eap dev`
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
eap dev # 默认监听 0.0.0.0:3000
|
|
159
|
+
eap dev 8080 # 指定本地服务端口
|
|
160
|
+
eap dev --tool-mode mcp
|
|
161
|
+
eap dev --no-ui
|
|
162
|
+
eap dev --ui-port 5174
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
启动顺序:
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
发现并校验当前项目
|
|
169
|
+
→ 根据 eap.lock.yaml 生成 .eap/runtime
|
|
170
|
+
→ 设置 EAP_PREINSTALL_ROOT
|
|
171
|
+
→ 创建 @gt-fe/eap-runtime
|
|
172
|
+
→ 启动 Agent HTTP 服务
|
|
173
|
+
→ 启动 Playground(默认)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
`eap dev` 不是源码 watch 命令,也不会执行项目的 `npm run dev`。当前实现会在启动时重新生成 `.eap/runtime`;源文件变更后需要重新启动命令。CLI 不读取模板项目的 `EAP_RUNTIME_ROOT`,Runtime 路径保持在 `.eap/runtime`。
|
|
177
|
+
|
|
178
|
+
`eap dev` 开启本地会话持久化,会话和消息保存在 Runtime 根目录旁的 sessions 目录,默认是
|
|
179
|
+
`.eap/sessions`,不会进入部署包。Playground 启动时会自动恢复当前用户和 Agent 最近一次会话。
|
|
180
|
+
|
|
181
|
+
### `eap chat`
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
eap chat
|
|
185
|
+
eap chat --tool-mode mcp
|
|
186
|
+
eap chat --restore
|
|
187
|
+
eap chat --session <session-id>
|
|
188
|
+
eap chat --invoke
|
|
189
|
+
eap chat --verbose
|
|
190
|
+
eap chat --no-color
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
本仓库里的 CLI 通过 workspace 使用仓库根目录 `runtime/`(npm 名 `@gt-fe/eap-runtime`)。全局 `npm i -g` 的 CLI 仍走私服 Runtime 版本,横幅可能显示 `0.0.15`。
|
|
194
|
+
|
|
195
|
+
`eap chat` 需要交互式终端(TTY),在 CLI 进程内通过 SDK 创建 Agent,不要求预先启动 `eap dev`。默认使用 Runtime stream;`--invoke` 切换为整包调用。任务结束后任务头带总耗时:`┌─ ✓ Task … · 12.3s (12300ms)`,失败同样(`✗`)。工具行 `→ 入参` 来自 `tool.called` / `tool.progress` 的 `arguments`;`← 出参` 是工具返回。同一工具名并行多次(如多个 `query_dataset_data`)按 `toolCallId` 分行,各自保留入参。MCP 调用成功但业务正文报错(如数据集 999)仍显示 `✓`,入参同样输出。`--verbose` 展开入参/出参 JSON。
|
|
196
|
+
|
|
197
|
+
聊天用户优先用 `eap login` 会话。本地没 login、也没起 Foundation 时,用调试身份(`EAP_CHAT_USER` / `default-user` + `debug-token`)。钥匙放工程 `.env.local` 的 `OPENAI_API_KEY`,不要写进 `eap.config.json`。默认创建新会话;使用 `--restore` 恢复最近一次会话,`--session <session-id>` 恢复指定会话,REPL 内 `/new` 或 `/clear` 新建会话。
|
|
198
|
+
|
|
199
|
+
REPL 内置命令:
|
|
200
|
+
|
|
201
|
+
| 命令 | 说明 |
|
|
202
|
+
|---|---|
|
|
203
|
+
| `/` | 输入后显示命令建议;↑↓ 移动高亮,Tab 或行末 → 补进输入框,Enter 执行 |
|
|
204
|
+
| `/help` | 查看内置命令 |
|
|
205
|
+
| `/session` | 查看当前会话 |
|
|
206
|
+
| `/history` | 上下键选择当前用户、当前 Agent 的历史会话并继续对话 |
|
|
207
|
+
| `/new` | 开始新对话 |
|
|
208
|
+
| `/clear` | 清屏并开始新会话 |
|
|
209
|
+
| `/exit` | 退出 |
|
|
210
|
+
|
|
211
|
+
聊天界面由 Ink 渲染。普通文本会直接发送给 Agent;以 `/` 开头时仍可像普通文本一样继续编辑,命令建议只显示在输入框下方,不会抢走输入焦点。`Tab`(或光标在行末时按 `→`)把高亮命令补进输入框,再 `Enter` 执行。`Esc` 会收起命令建议或返回历史会话列表;在主输入框连续按两次 `Esc` 才会退出聊天。
|
|
212
|
+
|
|
213
|
+
### `eap package`
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
eap package
|
|
217
|
+
eap package --output ./dist/sales-assistant.tar.gz
|
|
218
|
+
eap package --target standalone --output ./.eap/runtime
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
交互式执行时会先选择使用当前 `agent.manifest.json` 版本,或更新版本号;选择更新后会先写回本地 manifest,再生成部署包或 standalone Runtime。非交互环境默认使用当前版本。
|
|
222
|
+
|
|
223
|
+
默认输出:
|
|
224
|
+
|
|
225
|
+
```text
|
|
226
|
+
.eap/package/eap-agent-project-<code>-<version>.tar.gz
|
|
227
|
+
.eap/package/eap-agent-project-<code>-<version>.tar.gz.sha256
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
`--target standalone` 默认生成 `.eap/runtime/agents/<code>/<version>/`,供构建后的
|
|
231
|
+
`dist/index.js` 通过 `createAgent({ runtimeRoot })` 启动;是否提供 HTTP 由
|
|
232
|
+
`startAgentHttpServer()` 决定,不生成 TAR.GZ。
|
|
233
|
+
|
|
234
|
+
`eap-package.json.files[].digest` 校验包内单个 Runtime 文件;旁边的 `.sha256` 校验整个 TAR.GZ。完整摘要约定见 [dev-tools 文档](../../docs/README.md#sha-256-摘要约定)。
|
|
235
|
+
|
|
236
|
+
包根目录直接包含物化后的 Agent 版本内容(例如 `agent.manifest.json`、`graph.json`、`eap.config.json`、`eap.lock.yaml`、`preinstall/`)和 `eap-package.json`。Registry 与本地 Tool/Skill 都位于 `preinstall/`,包内不会生成开发者分层资源目录。以下内容不会进入生产包:
|
|
237
|
+
|
|
238
|
+
- `.eap/remote`
|
|
239
|
+
- `.eap/sessions`
|
|
240
|
+
- checkpoint
|
|
241
|
+
- 其他开发缓存
|
|
242
|
+
|
|
243
|
+
### `eap publish`
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
eap publish
|
|
247
|
+
eap publish --package ./dist/sales-assistant.tar.gz
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
`publish` 先调用 SDK 验证 TAR.GZ 包内容,上传对象存储后将返回地址回写到包内唯一 Agent Version。默认按当前项目 `agent.manifest.json` 的 code/version 读取 `.eap/package/eap-agent-project-<code>-<version>.tar.gz`。
|
|
251
|
+
|
|
252
|
+
## 登录与配置
|
|
253
|
+
|
|
254
|
+
### 登录
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
eap login # 默认 CAS 浏览器登录
|
|
258
|
+
eap login --token <jwt> # 直接提供 Token(校验后登录)
|
|
259
|
+
eap login --cas-port 3210 # 指定本地回调端口
|
|
260
|
+
eap logout
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
当前用户身份、角色、权限和平台 Token 统一保存在:
|
|
264
|
+
|
|
265
|
+
```text
|
|
266
|
+
~/.eap/config.json
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
可使用 `EAP_CONFIG_DIR` 修改目录。登录状态只有一份,不随 CLI profile 或 Runtime storage profile 切换;`EAP_TOKEN` 可以临时覆盖已保存 Token。
|
|
270
|
+
|
|
271
|
+
### 全局配置
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
eap config --list
|
|
275
|
+
eap config platform.portalUrl https://portal.example
|
|
276
|
+
eap config platform.foundationServiceUrl https://service.example
|
|
277
|
+
eap config profile --list
|
|
278
|
+
eap config profile dev --use
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
CLI profile 只用于平台地址等 CLI 配置覆盖,不改变当前登录用户。
|
|
282
|
+
|
|
283
|
+
### 项目配置
|
|
284
|
+
|
|
285
|
+
`eap.config.json` 保存平台端点和 Runtime 开发配置。SDK 在创建服务时将其映射到 Runtime 环境变量,其中:
|
|
286
|
+
|
|
287
|
+
- 顶层 `version` 必须严格等于当前安装的 `@gt-fe/eap-sdk` package version。
|
|
288
|
+
- 顶层 `localToolDirectories`、`localSkillDirectories` 可省略或为空数组;目录不存在、没有入口文件或入口内容不规范都不会在物化阶段报错。
|
|
289
|
+
- `platform.portalUrl` 映射为 `EAP_PLATFORM_ENDPOINT`。
|
|
290
|
+
- `platform.foundationServiceUrl` 映射为 `FOUNDATION_SERVICE_URL`。
|
|
291
|
+
- `EAP_PREINSTALL_ROOT` 始终指向当前 `runtimeRoot`,CLI 默认是 `<project>/.eap/runtime`。
|
|
292
|
+
- 当前用户 Token 映射为 `EAP_DELEGATION_TOKEN`。
|
|
293
|
+
- `runtime.llm.models.<模型名>`(仅 `deploymentContext=dev`)按模型映射网关。`EAP_LLM_CONNECTIONS` 只带 `apiKeyEnv` 引用,不含明文密钥。`apiKey` 支持 `${ENV_VAR}`,密钥放 `.env.local`。未配钥匙时启动失败,不会掉进 Echo。
|
|
294
|
+
|
|
295
|
+
## 其他命令
|
|
296
|
+
|
|
297
|
+
| 命令 | 说明 |
|
|
298
|
+
|---|---|
|
|
299
|
+
| `eap list <code> [--type agent|tool|skill]` | 查看某个资源 code 的版本历史 |
|
|
300
|
+
| `eap info <code>` | 查看 Agent/Tool/Skill 详情 |
|
|
301
|
+
| `eap doctor` | 检查 Node、依赖和平台连通性 |
|
|
302
|
+
| `eap upgrade` | 检查或升级 `@gt-fe/eap-cli` |
|
|
303
|
+
|
|
304
|
+
具体参数以 `eap <command> --help` 为准。
|