feat(*): 插件中心与模型协议 - 完善声明式协议运行时并增加功能开放控制
This commit is contained in:
@@ -87,3 +87,28 @@ CANVAS_URL=http://localhost:3000 npx -y @ddcat666/open-ai-canvas-agent
|
||||
```
|
||||
|
||||
手动排查时先从 Agent 输出或 `http://127.0.0.1:17371/config` 读取本地地址和 token,然后直接打开 `<画布网页地址>/canvas?mode=new&agentUrl=<Local URL>&agentToken=<Connect token>`。不要通过页面点击来新建画布;`mode=new` 会让网页自动创建具体画布并连接本地 Agent。
|
||||
|
||||
## 技能库
|
||||
|
||||
插件的 `skills/` 是可按需加载的 Codex 技能库,不需要把整套规则复制到每次对话里。安装插件后,建议新建一个 Codex 线程;Codex 会根据请求自动发现并加载对应技能:
|
||||
|
||||
- `canvas-context`:先读语义化画布上下文、选区、连接和资源就绪状态。
|
||||
- `canvas-editing`:写入前校验真实节点 id,批量操作后复核结果。
|
||||
- `asset-aware-generation`:复用已有角色、场景、道具、风格和媒体资源创建生成流程。
|
||||
|
||||
安装/更新流程:
|
||||
|
||||
```bash
|
||||
cd /path/to/open-ai-canvas
|
||||
codex plugin marketplace add "$(pwd)"
|
||||
codex plugin add yingce@yingce-local
|
||||
# 更新插件后开启一个新的 Codex 对话
|
||||
```
|
||||
|
||||
验证技能和 MCP 是否已加载,可以在新对话中直接说:
|
||||
|
||||
```text
|
||||
读取当前画布上下文,列出可用媒体资源,并说明哪些资源可以作为生图参考。
|
||||
```
|
||||
|
||||
如果回答没有调用 `canvas_get_context` / `canvas_get_resources`,先确认当前对话是安装插件后新建的,并检查 `codex mcp list` 中的 `yingce`。
|
||||
|
||||
13
plugins/yingce/skills/README.md
Normal file
13
plugins/yingce/skills/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# 影策技能库
|
||||
|
||||
插件安装后,Codex 会在新线程中自动发现 `skills/` 下的技能。技能不是一组需要用户手动粘贴的 prompt,而是按请求匹配、按需加载的工作流约束。
|
||||
|
||||
当前技能:
|
||||
|
||||
- `open-canvas`:打开并连接本地画布。
|
||||
- `canvas`:通用画布操作路由。
|
||||
- `canvas-context`:读取语义上下文和资源状态。
|
||||
- `canvas-editing`:可靠写入、批量校验和结果复核。
|
||||
- `asset-aware-generation`:复用角色/场景/道具/风格资源进行生成。
|
||||
|
||||
安装或更新技能后,建议新建 Codex 线程,让技能和 MCP 工具重新加载。
|
||||
15
plugins/yingce/skills/asset-aware-generation/SKILL.md
Normal file
15
plugins/yingce/skills/asset-aware-generation/SKILL.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: asset-aware-generation
|
||||
description: 基于影策画布已有角色、场景、道具、风格和媒体资源创建生成流程;适用于生图、视频、音频或分镜资产工作。
|
||||
---
|
||||
|
||||
# 资源感知生成
|
||||
|
||||
1. 用 `canvas_get_context` 读取已有提示词、工作流和资产引用。
|
||||
2. 用 `canvas_get_resources` 或 `canvas_find_nodes({resourceOnly:true})` 找到可复用的真实参考节点。
|
||||
3. 生成前检查资源 `ready`、`status`、`mimeType`、尺寸/时长和资产/版本引用;未就绪资源不能作为参考。
|
||||
4. 复用真实 `referenceNodeIds`,不要重复上传同一素材,也不要只在 prompt 里写一个无法定位的资源名称。
|
||||
5. 通过 `canvas_create_generation_flow` 或对应 `canvas_generate_*` 工具创建清晰的提示词节点、参考节点和目标节点关系。
|
||||
6. 返回结果后确认目标节点、连线和任务状态;生成任务未完成时不要声称成片已完成。
|
||||
|
||||
生成任务必须走影策共享 GenerationTask;不要直接调用 provider、模拟点击或把密钥放进 URL。
|
||||
16
plugins/yingce/skills/canvas-context/SKILL.md
Normal file
16
plugins/yingce/skills/canvas-context/SKILL.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: canvas-context
|
||||
description: 理解影策当前画布的语义结构、选区、连接关系和媒体资源状态;适用于任何需要基于已有画布继续工作的请求。
|
||||
---
|
||||
|
||||
# 画布上下文协议
|
||||
|
||||
不要把画布当成一段需要猜测的 JSON。先读取事实,再决定动作:
|
||||
|
||||
1. `canvas_get_context`:读取语义化节点、真实 id、连接关系、选区、资源清单和 `stateHash`。
|
||||
2. 用户说“这个/选中内容”时,补 `canvas_get_selection`。
|
||||
3. 不知道节点 id 时用 `canvas_find_nodes`,不要猜 id。
|
||||
4. 涉及图片、视频、音频参考时用 `canvas_get_resources`;只有 `ready=true` 且有持久化引用的资源才可作为可用素材。
|
||||
5. 看到 `loading`、`error`、缺少 `storageKey/resourceId` 的节点时,向用户说明它是未就绪或占位状态。
|
||||
|
||||
上下文只作为事实来源,不要把 `storageKey`、内部 id 或资源状态编造成媒体 URL。工具结果返回后,以结果为准继续下一步。
|
||||
14
plugins/yingce/skills/canvas-editing/SKILL.md
Normal file
14
plugins/yingce/skills/canvas-editing/SKILL.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: canvas-editing
|
||||
description: 在影策画布上可靠地创建、更新、移动、连接、删除节点或调整视口;适用于需要实际修改画布的请求。
|
||||
---
|
||||
|
||||
# 可靠画布编辑
|
||||
|
||||
- 写操作前必须先读取 `canvas_get_context`;已有节点只使用真实 id。
|
||||
- 复杂批量修改先用 `canvas_validate_ops`,通过后再用 `canvas_apply_ops`。
|
||||
- 单个文本优先 `canvas_create_text_node`;生成流程优先 `canvas_generate_text/image/video/audio`;只有批量事务才直接组装 ops。
|
||||
- 新节点沿现有内容右侧或下方网格布局,保留间距,避免遮挡和重叠。
|
||||
- 删除、覆盖、批量移动和触发生成属于高影响动作,依赖网页侧确认,不要绕过确认。
|
||||
- 执行后检查返回结果。没有变化、部分失败、任务仍在运行时必须如实说明。
|
||||
- 媒体节点尽量保留原始比例;不要为了“看起来完成”随意改尺寸或创建孤立占位节点。
|
||||
@@ -10,7 +10,9 @@ description: 操作影策当前网页画布,读取节点、选区、创建文
|
||||
## 工作流
|
||||
|
||||
- 如果用户还没有打开或连接网页画布,使用 `open-canvas` 技能打开影策,不要要求用户手动复制 URL 或 token。
|
||||
- 操作前先用 `canvas_get_state` 读取当前画布;如果用户明确提到选中内容、当前节点或“这个”,先用 `canvas_get_selection`。
|
||||
- 操作前先用 `canvas_get_context` 读取语义化画布和资源状态;如果用户明确提到选中内容、当前节点或“这个”,再用 `canvas_get_selection`。
|
||||
- 不知道真实节点 id 时使用 `canvas_find_nodes`;涉及媒体参考时使用 `canvas_get_resources`。
|
||||
- 复杂批量操作先用 `canvas_validate_ops`,再用 `canvas_apply_ops`。
|
||||
- 创建单个文本内容优先用 `canvas_create_text_node`。
|
||||
- 创建生成内容优先用 `canvas_generate_text`、`canvas_generate_image`、`canvas_generate_video`、`canvas_generate_audio`。
|
||||
- 需要把提示词、参考素材和生成目标节点串成流程时,使用 `canvas_create_generation_flow` 或项目已有的流程工具。
|
||||
@@ -18,6 +20,8 @@ description: 操作影策当前网页画布,读取节点、选区、创建文
|
||||
- 不要模拟鼠标点击,不要要求用户手动复制 JSON。
|
||||
- 写入画布的操作会由网页侧边栏做二次确认,按当前工具结果继续推进即可。
|
||||
|
||||
更具体的资源感知生成和可靠编辑流程分别见 `asset-aware-generation`、`canvas-editing`。
|
||||
|
||||
## 风格
|
||||
|
||||
- 页面文案和画布节点内容默认使用中文。
|
||||
|
||||
Reference in New Issue
Block a user