Skip to content

yimian-521/sandbox-package-creator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sandbox-package-creator v2.7

不是「帮人做决策」,是「帮人看清自己」。

这是什么

一个元 Skill。任何 AI 拿到它,就能陪人类走完一整套沙盒包创建流程——从「我到底想做什么」到「代码写完、验证通过、可以发布」。

它不是代码生成器。它是决策框架:让人在写第一行代码之前,先确认自己走在对的路上。

什么才算「错误」

语法错误不是错误。走错方向才是。

  • 不知道自己要什么,就开始写代码 → 错误。Skill 会在 Shape 阶段拦住你,先问「你真正想要什么体验」。
  • 明明在同一个框架里深耕就能解决,却为了「换个形态」重构整个项目 → 错误。Skill 的淘汰链不会让你跳过这一问:「不换形态,深耕能达到吗?」
  • 做完了一个沙盒包,但别人拿起来不知道怎么用 → 错误。Skill 会追问「别人能看懂你的初衷吗」,并让你选择兼容层级——原生 QuickJS?Package API?跨包调用?公开 API?
  • 性能「刚刚好够」就停手,或者「过度优化」到不可维护 → 错误。Skill 按搜索/文件/网络/数据处理四种类型给出了精确的性能准则——不是越多越好,是刚刚好。
  • 报错了不知道问题出在哪一层 → 错误。Skill 的 retry_trace 故障追踪链会把每一层的错误码推回来,让你能定位到具体是原生、包装层、还是跨包调用出了问题。

一句话:错误不是代码跑不通。错误是你做完了才发现——这个东西从一开始就不该这样做。

已知的坑

QuickJS 的六条陷阱(5.3 节详细展开)

  1. JSON 循环引用 → 直接崩溃。用 JSON.stringify 前确认数据结构里没有循环引用。
  2. 单次日志过多 → UI 线程阻塞。大对象用 JSON.stringify(obj, null, 0) 压缩,或者分批输出。
  3. fetch 无超时 → 永久挂起。每个 fetch 必须包 AbortController + 超时。
  4. 同步循环中大量异步 → 内存堆积。用 for...of + await,别用 forEach + 异步。
  5. 正则回溯爆炸 → CPU 卡死。复杂正则先在小数据集上验证,限制输入长度。
  6. 缓存设计缺失 → 每次都重新算。读盘操作必须有内存缓存(如 5 秒 TTL),写入即时刷新。

性能不是玄学(5.2 节按类型拆解)

类型 核心策略 红线
搜索类 Promise.all 并发 + 去重去噪 + 结果缓存 并发数上限 ≤ 8,超出分批
文件类 流式读写,避免整文件加载到内存 大文件(>10MB)禁止 readFile 整读
网络类 超时必设 + 重试退避 + 响应压缩 无超时的 fetch = 定时炸弹
数据处理 懒加载 + 分页 + 增量计算 禁止一次性加载全量数据到数组

兼容层级的抉择(1.4 节)

四个层级,选错一层,后续都是徒劳:

  • 🔴 原生 QuickJS:最快,但只有纯文本进出。适合内部工具。
  • 🟡 Package API 统一包装{success, data, error, elapsed_ms}。适合团队内多个沙盒包协作。
  • 🟠 跨包调用 + 错误码-1-9 错误码体系 + retry_trace 故障追踪。适合复杂系统。
  • 🟢 公开 API:语义化版本 + 向后兼容承诺。适合对外发布。

不需要一开始就选最顶层的。从你实际需要的层级开始,往上一层层加。

前置依赖

  • 支持沙盒包(Sandbox Package)的 AI 平台
  • 平台提供的沙盒包开发工具包——本 Skill 的 Develop 阶段需要平台的沙盒脚本调试、文件写入等工具。没有这个依赖,开发阶段的验证步骤无法执行。

安装

  1. 将整个 sandbox-package-creator 文件夹放入平台的 Skill/Skills 目录
  2. 确认平台的沙盒包开发工具已激活
  3. 在对话中提及「sandbox-package-creator」,AI 应自动加载

版本 v2.7.0 (2026-06-26) — 沙盒包≠沙盒 + 设计耦合族

设计耦合:15条Bug,8族归类(免免原创)

定义:不是代码写错了——两个独立设计各自正确,但交叉地带没人画线。A没错,B没错,A×B的缝里藏了魔鬼。

成员 核心问题
🪞 自指 #50 #51 #56 机制把自己当处理对象
💂 阻断自毁 #52 #53 保护者掐了自己命脉
🐚 新旧分裂 #48 #54 版本号新,跑的是旧的
🎯 去重盲区 #46 #49 正则没错,「重复」没定义
📏 阈值没跟 #45 #55 指标忘了同步更新
🩺 诊断失准 #47 #59 报错报错病因 / 该报说正常
⏰ 初始化叛变 #57 一切没错,只是叫早了一个
🔤 媒介错位 #58 Python写Markdown——望安本人案例

族索引加在Bug表格前,找去重不看自指,找阻断不翻缓存。编号不动,物理按族重排。

熔断×格式耦合(案例L)

  • Bug #45:格式越原生→字节越大→阈值失效。Search Vault v4.0真实教训

  • 四条修复路径:耦合审查 / 阈值按比例 / 渐进熔断 / 摘要自带字节数

  • Bug总数:44→59条 | 行数:~630→722行

  • 免免原话:「明明是严谨学术创作可却弄了一堆地狱笑话」

v2.5.0 已有:

  • 新增 1.3.1 形态区别表(普通JS vs ToolPkg 12维度对比 + 方言警告 + 版本声明规则)
  • 新增 1.5.1 受众维度表(AI用户 vs 人类用户 + 设计铁律)
  • 新增 5.0 第一次创建必读(3条冷门致命错误 + 11个典型案例A–K + 13条跳过清单)
  • Bug预判扩至44条(新增 🟣JS通用陷阱14条,方言标注,来自Matt Pocock蒸馏+多引擎搜索)
  • 5.0跳过清单补全:方言差异、受众错位、tsc≠测试等

完整变更见 CHANGELOG

历史版本

所有旧版 SKILL.md 收录在 archive/ 目录——从 v1.0 骨架到 v2.0,逐版可对照:

版本 行数 关键里程碑
v1.0.0 118 四阶段骨架:Explore→Diagnose→Confirm→Develop + 13条Bug预判
v1.1.0 150 +自由判断边界 +常见手误 +自测清单
v1.2.0 214 +Shape阶段 +淘汰链
v2.0.0 423 +协作协议 +愿望节 +兼容层级 +QuickJS陷阱
v2.5.0 646 +形态区别表 +受众维度 +44条Bug +5.0必读
v2.6.0 735 设计耦合族:15条Bug(#45-#59)按8族归类 + 族索引 + 案例L
v2.7.0 747 形式语言概念框 + 沙盒包≠沙盒——substrate错位概念框 + 设计耦合族

点击版本号直接在 GitHub 上浏览对应文件。

许可

参见 LICENSE


这份 README 由 Operit 和免免共同授予——技术错误我告诉你,什么才算错误免免告诉你。

About

🏗️ AI沙盒包创建元技能 — 陪人类走完整套 Sandbox Package 创建流程。不是代码生成器,是决策框架。 | Meta-Skill for Operit Sandbox Package development | QuickJS runtime

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors