openyida 2026.7.19 → 2026.7.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 +14 -0
- package/bin/yida.js +107 -18
- package/lib/app/create-app.js +12 -1
- package/lib/app/create-form/args.js +13 -0
- package/lib/app/create-form.js +154 -67
- package/lib/app/create-page.js +45 -9
- package/lib/app/get-schema.js +65 -14
- package/lib/app/import-app.js +92 -41
- package/lib/app/publish.js +289 -556
- package/lib/app/schema-field-resolution.js +370 -0
- package/lib/app/services/app-reader.js +85 -0
- package/lib/app/services/app-service.js +235 -0
- package/lib/app/services/canvas-page-compiler.js +91 -0
- package/lib/app/services/canvas-page-schema-builder.js +149 -0
- package/lib/app/services/field-bindings.js +68 -0
- package/lib/app/services/form-compiler.js +1922 -0
- package/lib/app/services/form-mode-service.js +182 -0
- package/lib/app/services/form-schema-patcher.js +333 -0
- package/lib/app/services/form-schema-reader.js +59 -0
- package/lib/app/services/form-service.js +379 -0
- package/lib/app/services/form-validation.js +562 -0
- package/lib/app/services/native-page-compiler.js +92 -0
- package/lib/app/services/native-page-schema-builder.js +428 -0
- package/lib/app/services/page-resource-service.js +185 -0
- package/lib/app/update-app.js +18 -6
- package/lib/auth/token-auth.js +34 -3
- package/lib/auth/token-store.js +22 -4
- package/lib/bridge/bridge.js +37 -5
- package/lib/core/agent-capabilities.js +5 -3
- package/lib/core/command-manifest.js +40 -0
- package/lib/core/doctor.js +15 -4
- package/lib/core/env-cmd.js +1 -1
- package/lib/core/env.js +7 -6
- package/lib/core/legacy-schema-guard.js +408 -0
- package/lib/core/locales/en.js +8 -46
- package/lib/core/locales/zh.js +8 -46
- package/lib/core/sample.js +1 -1
- package/lib/core/utils.js +334 -66
- package/lib/core/yida-client.js +104 -3
- package/lib/formula/evaluate.js +8 -66
- package/lib/formula/field-refs.js +83 -0
- package/lib/process/configure-process.js +44 -1992
- package/lib/process/create-process.js +54 -87
- package/lib/process/services/process-compiler.js +2056 -0
- package/lib/process/services/process-reader.js +232 -0
- package/lib/process/services/process-resource-service.js +571 -0
- package/lib/process/services/process-service.js +122 -0
- package/lib/process/services/process-stage-checkpoint.js +246 -0
- package/lib/report/append.js +7 -26
- package/lib/report/http.js +31 -5
- package/lib/report/index.js +10 -2
- package/lib/samples/yida-canvas-custom-page/business-list.canvas.jsx +63 -14
- package/lib/samples/yida-canvas-custom-page/dashboard-overview.canvas.jsx +176 -32
- package/lib/samples/yida-canvas-custom-page/data-management.canvas.jsx +228 -14
- package/lib/samples/yida-canvas-custom-page/split-pane-detail.canvas.jsx +204 -8
- package/lib/schema/adapters/app-adapter.js +210 -0
- package/lib/schema/adapters/form-adapter.js +1362 -0
- package/lib/schema/adapters/keys.js +19 -0
- package/lib/schema/adapters/page-adapter.js +566 -0
- package/lib/schema/adapters/process-adapter.js +519 -0
- package/lib/schema/applier.js +1878 -0
- package/lib/schema/apply-store.js +1083 -0
- package/lib/schema/command.js +645 -0
- package/lib/schema/dependency-graph.js +83 -0
- package/lib/schema/errors.js +481 -0
- package/lib/schema/hash.js +9 -0
- package/lib/schema/manifest-limits.js +177 -0
- package/lib/schema/manifest-loader.js +309 -0
- package/lib/schema/manifest-schema-v1.json +193 -0
- package/lib/schema/normalize-manifest.js +281 -0
- package/lib/schema/page-canvas-foundation.js +447 -0
- package/lib/schema/page-data-source-builder.js +561 -0
- package/lib/schema/page-foundation.js +556 -0
- package/lib/schema/page-source-loader.js +314 -0
- package/lib/schema/planner.js +691 -0
- package/lib/schema/remote-dispatch-boundary.js +39 -0
- package/lib/schema/remote-missing.js +21 -0
- package/lib/schema/remote-reader.js +189 -0
- package/lib/schema/resource-registry.js +157 -0
- package/lib/schema/server-revision.js +71 -0
- package/lib/schema/sort.js +28 -0
- package/lib/schema/state-store.js +589 -0
- package/package.json +2 -2
- package/scripts/postinstall.js +8 -12
- package/scripts/validate-package-size.js +1 -1
- package/yida-skills/SKILL.md +114 -29
- package/yida-skills/references/schema-as-code-phase1.md +99 -0
- package/yida-skills/references/setup-and-env.md +59 -59
- package/yida-skills/references/task-retrospective.md +6 -6
- package/yida-skills/skills/yida-app/SKILL.md +60 -14
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +18 -7
- package/yida-skills/skills/yida-canvas-custom-page/references/data-bridge-guide.md +3 -3
- package/yida-skills/skills/yida-canvas-custom-page/references/page-generation-guide.md +7 -1
- package/yida-skills/skills/yida-create-app/SKILL.md +21 -3
- package/yida-skills/skills/yida-create-form-page/SKILL.md +19 -1
- package/yida-skills/skills/yida-create-page/SKILL.md +16 -3
- package/yida-skills/skills/yida-create-process/SKILL.md +100 -4
- package/yida-skills/skills/yida-custom-page/SKILL.md +19 -4
- package/yida-skills/skills/yida-dashboard/SKILL.md +1 -1
- package/yida-skills/skills/yida-dashboard/references/pitfalls.md +1 -1
- package/yida-skills/skills/yida-get-schema/SKILL.md +49 -5
- package/yida-skills/skills/yida-i18n/SKILL.md +1 -1
- package/yida-skills/skills/yida-integration/SKILL.md +7 -1
- package/yida-skills/skills/yida-login/SKILL.md +50 -99
- package/yida-skills/skills/yida-page-config/SKILL.md +7 -1
- package/yida-skills/skills/yida-page-uiux/references/app/blueprint.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/app/navigation-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/app/role-journey.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/dashboard/app-blueprint.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/dashboard/chart-contracts.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/dashboard/component-contracts.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/dashboard/layout-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/dashboard/theme-recipes.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/detail/object-narrative.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/detail/section-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/detail/timeline-and-related.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/landing/assets-workflow.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/landing/industry-playbooks.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/landing/research-levels.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/landing/section-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/list/drawer-detail.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/list/empty-loading-error.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/list/filter-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/list/table-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/scenes/screen.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/workbench/entry-patterns.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/workbench/portal-layouts.md +0 -1
- package/yida-skills/skills/yida-page-uiux/references/workbench/task-feed.md +0 -1
- package/yida-skills/skills/yida-page-uiux/workflow/output-decision-block.md +1 -1
- package/yida-skills/skills/yida-process-rule/SKILL.md +35 -1
- package/yida-skills/skills/yida-publish-page/SKILL.md +46 -4
- package/yida-skills/skills/yida-report/SKILL.md +7 -1
- package/yida-skills/skills-index.json +14 -46
- package/yida-skills/skills/large-file-write/SKILL.md +0 -93
- package/yida-skills/skills/large-file-write/references/write-patterns.md +0 -147
- package/yida-skills/skills/large-file-write/scripts/write.js +0 -157
- package/yida-skills/skills/sls-log-workbench/SKILL.md +0 -134
- package/yida-skills/skills/sls-log-workbench/references/workbench-reference.md +0 -130
- package/yida-skills/skills/sls-log-workbench/sls-query.js +0 -295
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-process-rule
|
|
3
|
-
description:
|
|
3
|
+
description: 配置已有流程表单审批规则;schema-managed 流程由根技能或明确 context 路由到 schema workflow。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 宜搭流程规则配置技能
|
|
7
7
|
|
|
8
|
+
> 资源边界:本技能只处理普通 OpenYida 资源;若根技能、上下文或 CLI guard 显示目标是 schema-managed,停止本技能并走 schema workflow;目标不明时回到根技能确认。
|
|
9
|
+
> direct/standalone 路径才可执行本技能;schema-managed 路径必须回到 schema validate → plan → apply,不在本技能内降级写入。
|
|
10
|
+
|
|
11
|
+
## Resource-First 使用门槛
|
|
12
|
+
|
|
13
|
+
本技能是已有流程/表单上下文的默认流程修改入口:
|
|
14
|
+
|
|
15
|
+
- 已有流程表单、`processCode`、流程 URL、bound process 或可确认的 workflow form 时,审批节点、条件分支、字段权限、抄送、跳转规则等诉求默认使用本技能。
|
|
16
|
+
- 已有普通表单 `formUuid` 且用户要“配置审批 / 转为审批流程”,先确认是否对该表单启用流程;如果只是转流程且尚无流程,可由 `yida-create-process --formUuid` 复用该表单,不要新建同名表单。
|
|
17
|
+
- 没有目标表单/流程,且用户明确从零创建审批系统时,才改用 `yida-create-process`。
|
|
18
|
+
- 多个流程候选按根技能来源优先级选择;同级冲突或无法判断目标流程时才问用户。
|
|
19
|
+
|
|
8
20
|
## 严格禁止 (NEVER DO)
|
|
9
21
|
|
|
10
22
|
- 不要在流程定义中使用猜测的 fieldId,必须先用 `yida-get-schema` 获取
|
|
11
23
|
- 不要在未加载本技能内容的情况下编写流程定义 JSON,格式复杂且易出错
|
|
12
24
|
- 不要用此技能创建流程表单,应使用 `yida-create-process`
|
|
13
25
|
- 不要用 shell heredoc、`cat`/`echo`/`printf`/`tee` 或重定向生成流程定义 JSON
|
|
26
|
+
- 已有 process/form context 时不要新建同类流程表单;在原流程上配置/更新。
|
|
14
27
|
|
|
15
28
|
## 严格要求 (MUST DO)
|
|
16
29
|
|
|
@@ -25,6 +38,7 @@ description: 为已有流程表单配置审批规则(审批/办理/抄送、
|
|
|
25
38
|
| 用户意图 | 触发条件 |
|
|
26
39
|
|---------|---------|
|
|
27
40
|
| 配置/修改审批流程 | "配置审批"、"审批节点"、"条件分支"、"字段权限" |
|
|
41
|
+
| 从零创建流程表单 | 仅无既有 form/process context 时 → 改用 `yida-create-process` |
|
|
28
42
|
|
|
29
43
|
## 触发条件
|
|
30
44
|
|
|
@@ -51,6 +65,14 @@ description: 为已有流程表单配置审批规则(审批/办理/抄送、
|
|
|
51
65
|
|
|
52
66
|
## 前提
|
|
53
67
|
|
|
68
|
+
| 场景 | 使用技能 |
|
|
69
|
+
|------|---------|
|
|
70
|
+
| **已有流程表单**:只需修改/配置已有表单的审批流程规则 | **本技能(yida-process-rule)** |
|
|
71
|
+
| **已有普通表单**:要启用/转换审批流程 | 先确认目标表单,再用 `yida-create-process --formUuid` 复用表单或回到本技能配置 |
|
|
72
|
+
| **从零创建**:没有目标表单/流程,需要新建表单 + 配置审批流程 | **yida-create-process** |
|
|
73
|
+
|
|
74
|
+
> 简单判断:有没有现成的流程表单?有 → 本技能;没有 → `yida-create-process`。
|
|
75
|
+
|
|
54
76
|
执行本技能前需要已经有目标流程表单、`appType`、`formUuid`、字段 ID 和必要的审批人 / 条件信息。
|
|
55
77
|
|
|
56
78
|
## 使用方式
|
|
@@ -420,3 +442,15 @@ OpenYida 会自动兼容常见别名:
|
|
|
420
442
|
yida-process-rule/
|
|
421
443
|
└── SKILL.md # 本文档
|
|
422
444
|
```
|
|
445
|
+
|
|
446
|
+
## 与其他技能配合
|
|
447
|
+
|
|
448
|
+
| 步骤 | 技能 | 说明 |
|
|
449
|
+
| --- | --- | --- |
|
|
450
|
+
| 1 | 已有 app 或 `yida-create-app` | 复用已解析 `appType`;仅无 app 且允许创建时新建 |
|
|
451
|
+
| 2 | 已有表单或 `yida-create-form-page` | 复用已解析 `formUuid`;仅缺表单且允许创建时新建,并获取字段 ID |
|
|
452
|
+
| 3 | **本技能** | 配置表单的流程规则 |
|
|
453
|
+
| 4 | `yida-custom-page` | 编写自定义页面代码 |
|
|
454
|
+
| 5 | `yida-publish-page` | 发布自定义页面 |
|
|
455
|
+
|
|
456
|
+
> **快捷方式**:使用 `yida-create-process` 技能可一键完成步骤 2-3(创建表单 + 配置流程)。
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-publish-page
|
|
3
|
-
description:
|
|
3
|
+
description: 自定义页面 JSX 编译发布技能;schema-managed 页面由根技能或明确 context 路由到 schema workflow。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 发布自定义页面
|
|
7
7
|
|
|
8
|
+
> 资源边界:本技能只处理普通 OpenYida 资源;若根技能、上下文或 CLI guard 显示目标是 schema-managed,停止本技能并走 schema workflow;目标不明时回到根技能确认。
|
|
9
|
+
> direct/standalone 路径才可执行本技能;schema-managed 路径必须回到 schema validate → plan → apply,不在本技能内降级写入。
|
|
10
|
+
|
|
11
|
+
## Resource-First 发布目标
|
|
12
|
+
|
|
13
|
+
发布前必须先解析目标页面 context;本技能优先服务已有页面:
|
|
14
|
+
|
|
15
|
+
- 用户说“优化这个页面 URL / 修改这个页面 / 重新发布 / 覆盖现有页面”并提供页面 URL、`formUuid`、bound page 或 workspace 中可确认的 display page 时,直接把该页面作为发布目标,不创建 app/page。
|
|
16
|
+
- bound page 是默认发布候选,不是强制目标;如果当前会话绑定页面 A,而用户本轮明确指定页面 B,必须先解析 B。B 有唯一 URL / display `formUuid` 时发布到 B;B 只有名称或描述且无法唯一匹配时先问用户;不要静默发布到 A。
|
|
17
|
+
- 只有无法解析目标页面,且用户明确要新增一个页面容器时,才回到 `yida-create-page` 创建缺失 display page;已有 appType 不代表需要新建 app。
|
|
18
|
+
- 发布目标必须是 `formType=display` 的自定义页面;普通表单、流程表单、数据底表的 `formUuid` 不能作为 `openyida publish` 第三个参数。
|
|
19
|
+
- 多个页面候选按根技能来源优先级选择;同级冲突或无法判断页面类型时才问用户或执行只读 `list-forms` 确认。
|
|
20
|
+
|
|
8
21
|
## 严格禁止 (NEVER DO)
|
|
9
22
|
|
|
10
23
|
- 不要在未加载对应页面子技能的情况下编写页面源码:普通自定义页面 JSX/Jsx 组件链路加载 `yida-custom-page`,Code Canvas 链路加载 `yida-canvas-custom-page`
|
|
11
24
|
- 不要把 AI 生成的普通 React 项目代码直接发布;源码应使用 OpenYida 页面源码格式:普通自定义页面 JSX/Jsx 组件链路用 `.oyd.jsx` / `.jsx` 并通过 `check-page` / `compile` 预检,Code Canvas 用 `.canvas.jsx` 并通过 `publish` 的 Canvas 编译阶段校验
|
|
12
25
|
- 不要在宜搭原生 `export function renderJsx()` 页面里手写 Hooks;如确需 `useState/useEffect`,必须使用 `.oyd.jsx` 的 `export default function Page()` authoring 模式,让 OpenYida 兼容编译器降级
|
|
13
26
|
- 不要编造 appType 和 formUuid,必须从已有记录或命令返回中获取
|
|
27
|
+
- 用户已给页面 URL / `formUuid` / bound page 时,不要先创建新 app 或新 page;直接确认目标并发布到已有页面。
|
|
14
28
|
|
|
15
29
|
## 严格要求 (MUST DO)
|
|
16
30
|
|
|
@@ -22,17 +36,19 @@ description: 将 JSX 源码编译发布到宜搭自定义页面。Babel 转 ES5
|
|
|
22
36
|
- corpId 不匹配时,必须询问用户是否切换组织,不得强行发布
|
|
23
37
|
- 重新发布已有自定义页面时,`openyida publish` 会自动读取目标页面现有 Schema 并合并页面级 `dataSource`;不要靠 Agent 口头承诺“保留数据源”,必须使用新版 CLI 的默认保护能力
|
|
24
38
|
- 如果源码包含 `this.dataSourceMap.`,而发布输出包含 `No custom page data sources to preserve`,本次发布不能视为完成;说明源码依赖设计器数据源但目标页没有可保留数据源。必须改为 `this.utils.yida.*` / 入口型页面后重新 check、compile、publish,或先通过 `yida-data-source-connectors` 创建并绑定数据源后重新发布
|
|
39
|
+
- **发布证据闭环**:本轮只要 Write/Edit/Create 了 `project/pages/src/*.{canvas.jsx,canvas.tsx,oyd.jsx,jsx,tsx}`,final 证据只认真实执行成功的 `openyida publish <source> <appType> <displayPageFormUuid>` 命令结果;本地文件编辑、diff、`check-page`、`compile`、`compileCanvasLocal` 或口头声明都不能证明远端页面已更新
|
|
25
40
|
- **本技能不读写 memory**:发布操作通过 CLI 命令写入宜搭平台,不依赖跨会话的 memory 状态
|
|
26
41
|
|
|
27
42
|
## 适用场景
|
|
28
43
|
|
|
29
|
-
编写完自定义页面 JSX
|
|
44
|
+
编写完自定义页面 JSX 代码后,执行此技能将代码编译发布到宜搭平台。已有页面 URL / `formUuid` / bound page 时,默认发布到该已有页面。
|
|
30
45
|
通常在 `yida-custom-page`(普通自定义页面 JSX/Jsx 组件链路)或 `yida-canvas-custom-page`(Code Canvas 链路)之后执行。
|
|
31
46
|
|
|
32
47
|
## 触发条件
|
|
33
48
|
|
|
34
49
|
**正向触发**:
|
|
35
50
|
- "发布页面"、"上线页面"、"部署页面"
|
|
51
|
+
- "优化这个页面 URL"、"修改现有页面后重新发布"
|
|
36
52
|
- `yida-custom-page` 或 `yida-canvas-custom-page` 代码编写完成后的下一步
|
|
37
53
|
- "编译发布"、"把代码发布到宜搭"
|
|
38
54
|
|
|
@@ -70,6 +86,13 @@ openyida list-forms <appType> --keyword <页面名>
|
|
|
70
86
|
|
|
71
87
|
只选择 `formType=display` 的 `formUuid` 作为发布目标。源码里用于 `this.utils.yida` 读写数据的普通表单常量(如 `FORM_SKILL`、`FORM_DATA`、`FORM_TABLE`)通常是数据底表,不能作为 `openyida publish` 的第三个参数。
|
|
72
88
|
|
|
89
|
+
## Final 证据契约
|
|
90
|
+
|
|
91
|
+
- final 中“页面已更新 / 已重新发布 / 已上线”的依据只能是成功的 `openyida publish <source> <appType> <displayPageFormUuid>` 命令结果,最好同时带发布输出中的 URL、`formUuid`、`success:true` 或 health-check 摘要。
|
|
92
|
+
- `<source>` 必须是本轮实际 Write/Edit/Create 过的页面源码;`<displayPageFormUuid>` 必须是已解析的 display 自定义页面。发布了其他文件或其他目标页面,不满足本轮源码修改的 doneWhen。
|
|
93
|
+
- 若 publish 没执行、执行失败、目标不明、登录态/组织不一致或用户要求先暂停,final 只能说“源码已修改,尚未发布”,并给出下一步需要执行的 publish 命令或阻塞原因。
|
|
94
|
+
- 普通自定义页面的 `check-page` / `compile`、Code Canvas 的 `compileCanvasLocal` 或 `generate-page --compile` 都是发布前 guard,不是远端完成证据。
|
|
95
|
+
|
|
73
96
|
## 数据源保留
|
|
74
97
|
|
|
75
98
|
`openyida publish` 默认是非破坏式发布:保存新 JSX Schema 前会调用 `getFormSchema` 读取目标自定义页面已有 Schema,提取 Page 组件上的 `dataSource`,再与发布脚本内置的 `urlParams`、`timestamp` 数据源合并。用户在宜搭设计器里手工创建的 HTTP / VALUE / URI 等页面级数据源会随新源码一起保留。
|
|
@@ -116,8 +139,8 @@ body { background-color: #f2f3f5; }
|
|
|
116
139
|
|
|
117
140
|
## 注意事项
|
|
118
141
|
|
|
119
|
-
- 发布目标地址由当前环境配置和 token session
|
|
120
|
-
- 碰到组织 corpId
|
|
142
|
+
- 发布目标地址由当前环境配置和 auth context(默认 token session;`YIDA_AUTH_ENABLED=true` 时为宿主注入 token)中的 `base_url` 决定
|
|
143
|
+
- 碰到组织 corpId 不匹配时,询问用户是重新登录到目标组织,还是确认在当前组织继续发布到已解析页面;不要通过新建应用规避不匹配
|
|
121
144
|
- **编写源码前必须先加载对应页面子技能**:普通自定义页面 JSX/Jsx 组件链路调用 `use_skill("yida-custom-page", "编写宜搭普通自定义页面 JSX")`;Code Canvas 链路调用 `use_skill("yida-canvas-custom-page", "编写 Code Canvas 自定义页面")`。旧式 `renderJsx` 写法不要使用 Hooks,现代普通自定义页面 authoring 写法必须走 `.oyd.jsx` 兼容编译;Canvas 源码写成 `.canvas.jsx`
|
|
122
145
|
|
|
123
146
|
## 异常处理
|
|
@@ -147,3 +170,22 @@ body { background-color: #f2f3f5; }
|
|
|
147
170
|
| corpId 不匹配 | 停止执行,询问用户是否切换组织或创建新应用 |
|
|
148
171
|
| 网络超时 | 重试 1 次,仍失败则停止并提示用户检查网络 |
|
|
149
172
|
| 未知错误 | 停止执行,完整展示错误信息,建议用户反馈问题 |
|
|
173
|
+
|
|
174
|
+
## 与其他技能配合
|
|
175
|
+
|
|
176
|
+
本技能在完整开发流程中的位置:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
resolve existing page or create missing page → yida-custom-page / yida-canvas-custom-page → [本技能] yida-publish-page
|
|
180
|
+
↑
|
|
181
|
+
编写 JSX 代码
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
| 相关技能 | 关系说明 |
|
|
185
|
+
|---------|----------|
|
|
186
|
+
| `yida-create-page` | 可选前置技能,仅在目标 display page 缺失且允许新增时创建页面容器,获取 formUuid |
|
|
187
|
+
| `yida-custom-page` | native 前置技能,编写 `.oyd.jsx` / `.jsx` 源码 |
|
|
188
|
+
| `yida-canvas-custom-page` | Code Canvas 前置技能,编写 `.canvas.jsx` 源码 |
|
|
189
|
+
| `yida-create-form-page` | 无关,用于创建表单页面,不需要本技能发布 |
|
|
190
|
+
| `yida-page-config` | 后续技能,发布后可配置页面公开访问/分享 |
|
|
191
|
+
| `yida-ppt-slider` | 特殊场景,PPT 幻灯片页面也使用本技能发布 |
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-report
|
|
3
|
-
description: "
|
|
3
|
+
description: "Standalone 创建宜搭原生报表;如果请求来自 Schema-as-Code manifest/state,停止,不降级直写。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 宜搭原生报表技能
|
|
7
7
|
|
|
8
|
+
## 适用范围:standalone 资源
|
|
9
|
+
|
|
10
|
+
- SAC Phase 1 下,本技能只处理明确 standalone 的原生报表。用户提供 Schema-as-Code manifest、要求 schema validate/plan/apply,或报表身份来自 Schema-as-Code state 时,不执行创建、追加或发布,稳定停止为 unsupported。
|
|
11
|
+
- 不得把 SAC unsupported/conflict/uncertain 降级为 `create-report` 等 legacy 写入,不得按标题、组件类型或数组位置 adopt、猜 report/chart/filter ID。
|
|
12
|
+
- 只有报表明确 standalone/unmanaged,或用户明确要求 standalone legacy 报表命令时,以下示例、stdout/stderr 和返回行为才按原契约使用;所有权不明确时零远端写。
|
|
13
|
+
|
|
8
14
|
## 严格禁止 (NEVER DO)
|
|
9
15
|
|
|
10
16
|
- 不要在前端直接聚合表单数据,必须通过宜搭原生报表的 `getDataAsync.json` 或 `getCacheData.json` 接口获取聚合数据
|
|
@@ -3,39 +3,6 @@
|
|
|
3
3
|
"source": "openyida",
|
|
4
4
|
"entry": "openyida",
|
|
5
5
|
"skills": [
|
|
6
|
-
{
|
|
7
|
-
"name": "large-file-write",
|
|
8
|
-
"path": "skills/large-file-write/SKILL.md",
|
|
9
|
-
"display_name": "大文件可靠写入",
|
|
10
|
-
"description": "解决 heredoc 或 shell 命令写入大文件内容被截断的问题。优先使用 agent 结构化文件写入工具;超大文件可用该工具创建 Node.js payload 后执行。适用于需要可靠写入超过 100 行文本文件时。",
|
|
11
|
-
"category": "yida-skills/agent",
|
|
12
|
-
"tags": [
|
|
13
|
-
"大文件",
|
|
14
|
-
"写入",
|
|
15
|
-
"结构化文件",
|
|
16
|
-
"heredoc"
|
|
17
|
-
],
|
|
18
|
-
"aliases": [
|
|
19
|
-
"大文件写入"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"name": "sls-log-workbench",
|
|
24
|
-
"path": "skills/sls-log-workbench/SKILL.md",
|
|
25
|
-
"display_name": "SLS 日志查询工作台",
|
|
26
|
-
"description": "SLS 日志查询工作台排查技能。用于快速定位和排查宜搭平台的页面请求、业务规则、集成自动化、流程审批、TraceId、灰度匹配等问题。",
|
|
27
|
-
"category": "yida-skills/ops",
|
|
28
|
-
"tags": [
|
|
29
|
-
"SLS",
|
|
30
|
-
"日志",
|
|
31
|
-
"排查",
|
|
32
|
-
"TraceId"
|
|
33
|
-
],
|
|
34
|
-
"aliases": [
|
|
35
|
-
"日志查询",
|
|
36
|
-
"平台排障"
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
6
|
{
|
|
40
7
|
"name": "yida-agent-center",
|
|
41
8
|
"path": "skills/yida-agent-center/SKILL.md",
|
|
@@ -56,7 +23,8 @@
|
|
|
56
23
|
"name": "yida-app",
|
|
57
24
|
"path": "skills/yida-app/SKILL.md",
|
|
58
25
|
"display_name": "宜搭完整应用开发",
|
|
59
|
-
"description": "
|
|
26
|
+
"description": "完整搭建或补齐普通 OpenYida 应用的流程编排技能。默认 fast_build 先解析并复用 app/page/form/process 上下文,只创建缺失且允许创建的应用、表单或页面;预创建占位应用在语义名称稳定后通过 update-app 重命名;不默认使用未绑定 dataSourceMap,导航、示例数据和深度设计按需后置。",
|
|
27
|
+
"done_when": "若本轮 Write/Edit 页面源码,必须真实执行成功 openyida publish <source> <appType> <displayPageFormUuid> 并返回访问 URL;没有 publish 证据只能声明源码已修改,尚未发布。",
|
|
60
28
|
"category": "yida-skills/app",
|
|
61
29
|
"tags": [
|
|
62
30
|
"宜搭",
|
|
@@ -192,7 +160,7 @@
|
|
|
192
160
|
"build-page",
|
|
193
161
|
"publish"
|
|
194
162
|
],
|
|
195
|
-
"done_when": "Canvas
|
|
163
|
+
"done_when": "Canvas 源码生成或修改后,必须真实执行成功 openyida publish <source> <appType> <displayPageFormUuid> 写入 YidaCodeCanvas Schema;没有 publish 证据只能声明源码已修改,尚未发布。"
|
|
196
164
|
},
|
|
197
165
|
{
|
|
198
166
|
"name": "yida-canvas-data-binding",
|
|
@@ -330,7 +298,7 @@
|
|
|
330
298
|
"name": "yida-create-app",
|
|
331
299
|
"path": "skills/yida-create-app/SKILL.md",
|
|
332
300
|
"display_name": "创建宜搭应用",
|
|
333
|
-
"description": "
|
|
301
|
+
"description": "仅在没有目标 app 且允许创建时创建宜搭应用并返回 appType。已绑定或预创建 app 不调用 create-app,应交给 yida-app 复用,并在需要时通过 update-app 重命名。",
|
|
334
302
|
"category": "yida-skills/app",
|
|
335
303
|
"tags": [
|
|
336
304
|
"创建应用",
|
|
@@ -451,7 +419,7 @@
|
|
|
451
419
|
"compile",
|
|
452
420
|
"publish"
|
|
453
421
|
],
|
|
454
|
-
"done_when": "普通自定义页面源码通过 check-page / compile
|
|
422
|
+
"done_when": "普通自定义页面源码通过 check-page / compile 后,必须真实执行成功 openyida publish <source> <appType> <displayPageFormUuid> 发布到目标 display 页面;没有 publish 证据只能声明源码已修改,尚未发布。"
|
|
455
423
|
},
|
|
456
424
|
{
|
|
457
425
|
"name": "yida-dashboard",
|
|
@@ -745,7 +713,7 @@
|
|
|
745
713
|
"name": "yida-login",
|
|
746
714
|
"path": "skills/yida-login/SKILL.md",
|
|
747
715
|
"display_name": "宜搭登录态管理",
|
|
748
|
-
"description": "宜搭登录态管理。默认 OAuth token
|
|
716
|
+
"description": "宜搭登录态管理。默认 OAuth token 模式;YIDA_AUTH_ENABLED=true 时使用宿主注入 token。",
|
|
749
717
|
"category": "yida-skills/context",
|
|
750
718
|
"tags": [
|
|
751
719
|
"登录",
|
|
@@ -924,6 +892,12 @@
|
|
|
924
892
|
"path": "skills/yida-publish-page/SKILL.md",
|
|
925
893
|
"display_name": "发布自定义页面",
|
|
926
894
|
"description": "将自定义页面源码编译为宜搭可运行 Schema 并发布;源码依赖 dataSourceMap 但发布无数据源时不能视为完成。",
|
|
895
|
+
"command_ids": [
|
|
896
|
+
"check-page",
|
|
897
|
+
"compile",
|
|
898
|
+
"publish"
|
|
899
|
+
],
|
|
900
|
+
"done_when": "final 证据只认真实执行成功的 openyida publish <source> <appType> <displayPageFormUuid> 命令结果;本地文件编辑、diff、check-page 或 compile 不能证明远端页面已更新。",
|
|
927
901
|
"category": "yida-skills/page",
|
|
928
902
|
"tags": [
|
|
929
903
|
"发布",
|
|
@@ -1162,13 +1136,8 @@
|
|
|
1162
1136
|
{
|
|
1163
1137
|
"name": "yida-skills/ops",
|
|
1164
1138
|
"display_name": "排障与支持",
|
|
1165
|
-
"description": "
|
|
1139
|
+
"description": "数据库 Sequence 修复、VOC 故障/需求反馈材料整理。",
|
|
1166
1140
|
"signals": [
|
|
1167
|
-
"SLS",
|
|
1168
|
-
"日志",
|
|
1169
|
-
"traceId",
|
|
1170
|
-
"排障",
|
|
1171
|
-
"灰度",
|
|
1172
1141
|
"Sequence",
|
|
1173
1142
|
"主键冲突",
|
|
1174
1143
|
"VOC",
|
|
@@ -1178,9 +1147,8 @@
|
|
|
1178
1147
|
{
|
|
1179
1148
|
"name": "yida-skills/agent",
|
|
1180
1149
|
"display_name": "Agent 辅助工具",
|
|
1181
|
-
"description": "非宜搭业务资源本身的 agent
|
|
1150
|
+
"description": "非宜搭业务资源本身的 agent 辅助能力:导出对话、会议/闪记转 PRD。",
|
|
1182
1151
|
"signals": [
|
|
1183
|
-
"大文件写入",
|
|
1184
1152
|
"导出对话",
|
|
1185
1153
|
"会议纪要",
|
|
1186
1154
|
"闪记",
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: large-file-write
|
|
3
|
-
description: 解决 heredoc 或 shell 命令写入大文件内容被截断的问题。优先使用 agent 结构化文件写入工具;超大文件可用该工具创建 Node.js payload 后执行。适用于需要可靠写入超过 100 行文本文件时。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Large File Write Skill
|
|
7
|
-
|
|
8
|
-
## 问题背景
|
|
9
|
-
|
|
10
|
-
在 AI Agent 模式下,使用 shell here-document 或其他 shell 命令向文件写入大块内容时,经常出现:
|
|
11
|
-
- 内容被截断(工具输出超过 token 限制)
|
|
12
|
-
- heredoc 内容未生效(zsh 特殊字符转义问题)
|
|
13
|
-
- 多次追加导致重复内容或语法错误
|
|
14
|
-
- Windows PowerShell 为了转义内容而执行 `Get-Content -Raw | ConvertTo-Json`,会把大 JSX/JS 文件整体读入内存并 JSON 转义,可能导致内存暴涨
|
|
15
|
-
|
|
16
|
-
## 解决方案
|
|
17
|
-
|
|
18
|
-
优先使用当前 agent 运行时提供的结构化文件写入工具(如 create_file / Write / file edit tool)直接创建目标文件。内容过大、单次写入可能截断时,再用结构化写入工具创建 Node.js payload 脚本,由 payload 调用 `fs.writeFileSync` 写目标文件。
|
|
19
|
-
|
|
20
|
-
OpenYida 业务场景下,payload、内容片段和验证脚本必须放在 `<projectRoot>/.cache/openyida/<项目名或任务名>/scripts/`,不要写系统临时目录、仓库根目录或 `.cache/` 顶层。
|
|
21
|
-
|
|
22
|
-
## 使用方式
|
|
23
|
-
|
|
24
|
-
三种写入模式的完整代码示例,详见 [references/write-patterns.md](./references/write-patterns.md):
|
|
25
|
-
|
|
26
|
-
- **模式一**:创建内容脚本后执行(推荐)— 用结构化文件写入工具创建临时 JS 脚本,再 `node` 执行
|
|
27
|
-
- **模式二**:追加内容到已有文件 — 用 `fs.appendFileSync` 追加大块内容
|
|
28
|
-
- **模式三**:使用通用写入脚本(content-file 模式)— 内容文件也先由结构化文件写入工具创建
|
|
29
|
-
|
|
30
|
-
### 快速示例
|
|
31
|
-
|
|
32
|
-
```js
|
|
33
|
-
// <projectRoot>/.cache/openyida/<任务名>/scripts/content-payload.js
|
|
34
|
-
const fs = require('fs');
|
|
35
|
-
const content = `// 你的大块内容(支持任意长度)
|
|
36
|
-
export function myFunction() { ... }
|
|
37
|
-
`;
|
|
38
|
-
fs.writeFileSync('/path/to/target.js', content, 'utf8');
|
|
39
|
-
console.log('写入完成,行数:', content.split('\n').length);
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
node .cache/openyida/<任务名>/scripts/content-payload.js
|
|
44
|
-
wc -l /path/to/target.js # 验证行数
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## 核心原则
|
|
48
|
-
|
|
49
|
-
1. **永远不要用 heredoc 写大文件** — 改用结构化文件写入工具创建临时 JS 脚本
|
|
50
|
-
2. **永远不要用 PowerShell JSON 化大文件** — 禁止 `Get-Content -Raw <file> | ConvertTo-Json`、`ConvertFrom-Json` 处理 `.oyd.jsx/.jsx/.js` 页面源码
|
|
51
|
-
3. **内容放在 JS 模板字符串里** — 支持任意长度,不受 shell 限制
|
|
52
|
-
4. **写完立即验证** — `wc -l` 检查行数,`tail` 检查末尾内容
|
|
53
|
-
5. **分段写入大文件** — 超过 300 行的内容,拆分为多个结构化写入 + `node` 执行
|
|
54
|
-
6. **本技能不读写 memory**:文件写入为纯本地操作,不依赖跨会话的 memory 状态
|
|
55
|
-
|
|
56
|
-
## 适用场景
|
|
57
|
-
|
|
58
|
-
- 宜搭自定义页面代码(通常 500-1500 行)
|
|
59
|
-
- Three.js 场景代码
|
|
60
|
-
- 任何超过 100 行的代码文件写入
|
|
61
|
-
- Windows 环境下写入/修补大 `.oyd.jsx` 页面源码
|
|
62
|
-
|
|
63
|
-
## Windows / PowerShell 禁止模式
|
|
64
|
-
|
|
65
|
-
不要为了转义或生成 patch,把大页面源码转换成 JSON 字符串:
|
|
66
|
-
|
|
67
|
-
```powershell
|
|
68
|
-
# 禁止:会整体读入并生成多份转义副本,可能瞬间占用几十 GB 内存
|
|
69
|
-
Get-Content -Raw project\pages\src\vendor-section.oyd.jsx | ConvertTo-Json
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
正确做法是直接用 Node 写入目标文件;需要局部替换时,用 Node 读取后做精确字符串/AST 替换并直接 `fs.writeFileSync` 写回,不要额外包成 JSON patch。
|
|
73
|
-
|
|
74
|
-
## 触发条件
|
|
75
|
-
|
|
76
|
-
**正向触发**:
|
|
77
|
-
- 需要写入超过 100 行的代码文件
|
|
78
|
-
- 使用 heredoc 或 shell 命令写文件时出现内容截断
|
|
79
|
-
- 写入宜搭自定义页面代码(通常 500-1500 行)
|
|
80
|
-
|
|
81
|
-
**不适用场景(不要触发)**:
|
|
82
|
-
- 文件内容少于 100 行 → 直接使用 `create_file` 工具
|
|
83
|
-
- 二进制文件写入 → 不适用
|
|
84
|
-
- 仅追加少量内容 → 直接使用 `create_file`
|
|
85
|
-
|
|
86
|
-
## 异常处理
|
|
87
|
-
|
|
88
|
-
| 问题 | 原因 | 处理方式 |
|
|
89
|
-
|------|------|----------|
|
|
90
|
-
| `node: command not found` | Node.js 未安装 | 先安装 Node.js ≥ 16 |
|
|
91
|
-
| 脚本执行后文件为空 | 模板字符串语法错误 | 检查反引号是否闭合,特殊字符是否转义 |
|
|
92
|
-
| 写入不完整 | 内容超过单次 create_file 限制 | 按「分段写入」方式拆分为多个脚本 |
|
|
93
|
-
| 权限拒绝 | 目标路径无写权限 | 检查目标目录权限;OpenYida 业务文件仍应留在 project 工作目录内 |
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
# 大文件写入模式参考
|
|
2
|
-
|
|
3
|
-
本文档提供三种大文件写入模式的完整代码示例,供 AI Agent 直接参考使用。
|
|
4
|
-
|
|
5
|
-
## 模式一:创建内容脚本后执行(推荐)
|
|
6
|
-
|
|
7
|
-
适用于一次性写入大块内容(>100 行)。
|
|
8
|
-
|
|
9
|
-
### Step 1:用结构化文件写入工具创建临时内容脚本
|
|
10
|
-
|
|
11
|
-
```js
|
|
12
|
-
// <projectRoot>/.cache/openyida/<任务名>/scripts/content-payload.js
|
|
13
|
-
const fs = require('fs');
|
|
14
|
-
const content = `
|
|
15
|
-
// 这里放你要写入的大块内容
|
|
16
|
-
// 支持任意长度,不受 heredoc 限制
|
|
17
|
-
export function myFunction() {
|
|
18
|
-
// ...
|
|
19
|
-
}
|
|
20
|
-
`;
|
|
21
|
-
fs.writeFileSync('/path/to/target.js', content, 'utf8');
|
|
22
|
-
console.log('写入完成,行数:', content.split('\n').length);
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### Step 2:执行脚本
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
node .cache/openyida/<任务名>/scripts/content-payload.js
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Step 3:验证写入结果
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
wc -l /path/to/target.js
|
|
35
|
-
tail -5 /path/to/target.js
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 模式二:追加内容到已有文件
|
|
41
|
-
|
|
42
|
-
适用于向已有文件末尾追加大块内容。
|
|
43
|
-
|
|
44
|
-
```js
|
|
45
|
-
// <projectRoot>/.cache/openyida/<任务名>/scripts/append-payload.js
|
|
46
|
-
const fs = require('fs');
|
|
47
|
-
const appendContent = `
|
|
48
|
-
// 追加的内容
|
|
49
|
-
export function additionalFunction() {
|
|
50
|
-
// ...
|
|
51
|
-
}
|
|
52
|
-
`;
|
|
53
|
-
fs.appendFileSync('/path/to/target.js', appendContent, 'utf8');
|
|
54
|
-
console.log('追加完成');
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
执行:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
node .cache/openyida/<任务名>/scripts/append-payload.js
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 模式三:使用通用写入脚本(content-file 模式)
|
|
66
|
-
|
|
67
|
-
适用于内容已经由结构化文件写入工具保存为独立文件的场景。
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
node ~/.agents/skills/large-file-write/scripts/write.js \
|
|
71
|
-
--file /path/to/target.js \
|
|
72
|
-
--content-file .cache/openyida/<任务名>/scripts/content.txt \
|
|
73
|
-
--mode write # 或 append
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
不要通过 shell 管道、heredoc 或重定向临时生成 `content.txt`;先使用 create_file / Write / file edit tool 创建它。
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Windows / PowerShell 禁止模式
|
|
81
|
-
|
|
82
|
-
**不要**用 PowerShell 把大 JSX/JS 文件转成 JSON patch:
|
|
83
|
-
|
|
84
|
-
禁止把整个文件读入内存再重定向成 JSON patch,例如 `Get-Content -Raw ... | ConvertTo-Json` 这类流程会制造巨大中间数据,也违反“命令输入文件由结构化写入工具创建”的约定。
|
|
85
|
-
|
|
86
|
-
这种写法会同时持有原始源码、JSON 转义字符串、管道对象和输出缓冲。对包含 vendor、base64、压缩代码的 `.oyd.jsx` 文件,内存可能被放大到数十 GB。
|
|
87
|
-
|
|
88
|
-
请改用 Node:
|
|
89
|
-
|
|
90
|
-
```js
|
|
91
|
-
const fs = require('fs');
|
|
92
|
-
const target = 'project/pages/src/vendor-section.oyd.jsx';
|
|
93
|
-
const source = fs.readFileSync(target, 'utf8');
|
|
94
|
-
const next = source.replace('old snippet', 'new snippet');
|
|
95
|
-
fs.writeFileSync(target, next, 'utf8');
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
如果替换内容很大,按下文“分段写入大文件”拆分。
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## 分段写入大文件(>300 行)
|
|
103
|
-
|
|
104
|
-
当单次内容超过 300 行时,拆分为多个脚本分段写入:
|
|
105
|
-
|
|
106
|
-
```js
|
|
107
|
-
// <projectRoot>/.cache/openyida/<任务名>/scripts/part1-payload.js — 写入第一段(文件头 + 前半部分)
|
|
108
|
-
const fs = require('fs');
|
|
109
|
-
const part1 = `
|
|
110
|
-
// === 第一段内容 ===
|
|
111
|
-
const CONSTANTS = { ... };
|
|
112
|
-
export function functionA() { ... }
|
|
113
|
-
`;
|
|
114
|
-
fs.writeFileSync('/path/to/target.js', part1, 'utf8');
|
|
115
|
-
console.log('第一段写入完成');
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
```js
|
|
119
|
-
// <projectRoot>/.cache/openyida/<任务名>/scripts/part2-payload.js — 追加第二段
|
|
120
|
-
const fs = require('fs');
|
|
121
|
-
const part2 = `
|
|
122
|
-
// === 第二段内容 ===
|
|
123
|
-
export function functionB() { ... }
|
|
124
|
-
export function functionC() { ... }
|
|
125
|
-
`;
|
|
126
|
-
fs.appendFileSync('/path/to/target.js', part2, 'utf8');
|
|
127
|
-
console.log('第二段追加完成');
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
验证最终结果:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
wc -l /path/to/target.js
|
|
134
|
-
head -5 /path/to/target.js
|
|
135
|
-
tail -5 /path/to/target.js
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## 常见错误与修复
|
|
141
|
-
|
|
142
|
-
| 错误现象 | 原因 | 修复方式 |
|
|
143
|
-
|---------|------|---------|
|
|
144
|
-
| 文件为空 | 模板字符串反引号未闭合 | 检查 `` ` `` 是否成对,特殊字符是否转义 |
|
|
145
|
-
| 内容截断 | 单次 create_file 超过 token 限制 | 拆分为多个脚本分段写入 |
|
|
146
|
-
| 权限拒绝 | 目标路径无写权限 | 检查目标目录权限;OpenYida 业务文件仍应留在 project 工作目录内 |
|
|
147
|
-
| node 命令未找到 | Node.js 未安装 | 先安装 Node.js ≥ 16 |
|