{"_id":"@aiping.cn/model_router","_rev":"13-5d6347c06399d838b669fd471e0308e1","name":"@aiping.cn/model_router","dist-tags":{"latest":"1.2.14"},"versions":{"1.2.0":{"name":"@aiping.cn/model_router","version":"1.2.0","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.0","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"c465c9c549a7ce1da960357632533d159659a157","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.0.tgz","fileCount":39,"integrity":"sha512-WekslmE47a3txNKxuGGKvV2VoMir2cGmLiyW/NThu743KQQawDpvRePsqYGOdE6STvI2aPwueKHeVmJ4UQwlsA==","signatures":[{"sig":"MEUCIE232H9hBEDNNSGzXyQbyvAc3qKc5bbsgojvBYtoRpZpAiEA3o9JJDsQuaweTenT2rmJL5NfN2yMMe/7ILylvIVI20U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":134245},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c2eca6b5e9181bf714e2cb740861116eb3ce261d","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","release":"node scripts/release.mjs","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.0_1773292969762_0.2793554718193736","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@aiping.cn/model_router","version":"1.2.2","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.2","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"fe731fa027e7bacc57e98c525e65c06afaefc494","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.2.tgz","fileCount":39,"integrity":"sha512-nM+WKeKycCeNj5V+e5NJUsQXMrwd0ICtmygFE5hko/vtpQrQE1DxJdr9lYfmUSHVM1VTCQ1+2CD8rTdTAm24KA==","signatures":[{"sig":"MEUCICxdG4/qZo+U90jbJtp9cQnU4vMRV5ucmya9pieo+dUaAiEA2b9+SzQT4uBQmnGrORcNk1s9QiZAuDS9gWyFYqIR5Sg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":134350},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8c7b5e09eb1fbc35086317f75a6a5858aa19db2c","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.2_1773296967451_0.864972762466611","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@aiping.cn/model_router","version":"1.2.3","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.3","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"f39403f386cce649e3045b4aa8d1f7f6573349fe","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.3.tgz","fileCount":39,"integrity":"sha512-hMxTifyAZNOAkRE+qsD3Cn/dZjLVRK8HW2kSW87RLyGUxgLUObhVQseE7b2lY4SACqVqH5LI6U+mc7EnlsEUYw==","signatures":[{"sig":"MEYCIQCq+XMYAXne0m/Dvh6MHlxcREFD8CJFh6rbru+TSDYw2wIhAPaS/S2DafYS0qYWb6xxatSWAd6tAzhHVCzCeNIVFvWd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142760},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"be53e5663458a32bad86ae56ba4ea6fc406f3c06","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.3_1773300310030_0.0061481379963777005","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@aiping.cn/model_router","version":"1.2.4","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.4","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"b875df47a5029d64183a2b88f3acf691c3cdec7d","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.4.tgz","fileCount":39,"integrity":"sha512-pmoRD1GYGQNCVtZmAzBGa51BpCPvzVIPks5CFTxy/GnlH1CMuq7GWqiwhNSCUCXXBgWe6KI4Xpu50oLV7EcUTg==","signatures":[{"sig":"MEQCIAV4YQGQBza9WfktMugW+SgYadQcAq/hWiRaWthkT5MeAiBptB/+co2I+HdELSAcVo2v8NkhrIYh2IWRbhxwJIn9RA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":147254},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7e84afe7879e44c613e87027d717341880b51b87","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.4_1773303174918_0.6053874270310531","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@aiping.cn/model_router","version":"1.2.5","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.5","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"7dc1412d09fd396bcb6a0796843aa46137dfad6b","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.5.tgz","fileCount":39,"integrity":"sha512-nsnomk3VacPpunO+hyUQUB7zCnZrHjkDHJS4h36nwqLNowZXOM+IF/tFqhx+vn67mLgg8DHwyaEYx9HcKnxFFA==","signatures":[{"sig":"MEYCIQDMtKmmSu2o9z8U/4lsnBMqKrrL+C4bMN+hOkI7SuGCSAIhANvTbHLxpWGhbattTVNzCOMcwG3kNvtr0EF54DVK2Xo6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149943},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"267eb6da6cf6bd931b654e87444e705817d0077b","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.5_1773331861822_0.5035314306164236","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@aiping.cn/model_router","version":"1.2.6","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.6","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"d6a372f36f6545173c6ffc615e001eda2a19fb77","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.6.tgz","fileCount":39,"integrity":"sha512-BFIr9eIBfJy1rJvKQT7QZYlz1MIhjOkq7AzfRjdwzFFVX+NGp9YLVNU5PbwnKRcHvyp+2gPOMrM/Jx6VFbmV/A==","signatures":[{"sig":"MEYCIQCC7GQL0gFurPTyOtPeCs5JNxWOY7dV29v0daqK2OeotQIhAL3tc+djKLwTMl26foPcGbeUYra15NAOOiEDG9X79KEt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":154952},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6ef37bfa27e79fcbfdc08524d16c196dfea5abc0","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.6_1773332119518_0.8493903831627228","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@aiping.cn/model_router","version":"1.2.7","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.7","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"6e7f402192bb04bd1f59cc5183cbd5531ee62346","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.7.tgz","fileCount":39,"integrity":"sha512-o/vw8WsJzF2h571B8VMQKA+YGbq3JdYsD5Wl5IvqBVxpaq7dM0UcuHthGWJEezo4Fn+suGq/bIybPoH8CVLIbA==","signatures":[{"sig":"MEYCIQDwL6Fo01/gVr/GwgbLltdgEnTzeKyHZmvCTdDrEVU//AIhAPZJG1LtTWSniSTRKQQ+DbSyQU1Y2VxOgrXDaRMDfq6u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159210},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a6aa7857b569475ad4193f239b7b6b694e50da47","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.7_1773334750387_0.7415757285003994","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@aiping.cn/model_router","version":"1.2.8","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.8","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"fe7bbda6e503b6a05fcd53c5e9a1cfdcf87b42b9","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.8.tgz","fileCount":39,"integrity":"sha512-xfu9xsipV5uGVKz/kkIdHdBwY0kwpCdmuzadKpMYPDW9/v58hMMcgCLbuOIJB1krN6SrgsI41X9M1fMGAzVWZw==","signatures":[{"sig":"MEQCIClRkNGmUTvPM3zG1yTlGFZyIK2O7hHUsr7FAXCV7AdSAiAjEVkOfC3US1/Bz96bXDOu7lVYfAkhvDJsY/uk5ziz/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167170},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1dea4885c6f0190fef8017331f430b6e122b3105","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.8_1773335954048_0.9168703109308476","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"@aiping.cn/model_router","version":"1.2.9","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.9","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"2ae21a65e28e94e6ae742cda7b43da680532e1b3","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.9.tgz","fileCount":39,"integrity":"sha512-1Yk0Fi7iNT6WHDWOlxXW9L8yIY/5Dd2Ww6+wLSOWXG31BSK77xjwK4KncojrTH6AukCxBZ1UIm0MzxkAyeZFLg==","signatures":[{"sig":"MEYCIQDXTv9r0Wiqx2QA8bullxJrqtydOupK+QPxqx+gvR/qcQIhALrtUVq2z09SWg/JcAujdoy3MuFLc3ceXY1U7nZnhvoG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168045},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ebd1e87e9873b5683d5afb2f2231780e7ce78161","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.9_1773367410943_0.8480443185392068","host":"s3://npm-registry-packages-npm-production"}},"1.2.11":{"name":"@aiping.cn/model_router","version":"1.2.11","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.11","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"265f89a53e63221b186a42be4cffd2d431cba26c","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.11.tgz","fileCount":39,"integrity":"sha512-vDkL0pFYJ4NxNVLc4ves/Wnve88dTvMbIb05KWEMIdbCEoS1BzWpMMldBB8vMQpLktQZVCMuhkQfpJWHOdB8Rw==","signatures":[{"sig":"MEUCIHkoaZcxLp82htBEQgfez3jjcsJCPpJHEXgjKHgS1aacAiEA6VFvdN653ezQzbmxeeX0lWfzZKJ9Hwr1olJsDZ3LPr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":180462},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ff6d0c3554b3c3a5a8b7370ad5a3770b408328b2","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","benchmark":"echo 'Run via: gh workflow run benchmark.yml' && gh run list --workflow=benchmark.yml --limit 5","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.11_1773508328756_0.27673293038764113","host":"s3://npm-registry-packages-npm-production"}},"1.2.12":{"name":"@aiping.cn/model_router","version":"1.2.12","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.12","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"fdea39aeae496892c83205af5a3d748e8c746f37","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.12.tgz","fileCount":39,"integrity":"sha512-+dbrlE69Ozrq8UBI+1M8ShNP6qsexG2+SxIOleDFxHc5lTn/dCUBuJ5Kp8T3zcVp5qaI6Bs+1v6TUaHbGKETWQ==","signatures":[{"sig":"MEQCIHU9v9cmT5Rz0HELaHbMXabpb/1JK3+BlH0Nd1eJpqUcAiAP+alLQgDByEgV4d18B84dCymoeW9HLRBpdsjZsyTdag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":183375},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bb33608a7ce8f1bf1d7e5e0cfa776337f76fee0c","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","benchmark":"echo 'Run via: gh workflow run benchmark.yml' && gh run list --workflow=benchmark.yml --limit 5","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.12_1773651267256_0.7979201982304365","host":"s3://npm-registry-packages-npm-production"}},"1.2.13":{"name":"@aiping.cn/model_router","version":"1.2.13","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"_id":"@aiping.cn/model_router@1.2.13","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"homepage":"https://github.com/haoruilee/aiping_router#readme","bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"dist":{"shasum":"bd0f1c40922140520b66840faef4976178505e32","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.13.tgz","fileCount":43,"integrity":"sha512-32OgrafwR8psYevL2EC96pZzAOON4d/wETXHjZ9v/6UCeOMklO5uSSishpy+g6lL/nKjB8OJV3D02C+saO5VvA==","signatures":[{"sig":"MEQCICWtd7ZGzAITQxpzcD32iw3T8/FnWxlMn1BwOvAUl3bMAiA5UKKv/jeyGX4DBwHrgjfNOkLUbwel1cgh9376n+KhCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208408},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8597a0ff188d89d46fafb5ae0a4e909052d67df9","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude src/__tests__/e2e.test.ts","build":"tsc","release":"node scripts/release.mjs","test:e2e":"vitest run src/__tests__/e2e.test.ts","benchmark":"echo 'Run via: gh workflow run benchmark.yml' && gh run list --workflow=benchmark.yml --limit 5","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/haoruilee/aiping_router.git","type":"git"},"_npmVersion":"10.8.2","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/model_router_1.2.13_1775040678993_0.5796365189614536","host":"s3://npm-registry-packages-npm-production"}},"1.2.14":{"name":"@aiping.cn/model_router","version":"1.2.14","description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest run --exclude src/__tests__/e2e.test.ts","test:e2e":"vitest run src/__tests__/e2e.test.ts","test:watch":"vitest","benchmark":"echo 'Run via: gh workflow run benchmark.yml' && gh run list --workflow=benchmark.yml --limit 5","lint":"eslint src --ext .ts","prepublishOnly":"npm run build","release":"node scripts/release.mjs"},"keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"author":{"name":"AIPing Team"},"repository":{"type":"git","url":"git+https://github.com/haoruilee/aiping_router.git"},"bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"homepage":"https://github.com/haoruilee/aiping_router#readme","engines":{"node":">=18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"openclaw":{"extensions":["./dist/index.js"]},"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.3.3","vitest":"^1.2.0"},"_id":"@aiping.cn/model_router@1.2.14","gitHead":"2fd90fb45ce061b7ebb6983354ef26f7d4b2c775","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-j8DtpSIcVtLeIG6BvpEQcSlHevZxJLLIJBIGnengFsSUU+M/9BVst+GcB0yeqwX8rWYk8+L1rQ9CTiqFxhpRGg==","shasum":"3098658fc08c4236b676a8085d2b695ca4709887","tarball":"https://registry.npmjs.org/@aiping.cn/model_router/-/model_router-1.2.14.tgz","fileCount":43,"unpackedSize":208986,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiping.cn%2fmodel_router@1.2.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAzny2kZJSpD3e5wI/0Z6UaBMh34i3vcn9JAOXu38zNCAiEAtHd2MSHkP6MDNYLBNs5U53VGPATyWsRjG4Gmj7GOlfg="}]},"_npmUser":{"name":"aiping.cn","email":"haoruileee@gmail.com"},"directories":{},"maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/model_router_1.2.14_1775041389438_0.328032585210295"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-12T05:22:49.709Z","modified":"2026-04-01T11:03:09.926Z","1.2.0":"2026-03-12T05:22:49.949Z","1.2.2":"2026-03-12T06:29:27.617Z","1.2.3":"2026-03-12T07:25:10.248Z","1.2.4":"2026-03-12T08:12:55.061Z","1.2.5":"2026-03-12T16:11:01.951Z","1.2.6":"2026-03-12T16:15:19.718Z","1.2.7":"2026-03-12T16:59:10.518Z","1.2.8":"2026-03-12T17:19:14.240Z","1.2.9":"2026-03-13T02:03:31.115Z","1.2.11":"2026-03-14T17:12:08.892Z","1.2.12":"2026-03-16T08:54:27.447Z","1.2.13":"2026-04-01T10:51:19.143Z","1.2.14":"2026-04-01T11:03:09.578Z"},"bugs":{"url":"https://github.com/haoruilee/aiping_router/issues"},"author":{"name":"AIPing Team"},"homepage":"https://github.com/haoruilee/aiping_router#readme","keywords":["openclaw","openclaw-plugin","model-router","aiping","ollama","kimi","llm-routing","local-model"],"repository":{"type":"git","url":"git+https://github.com/haoruilee/aiping_router.git"},"description":"OpenClaw plugin: smart routing between local Ollama models and AIPing cloud (Kimi-K2.5). ~90% requests stay local.","maintainers":[{"name":"aiping.cn","email":"haoruileee@gmail.com"}],"readme":"# @aiping.cn/model_router\n\n> 智能路由：本地 Ollama 小模型处理日常请求，AIPing 云端大模型（Kimi-K2.5）处理复杂任务。  \n> 约 **90% 请求走本地**，零成本、低延迟。\n\n[![npm version](https://img.shields.io/npm/v/@aiping.cn/model_router)](https://www.npmjs.com/package/@aiping.cn/model_router)\n[![E2E](https://github.com/haoruilee/aiping_router/actions/workflows/e2e.yml/badge.svg)](https://github.com/haoruilee/aiping_router/actions/workflows/e2e.yml)\n\n---\n# 如何使用\n\n```\nRead https://raw.githubusercontent.com/haoruilee/aiping_router/main/README.md, run 'openclaw plugins install @aiping.cn/model_router' then follow the instructions in that file.`\n```\n\n\n## 工作原理\n\n每条消息按 5 个维度打分，超过阈值才路由到云端：\n\n| 路由目标 | 触发条件 | 优势 |\n|---|---|---|\n| **本地模型**（Ollama） | 日常对话、短代码、普通问答 | 零延迟、零成本 |\n| **AIPing 云端**（Kimi-K2.5） | 超长上下文、大型代码分析、深度推理 | 强能力 |\n\n---\n\n## 一、安装 Ollama 本地模型\n\n> 如果你已经有 Ollama 在跑，直接跳到[第二步](#二安装插件)。\n\n### 1.1 安装 Ollama\n\n**macOS**\n```bash\n# 方式一：官网安装包（推荐）\n# 访问 https://ollama.com/download 下载 macOS 安装包，双击安装\n# 安装后 Ollama 会在菜单栏常驻\n\n# 方式二：Homebrew\nbrew install ollama\n```\n\n**Linux**\n```bash\ncurl -fsSL https://ollama.com/install.sh | sh\n```\n\n**Windows**\n```\n访问 https://ollama.com/download 下载 Windows 安装包（.exe），安装后自动启动服务\n```\n\n---\n\n### 1.2 启动 Ollama 服务\n\nmacOS 安装包版本安装后会自动运行，无需手动启动。  \nLinux / 命令行安装 请手动启动：\n\n```bash\nollama serve\n```\n\n验证是否在运行：\n```bash\ncurl http://localhost:11434/api/tags\n# 正常返回 {\"models\":[...]}\n```\n\n---\n\n### 1.3 拉取本地模型\n\n推荐模型（按内存占用从小到大）：\n\n| 模型 | 大小 | 内存需求 | 适合场景 |\n|---|---|---|---|\n| `qwen2.5:0.5b` | ~0.4 GB | ≥ 2 GB | 极限轻量，测试用 |\n| `qwen2.5:4b` | ~2.3 GB | ≥ 4 GB | **推荐首选**，中文能力强 |\n| `qwen2.5:7b` | ~4.4 GB | ≥ 8 GB | 质量更高 |\n| `llama3.2:3b` | ~2.0 GB | ≥ 4 GB | 英文能力出色 |\n| `phi3.5:mini` | ~2.2 GB | ≥ 4 GB | 推理能力强 |\n| `gemma3:4b` | ~3.3 GB | ≥ 6 GB | Google 出品，均衡 |\n\n```bash\n# 拉取推荐模型（约 2.3 GB，国内可能需要挂代理）\nollama pull qwen2.5:4b\n\n# 查看已下载的模型\nollama list\n\n# 快速测试模型是否正常\nollama run qwen2.5:4b \"你好\"\n```\n\n> **网络慢？** 可使用国内镜像：\n> ```bash\n> OLLAMA_HOST=0.0.0.0 ollama serve   # 确保服务在跑\n> # 或者直接使用 https://registry.ollama.ai 的国内节点（如有）\n> ```\n\n---\n\n## 二、安装插件\n\n```bash\nopenclaw plugins install @aiping.cn/model_router\n```\n\n> **npm 安装遇到问题？** 也可以直接从 GitHub Release 安装：\n> ```bash\n> openclaw plugins install https://github.com/haoruilee/aiping_router/releases/latest/download/aiping.cn-model_router-1.2.5.tgz\n> ```\n\n安装完成后终端会提示：\n```\n尚未配置 AIPing API Key。\n➜  运行配置向导：openclaw model-router-setup\n```\n\n---\n\n## 三、运行配置向导\n\n**方式一：交互式向导**（推荐第一次使用）\n\n```bash\nopenclaw model-router-setup\n```\n\n向导会引导你完成以下配置（全程中文，约 2 分钟）：\n\n```\n第 1 步：AIPing 云端 API Key\n  → 访问 https://aiping.cn/user/user-center 获取\n  → 向导会立即验证 Key 是否有效\n\n第 2 步：本地模型地址和模型名\n  → 自动检测 Ollama 服务状态\n  → 显示已下载模型列表，选序号即可\n\n第 3 步：路由阈值（默认 85，约 90% 走本地）\n\n第 4 步：连通性测试 + 保存配置\n```\n\n**方式二：一行命令（CI/CD 或快速配置）**\n\n```bash\nopenclaw model-router-setup \\\n  --aiping-api-key \"QC-你的Key\" \\\n  --local-model qwen2.5:4b \\\n  --local-proxy-url http://localhost:11434\n```\n\n所有可用参数：\n\n```\n--aiping-api-key <key>   AIPing API Key（必填，跳过交互提问）\n--local-model <model>    本地模型名称（默认 qwen2.5:4b）\n--local-proxy-url <url>  本地 Ollama 地址（默认 http://localhost:11434）\n--local-proxy-key <key>  本地代理鉴权 Key（可选，LM Studio 等需要）\n--cloud-model <model>    云端模型名称（默认 Kimi-K2.5）\n--routing-threshold <n>  路由阈值 0-100（默认 85，越高越偏本地）\n--no-fallback            禁用本地失败时自动切换到云端\n```\n\n---\n\n## 四、配置 OpenClaw 使用代理端点\n\n插件启动后会在 OpenClaw Gateway 上注册一个 OpenAI 兼容的代理端点：\n\n```\nhttp://localhost:18789/aiping/v1/chat/completions\n```\n\n在 `~/.openclaw/openclaw.json` 中添加自定义 provider：\n\n```json\n{\n  \"models\": {\n    \"providers\": {\n      \"aiping\": {\n        \"id\": \"aiping\",\n        \"api\": \"openai-completions\",\n        \"url\": \"http://localhost:18789/aiping/v1\",\n        \"models\": [\n          {\n            \"id\": \"aiping:claw\",\n            \"label\": \"AIPing 智能路由（本地+云端）\"\n          }\n        ]\n      }\n    }\n  }\n}\n```\n\n然后重启 Gateway：\n\n```bash\nopenclaw gateway --restart\n```\n\n在 OpenClaw 中选择模型 **`aiping:claw`** 即可。路由自动进行，对你完全透明。\n\n---\n\n## 路由规则详解\n\n每条消息最高得 **85 分**，超过阈值（默认 85）才走云端：\n\n| 维度 | 最高分 | 触发条件 |\n|---|---|---|\n| Token 数量 | 30 | 估算 > 4000 tokens |\n| 代码复杂度 | 20 | 代码块 > 80 行 |\n| 强推理关键词 | 15 | \"逐步分析\"、\"深度分析\"、\"step by step\"… |\n| 多轮上下文 | 20 | 对话 > 16 轮 |\n| 覆盖指令 | — | `@local` 或 `@cloud`（最高优先级） |\n\n### 强制覆盖路由\n\n在消息末尾加指令，忽略所有评分：\n\n```\n帮我写个冒泡排序 @local      → 强制本地\n帮我做系统架构评审 @cloud    → 强制云端\n```\n\n---\n\n## 配置项参考\n\n| 配置项 | 默认值 | 说明 |\n|---|---|---|\n| `aipingApiKey` | *(必填)* | AIPing API Key，从 [用户中心](https://aiping.cn/user/user-center) 获取 |\n| `localProxyUrl` | `http://localhost:11434` | Ollama 或本地代理地址 |\n| `localProxyKey` | *(空)* | 本地代理鉴权 Key（可选） |\n| `localModel` | `qwen2.5:4b` | 本地模型名称 |\n| `cloudModel` | `Kimi-K2.5` | AIPing 云端模型 |\n| `routingThreshold` | `85` | 路由阈值 0–100（越高越偏本地） |\n| `fallbackToCloud` | `true` | 本地失败时自动切换到云端 |\n| `localTimeoutMs` | `30000` | 本地请求超时毫秒数 |\n| `debugRouting` | `false` | 打印路由决策日志 |\n\n---\n\n## 系统架构\n\n```\nOpenClaw Gateway (localhost:18789)\n  └── /aiping/v1/chat/completions  ← 代理端点\n        └── model_router 插件\n              ├── RuleScorer（5 维度，< 1ms）\n              │     ├── TokenCountScorer      > 4000 tokens  → +30\n              │     ├── CodeComplexityScorer  > 80 行        → +20\n              │     ├── ReasoningDepthScorer  强推理关键词   → +15\n              │     ├── MultiTurnContextScorer > 16 轮       → +20\n              │     └── OverrideScorer        @local/@cloud 强制\n              ├── LocalAdapter  → http://localhost:11434/v1/chat/completions\n              └── CloudAdapter  → https://aiping.cn/api/v1/chat/completions\n```\n\n规则引擎可扩展，实现 `RuleScorer` 接口即可添加新维度：\n\n```typescript\ninterface RuleScorer {\n  readonly name: string;\n  readonly maxScore: number;\n  score(request: ChatRequest): DimensionScore;\n}\n```\n\n---\n\n## 开发\n\n```bash\ngit clone https://github.com/haoruilee/aiping_router\ncd aiping_router\nnpm install\n\nnpm run build        # 编译 TypeScript\nnpm test             # 单元测试（47 个）\nnpm run test:e2e     # 端到端测试（需要 Ollama + AIPing Key）\nnpm run release patch  # 发布新版本（自动测试 → tag → CI publish）\n```\n\n---\n\n## Benchmark — 持续测试不同模型组合\n\n使用 [PinchBench](https://github.com/pinchbench/skill) 自动化测试混合路由效果，支持本地和 CI 两种运行方式。\n\n### 本地一行运行\n\n```bash\n# 快速冒烟测试（3 个任务，约 2 分钟）\nAIPING_KEY=QC-xxx ./scripts/bench.sh --preset fast\n\n# 默认：qwen2.5:4b local + Kimi-K2.5 cloud\nAIPING_KEY=QC-xxx ./scripts/bench.sh\n\n# 自定义模型组合\nAIPING_KEY=QC-xxx ./scripts/bench.sh \\\n  --local-model llama3.2:3b \\\n  --cloud-model DeepSeek-V3.2 \\\n  --threshold 80\n\n# 纯云端基线\nAIPING_KEY=QC-xxx ./scripts/bench.sh --preset cloud-only\n\n# 查看所有选项\n./scripts/bench.sh --help\n```\n\n### CI 触发（GitHub Actions）\n\n```bash\n# 使用预设\ngh workflow run benchmark.yml -f preset=fast\n\n# 自定义模型（也可在 GitHub UI 手动填写）\ngh workflow run benchmark.yml \\\n  -f local_model=qwen2.5:7b \\\n  -f cloud_model=DeepSeek-V3.2 \\\n  -f threshold=70\n```\n\n### 预设配置（`benchmarks/presets.json`）\n\n| Preset | 本地 | 云端 | 阈值 | 说明 |\n|---|---|---|---|---|\n| `default` | qwen2.5:4b | Kimi-K2.5 | 85 | 均衡推荐 |\n| `fast` | qwen2.5:0.5b | Kimi-K2.5 | 85 | 快速 3 任务验证 |\n| `cloud-only` | qwen2.5:0.5b | Kimi-K2.5 | 0 | 纯云端基线 |\n| `quality-local` | qwen2.5:7b | Kimi-K2.5 | 100 | 纯本地 |\n| `deepseek` | qwen2.5:4b | DeepSeek-V3.2 | 85 | DeepSeek 云端 |\n| `llama-local` | llama3.2:3b | Kimi-K2.5 | 85 | Llama 本地 |\n| `full` | qwen2.5:4b | Kimi-K2.5 | 85 | 全量，2 次/任务 |\n\n新增 preset：在 `benchmarks/presets.json` 追加一条记录即可。\n\n### 上次结果（qwen2.5:0.5b + Kimi-K2.5, automated-only）\n\n```\n  Hybrid  (threshold=85)     33.3%   9 tasks   ← ~90% 走本地\n  Cloud   (threshold=0 )     42.6%   9 tasks   ← 100% 走云端\n  Quality delta: +9.3pp\n\n  task_00_sanity    ✅ 100%   ✅ 100%   44s / 12s\n  task_01_calendar   ❌  0%⏱  ⚠️  83%  125s / 16s\n  task_09_files     ✅ 100%   ✅ 100%   79s / 14s\n  task_11_clawdhub  ✅ 100%   ✅ 100%   92s / 20s\n```\n\n> **关键发现**：路由按文本复杂度分流，短指令（\"创建日历事件\"）走本地 0.5b 模型，\n> 但小模型缺乏工具调用能力导致失败。更换 qwen2.5:4b 或更大模型可显著改善。\n\n---\n\n## 链接\n\n- [AIPing API](https://aiping.cn/api/v1)\n- [AIPing 用户中心（获取 API Key）](https://aiping.cn/user/user-center)\n- [Ollama 官网](https://ollama.com)\n- [OpenClaw 插件文档](https://docs.openclaw.ai/tools/plugin)\n- [变更记录](docs/CHANGELOG.md)\n- [架构方案 v1.1](docs/plan-v1.1.md)\n","readmeFilename":"README.md"}