@fieldwangai/agentflow 0.1.160 → 0.1.162
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/bin/lib/auth.mjs +231 -14
- package/bin/lib/catalog-flows.mjs +2 -0
- package/bin/lib/cli-auth-page.mjs +103 -0
- package/bin/lib/skill-runtime.mjs +6 -0
- package/bin/lib/table.mjs +2 -3
- package/bin/lib/ui-server.mjs +220 -17
- package/bin/lib/workspace-draft.mjs +74 -0
- package/bin/lib/workspace-routes.mjs +297 -4
- package/bin/lib/workspace-server.mjs +6 -0
- package/builtin/nodes/control_while.md +5 -5
- package/builtin/pipelines/new/workspace.flow.js +1 -1
- package/builtin/web-ui/dist/assets/{WorkflowAssistantThread-Bfo9Ythw.js → WorkflowAssistantThread-CTrXOZ00.js} +1 -1
- package/builtin/web-ui/dist/assets/{index-e1omCEau.css → index-5uJFccdX.css} +1 -1
- package/builtin/web-ui/dist/assets/{index-XbeI5foV.js → index-BeUfNQRL.js} +4 -3
- package/builtin/web-ui/dist/index.html +2 -2
- package/package.json +5 -1
- package/skills/agentflow-author-flow/SKILL.md +81 -8
- package/skills/agentflow-author-flow/agents/openai.yaml +3 -3
- package/skills/agentflow-cli/SKILL.md +130 -25
- package/skills/agentflow-cli/agents/openai.yaml +2 -2
- package/skills/agentflow-cli/runtime/bin/lib/skill-runtime.mjs +14765 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/agent_subAgent.md +34 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_agent_toBool.md +26 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_anyOne.md +19 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_cancelled.md +26 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_cd_workspace.md +50 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_delay.md +31 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_end.md +13 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_if.md +21 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_interval_loop.md +55 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_load_mcp.md +24 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_load_skills.md +35 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_parse_json.md +25 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_start.md +13 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_subflow_call.md +27 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_toBool.md +27 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_user_workspace.md +24 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_wait_until.md +34 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/control_while.md +124 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_ascii.md +24 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_chart.md +32 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_code.md +39 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_html.md +32 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_image.md +36 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_markdown.md +24 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_mermaid.md +24 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_react_app.md +53 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/display_table.md +32 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/provide_bool.md +14 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/provide_file.md +14 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/provide_json.md +14 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/provide_password.md +14 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/provide_str.md +14 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_display_share_link.md +47 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_get_env.md +20 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_git_checkout.md +70 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_git_worktree_load.md +73 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_git_worktree_unload.md +52 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_gitlab_create_mr.md +114 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_jenkins_build.md +67 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_load_key.md +26 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_nodejs.md +52 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_print.md +21 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_save_key.md +26 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_set_run_env.md +38 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_user_ask.md +27 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_user_check.md +26 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_wecom_send_app_markdown.md +57 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/tool_wecom_send_group_markdown.md +45 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/workspace_one_click_task.md +44 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/workspace_run.md +16 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/workspace_scheduled_run.md +16 -0
- package/skills/agentflow-cli/runtime/builtin/nodes/workspace_subflow_input.md +14 -0
- package/skills/agentflow-cli/runtime/package.json +6 -0
- package/skills/agentflow-cli/scripts/agentflow-auth-store.mjs +113 -0
- package/skills/agentflow-cli/scripts/agentflow-cli.mjs +393 -28
- package/skills/agentflow-cli/scripts/agentflow-runtime.mjs +11 -4
- package/skills/agentflow-flow-add-instances/SKILL.md +2 -2
- package/skills/agentflow-flow-dsl/SKILL.md +25 -6
- package/skills/agentflow-flow-dsl/agents/openai.yaml +2 -2
- package/skills/agentflow-flow-edit-node-fields/SKILL.md +3 -3
- package/skills/agentflow-flow-recipes/SKILL.md +1 -1
- package/skills/agentflow-flow-recipes/references/recipes.md +1 -2
- package/skills/agentflow-flow-sync-ui/SKILL.md +1 -1
- package/skills/agentflow-node-dsl/SKILL.md +5 -13
- package/skills/agentflow-workspace-markdown/SKILL.md +1 -1
- package/skills/agentflow-workspace-graph/SKILL.md +0 -85
|
@@ -4,6 +4,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
4
4
|
|
|
5
5
|
const PACKAGE_NAME = "@fieldwangai/agentflow";
|
|
6
6
|
const RUNTIME_ENTRY = path.join("bin", "lib", "skill-runtime.mjs");
|
|
7
|
+
const BUNDLED_RUNTIME_ENTRY = path.join("bin", "lib", "skill-runtime.mjs");
|
|
7
8
|
let explicitRoot = "";
|
|
8
9
|
let resolvedRoot = "";
|
|
9
10
|
let runtimePromise = null;
|
|
@@ -12,7 +13,9 @@ function packageLooksUsable(root) {
|
|
|
12
13
|
if (!root) return false;
|
|
13
14
|
try {
|
|
14
15
|
const manifest = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf-8"));
|
|
15
|
-
|
|
16
|
+
const supportedManifest = manifest?.name === PACKAGE_NAME || manifest?.agentflowSkillRuntime === 1;
|
|
17
|
+
const entry = manifest?.agentflowSkillRuntime === 1 ? BUNDLED_RUNTIME_ENTRY : RUNTIME_ENTRY;
|
|
18
|
+
return supportedManifest && fs.statSync(path.join(root, entry)).isFile();
|
|
16
19
|
} catch {
|
|
17
20
|
return false;
|
|
18
21
|
}
|
|
@@ -65,9 +68,11 @@ export function configureAgentFlowRuntime(options = {}) {
|
|
|
65
68
|
export function resolveAgentFlowPackageRoot() {
|
|
66
69
|
if (resolvedRoot) return resolvedRoot;
|
|
67
70
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
71
|
+
const bundledRoot = path.resolve(scriptDir, "..", "runtime");
|
|
68
72
|
const candidates = [
|
|
69
73
|
explicitRoot,
|
|
70
74
|
String(process.env.AGENTFLOW_PACKAGE_ROOT || "").trim(),
|
|
75
|
+
bundledRoot,
|
|
71
76
|
...rootsNear(process.cwd()),
|
|
72
77
|
...rootsNear(scriptDir),
|
|
73
78
|
...executableCandidates().flatMap(rootsFromExecutable),
|
|
@@ -83,14 +88,16 @@ export function resolveAgentFlowPackageRoot() {
|
|
|
83
88
|
}
|
|
84
89
|
}
|
|
85
90
|
throw new Error(
|
|
86
|
-
"Cannot locate
|
|
87
|
-
+ "
|
|
91
|
+
"Cannot locate the AgentFlow Skill runtime. Reinstall/update agentflow-cli from SkillHub, "
|
|
92
|
+
+ "or set AGENTFLOW_PACKAGE_ROOT/--agentflow-package-root for an explicit development override.",
|
|
88
93
|
);
|
|
89
94
|
}
|
|
90
95
|
|
|
91
96
|
export function loadAgentFlowRuntime() {
|
|
92
97
|
if (!runtimePromise) {
|
|
93
|
-
const
|
|
98
|
+
const root = resolveAgentFlowPackageRoot();
|
|
99
|
+
const manifest = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf-8"));
|
|
100
|
+
const entry = path.join(root, manifest?.agentflowSkillRuntime === 1 ? BUNDLED_RUNTIME_ENTRY : RUNTIME_ENTRY);
|
|
94
101
|
runtimePromise = import(pathToFileURL(entry).href);
|
|
95
102
|
}
|
|
96
103
|
return runtimePromise;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentflow-flow-add-instances
|
|
3
|
-
description: Legacy Pipeline node authoring is retired. Redirect requests to add nodes to
|
|
3
|
+
description: Legacy Pipeline node authoring is retired. Redirect requests to add nodes to agentflow-flow-dsl.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy Flow Node Authoring(已下线)
|
|
7
7
|
|
|
8
8
|
此 skill 原用于向 `flow.yaml` 添加实例,但旧 Pipeline 的 `Start/End` 执行模式已经下线,不再新增或编辑正式 `flow.yaml`。
|
|
9
9
|
|
|
10
|
-
用户要在画布中加节点时,请改用 `agentflow-
|
|
10
|
+
用户要在画布中加节点时,请改用 `agentflow-flow-dsl`,编辑:
|
|
11
11
|
|
|
12
12
|
```text
|
|
13
13
|
.workspace/agentflow/pipelines/<id>/workspace.flow.js
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
name: agentflow-flow-dsl
|
|
3
3
|
description: >-
|
|
4
4
|
用 workspace.flow.js(受限 ESM)编写 AgentFlow Workspace 流程图。适用于新建流程、
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
在现有 Workspace 画布中添加或删除节点、修改字段和连线,以及编排控制顺序、分支、
|
|
6
|
+
子流程、受控循环和定时入口;自定义代码节点包改用 agentflow-node-dsl。
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# AgentFlow Flow DSL
|
|
@@ -28,12 +28,14 @@ description: >-
|
|
|
28
28
|
写完必须依次执行:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
agentflow
|
|
32
|
-
agentflow
|
|
31
|
+
node <agentflow-cli-skill-dir>/scripts/agentflow-cli.mjs dsl-lint --file <flowDir>
|
|
32
|
+
node <agentflow-cli-skill-dir>/scripts/agentflow-cli.mjs dsl-layout --file <flowDir>
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
先安装并读取 `agentflow-cli` Skill,把它的 `SKILL.md` 所在目录记为
|
|
36
|
+
`<agentflow-cli-skill-dir>`。CLI/DSL Runtime 已随该 Skill 分发,不要安装 npm 包。
|
|
35
37
|
lint 不通过先修结构,不要排版。`layout` 默认只给缺坐标的新节点补位置,保留用户手工布局。
|
|
36
|
-
|
|
38
|
+
新建流程,或用户明确要求整理整张图时,在 `dsl-layout` 命令末尾加 `--all`。
|
|
37
39
|
不要直接编辑 `workspace.layout.json` 里的 x/y。
|
|
38
40
|
|
|
39
41
|
## 自动排版是交付步骤
|
|
@@ -42,11 +44,25 @@ lint 不通过先修结构,不要排版。`layout` 默认只给缺坐标的新
|
|
|
42
44
|
|
|
43
45
|
1. `lint` 校验节点、引脚和拓扑
|
|
44
46
|
2. `layout` 生成或补齐坐标
|
|
45
|
-
3. 如果本地 UI
|
|
47
|
+
3. 如果本地 UI 已打开,刷新画布加载磁盘结果;需要远端审图和试运行时交给
|
|
48
|
+
`agentflow-author-flow` 创建可运行 Draft
|
|
46
49
|
|
|
47
50
|
自动排版按依赖从左到右放置,控制主链保持同一视觉轴,数据源放在上方,展示节点与同层主链
|
|
48
51
|
错开,分支纵向展开。不要为了“看起来差不多”自行猜坐标。
|
|
49
52
|
|
|
53
|
+
## 直接修改现有 Workspace
|
|
54
|
+
|
|
55
|
+
用户明确要求在现有画布中加节点、改字段或连线时,先读当前 `workspace.flow.js`,只修改目标
|
|
56
|
+
节点和相关引用,不要重建整张图。保留未涉及的节点 id、控制顺序、数据边、子流程契约和用户
|
|
57
|
+
已有布局;新增节点再由 `layout` 补坐标。
|
|
58
|
+
|
|
59
|
+
- 只放展示内容且不需要执行的 `display.*` 节点可以不写进 `flow(...)`。
|
|
60
|
+
- `display.*` 的字面量写在 `content` 输入;连接上游时引用 `source.slot`。它的 `content`
|
|
61
|
+
输出仍可接给后续 agent 作为上下文。
|
|
62
|
+
- 不直接编辑 `workspace.layout.json`、`workspace.nodes.json` 或 `workspace.state.json`。
|
|
63
|
+
- 本地改完仍必须执行 `lint` 和 `layout`。需要可保存、可试运行的远端画布时,交给
|
|
64
|
+
`agentflow-author-flow` 创建 Draft;只读分享才使用 `workspace-preview`。
|
|
65
|
+
|
|
50
66
|
## 交付状态与用户验收
|
|
51
67
|
|
|
52
68
|
`lint`、`layout`、自动化测试和 Mock 外部服务都属于 **Agent 测试环境**。完成这些只能说
|
|
@@ -60,6 +76,9 @@ GitLab 等外部系统时,必须验证真实请求、账号权限、网络、
|
|
|
60
76
|
用户明确确认实际流程跑通后,才能将状态更新为“生产同构验收通过,可发布/可上线”。如果流程里有
|
|
61
77
|
自定义代码节点,同时遵守 `agentflow-node-dsl` 里更严格的两级验证闸门。
|
|
62
78
|
|
|
79
|
+
面向用户的新流程不要直接正式发布。完成 lint/layout 后使用 `agentflow-author-flow` 的
|
|
80
|
+
Draft → 试运行 → 动态修改 → 明确确认 → 发布/定时流程;只读 `workspace-preview` 不能代替试运行。
|
|
81
|
+
|
|
63
82
|
## 图结构:workspace.flow.js
|
|
64
83
|
|
|
65
84
|
```js
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "AgentFlow Flow DSL"
|
|
3
|
-
short_description: "Author AgentFlow
|
|
4
|
-
default_prompt: "Use $agentflow-flow-dsl to create or modify an AgentFlow workspace.flow.js graph."
|
|
3
|
+
short_description: "Author AgentFlow graphs, subflows, and controlled loops in DSL"
|
|
4
|
+
default_prompt: "Use $agentflow-flow-dsl to create or modify an AgentFlow workspace.flow.js graph, including subflows and controlled loops."
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentflow-flow-edit-node-fields
|
|
3
|
-
description: Legacy Pipeline field editing is retired. Use
|
|
3
|
+
description: Legacy Pipeline field editing is retired. Use agentflow-flow-dsl for Workspace node field changes.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy Flow Node Field Editing(已下线)
|
|
7
7
|
|
|
8
|
-
此 skill 原用于修改 `flow.yaml` 的实例字段。当前新建和操作统一发生在 Workspace 图中,节点字段应修改 `workspace.flow.js` 的节点调用(见 **agentflow-
|
|
8
|
+
此 skill 原用于修改 `flow.yaml` 的实例字段。当前新建和操作统一发生在 Workspace 图中,节点字段应修改 `workspace.flow.js` 的节点调用(见 **agentflow-flow-dsl**),并通过 Workspace 保存/Draft 链路同步。
|
|
9
9
|
|
|
10
|
-
不要修改 `flow.yaml`、`control_start/control_end` 或调用旧 Pipeline 执行接口来完成新需求。请改用 `agentflow-
|
|
10
|
+
不要修改 `flow.yaml`、`control_start/control_end` 或调用旧 Pipeline 执行接口来完成新需求。请改用 `agentflow-flow-dsl`。
|
|
@@ -7,7 +7,7 @@ description: Workspace Graph recipes for AgentFlow canvas tasks (git analysis, d
|
|
|
7
7
|
|
|
8
8
|
组合 Git Checkout、CD Workspace、Load Skills、Agent、Display 等节点时,先读
|
|
9
9
|
[recipes.md](references/recipes.md),在 `workspace.flow.js` 中以 `flow(...)` 为入口组织节点,
|
|
10
|
-
再用 `agentflow-
|
|
10
|
+
再用 `agentflow-flow-dsl` 校验槽位和连线。
|
|
11
11
|
|
|
12
12
|
旧的 `Start → … → End` 流水线 recipe 已下线;不得生成 `control_start` / `control_end`
|
|
13
13
|
或其它已退役的节点类型(recipes.md 末尾列出了完整清单)。
|
|
@@ -102,8 +102,7 @@ draw an edge from a downstream node back to an upstream one.
|
|
|
102
102
|
|
|
103
103
|
## Edit The Graph
|
|
104
104
|
|
|
105
|
-
- Structure, nodes, edges: **agentflow-
|
|
106
|
-
- Full syntax and the node call table: **agentflow-flow-dsl**
|
|
105
|
+
- Structure, nodes, edges, full syntax and node calls: **agentflow-flow-dsl**
|
|
107
106
|
- Node implementations in code: `nodes/<name>/index.mjs`, see **agentflow-flow-dsl**
|
|
108
107
|
|
|
109
108
|
Saving is handled by the Workspace API; there is no separate canvas-sync step.
|
|
@@ -5,4 +5,4 @@ description: Legacy flow.yaml canvas sync is retired. Workspace Graph saves are
|
|
|
5
5
|
|
|
6
6
|
# Legacy Flow Canvas Sync(已下线)
|
|
7
7
|
|
|
8
|
-
旧的 `flow.yaml` + `/api/flow-editor-sync` 刷新链路不再用于新功能。Workspace
|
|
8
|
+
旧的 `flow.yaml` + `/api/flow-editor-sync` 刷新链路不再用于新功能。Workspace 图请按 **agentflow-flow-dsl** 编辑 `workspace.flow.js`,或使用 Workspace 页面/API 的保存机制;需要可编辑、可试运行的远端画布时使用 **agentflow-author-flow** 的 Draft,纯只读分享才使用 `agentflow-cli workspace-preview --file <flowDir>`。
|
|
@@ -27,8 +27,8 @@ description: >-
|
|
|
27
27
|
node <agentflow-cli-skill-dir>/scripts/agentflow-cli.mjs config
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
跨端节点操作要求 `localRuntime.available: true` 和有效 token
|
|
31
|
-
|
|
30
|
+
跨端节点操作要求 `localRuntime.available: true` 和有效 token。Runtime 已包含在 companion
|
|
31
|
+
Skill 中;缺失时重新安装或更新 `agentflow-cli`,不要另装 npm CLI。
|
|
32
32
|
|
|
33
33
|
写新包之前,先搜索服务端目录,避免重复造已有节点:
|
|
34
34
|
|
|
@@ -183,7 +183,7 @@ Agent 自行完成且保留可重现证据:
|
|
|
183
183
|
- 节点包含 `scripts/` / `templates/` / `assets/` 时,用完整 ZIP 安装后再跑一次,不得只测 `index.mjs`
|
|
184
184
|
|
|
185
185
|
```bash
|
|
186
|
-
agentflow
|
|
186
|
+
node <agentflow-cli-skill-dir>/scripts/agentflow-cli.mjs dsl-lint --file <flowDir>
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
这一级通过后只能汇报:**开发验证通过,待生产同构验收**。
|
|
@@ -203,16 +203,8 @@ agentflow flow dsl lint <flowDir>
|
|
|
203
203
|
|
|
204
204
|
## 发布给别的流程用
|
|
205
205
|
|
|
206
|
-
流程自带的 `nodes/<name>/`
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
agentflow marketplace publish-node <flowDir>/nodes/<name>
|
|
210
|
-
agentflow marketplace list
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
包会被复制到 `.workspace/agentflow/marketplace/packages/nodes/<id>/<version>`。
|
|
214
|
-
|
|
215
|
-
要发给另一台机器或另一个 Agent workspace,上传和安装**整个包目录**:
|
|
206
|
+
流程自带的 `nodes/<name>/` 只有那个流程能用。要让其它流程或其它 Agent workspace 复用,
|
|
207
|
+
通过 token-backed CLI 上传和安装**整个包目录**:
|
|
216
208
|
|
|
217
209
|
```bash
|
|
218
210
|
node <agentflow-cli-skill-dir>/scripts/agentflow-cli.mjs node-package-publish --file <flowDir>/nodes/<name>
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agentflow-workspace-graph
|
|
3
|
-
description: >-
|
|
4
|
-
AgentFlow Workspace 画布编辑技能。用于在 Workspace 视图中创建或修改
|
|
5
|
-
workspace.flow.js,新增展示节点、上下文节点和连线;不修改正式 flow.yaml。
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# AgentFlow Workspace Graph
|
|
9
|
-
|
|
10
|
-
在 Workspace 视图中需要创建临时工作画布、保存分析结果、组织上下文节点或连接展示节点时使用本技能。
|
|
11
|
-
|
|
12
|
-
## 目标文件
|
|
13
|
-
|
|
14
|
-
画布就是代码:改当前 Workspace 项目目录下的 **`workspace.flow.js`**。不要修改历史
|
|
15
|
-
`flow.yaml`,也不要写 `workspace.graph.json`——那是已经退役的格式,写了不会被读。
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
workspace.flow.js ← 改这个
|
|
19
|
-
workspace.layout.json 坐标,平台维护,别碰
|
|
20
|
-
workspace.nodes.json 图片等机器属性,平台维护,别碰
|
|
21
|
-
workspace.state.json 运行产出,平台维护,别碰
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
坐标不用管:新节点平台会自动排布,写死坐标反而会覆盖用户调过的位置。
|
|
25
|
-
|
|
26
|
-
## 写法
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
import { agent, control, display, flow } from "agentflow/flow";
|
|
30
|
-
|
|
31
|
-
const notes = display.markdown("项目结构分析", {
|
|
32
|
-
content: `# 项目结构分析
|
|
33
|
-
|
|
34
|
-
- src/ 业务代码
|
|
35
|
-
- bin/ CLI 入口`,
|
|
36
|
-
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
| 位置 | 含义 |
|
|
40
|
-
|------|------|
|
|
41
|
-
| 第 1 个参数(字符串) | 节点显示名 |
|
|
42
|
-
| 第 2 个参数(对象) | 输入引脚,每个键都是引脚名 |
|
|
43
|
-
| 第 3 个参数(字符串) | body:agent 的 prompt、`tool.nodejs` 的命令 |
|
|
44
|
-
| `const 变量名` | 节点 id |
|
|
45
|
-
| `x.slotName` | 引用上游输出引脚 = 连一条数据线 |
|
|
46
|
-
|
|
47
|
-
连线和控制流:
|
|
48
|
-
|
|
49
|
-
```js
|
|
50
|
-
const summary = agent.subAgent("总结", { source: notes.content }, `把上面的结构讲清楚`);
|
|
51
|
-
const show = display.markdown("总结", { content: summary.result });
|
|
52
|
-
export const run = flow("Run", summary, show);
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
只放一个展示节点、不需要跑的,不用写 `flow(...)`,声明出来就行。
|
|
56
|
-
|
|
57
|
-
## 铁律
|
|
58
|
-
|
|
59
|
-
1. 节点全部声明在**模块顶层**
|
|
60
|
-
2. **禁一切控制流**:`if` / `for` / `while` / `?:` / `.map()` / `await` / 箭头函数 /
|
|
61
|
-
动态属性。这个文件永不执行、只被静态解析,出现这些就还原不出图。要写逻辑就建代码
|
|
62
|
-
节点 `nodes/<name>/index.mjs`
|
|
63
|
-
3. 一个输出可接多个输入;**一个输入只能接一条边**;不能成环
|
|
64
|
-
4. 改完跑 `agentflow flow dsl lint <flowDir>` 自查
|
|
65
|
-
|
|
66
|
-
完整语法和全部可用节点见 **agentflow-flow-dsl** skill。
|
|
67
|
-
|
|
68
|
-
## 展示节点选型
|
|
69
|
-
|
|
70
|
-
- `display.markdown` — Markdown 正文、分析报告、会议纪要、代码结构说明
|
|
71
|
-
- `display.mermaid` — Mermaid 图源码
|
|
72
|
-
- `display.ascii` — ASCII 图
|
|
73
|
-
- `display.html` — 可交互 HTML 原型或富 UI 片段
|
|
74
|
-
- `display.image` — 图片 URL、data URL 或图片路径
|
|
75
|
-
- `display.chart` — ChartSpec JSON 图表
|
|
76
|
-
- `display.table` — 结构化表格数据
|
|
77
|
-
|
|
78
|
-
内容写在 `content` 引脚上;平台会同时把它当作节点正文。展示节点的 `content` 输出可以
|
|
79
|
-
接给后续 agent 当上下文。
|
|
80
|
-
|
|
81
|
-
## 输出要求
|
|
82
|
-
|
|
83
|
-
用户要求「生成/展示/放到 workspace 画布」时,直接编辑 `workspace.flow.js`。需要所见即所得
|
|
84
|
-
的线上画布,再用 `agentflow-cli workspace-preview --file <flowDir>` 上传到服务器临时
|
|
85
|
-
Workspace;不要把临时项目当作正式源版本。完成后简要说明新增或修改了哪些节点。
|