update 添加保存

This commit is contained in:
2026-01-07 17:34:10 +08:00
commit 7cca41b457
15 changed files with 6411 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
node_modules

17
package.json Normal file
View File

@@ -0,0 +1,17 @@
{
"name": "batch-prompts",
"version": "0.0.1",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
"license": "MIT",
"packageManager": "pnpm@10.26.0",
"type": "module",
"dependencies": {
"@kevisual/ai": "^0.0.19"
}
}

329
pnpm-lock.yaml generated Normal file
View File

@@ -0,0 +1,329 @@
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
'@kevisual/ai':
specifier: ^0.0.19
version: 0.0.19
prompts:
dependencies:
es-toolkit:
specifier: ^1.43.0
version: 1.43.0
nanoid:
specifier: ^5.1.6
version: 5.1.6
unstorage:
specifier: ^1.17.3
version: 1.17.3
devDependencies:
'@kevisual/ai':
specifier: ^0.0.19
version: 0.0.19
'@kevisual/types':
specifier: ^0.0.10
version: 0.0.10
'@kevisual/use-config':
specifier: ^1.0.21
version: 1.0.21(dotenv@17.2.3)
'@types/bun':
specifier: ^1.3.5
version: 1.3.5
'@types/node':
specifier: ^25.0.3
version: 25.0.3
packages:
'@kevisual/ai@0.0.19':
resolution: {integrity: sha512-AFc8m6OcHZNxCb88bvzhvwWTZ4EVYyPupBzPUsLKLpdNBvsqm9TRboKCM2brJj2cqHnm+H+RbAk9AcGJkYhRCA==}
'@kevisual/load@0.0.6':
resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
'@kevisual/logger@0.0.4':
resolution: {integrity: sha512-+fpr92eokSxoGOW1SIRl/27lPuO+zyY+feR5o2Q4YCNlAdt2x64NwC/w8r/3NEC5QenLgd4K0azyKTI2mHbARw==}
'@kevisual/permission@0.0.3':
resolution: {integrity: sha512-8JsA/5O5Ax/z+M+MYpFYdlioHE6jNmWMuFSokBWYs9CCAHNiSKMR01YLkoVDoPvncfH/Y8F5K/IEXRCbptuMNA==}
'@kevisual/query@0.0.31':
resolution: {integrity: sha512-bBdepjmMICLpcj/a9fnn82/0CGGYUZiCV+usWsJZKAwVlZcnj+WtKmbgKT09KpP6g3jjYzYOaXHiNFB8N0bQAQ==}
'@kevisual/types@0.0.10':
resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==}
'@kevisual/use-config@1.0.21':
resolution: {integrity: sha512-czgy4+tBDBJI6QTnKh2PCwswET6ZpZ4ZqBE/SPkkOivEtlrcPzLs5elwMLZ3goD1XMD4VB3yjumb5WuW/8H8MA==}
peerDependencies:
dotenv: ^17
'@types/bun@1.3.5':
resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==}
'@types/node@25.0.3':
resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==}
anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
bun-types@1.3.5:
resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==}
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
cookie-es@1.2.2:
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
dotenv@17.2.3:
resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
engines: {node: '>=12'}
es-toolkit@1.43.0:
resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==}
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
h3@1.15.4:
resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
iron-webcrypto@1.2.1:
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
nanoid@5.1.6:
resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==}
engines: {node: ^18 || >=20}
hasBin: true
node-fetch-native@1.6.7:
resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
node-mock-http@1.0.4:
resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
radix3@1.1.2:
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
ufo@1.6.2:
resolution: {integrity: sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==}
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
unstorage@1.17.3:
resolution: {integrity: sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==}
peerDependencies:
'@azure/app-configuration': ^1.8.0
'@azure/cosmos': ^4.2.0
'@azure/data-tables': ^13.3.0
'@azure/identity': ^4.6.0
'@azure/keyvault-secrets': ^4.9.0
'@azure/storage-blob': ^12.26.0
'@capacitor/preferences': ^6.0.3 || ^7.0.0
'@deno/kv': '>=0.9.0'
'@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0
'@planetscale/database': ^1.19.0
'@upstash/redis': ^1.34.3
'@vercel/blob': '>=0.27.1'
'@vercel/functions': ^2.2.12 || ^3.0.0
'@vercel/kv': ^1.0.1
aws4fetch: ^1.0.20
db0: '>=0.2.1'
idb-keyval: ^6.2.1
ioredis: ^5.4.2
uploadthing: ^7.4.4
peerDependenciesMeta:
'@azure/app-configuration':
optional: true
'@azure/cosmos':
optional: true
'@azure/data-tables':
optional: true
'@azure/identity':
optional: true
'@azure/keyvault-secrets':
optional: true
'@azure/storage-blob':
optional: true
'@capacitor/preferences':
optional: true
'@deno/kv':
optional: true
'@netlify/blobs':
optional: true
'@planetscale/database':
optional: true
'@upstash/redis':
optional: true
'@vercel/blob':
optional: true
'@vercel/functions':
optional: true
'@vercel/kv':
optional: true
aws4fetch:
optional: true
db0:
optional: true
idb-keyval:
optional: true
ioredis:
optional: true
uploadthing:
optional: true
snapshots:
'@kevisual/ai@0.0.19':
dependencies:
'@kevisual/logger': 0.0.4
'@kevisual/permission': 0.0.3
'@kevisual/query': 0.0.31
'@kevisual/load@0.0.6':
dependencies:
eventemitter3: 5.0.1
'@kevisual/logger@0.0.4': {}
'@kevisual/permission@0.0.3': {}
'@kevisual/query@0.0.31': {}
'@kevisual/types@0.0.10': {}
'@kevisual/use-config@1.0.21(dotenv@17.2.3)':
dependencies:
'@kevisual/load': 0.0.6
dotenv: 17.2.3
'@types/bun@1.3.5':
dependencies:
bun-types: 1.3.5
'@types/node@25.0.3':
dependencies:
undici-types: 7.16.0
anymatch@3.1.3:
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
bun-types@1.3.5:
dependencies:
'@types/node': 25.0.3
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
cookie-es@1.2.2: {}
crossws@0.3.5:
dependencies:
uncrypto: 0.1.3
defu@6.1.4: {}
destr@2.0.5: {}
dotenv@17.2.3: {}
es-toolkit@1.43.0: {}
eventemitter3@5.0.1: {}
h3@1.15.4:
dependencies:
cookie-es: 1.2.2
crossws: 0.3.5
defu: 6.1.4
destr: 2.0.5
iron-webcrypto: 1.2.1
node-mock-http: 1.0.4
radix3: 1.1.2
ufo: 1.6.2
uncrypto: 0.1.3
iron-webcrypto@1.2.1: {}
lru-cache@10.4.3: {}
nanoid@5.1.6: {}
node-fetch-native@1.6.7: {}
node-mock-http@1.0.4: {}
normalize-path@3.0.0: {}
ofetch@1.5.1:
dependencies:
destr: 2.0.5
node-fetch-native: 1.6.7
ufo: 1.6.2
picomatch@2.3.1: {}
radix3@1.1.2: {}
readdirp@4.1.2: {}
ufo@1.6.2: {}
uncrypto@0.1.3: {}
undici-types@7.16.0: {}
unstorage@1.17.3:
dependencies:
anymatch: 3.1.3
chokidar: 4.0.3
destr: 2.0.5
h3: 1.15.4
lru-cache: 10.4.3
node-fetch-native: 1.6.7
ofetch: 1.5.1
ufo: 1.6.2

5
pnpm-workspace.yaml Normal file
View File

@@ -0,0 +1,5 @@
packages:
- 'prompts'
- 'web'
- 'backend'
- 'agent'

1
prompts/.env Normal file
View File

@@ -0,0 +1 @@
KEVISUAL_NEW_API_KEY=sk-YyVo5WqJBmAnhIPfww9XpUPvHNhsuiXs9a1OSfBul94d7O47

6
prompts/.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
node_modules
storage
.env
!.env*example

5002
prompts/docs/prompts-01.json Normal file

File diff suppressed because it is too large Load Diff

624
prompts/package-lock.json generated Normal file
View File

@@ -0,0 +1,624 @@
{
"name": "prompts",
"version": "0.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "prompts",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
"es-toolkit": "^1.43.0"
},
"devDependencies": {
"@kevisual/types": "^0.0.10",
"tsx": "^4.21.0"
}
},
"../node_modules/.pnpm/@kevisual+types@0.0.10/node_modules/@kevisual/types": {
"version": "0.0.10",
"dev": true,
"license": "MIT"
},
"../node_modules/.pnpm/es-toolkit@1.43.0/node_modules/es-toolkit": {
"version": "1.43.0",
"license": "MIT",
"workspaces": [
"docs",
"benchmarks"
],
"devDependencies": {
"@arethetypeswrong/cli": "^0.15.3",
"@changesets/changelog-github": "^0.5.0",
"@changesets/cli": "^2.27.1",
"@eslint/js": "^9.9.0",
"@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-typescript": "^12.1.0",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/broken-link-checker": "^0",
"@types/eslint": "^9",
"@types/jscodeshift": "^0.12.0",
"@types/lodash": "^4.17.20",
"@types/node": "^22.7.4",
"@types/tar": "^6.1.13",
"@typescript-eslint/parser": "^8.26.1",
"@vitest/coverage-istanbul": "^2.1.2",
"@vitest/eslint-plugin": "^1.3.4",
"@vue/compiler-sfc": "^3.5.10",
"broken-link-checker": "^0.7.8",
"eslint": "^9.22.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-no-for-of-array": "^0.0.1",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-vue": "^9.28.0",
"execa": "^9.3.0",
"globals": "^15.9.0",
"happy-dom": "^16.7.3",
"jscodeshift": "^17.0.0",
"packlint": "^0.2.4",
"prettier": "^3.2.5",
"prettier-plugin-sort-re-exports": "^0.1.0",
"rollup": "^4.19.0",
"rollup-plugin-dts": "^6.1.1",
"tar": "^6",
"tslib": "^2.6.3",
"tsx": "^4.19.0",
"typescript": "^5.8.2",
"typescript-eslint": "^8.6.0",
"vercel": "^41.4.1",
"vitest": "^2.1.2"
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",
"integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz",
"integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz",
"integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz",
"integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz",
"integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz",
"integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz",
"integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz",
"integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz",
"integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz",
"integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz",
"integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz",
"integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz",
"integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==",
"cpu": [
"mips64el"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz",
"integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz",
"integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz",
"integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz",
"integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz",
"integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz",
"integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz",
"integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz",
"integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openharmony-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz",
"integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openharmony"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz",
"integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz",
"integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz",
"integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz",
"integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@kevisual/types": {
"resolved": "../node_modules/.pnpm/@kevisual+types@0.0.10/node_modules/@kevisual/types",
"link": true
},
"node_modules/es-toolkit": {
"resolved": "../node_modules/.pnpm/es-toolkit@1.43.0/node_modules/es-toolkit",
"link": true
},
"node_modules/esbuild": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz",
"integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.27.2",
"@esbuild/android-arm": "0.27.2",
"@esbuild/android-arm64": "0.27.2",
"@esbuild/android-x64": "0.27.2",
"@esbuild/darwin-arm64": "0.27.2",
"@esbuild/darwin-x64": "0.27.2",
"@esbuild/freebsd-arm64": "0.27.2",
"@esbuild/freebsd-x64": "0.27.2",
"@esbuild/linux-arm": "0.27.2",
"@esbuild/linux-arm64": "0.27.2",
"@esbuild/linux-ia32": "0.27.2",
"@esbuild/linux-loong64": "0.27.2",
"@esbuild/linux-mips64el": "0.27.2",
"@esbuild/linux-ppc64": "0.27.2",
"@esbuild/linux-riscv64": "0.27.2",
"@esbuild/linux-s390x": "0.27.2",
"@esbuild/linux-x64": "0.27.2",
"@esbuild/netbsd-arm64": "0.27.2",
"@esbuild/netbsd-x64": "0.27.2",
"@esbuild/openbsd-arm64": "0.27.2",
"@esbuild/openbsd-x64": "0.27.2",
"@esbuild/openharmony-arm64": "0.27.2",
"@esbuild/sunos-x64": "0.27.2",
"@esbuild/win32-arm64": "0.27.2",
"@esbuild/win32-ia32": "0.27.2",
"@esbuild/win32-x64": "0.27.2"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/get-tsconfig": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
"integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"resolve-pkg-maps": "^1.0.0"
},
"funding": {
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
"node_modules/resolve-pkg-maps": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
"node_modules/tsx": {
"version": "4.21.0",
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
"integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "~0.27.0",
"get-tsconfig": "^4.7.5"
},
"bin": {
"tsx": "dist/cli.mjs"
},
"engines": {
"node": ">=18.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
}
}
}
}

27
prompts/package.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "prompts",
"version": "0.0.1",
"description": "",
"main": "index.js",
"scripts": {
"perfect": "bun test/generate-perfect.ts",
"pony": "bun test/generate-pony.ts"
},
"keywords": [],
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
"license": "MIT",
"packageManager": "pnpm@10.26.0",
"type": "module",
"devDependencies": {
"@kevisual/ai": "^0.0.19",
"@kevisual/types": "^0.0.10",
"@kevisual/use-config": "^1.0.21",
"@types/bun": "^1.3.5",
"@types/node": "^25.0.3"
},
"dependencies": {
"es-toolkit": "^1.43.0",
"nanoid": "^5.1.6",
"unstorage": "^1.17.3"
}
}

14
prompts/src/index.ts Normal file
View File

@@ -0,0 +1,14 @@
import { PromptGenerator, type PromptGeneratorOptions } from "./prompt-geneator.ts";
import { writeFile } from "node:fs/promises";
import { Prompt } from "./prompt-perfect.ts";
import { customAlphabet } from "nanoid";
const letter = 'abcdefghijklmnopqrstuvwxyz'
const randomString = customAlphabet(letter, 16);
async function saveToFile(data: Map<string, string>, outputPath: string): Promise<void> {
const arrayData = Array.from(data.entries()).map(([key, value]) => ({ key, value, id: randomString() }));
await writeFile(outputPath, JSON.stringify(arrayData, null, 2), "utf-8");
console.log(`Generated ${arrayData.length} prompts and saved to ${outputPath}`);
}
export { PromptGenerator, PromptGeneratorOptions, saveToFile, Prompt };

View File

@@ -0,0 +1,91 @@
import { randomInt as random } from "es-toolkit";
import { max } from "es-toolkit/compat";
export interface PromptGeneratorOptions {
count?: number;
outputPath?: string;
sourceKeys?: string[];
additionalValues?: string[];
source?: { [key: string]: string[] };
endString?: string;
}
export class PromptGenerator {
sourceKeys: string[];
additionalValues: string[];
count: number;
source: { [key: string]: string[] } = {};
endString: string = "";
map: Map<string, string> = new Map();
constructor(options: PromptGeneratorOptions = {}) {
this.additionalValues = options.additionalValues || [];
this.count = options.count ?? 1000;
this.source = options.source || {};
if (options?.sourceKeys) {
this.sourceKeys = options.sourceKeys || [];
} else {
this.sourceKeys = Object.keys(this.source);
}
this.endString = options.endString || "";
}
generateMap(opts?: { max?: number }): Map<string, string> {
const map = new Map<string, string>();
const source = this.source
let _max = max([opts?.max || 1200, this.count + 1000])!;
let k = 0;
while (map.size < this.count) {
const selectedValues: string[] = [];
this.sourceKeys.forEach((key: string) => {
const values = source[key];
if (!values) {
return;
}
const randomIndex = random(0, values.length - 1);
const randomValue = values[randomIndex];
selectedValues.push(randomValue);
});
const randomSlect = random(1, 3);
const additionalRandomValue = this.pickRandomValue(randomSlect, this.additionalValues);
selectedValues.push(...additionalRandomValue);
if (this.endString) {
selectedValues.push(this.endString);
}
const key = selectedValues.join(",");
k++;
if (k > _max) {
console.warn(`Reached maximum attempts (${_max}) to generate unique prompts. Generated ${map.size} unique prompts.`);
break;
}
if (!map.has(key)) {
map.set(key, selectedValues.join(" "));
}
}
this.map = map;
return map;
}
/**
* 获取随机附加值
* @param num
* @param arr
* @returns
*/
pickRandomValue(num: number, arr: string[]): string[] {
const randomAdditionalValues: string[] = [];
const usedIndices: Set<number> = new Set();
if (num > arr.length) {
num = Math.min(num, arr.length - 1);
}
while (randomAdditionalValues.length < num && usedIndices.size < arr.length) {
const randomIndex = random(0, arr.length - 1);
if (!usedIndices.has(randomIndex)) {
usedIndices.add(randomIndex);
randomAdditionalValues.push(arr[randomIndex]);
}
}
return randomAdditionalValues;
}
}

View File

@@ -0,0 +1,18 @@
export interface PromptOptions {
perfectPrompt?: string;
}
const DefaultPerfectPrompt = "我需要你帮我完善提示词,使其更加详细和具体。\n";
export class Prompt {
perfectPrompt: string = "";
constructor(options: PromptOptions = {}) {
this.perfectPrompt = options.perfectPrompt || DefaultPerfectPrompt;
}
perfect(info: string): string {
return `${info}\n当前的提示词是在<perfect/>标签中:\n<perfect>${this.perfectPrompt}</perfect>`;
}
clearPerfectTags(text: string): string {
return text.replace('<perfect>', '').replace('</perfect>', '').trim();
}
}

View File

@@ -0,0 +1,93 @@
import { Kevisual } from "@kevisual/ai";
import { useConfig } from '@kevisual/use-config'
import path from "node:path";
import fs from "node:fs";
import { createStorage } from "unstorage";
import { Prompt } from "../src/index.ts";
import fsDriver from "unstorage/drivers/fs";
const promptPath = path.join(process.cwd(), "./docs/prompts-01.json");
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
const storage = createStorage({
driver: fsDriver({ base: 'storage' }),
});
const config = useConfig();
const kevisual = new Kevisual({
token: config.KEVISUAL_NEW_API_KEY || "",
model: "qwen-turbo"
});
if (!fs.existsSync(promptPath)) {
console.error("Prompt file not found:", promptPath);
process.exit(1);
}
const prompts = JSON.parse(fs.readFileSync(promptPath, "utf-8")) as { key: string, value: string, id: string }[];
const currentUsage = (await storage.getItem("usage.json") as any) || { prompt_tokens: 0, total_tokens: 0, completion_tokens: 0 };
console.log("Current usage:", currentUsage);
async function generatePerfectPrompts() {
for (const promptData of prompts) {
const id = promptData.id + '.json';
const has = await storage.get(id);
if (has) {
continue;
}
try {
const perfectPrompt = `请你将以下提示词进行完善,使其更加详细和具体,适合用于生成高质量的像素艺术图像。要求如下:
1. 只返回完善后的提示词,不要包含任何多余的内容或解释。
2. 确保提示词专注于像素艺术风格,包括但不限于像素化角色、场景和物体的描述。
3. 使用具体的细节来增强提示词的表现力,例如颜色、构图、光影效果等。
4. 避免使用与像素艺术无关的术语或描述。
5. 保持提示词的简洁性,避免过于冗长,但要确保信息量充足。
6. 如果需要颜色,需要整个图像的颜色更少的描述,而不是复杂的颜色细节, 背景默认纯蓝色。
7. 使用中文进行描述。
`;
const prompt = new Prompt({ perfectPrompt });
const result = await kevisual.chat([
{
role: "user",
content: prompt.perfect(promptData.value),
}
])
const text = prompt.clearPerfectTags(kevisual.responseText);
await storage.setItem(id, {
value: promptData.value,
id: promptData.id,
perfect: text,
});
await sleep(2000); // Avoid rate limits
const _usage = kevisual.getChatUsage()
console.log("Generated perfect prompt for:", promptData.id, _usage?.total_tokens);
currentUsage.total_tokens += _usage?.total_tokens || 0;
currentUsage.prompt_tokens += _usage?.prompt_tokens || 0;
currentUsage.completion_tokens += _usage?.completion_tokens || 0;
// Update usage
await storage.setItem("usage.json", {
prompt_tokens: currentUsage.prompt_tokens,
total_tokens: currentUsage.total_tokens,
completion_tokens: currentUsage.completion_tokens,
});
console.log('优化的提示词', text);
} catch (error) {
console.error("Error generating perfect prompt for:", promptData, error);
// 如果是超时错误,等待一段时间后继续
if ((error as any)?.message?.includes("timeout")) {
console.log("Timeout occurred, waiting for 30 seconds before retrying...");
await sleep(10000);
continue;
} else {
process.exit(1);
}
}
}
}
generatePerfectPrompts();
// bun test/generate-perfect.ts
// pm2 start --name "generate-perfect" --interpreter=bun -- test/generate-perfect.ts

View File

@@ -0,0 +1,28 @@
import { PromptGenerator, saveToFile } from "../src/index.ts";
import { source } from "./source.ts";
import path from 'node:path';
const coreValue = [
"像素艺术",
"矢量插画",
"线条艺术",
"可爱",
"日式可爱",
"Q版",
"萌",
"简约",
"极简主义",
"干净线条",
"扁平色彩",
]
const promptGenerator = new PromptGenerator({
count: 1000,
source: source,
additionalValues: coreValue,
endString: '纯色背景'
});
const promptMap = promptGenerator.generateMap();
const outputPath = path.join(process.cwd(), "./docs/prompts.json");
await saveToFile(promptMap, outputPath);

155
prompts/test/source.ts Normal file
View File

@@ -0,0 +1,155 @@
export const source = {
"subject": [
"圆滚滚的马",
"穿衣服的马",
"胖乎乎的小马",
"戴帽子的马",
"毛茸茸的斑马",
"拿气球的独角兽",
"瘦长的马",
"Q版马",
"戴墨镜的马",
"拿着星星的马",
"古代战马披铠甲",
"水墨风格的骏马",
"发光的梦幻马",
"机械赛博格马",
"戴着皇冠的皇家马",
"背着书包上学的小马",
"会魔法的飞马",
"穿着宇航服的太空马",
"抱着吉他的摇滚马",
"正在画画的艺术家马",
"穿唐装的新年马",
"骑着扫帚的巫师马",
"戴着围巾的冬日小马",
"撑伞的雨中马",
"戴着耳机听音乐的潮马",
"背着礼物袋的圣诞马",
"在镜子前自拍的爱美马",
"变成龙形的神驹",
"半植物半马的自然精灵",
"透明水晶质感的玻璃马",
"由星尘组成的宇宙马",
"纸艺折纸风格小马",
"黏土手办风格马",
"影子轮廓马",
"像素复古游戏马",
"剪纸艺术风格马",
"霓虹灯线条马",
"蒸汽朋克齿轮马",
"浮世绘风格日本马",
"黄金雕像马"
],
"action": [
"坐着发呆",
"奔跑",
"跳跃",
"飞翔在空中",
"游泳",
"跳舞",
"大笑",
"惊讶地看着前方",
"抱着胡萝卜",
"放风筝",
"睡觉",
"吃草",
"哭泣",
"挥手打招呼",
"翻滚",
"冥想漂浮",
"变魔术",
"写毛笔字",
"演奏小提琴",
"骑滑板",
"拍照留念",
"讲笑话",
"种花",
"搭建积木城堡",
"阅读童话书",
"打太极拳",
"喷火",
"召唤闪电",
"隐身消失",
"时间暂停",
"穿越虫洞",
"绘制星空",
"拥抱朋友",
"滑冰",
"攀岩",
"倒立行走",
"吐彩虹",
"用尾巴画画",
"变身成光球",
"与蝴蝶共舞",
"点亮灯笼",
"解开谜题"
],
"scene": [
"纯白色背景",
"纯黑色背景",
"纯红色背景",
"纯蓝色背景",
"纯绿色背景",
"纯黄色背景",
"纯橙色背景",
"纯紫色背景",
"纯粉色背景",
"纯灰色背景",
"纯米色背景",
"纯青色背景",
"纯金色背景",
"纯银色背景",
"纯棕色背景",
"纯天蓝色背景",
"纯珊瑚色背景",
"纯薄荷绿背景",
"纯薰衣草紫背景",
"纯象牙白背景"
],
"style": [
"卡通渲染风格",
"水彩手绘质感",
"油画厚涂技法",
"中国风水墨画",
"赛博朋克霓虹光影",
"皮克斯3D动画风格",
"低多边形Low Poly",
"极简扁平设计",
"超现实主义梦境感",
"蒸汽朋克机械细节",
"浮世绘木刻纹理",
"儿童绘本插图",
"复古8-bit像素风",
"哥特式暗黑美学",
"波普艺术鲜艳撞色",
"剪纸拼贴艺术",
"玻璃彩绘效果",
"金属蚀刻工艺",
"沙画流动质感",
"全息投影光泽",
"黏土定格动画",
"铅笔素描线稿",
"荧光夜光风格",
"大理石雕塑质感",
"丝绸刺绣图案",
"动态模糊运动感",
"故障艺术Glitch Art",
"糖霜甜点装饰风",
"雪花结晶微观视角",
"星空粒子特效",
"幻彩渐变晕染",
"蜡笔涂鸦童趣风",
"青铜器铭文融合",
"敦煌壁画色彩",
"激光雕刻线条",
"毛毡布艺手工感",
"琉璃透光材质",
"水墨晕染+数字合成",
"霓虹灯牌背景",
"复古胶片颗粒感",
"动态流体模拟",
"万圣节南瓜灯氛围"
],
}