Skip to content

feat(plugin): 仓库根成为 ZCode 插件,补齐 MCP/hooks/命令与评测 - #17

Merged
ADC1920 merged 10 commits into
mainfrom
feat/zcode-plugin-runtime
Nov 12, 2026
Merged

ADC1920 merged 10 commits into
mainfrom
feat/zcode-plugin-runtime

Conversation

@ADC1920

@ADC1920 ADC1920 commented Nov 12, 2026

Copy link
Copy Markdown
Owner

做了什么

修掉「装完就残」这个主推路径断层,并把 ZCode 的四项没用上的扩展能力接上。

根因:tools/ 在仓库根,不在技能目录里。技能按目录拷贝安装,所以用户按原 README 装完,SKILL.md 里十几处 python tools/xxx.py 全部失效,只剩一句「单独安装时不带脚本,按人工过」。

正解:插件 skills 字段支持数组且可指向仓库内既有目录,插件安装把整个仓库装进去,tools/ 自然随行,不必搬动结构。

新增

能力 文件 效果
插件清单 .zcode-plugin/plugin.json 三个技能 + 命令 + hooks + MCP 一次装齐
MCP server tools/mcp_server.py 四个工具,把「读文档→判工位→读原子→挑模板」压成一次调用
出图后自动机检 hooks/ PostToolUse 命中即跑机检,不通过把结果回注给模型
斜杠命令 commands/ /ecom:main /detail /sku /reverse
品牌锁规范 references/_brand-lock.md 十个必锁视觉字段,解跨图漂移
AIGC 标注库 references/_rules/aigc-disclosure.json 五地法条 + 图类型四分类 + 四条红线
视觉复核单 tools/vlm_review.py 结构化复核清单,结论由人给
真实触发评测 evals/real_trigger.py 三层评测的第三层,只手动跑
插件自校验 tools/check_plugin.py 清单字段/资源/越界/事件名,接入 CI

修复

fix_stats.py 的提示仍指向已删除的 run_loop.py,用户照提示找不到入口。

验证

lint_skills.py        0 错误 0 警告
atomize.py check      34/34 原子自洽
check_cases.py        30/30 用例一致
check_plugin.py       清单与资源全部有效
zcode plugins validate  官方 CLI 通过
12 个脚本 selftest    全 exit 0

hooks 端到端实测:灰底小主体图被识别出白底、占比、分辨率三项硬伤并回注。四条放行边界(无关文件、out/ 外、坏 JSON、无平台参数)均静默 exit 0。

未验证

  • MCP 与 hooks 在真实 ZCode 会话中的运行效果,需装插件后新会话验证
  • real_trigger.py 未接真实引擎,框架就位,引擎与凭据需自备
  • 语料仍 2 条,靠真实出图积累,不能人工编造

明确不做

出图通道维持不内置;不接 skills-up;不拆 34 个原子为 34 个技能;不引向量检索;不做 Web 界面。

fix_stats.py 在 manifest 为空时提示用 --generate 跑真闭环,但产出 manifest 的
run_loop.py 已于 2026-11-10 移除,用户照提示找不到入口。

改为说明本版本不内置出图闭环,manifest 需由外部通道产出,并给出 rounds/fails/fixes
的字段格式,让用户知道该记什么。
仓库此前没有 .gitattributes,本机 core.autocrlf=true,新增文本文件入库时会被转成
CRLF,与仓库既有 LF 内容混用。按仓库规范补上,文本统一 LF,图片标为二进制避免
git 做换行转换。
不接 MCP 时,agent 取一条模板要走四步:读 SKILL.md、判工位、读 _atoms/aNN.json、
从 templates 挑一个,全靠模型自觉。这四个工具把那四步压成一次调用。

- query_atom      按品类/产物/动作定位原子,返回编号与命中依据
- get_template    取模板,连同该原子的规则、清单、占位符一起返回
- validate_prompt 跑 slop_check 与规则引擎
- check_output    跑 check_image 做平台机检

四个工具都是现有脚本与索引的薄包装,不引入新判据。JSON-RPC 用标准库实现,不引第三方
SDK。索引里 categories 字段常为空,定位改按 title/task/tags 合并匹配,避免空字段让
打分静默失效。
SKILL.md 写着「机检不过不交付」,但那只是文档要求,靠模型自觉。接上 PostToolUse
之后这条变成运行时强制:只要工具调用在 out/ 下落了图片,机检就一定跑。

hook 只认 --platform 显式参数判平台,不从文件名或路径推断——路径里的
product-amazon.png 会被误判成指定了 amazon 平台。没有新图、不在 out/ 下、判不出
平台、输入不是合法 JSON,一律静默 exit 0,绝不因机检自身故障阻断用户流程。

出不通过或警告时按 ZCode hooks schema 输出 hookSpecificOutput.additionalContext,
把失败项与修复提示回注给模型。
/ecom:main、/ecom:detail、/ecom:sku、/ecom:reverse 对应五个工位里的四个高频入口。
用户不用记「主图台、详情页台」这套术语,打斜杠就直接进对应流程。

每条命令都写了先定位原子、再取模板、再自查的步骤,裸需求转交导演技能的分支也写进去了,
与 SKILL.md 的判据一致。
此前三个技能各自拷贝安装,而 tools/ 在仓库根不在技能目录里,按目录拷贝装完就没有
脚本——SKILL.md 里十几处 python tools/xxx.py 全部失效。这是主推路径断了。

插件 skills 字段支持数组,且可指向仓库内既有目录,所以不必搬动结构:插件安装会把
整个仓库装进去,tools/ 自然随行。清单声明三个技能、命令目录、hooks 与 mcpServers。

配套 check_plugin.py 校验清单字段、声明资源存在性、路径越界与事件名合法性,接入 CI。
官方 zcode plugins validate 已验证通过。
品牌锁:套图的一致性难点在跨图漂移。模型每次重新解读「干净高级」都能得到不同结果。
这份规范列出十个必锁视觉字段(光位、色温、阴影、背景色值、材质、机位、镜头、调色、
排版、输出边界),要求逐字相同地出现在每张提示词里,变化的只留在场景与主体段。

AIGC 标注库:原来 platform.json 里每个平台只有一句 ai_label,缺法条依据。这份库收了
FTC、加州 SB 942、纽约 SB 8420-A、EU AI Act Art.50、国内标识办法五地判据,含罚款
口径与卖家动作;图类型分 A 实拍无人 / B 常规修图 / C 写实 AI 人物 / D 复刻真人,
C 类必须披露,D 类直接拒绝;另列四条红线。

两份都写清适用边界:数值来自公开法条,平台执行口径以官方卖家中心为准,不构成法律意见。
机检管几何与合规,管不了产品一致性。这份脚本把「该人看什么」整理成结构化复核单:
启发式嫌疑分、原子的检查项、产品保留清单逐项核对表,结论列全部留空等人填。

不直接调模型判图,是因为 VLM 在「精确编辑是否生效、保留约束是否满足」这类细粒度判断
上不可靠,把它的分数当通过依据会把错误固化。脚本输出里没有 pass 这个词。
现有触发回归把 description 与路由表喂给模型,只断言路由结论——模型没有装技能的概念,
抓不到「装了但不触发」。real_trigger.py 把技能交给真实引擎,看它是否自行加载并走到
正确原子。

按三层分工:静态检查每次提交跑,近似触发每次 PR 跑,真实触发只在里程碑手动跑(慢且
可能计费)。引擎命令与凭据由使用者提供,脚本不假设具体引擎的旗标。CI 里只跑它的离线
自检,不接真实引擎。

CI 同时接入 mcp_server、vlm_review、check_plugin 的自检,并新增插件清单校验步骤。
README 的安装段此前只教拷技能目录,而那样装会丢掉 tools/——机检、规则引擎、语料检索、
MCP 工具都不在技能目录里。改为推荐插件安装,并说明只拷技能会缺什么。

新增:装机后自带能力的机制表(出图自动机检、MCP 四工具、斜杠命令)、仓库结构树补
插件与 hooks 与 commands、已知限制补 VLM 复核边界与真实评测的引擎前提。

SKILL.md 硬规则补三条:套图一致性(品牌锁)、AI 标注义务(图类型四分类)、视觉复核
(只提示不判定),三条都指向新增的规范文件。

CHANGELOG 归集 v2.1.0,把 v2.0.0 之后 58 个提交按对外可见形态记录。README.en.md
供英文用户与 skills.sh 收录。
@ADC1920
ADC1920 merged commit c3ca2ab into main Nov 12, 2026
3 checks passed
@ADC1920
ADC1920 deleted the feat/zcode-plugin-runtime branch November 12, 2026 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant