{"_id":"koishi-plugin-group-assistant","_rev":"37-7f064f6a4ee5eee4f8eda9bc1b4b0f06","name":"koishi-plugin-group-assistant","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.1":{"name":"koishi-plugin-group-assistant","version":"0.0.1","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.1","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"9fd44a7307d948937990816bbd8a3cafdfaf6d3f","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.1.tgz","fileCount":4,"integrity":"sha512-sB0gZBb5Hm8Cx8yMyXInckC4jq7Lx99eN83YN41bAs5zY8I721g7rbux9I1dP793uPWFnIW0/uCem0VqMU43Jg==","signatures":[{"sig":"MEUCIDu94IoWzIbtgLD48Z8J+Jx1WKbPgNRBv0IfI/ZeuGBEAiEAmgRI8cDzvdkTQA22SN+cOVhCtkZZgyDWHdw3MeaS6FI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2627},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.1_1751768982004_0.2491915224968273","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"koishi-plugin-group-assistant","version":"0.0.3","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.3","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"1b120aae6c3d2fd65ec9067e2d6a5532d8a9def8","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.3.tgz","fileCount":4,"integrity":"sha512-x+nQFB6Nna6kDU2pMuaSX1E1CZs5v7oRC5uZN13WH7t3FRu/ISpdvDGBg862B94PTa2uSJpBTk/F86HZBZAiRA==","signatures":[{"sig":"MEYCIQCrdQGzZGg6wBmoshied/CxL/a51l4kfAD8lg9bqzen2gIhAJKu68oSvJtgK3cfPFQRl7wKTPQaIfyTeC0KaDoqmVqc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2914},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.3_1751773526153_0.7109325000296491","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"koishi-plugin-group-assistant","version":"0.0.4","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.4","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"577ac8cb6d6b71a505025d4715ed47b9d8661067","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.4.tgz","fileCount":4,"integrity":"sha512-9JyyWTbu6k96GvOyzLSMzPRns71TpMpqWSsblgaMZkWVaWo7eplJSZRkx2TLz3Gmbm8SU5Ig7EMyVSwEubtsmg==","signatures":[{"sig":"MEUCIQDCDcsPdGwfOnLE3Sq+1bymB4oTa/3ZonkvPdYOA7SoaQIgQIerk6y/H3o1qb5BGn4UEwqVVRUdA0BiOWw13kvSYnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2852},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.4_1751775033060_0.783670120731081","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"koishi-plugin-group-assistant","version":"0.0.5","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.5","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"a1e0b9c867a5bc85844ec452f5fdf89f5c39e59d","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.5.tgz","fileCount":4,"integrity":"sha512-z8gejuQUmBCLgnQl+fzjzHr7xemDT1FI1lSSgsMQmPPATTkZMDmxuqJp3/MsaKwpdie3iiXgqOL5RT/SPl1E0g==","signatures":[{"sig":"MEYCIQDpoWrpy1GWQu1sKxNDaaYeIQjnBq071W5JORiK/po3ywIhAMgMk7o9mhINfw9/y/n3bMRYHevu62MhArBNRLYEo4U9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3213},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.5_1751776307648_0.6353311746097676","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"koishi-plugin-group-assistant","version":"0.0.6","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.6","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"48666526042e5e0ef475f91266497238cc57abab","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.6.tgz","fileCount":4,"integrity":"sha512-NlmNsg524wiDMRlgw/apqAwXrBJMcfGWjvgwg3iiV/DW+8CY3dd4MJpsf+D3oUI7PAJQwqWwRVQl9TbF2uA/2A==","signatures":[{"sig":"MEUCIQCIH4xjwIdZgqOvA4E2H4JesWmoKIEWh+q4HXppPIDlKQIgJ2dUPS4UzzbnAIPilRf48yeaZZdnLU7nMSjUBbYSq7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5462},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.6_1751783921360_0.8578818459211166","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"koishi-plugin-group-assistant","version":"0.0.7","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.7","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"fac7ab4f54a6447307fe851dd47fc1ae2b90ae4b","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.7.tgz","fileCount":4,"integrity":"sha512-F8YruPSiqgMsBnaQ0NhLVO3S0J6VuMt5xaf26wxGzRu2WBUkRbDbO6WiJ77/5PyuFyMwGKk+1GJP6HV4xZHhRg==","signatures":[{"sig":"MEUCIASpxw+aUlWj3twivso7IS65uGlwLilviggzxKytaLaoAiEA50gTxH3lwxYoryLRqz/Pgr7HAgpTOsu48buo7YZ/7ko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5409},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.7_1751785065874_0.9298908775958137","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"koishi-plugin-group-assistant","version":"0.0.8","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.8","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"ff7195d96c810881ec86ab61b6eedd575c7b1d9f","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.8.tgz","fileCount":4,"integrity":"sha512-P4VF5qKyp+TDOy18OsyD0dLPNB/1lrzKWyy7QVE9+sGIWU1wpcNCX15sJrMIlhrde/+3N1k3CVtYHiSUd5Cy8g==","signatures":[{"sig":"MEQCIFdbLkf4vc1odSf/MOrzarwWzi/aq6wd+TFU00birA57AiAIajcN4McSHRhF1Qe2bF8C3+wPG1A/qILrAeTGz6P1gQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5405},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.8_1751785546901_0.9314243534523625","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"koishi-plugin-group-assistant","version":"0.0.9","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.9","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"aecb7ca5bcd5c4da6b1cbebe0149a4ce78efb146","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.9.tgz","fileCount":4,"integrity":"sha512-NS42irftPcvCn2yKpPvHi6ffyklTqKcjUM2ybB3pWUofU4JEhy5Ng2NnQ3NsAYA52/TwvvLFl3dtzfzaiyD5bA==","signatures":[{"sig":"MEYCIQDzCKqz/IQShEXwMm4AB5krL/mCNXVczzG/bY/heLxJcQIhAIjavP7Ifk72C7llEc7D2Hn5GIUZGx8yoCNe7KELNvLK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5319},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.9_1751787133664_0.8783591197149474","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"koishi-plugin-group-assistant","version":"0.0.10","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.10","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"62c371b4a1b87439ae0f11b898898b12a42a0149","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.10.tgz","fileCount":7,"integrity":"sha512-SYtwY0K7afBB0TCqg4HInkQ9mCVck6usLG1191w4HT3YtImle6+wwuazF321pvZffzzhsEykL0etfuz8zV0ViQ==","signatures":[{"sig":"MEQCIFx8R3KGVc/1UgEyuaGruPoyp0HTm+ezlxke42o1T9s8AiAPgqOBl5ALDLx37+VB0u10a7597urZ00eSCmXyxBBMwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6216},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.10_1751790054365_0.7352394230464592","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"koishi-plugin-group-assistant","version":"0.0.11","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.11","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"eca49bd1479cbc5a9755b9652ebfb48ad5b55ec3","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.11.tgz","fileCount":8,"integrity":"sha512-0WPTUQ1kJedwq+Rx4toGy5/SUhiF0pxNZ+4+ji82r+8hXa0A+G5EW31cKyXbO9Xa/kTckEqTTQtNZprd+ebiJg==","signatures":[{"sig":"MEUCIQDSAKhO3ua3ZiHK8bZZmCIp6b/CAmO4D1G/LnOBgtAfQwIgcgLCsAmG6yte2697X41CP1R2BIRJXYZlwd2HhSeFkSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7820},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.11_1751802784867_0.17056763594114033","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"koishi-plugin-group-assistant","version":"0.0.12","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.12","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"18c09bdd6e98a138a09aee2a96602ab998ee20c2","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.12.tgz","fileCount":8,"integrity":"sha512-CGJ77hq3qZBS4hKce4lBdVFxS2K8muCq7+7L/vAyTRnfsGud5r/QrNxxU5IDNVlqx7lA+IpR3rr6dBQbqsrOiQ==","signatures":[{"sig":"MEQCIEvXikg0Mg5CU1OsjqXvTsq0eY31vwg8T2XSgT4nzhmNAiBd8NNkhDfWQukKKbebSlIGDk8uTid7kQtPzRWNx4r8Bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8084},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.12_1751803267989_0.0033047935127656913","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"koishi-plugin-group-assistant","version":"0.0.13","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.13","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"5a3c0dcfccb5137f67d853bb35643a0db105bcd6","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.13.tgz","fileCount":8,"integrity":"sha512-QSbYVOI5GPAvhuwhsO+nSMxxMAj83CzTEz/HL9IO66G8UoZ9UpugwNG5elcqd84rn0NNOUxCdw6dgMlwCBHD1Q==","signatures":[{"sig":"MEQCIDdRru5h4CJVeSg+x2kBIEsi39Kg4eZ3ahnovPWViLO3AiAif3DMlof+Om8Gl3Eq3BpfzKvxPVr6qjfAuXML0GuIog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7955},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.13_1751803430261_0.830172334411873","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"koishi-plugin-group-assistant","version":"0.0.14","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.14","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"23d55b2561326b8b375eb4a5ea971ef9448a988b","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.14.tgz","fileCount":8,"integrity":"sha512-s9+oJjBKhqNbvOVJCI+eI+8vUkvaIvjc7Zdh9eSAIRBhnlk5heVBzqK1D0MYW9eB6WKmCJ1JlLKSVWqnYvHOiQ==","signatures":[{"sig":"MEUCIHppw7WYPs5BKKUtV9XWrBO/fgY01C4DIXn3x0fDGAs8AiEAy8j3fXkaxY4PdBXbN86DbJRrxiDpS/4l8VAVIahu8pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7988},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.14_1751804801563_0.14211968064049163","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"koishi-plugin-group-assistant","version":"0.0.15","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.15","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"9a5d26a7cab42e3a78708f835355d2d94bf4d924","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.15.tgz","fileCount":9,"integrity":"sha512-vq/9mNTnzn5OmxiWBxh44OU23HkM6sIuY5jnWqKuFBVSkljEgjNnlFH6510uYtO0kpyQclMn3nLYJKwVgmikrQ==","signatures":[{"sig":"MEYCIQDwMMlCFNMPVO5x9g46W7iLAF639Mf72R+8F0uSxXvF8wIhAKnT1p89PIZVwvP5WnVDQYW+h0nfL3IzXkWoZt4O59oS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10362},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.15_1751808436174_0.38769014772320665","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"koishi-plugin-group-assistant","version":"0.0.16","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.16","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"51e04431eea0560d0c9b50f0d64b222dd9e8696d","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.16.tgz","fileCount":9,"integrity":"sha512-DwbB1t8mgBVA1JYPQfEqCsVu7pkaCnMNb6v86W/2pIwmoOILDWcG6pek9nO2bcX//DgP4bNhajEHcxLUuY1vWw==","signatures":[{"sig":"MEUCIGk71Lk1KoOK6L0cnVVhvxrtTFycYrGqrR4bI6yvhajkAiEAyDMwevgdBQN1WE6ZJ/BNSh5GqzH5dIhRbWDRb82iQMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13105},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.16_1751808837052_0.8237818322726487","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"koishi-plugin-group-assistant","version":"0.0.17","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.17","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"6df8922f47699afcb9705f1d53dd17e55b84a3f4","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.17.tgz","fileCount":9,"integrity":"sha512-Htf+OYbw5Y8ALOo3aY9KRXNC8Tpig5T0CsxLeZYAXT8wMUkxEOi8ImCV1deIqaRXsEolMFByq7OCJj73N/olbQ==","signatures":[{"sig":"MEUCIQD3TGAc2TI6Ym/wTldwOeq2ft6R60uvDcJMfkEer/HzAgIgFQ/biHDmfzsqeFYd+lk5L1rIirhVkA4zkzMAxS8JQSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13130},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.17_1751809248297_0.4956947500240765","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"koishi-plugin-group-assistant","version":"0.0.19","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.19","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"848d516eb7070964bcfb008ef783818c7e8b75ab","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.19.tgz","fileCount":9,"integrity":"sha512-jBB3iK9FC+YQ/z6f5WHjJiMHlcRY8rpyXB1EVGFOxitYpBXuh1+80Qo/lIcqeMLCHmNmbWFMf4WIknbydtJsnQ==","signatures":[{"sig":"MEUCIQCD8ajkxs/O1cTFoy8uELEo2uBxMhnLwvh/tzomz8gYLwIgHwhgDAyPxEOmXUh3/4UgVAq7TlTc4f8hPmgxtDC05I8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13927},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.19_1751810727885_0.43807234184347843","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"koishi-plugin-group-assistant","version":"0.0.20","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.20","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"522b2eb92340993e32e235704064339a6dc0b0ef","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.20.tgz","fileCount":12,"integrity":"sha512-r+322uKwj5i4V2+Udtvr0qATqog/fpQtW2mk8/VjHLHbgBE3802x+ot8GRKbCaRXSmz9LB/ihBYGMYiIUQFj/Q==","signatures":[{"sig":"MEQCIB+H0DRwh55uq009eypCg5WYNlrKtuhrAcATfo+5ndD7AiBFHcym/+Qx2IdxXXSowRMbK5pNlu2QqUg1v6U+Erz5tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14217},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.20_1751890536207_0.2991951204032053","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"koishi-plugin-group-assistant","version":"0.0.21","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.21","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"6dc55339a96244e6fdb971d4720a3e651ba507a9","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.21.tgz","fileCount":12,"integrity":"sha512-UQwyykjNnXSVocgVFQxzMnJvkf33P83FLHcGH8iSuYktmMSCgovZkPdvJ+fDekWFk5d5A/izIgYkaQX26xQvuw==","signatures":[{"sig":"MEYCIQDHacaMNu1tbdarW7JRGXWODl3pcCS6yUhuRGeSj1dH/gIhAKz9x3K8MiZQRvDg9YCcPdElZ/v+zfsDOfcfd+qTAhBh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15931},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.21_1751890933343_0.6092497553067842","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"koishi-plugin-group-assistant","version":"0.0.22","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.22","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"f4c1ec8b74a14e70bf048cdd941640c7ed52de02","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.22.tgz","fileCount":13,"integrity":"sha512-vXSBc7Qur/pGXbpaMJIl6jddobqAV4GatsjEthH45opcOvGyC+nnKQ5jDhzyOUpuUWLITGCsZW2cRAhe3xRaxw==","signatures":[{"sig":"MEUCIQDEBtQEpOHbs/zkM9FAHHKPV9A9yjfD5A/ogvE5UO07AwIgcdbSb5H3iaKLFSonTnLa2O6pGO3BQM6ucK7d0gMmpYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16302},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.22_1751892267704_0.5981957245721621","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"koishi-plugin-group-assistant","version":"0.0.23","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.23","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"5915e2ecf5b3fe88efae6161545208f91a55d736","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.23.tgz","fileCount":13,"integrity":"sha512-BDu98qZYzmo1N4VxQDlP6fmHwe2MFBTyFaDFKeXMMHgHk74uSXL5i2qDMRsxPjINbTBIcoK3lDx4cDvxTDSBfA==","signatures":[{"sig":"MEUCIQDr8s8C6fC40DCdCOlFDJaWf1j5ExxccvL59DIctK9bVQIgTJ8lpyYFxmX4bUf5mGPGOJQgAG/lrB+GZ054ku1FQpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16243},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.23_1751892535465_0.2872951536805326","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"koishi-plugin-group-assistant","version":"0.0.24","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.24","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"c21944d603de57e72f7a8460240f615061272b37","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.24.tgz","fileCount":13,"integrity":"sha512-CbkU33xZUCxfe3ABMpaLvAn45zUt7RJ0gXihTwJfRz0TF3IoRGTYHx3x/63XothMgwgsjF8b8zVEGwo5yFIMZg==","signatures":[{"sig":"MEUCIQDjvBEnTo0+4DYOWYXJoTXE3gYUAsmumteioPH2Gixp/wIgYlERRqpGbFXlIgBeMsWaitOd0kk0P5Gc0pVLdyrNAyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16030},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.24_1751892891960_0.7793470381435326","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"koishi-plugin-group-assistant","version":"0.0.25","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.25","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"557945b4bbf4425307bd71c983d1b56925819e27","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.25.tgz","fileCount":14,"integrity":"sha512-6du3eY6OD1fD99L/LQpk+kmlx4BFIlvov2Vf9kIaXDm+noHSFmHOokOuN1lpJConMkkY7szXSPhv+q7i47J1Xw==","signatures":[{"sig":"MEUCIQD0CbkeEKo2w7/LYRmY+liXzo8N0dHP4du+kzxGFyVZTAIgfsbvngShCQPcRbDxf6xGHR9+5sv0lYamBl8fbdIRFFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15440},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.25_1751895449165_0.6983195286575223","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"koishi-plugin-group-assistant","version":"0.0.26","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.26","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"27790cb9e0627127125ddad393133a6888a2c6f5","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.26.tgz","fileCount":14,"integrity":"sha512-dzp8nVHd+olLgrxbAlghFuqp+bsoY0WUFURJsmZ7gZFFWatDTtLayBnFWZ9dRv9jbKK37ig07mDdi6SN8it/5w==","signatures":[{"sig":"MEUCIAWrTJdyoqv1iam125Op06InfUW6ECgg+gG9CaKiA3FRAiEAxj57/4UqeBxsFZHm1oi/Fd+Bmo8SmqPo0jiMYmVcA44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15473},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.26_1751896635491_0.6263727175525831","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"koishi-plugin-group-assistant","version":"0.0.27","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.27","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"188fe539c9b4c1442ad6ca7b746900130e767227","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.27.tgz","fileCount":14,"integrity":"sha512-V+o8KDeux7pH6DAr1RUKq8GSjHSsoa5SJCtYjXd/XDvB2+ghzklx31gVmSjtlf/JG06YUWFdm4suAr0EyNFyPw==","signatures":[{"sig":"MEUCIQDTKLEGYnbcuqs59kUlhTb2yi7QV2/qFoFLbSECb6CwpAIgZGGAvY2UJn6mCmRPatawSVI49WoFArIo6l2Bv+6CNy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15481},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.27_1751897076165_0.21142805481543947","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"koishi-plugin-group-assistant","version":"0.0.28","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.28","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"51348af440d032bf463b6f831ab89da60f89ac6e","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.28.tgz","fileCount":14,"integrity":"sha512-HKz1810WoujQ94iecA7rIc0jejnlMu0JJ/86v+Tf5kyG6jw/wyEDNr0tAZs/1ra5d96iOodbHwUDxG6ZvCdgvw==","signatures":[{"sig":"MEYCIQCK6ENzU0JxL5tjj4EeKMuJE2B1qTmifHOux1ejUvA2xgIhALU4kPeaE1uZ2DrhlSksqOGLcqtbnWe+Ohhbh8xMUoDf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15523},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.28_1751897270242_0.5838844871549544","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"koishi-plugin-group-assistant","version":"0.0.29","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.29","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"65b3d6ebd21597765d56d33a966f921e41bcc2a9","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.29.tgz","fileCount":14,"integrity":"sha512-KP5BrK4qjB6o0AWZ/+JZ/p/tMahA76h1Y21MzHVrTwdwpzBaVYH6qKzMC4Iz8UKLNSPNOHYL47pY3gZGm9APsg==","signatures":[{"sig":"MEYCIQDJe4MmGncV0pu7X6X19IQxKCOcCIGoeNJe8gcbCSckCgIhAIkL57UOD4xY6yChklYd5lhg+sakn+HBn+hJl1jhajhf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17466},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.29_1751973195639_0.3014402519779067","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"koishi-plugin-group-assistant","version":"0.0.30","keywords":["chatbot","koishi","plugin"],"license":"MIT","_id":"koishi-plugin-group-assistant@0.0.30","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"1ef95445bd8f68db3aa3dab9a23d6a04ba716828","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-0.0.30.tgz","fileCount":14,"integrity":"sha512-/ulzDjNmaUzjM+apFC4L1iC2MlM5TPfNSMPPIcyV3QihO79eRY5lZw9qsKoqWBM0IiUXel+QeH1WLD65nC0G8Q==","signatures":[{"sig":"MEUCIQCcvGDRcPevs8hyG+7i0H0YUHY3/uMPndvQSvxE98yZiQIgeaA2Me+curdT1ZFybHYSyg3e4jphOt8Ke6E1JE/FGaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18499},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","actor":{"name":"ayice666","type":"user","email":"lsheng0802@163.com"},"email":"lsheng0802@163.com"},"_npmVersion":"10.8.1","description":"群聊管理","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_0.0.30_1751973732150_0.8320556918784607","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"koishi-plugin-group-assistant","version":"1.0.0","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.0.0","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"6e3eb5799c056f652967f4d047319ee51e7218cc","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.0.0.tgz","fileCount":15,"integrity":"sha512-BBm8rBSjZSrtha1gL685fGgCnl9LIKrUAD0ixRAuc/HGaire1doOzvmwGilw6fjAm2N5qwkDiW8rBC7uLxkJNg==","signatures":[{"sig":"MEUCIQD+6cahWg+BDSpUCLFcydavqHbdg3WBd6hVouK/Hrt5PwIgFDHryp1+qJ1uXBszRTdvGHCpHyT1NKrX/05Uo7h/xHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72432},"main":"lib/index.js","gitHead":"e006ae970e4b0e0321cc012dfb8aaa4f67d5787b","scripts":{"build":"tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --outfile=lib/index.js","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"_npmVersion":"11.6.0","description":"面向 Koishi 的群聊准入、内容治理、签到积分与 AI 助手插件","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.0.0_1787023580561_0.1114627575416105","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"koishi-plugin-group-assistant","version":"1.1.0","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.1.0","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"5830ed7837766409dadbc9fb9570d9ed69300d60","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.1.0.tgz","fileCount":14,"integrity":"sha512-6ff4DPCLBVI33VmJ04MhltN7LOz94nRnLReyIM/viSC3v8GmymXHABMRFNyHYG74m/437wbdsBFlMKPOurX4wA==","signatures":[{"sig":"MEQCIHh9R1JMGJBSlP5zBvIW/9by2odhbs/rZpcUN/iOPibRAiBcEVFbltUyhl8v7AgjWDobTMtau4EkIWfBY+NS9TNbnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209605},"main":"lib/index.js","gitHead":"8bd5196c7dac2975a2078632aec001730012fda3","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"_npmVersion":"11.6.0","description":"面向 Koishi 的群聊准入、内容治理与 AI 审核插件","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.1.0_1787671915193_0.37973650498082256","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"koishi-plugin-group-assistant","version":"1.1.1","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.1.1","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"c281573ab8967ab50237b306934a5b408de060e0","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.1.1.tgz","fileCount":17,"integrity":"sha512-v6S0DJXwXp9aqPueDzfnFPc12XNpyLq9LXmUkl0VxYG+yEa15rYSyUAiJwrI8BUWnGFohyEKTkV/NK+Yitla+w==","signatures":[{"sig":"MEYCIQCvjucCFPm31K9PEr19goBMx8OOawhK3dGbRm2h1ZKbAAIhAJFHcwft+BgVYjiSTYciHPRwL+vBgn/Y3g9qhKhzyfzd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256387},"main":"lib/index.js","gitHead":"6b550e6dfc9bbabcc443e0f8dd1fd600573fab45","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --external:onnxruntime-node --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","annotate":"node scripts/start-annotator.mjs","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"_npmVersion":"11.6.0","description":"面向 Koishi 的群聊准入、内容治理与 AI 审核插件","directories":{},"_nodeVersion":"24.9.0","dependencies":{"onnxruntime-node":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.1.1_1787883214471_0.051814018306600707","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"koishi-plugin-group-assistant","version":"1.1.2","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.1.2","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"bb33bcc834b54f70450955c2779a26e1c72ff26a","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.1.2.tgz","fileCount":17,"integrity":"sha512-k4UgTDp+FKcV3TmL9LcuzoJBsd7BP69nArhFGcaaazavKY1j9oRxOqqVpbcuxDESrzVZwYlsLHzdH8vmiEwwhA==","signatures":[{"sig":"MEYCIQDqkY4fbVfcbZ7qSg24gfyrdm185OyJnt5qB/Q6Yf36XAIhANWCMdVPrlf9j2wqxfPCa6GTzgHfodNeaZkFHoxUwg/2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256387},"main":"lib/index.js","gitHead":"6b550e6dfc9bbabcc443e0f8dd1fd600573fab45","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --external:onnxruntime-node --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","annotate":"node scripts/start-annotator.mjs","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"_npmVersion":"11.6.0","description":"面向 Koishi 的群聊准入、内容治理与 AI 审核插件","directories":{},"_nodeVersion":"24.9.0","dependencies":{"onnxruntime-node":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.1.2_1787883427748_0.11670388694010025","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"koishi-plugin-group-assistant","version":"1.1.3","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.1.3","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"cdccbc23b34260409373d7d6bbf1dfa80390a052","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.1.3.tgz","fileCount":17,"integrity":"sha512-Af1Y17YNC/mqiAgHgkqAiKSj0cWoIWIjFKuMZ1o1sAcvly6+v0mrP6Cvrf3K2GSRGz20A9Lb8Sik7tHUR6CYXA==","signatures":[{"sig":"MEUCIFCWpDdo9iVe7nX7/rTci20hhFDdKKRCP2oJHaBMY4A+AiEA4ZgmNdxMPHfXQnDT9AhIC0wjB2F/RPtCXcYZ5J0yM18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256470},"main":"lib/index.js","gitHead":"6b550e6dfc9bbabcc443e0f8dd1fd600573fab45","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --external:onnxruntime-node --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","annotate":"node scripts/start-annotator.mjs","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"_npmVersion":"11.6.0","description":"面向 Koishi 的群聊准入、内容治理与 AI 审核插件","directories":{},"_nodeVersion":"24.9.0","dependencies":{"onnxruntime-node":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.1.3_1787883503803_0.09721844527758106","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"koishi-plugin-group-assistant","version":"1.1.4","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.1.4","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"dist":{"shasum":"9da3412a0001671682d44b35110c97d433dfe49f","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.1.4.tgz","fileCount":17,"integrity":"sha512-LLG14PXkMTcB5W2DWxYeaPT3IEHKNvYjgFI/tnmidI7gTp7CSy+MC2ue+Y3UryAMJOeouOAFvU5w1t8fckbyyw==","signatures":[{"sig":"MEQCIGAZz5Kz0pWmifKhLDzFJMlwXGJoqa+Fx47DzaMzMSf4AiB/2OWS0nPW1QdAxOGb7o+qeI/FvKjkLnYDNTi4HKuy0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256621},"main":"lib/index.js","gitHead":"641a8285dc6aa6c65ca5d0203ec0684205439dd0","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --external:onnxruntime-node --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","annotate":"node scripts/start-annotator.mjs","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"_npmVersion":"11.6.0","description":"群聊治理插件，覆盖入群退群通知、入群审核、刷屏检测、基于关键词与模型的违规内容检测、违规自动处罚，保留审计日志","directories":{},"_nodeVersion":"24.9.0","dependencies":{"onnxruntime-node":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.1.4_1787884921973_0.9159883658016237","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"koishi-plugin-group-assistant","version":"1.2.0","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.2.0","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"homepage":"https://github.com/codingayice/koishi-plugin-group-assistant#readme","bugs":{"url":"https://github.com/codingayice/koishi-plugin-group-assistant/issues"},"dist":{"shasum":"784e20c0459d33fbed5c69db3b6e394bbaf9aa95","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.2.0.tgz","fileCount":15,"integrity":"sha512-Hv2EkWlO322tby2xHm+5s2p0LnejtmfW/zwN5rkoNh/mVrkedlF7oEoAOKICdrQ7Pj9hO5Dny+OuKqL+0lskIw==","signatures":[{"sig":"MEUCIHt3QHSq6JGnyG5mqFmYu+2FELVOp2hyE9bOCSfaehb+AiEAwxaL9b4mXvWCUZ1xRVUvMGn27U9BaGUrpzTKfsFiUpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244932},"main":"lib/index.js","koishi":{"service":{"optional":["groupAssistantModel"]}},"gitHead":"6a64621b61ed68de613cf00b8e4208e2684cd121","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","annotate":"node scripts/start-annotator.mjs","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"repository":{"url":"git+https://github.com/codingayice/koishi-plugin-group-assistant.git","type":"git"},"_npmVersion":"11.6.0","description":"群聊治理插件，覆盖入群退群通知、入群审核、刷屏检测、基于关键词与模型的违规内容检测、违规自动处罚，保留审计日志","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.2.0_1787902097283_0.898119969857609","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"koishi-plugin-group-assistant","version":"1.3.0","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"license":"MIT","_id":"koishi-plugin-group-assistant@1.3.0","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"homepage":"https://github.com/codingayice/koishi-plugin-group-assistant#readme","bugs":{"url":"https://github.com/codingayice/koishi-plugin-group-assistant/issues"},"dist":{"shasum":"bb2a2481eacb5b455f45448835fd7a839d45588f","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-1.3.0.tgz","fileCount":18,"integrity":"sha512-p8y7hpTElCHWDBo12nLZ+F53SVjCLCru/fuX/Wyh6GeFmWpoGb4KSj8yyuMw5JTFvKgnAbP2O8w4AtWPbP5VzQ==","signatures":[{"sig":"MEUCIAonvume9BEGiQhYKK7txF9Z23G4uzTcyrcm69FKukBIAiEA0NlbvGmMv3z+q9lqEV1zHjpdDRdCmWUQC4c7u5FaiaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":255319},"main":"lib/index.js","koishi":{"service":{"optional":["groupAssistantModel"]}},"gitHead":"ce41701b6910ae37d6550dcc2bfd20c79d783445","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"repository":{"url":"git+https://github.com/codingayice/koishi-plugin-group-assistant.git","type":"git"},"_npmVersion":"11.6.0","description":"群聊治理插件，覆盖入群退群通知、入群审核、刷屏检测、基于关键词与模型的违规内容检测、违规自动处罚，保留审计日志","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"tmp":"tmp/koishi-plugin-group-assistant_1.3.0_1788243332680_0.717442248248958","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"_id":"koishi-plugin-group-assistant@2.0.0","bugs":{"url":"https://github.com/codingayice/koishi-plugin-group-assistant/issues"},"dist":{"shasum":"db79cab9237e4a9e9e397b053915c6234df9b70c","tarball":"https://registry.npmjs.org/koishi-plugin-group-assistant/-/koishi-plugin-group-assistant-2.0.0.tgz","fileCount":17,"integrity":"sha512-3wTbXZc/G4qLaVSaeNFiX+sL6L6L9J9YHkaPc71ESlZ+Q8PPviWtDNwuFgEanTOeElMDm6GYsH30KwKkm/gA5A==","signatures":[{"sig":"MEUCIH9Zc6mlZCc42YKXtjRlY45hdkJ4qvgbrb+eCiaVXXcfAiEAiUeU4uo9zH6vShz3/Mw+5dg8D0BoBUARSMfaTUgBPYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAJnXaCAJvX3gY2A+u6VFB8QUpbsr0L99T28wJ7JRZ2fAiAIgmAz3Q0bOz+Xncwd1uDkFp9HEApE7Yy2c7KL1boT7w=="}],"unpackedSize":257529},"main":"lib/index.js","name":"koishi-plugin-group-assistant","koishi":{"service":{"optional":["groupAssistantModel"]}},"gitHead":"b4524d2cfe6899985bd5f5bed4a5f480692355f3","license":"MIT","scripts":{"test":"esbuild tests/governance.test.ts --bundle --platform=node --format=cjs --external:koishi --outfile=.test/governance.test.cjs && node --test .test/governance.test.cjs && node -e \"require('fs').rmSync('.test',{recursive:true,force:true})\"","build":"node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc --pretty false && esbuild src/index.ts --bundle --platform=node --format=cjs --external:koishi --outfile=lib/index.js && node -e \"require('@koishijs/client/lib').build(process.cwd()).catch(err=>{console.error(err);process.exitCode=1})\"","typecheck":"tsc --pretty false"},"typings":"lib/index.d.ts","version":"2.0.0","_npmUser":{"name":"ayice666","email":"lsheng0802@163.com"},"homepage":"https://github.com/codingayice/koishi-plugin-group-assistant#readme","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"repository":{"url":"git+https://github.com/codingayice/koishi-plugin-group-assistant.git","type":"git"},"_npmVersion":"11.6.0","description":"群聊治理插件，覆盖入群退群通知、入群审核、刷屏检测、基于关键词与模型的违规内容检测、违规自动处罚，保留审计日志","directories":{},"maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"_nodeVersion":"24.9.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.23.1","typescript":"^5.5.4","@koishijs/client":"^5.30.11"},"peerDependencies":{"koishi":"^4.17.11"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/koishi-plugin-group-assistant_2.0.0_1790085366166_0.5228380599336913"}}},"time":{"created":"2025-07-06T02:29:41.945Z","modified":"2026-09-22T13:56:06.416Z","0.0.1":"2025-07-06T02:29:42.173Z","0.0.3":"2025-07-06T03:45:26.318Z","0.0.4":"2025-07-06T04:10:33.263Z","0.0.5":"2025-07-06T04:31:48.036Z","0.0.6":"2025-07-06T06:38:41.535Z","0.0.7":"2025-07-06T06:57:46.054Z","0.0.8":"2025-07-06T07:05:47.130Z","0.0.9":"2025-07-06T07:32:13.836Z","0.0.10":"2025-07-06T08:20:54.527Z","0.0.11":"2025-07-06T11:53:05.040Z","0.0.12":"2025-07-06T12:01:08.219Z","0.0.13":"2025-07-06T12:03:50.447Z","0.0.14":"2025-07-06T12:26:41.733Z","0.0.15":"2025-07-06T13:27:16.382Z","0.0.16":"2025-07-06T13:33:57.228Z","0.0.17":"2025-07-06T13:40:48.465Z","0.0.19":"2025-07-06T14:05:28.147Z","0.0.20":"2025-07-07T12:15:36.382Z","0.0.21":"2025-07-07T12:22:13.519Z","0.0.22":"2025-07-07T12:44:27.878Z","0.0.23":"2025-07-07T12:48:55.644Z","0.0.24":"2025-07-07T12:54:52.130Z","0.0.25":"2025-07-07T13:37:29.330Z","0.0.26":"2025-07-07T13:57:15.674Z","0.0.27":"2025-07-07T14:04:36.360Z","0.0.28":"2025-07-07T14:07:50.404Z","0.0.29":"2025-07-08T11:13:15.814Z","0.0.30":"2025-07-08T11:22:12.321Z","1.0.0":"2026-08-18T03:26:20.705Z","1.1.0":"2026-08-25T15:31:55.350Z","1.1.1":"2026-08-28T02:13:34.626Z","1.1.2":"2026-08-28T02:17:07.882Z","1.1.3":"2026-08-28T02:18:23.949Z","1.1.4":"2026-08-28T02:42:02.121Z","1.2.0":"2026-08-28T07:28:17.427Z","1.3.0":"2026-09-01T06:15:32.827Z","2.0.0":"2026-09-22T13:56:06.258Z"},"bugs":{"url":"https://github.com/codingayice/koishi-plugin-group-assistant/issues"},"license":"MIT","homepage":"https://github.com/codingayice/koishi-plugin-group-assistant#readme","keywords":["chatbot","koishi","plugin","group-management","moderation","deepseek"],"repository":{"url":"git+https://github.com/codingayice/koishi-plugin-group-assistant.git","type":"git"},"description":"群聊治理插件，覆盖入群退群通知、入群审核、刷屏检测、基于关键词与模型的违规内容检测、违规自动处罚，保留审计日志","maintainers":[{"name":"ayice666","email":"lsheng0802@163.com"}],"readme":"# koishi-plugin-group-assistant\n\n[![npm](https://img.shields.io/npm/v/koishi-plugin-group-assistant/latest.svg?style=flat-square&cacheSeconds=300)](https://www.npmjs.com/package/koishi-plugin-group-assistant)\n\n群聊治理插件，覆盖入群退群通知、入群审核、刷屏检测、基于关键词与模型的违规内容检测、违规自动处罚，保留审计日志。\n\n当前版本：**2.0.0**\n\n本版本使用 GCRA 重构单人刷屏检测，同时识别瞬时连发和持续高频发送。详细变更见 [`CHANGELOG.md`](CHANGELOG.md)。\n\n## 核心能力\n\n- **内容审核**：红线词立即处理；敏感词进入语义审核链，可选本地模型服务负责快速分流，需要时再由 DeepSeek 结合上下文复核。\n- **刷屏治理**：同时覆盖短时间集中刷屏和持续高频发送。\n- **分级处罚**：按照同类违规次数执行警告、禁言或踢出，并可配置禁言时长。\n- **群级规则**：不同群聊可以使用独立的红线词库和敏感词库。\n- **审计追踪**：记录消息处理、AI 复核和违规累计结果，方便管理员复盘治理效果。\n- **成员管理**：支持入群审核、黑名单和白名单。\n\n## 效果演示\n\n\n![内容治理与违规消息检测效果](https://raw.githubusercontent.com/codingayice/koishi-plugin-group-assistant/master/docs/demo-content-moderation.png)\n\n\n![刷屏与行为检测效果](https://raw.githubusercontent.com/codingayice/koishi-plugin-group-assistant/master/docs/demo-behavior-detection.png)\n\n## 安装与使用\n\n### 安装\n\n在 Koishi 项目中安装：\n\n```bash\nnpm install koishi-plugin-group-assistant\n```\n\n然后在 Koishi 配置中启用 `group-assistant`，并确保数据库服务已经启用。\n\n如需使用本地 BERT 模型，再安装并启用可选配套插件：\n\n```bash\nnpm install koishi-plugin-group-assistant-model-onnx\n```\n\n模型文件随 `koishi-plugin-group-assistant-model-onnx` 一起发布。安装配套插件后会优先自动查找其 npm 包内置的七分类模型；只有需要替换模型时，才需要在 `modelPath` 中指定自定义目录。\n\n### 初次使用\n\n1. 打开 Koishi Console，进入“群治理”。\n2. 在左侧添加并选择需要治理的群聊。\n3. 选择红线词库或敏感词库。\n4. 添加关键词，或上传 UTF-8 TXT 文件批量导入。\n5. 在插件配置中选择治理强度和处罚策略。\n6. 需要使用敏感词 AI 复核时，开启 AI 复核并填写 DeepSeek API Key。\n7. 需要本地 BERT 检测时，安装并启用 `group-assistant-model-onnx`，在该插件中配置模型路径、触发策略和阈值。\n\n建议先使用“均衡”治理强度运行，再根据审计记录调整策略。\n\n## 词库管理\n\n### 红线词库和敏感词库\n\n| 词库 | 适合放入的内容 | 命中后的处理 |\n| --- | --- | --- |\n| 红线词库 | 无需结合语境即可确定违规的关键词 | 立即处理，并累计内容违规 |\n| 敏感词库 | 可能出现在正常讨论、引用或科普中的关键词 | 进入语义审核；可选本地模型先分流，必要时交由 AI 复核 |\n\n红线词库应保持准确，敏感词库用于覆盖需要结合上下文判断的内容，命中敏感词可选本地模型检测或AI复核。\n\n### TXT 导入格式\n\n- 一行一个关键词。\n- 使用 UTF-8 编码。\n- 空行和以 `#` 开头的行会被忽略。\n- 单个文件最大 2 MB。\n- 最多 100000 行。\n- 单个关键词最多 200 个字符。\n\n导入完成后，页面会显示读取、新增、重复和无效数量。\n\n## 配置说明\n\n配置页面按用途分为五组，群号范围位于“基础设置”中。\n\n### 基础设置\n\n| 配置项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `guildIds` | 空数组 | 生效群号，仅配置的群聊生效 |\n| `welcomeMessage` | 内置欢迎语 | 新成员入群时发送的内容，支持 `{username}`、`{botName}` |\n| `leaveMessage` | 内置退群语 | 成员退群时发送的内容，支持 `{userId}` |\n| `botName` | 空 | 欢迎语中的机器人名称 |\n| `signal` | 空 | 入群申请暗号 |\n| `adminUserIds` | 空数组 | 白名单用户ID |\n\n### 群治理设置\n\n| 配置项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `enabled` | `true` | 群治理总开关 |\n| `governancePreset` | `balanced` | 宽松、均衡、严格或自定义 |\n| `punishmentLevels` | 3 级 | 累计处罚策略 |\n| `offenseWindowHours` | 24 | 自定义模式下的累计违规时间窗口 |\n| `auditRetentionDays` | 30 | 审计记录保留天数 |\n\n### 内容检测\n\n| 配置项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `contentDetectionEnabled` | `true` | 启用内容检测；红线词立即拦截，敏感词进入AI审核 |\n\n主体插件不包含本地模型配置。若启用 `koishi-plugin-group-assistant-model-onnx`，以下配置在配套插件中维护：\n\n| 配套插件配置项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `modelPath` | 空 | ONNX 模型目录或模型文件路径；留空时优先使用配套子插件内置模型，再查找项目目录中的 `external/group-assistant/models/chineseharm-bert-seven/calibrated` |\n| `trigger` | `sensitive` | 仅敏感词命中时检测，或检测所有非立即拦截消息 |\n| `reviewThreshold` | `0.80` | 总违规概率进入 AI 复核的阈值 |\n| `actionThreshold` | `0.98` | 总违规概率直接进入违规处置的阈值 |\n\n### 行为检测\n\n| 配置项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `behaviorDetectionEnabled` | `true` | 启用刷屏检测 |\n| `floodRatePerMinute` | `15` | 自定义模式下允许单个用户长期保持的发送速度 |\n| `floodBurstAllowance` | `8` | 自定义模式下允许单个用户短时间连续发送的消息数 |\n| `floodCooldownSeconds` | `60` | 自定义模式下持续刷屏重复累计违规的冷却时间 |\n\n### AI 复核\n\n| 配置项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `aiReviewEnabled` | `false` | 启用AI内容审核 |\n| `apiKey` | 空 | DeepSeek API Key |\n| `model` | `deepseek-v4-flash` | `deepseek-v4-flash` 或 `deepseek-v4-pro` |\n\nAI 复核用于敏感词候选和本地模型返回 `review` 的消息。本地模型服务未安装或暂时不可用时，敏感词候选仍可直接进入 AI 复核。\n\n### 群级配置\n\n`guildIds` 表示当前插件配置实例针对哪些群生效。留空时不会注册事件、命令、定时任务或中间件；填写群号后，只有列表中的群会使用这套配置。\n\nKoishi 支持通过插件别名创建多套配置。例如：\n\n```yaml\nplugins:\n  group-assistant:strict:\n    guildIds: ['1047767828']\n    moderation:\n      governancePreset: strict\n  group-assistant:relaxed:\n    guildIds: ['123456789']\n    moderation:\n      governancePreset: relaxed\n```\n\n这样可以让不同群切换到不同配置实例，不需要在配置内部维护多组群配置。治理关闭后，该配置覆盖的群不会执行消息治理、入群审核、欢迎和退群提示；词库和历史记录不会被删除。\n\n## 处罚模板\n\n每一级处罚的 `messageTemplate` 留空时，不发送群内提醒，只执行处罚。\n\n支持的变量：\n\n| 变量 | 含义 |\n| --- | --- |\n| `{at}` | 被处罚用户的 @ |\n| `{type}` | 违规类型；模型识别到具体类别时为 `内容违规：疑似欺诈内容` 等，普通广告会追加 `请仔细甄别`，行为检测为 `行为违规` |\n| `{evidence}` | 检测证据；词库命中时包含词库类型、规则编号和原始关键词 |\n| `{content}` | 触发治理的消息内容 |\n| `{action}` | 当前处罚动作 |\n| `{muteMinutes}` | 禁言时长 |\n| `{offenseCount}` | 当前同类违规次数 |\n| `{level}` | 当前处罚级别 |\n\n示例：\n\n```text\n{at} 因{type}已被禁言 {muteMinutes} 分钟。\n检测证据：{evidence}\n消息内容：{content}\n当前同类违规 {offenseCount} 次。\n```\n\n## 管理员指令\n\n以下指令需要群主、群管理员或 `adminUserIds` 中的管理员执行。\n\n### 审计和违规状态\n\n```text\n违规记录\n违规记录 -n 20\n\n违规用户\n违规用户 -n 20\n\n违规清零 <userId>\n```\n\n- `违规记录`：查看最近的治理记录，最多 30 条。\n- `违规用户`：查看当前累计窗口内的违规用户。\n- `违规清零 <userId>`：清除指定用户的累计违规状态，不删除历史审计。\n\n### 白名单和黑名单\n\n```text\n白名单.添加 <userId> [原因]\n白名单.删除 <userId>\n白名单.列表\n\n黑名单.添加 <userId> [原因]\n黑名单.删除 <userId>\n黑名单.列表\n```\n\n白名单用户跳过自动群治理。黑名单用户的消息会被撤回，入群申请会被拒绝，并参与违规累计。\n\n### 手动处置\n\n```text\n警告 <userId> [原因]\n处罚 <userId> [原因] -a warn\n处罚 <userId> [原因] -a delete\n处罚 <userId> [原因] -a mute\n处罚 <userId> [原因] -a kick\n```\n\n手动处置会写入审计并参与累计处罚。\n\n## 权限和注意事项\n\n- 群主和群管理员会自动跳过自动处罚。\n- 如果适配器无法识别管理员身份，将管理员 ID 填入 `adminUserIds`。\n- 自动撤回、禁言和踢出需要机器人具备对应群权限。\n- 词库、审计记录和违规状态依赖 Koishi 数据库。\n- 建议先使用均衡预设，再根据实际审计记录调整。\n\n## 技术原理\n\n### 整体架构\n\n![群聊治理整体架构（GCRA）](https://raw.githubusercontent.com/codingayice/koishi-plugin-group-assistant/master/docs/architecture.png?v=2.0.0)\n\n插件在 Koishi 中同时注册事件处理器和消息中间件。成员事件负责入群审核、欢迎与退群提示；群消息进入治理中间件后，先经过范围和权限门禁，再并行产生内容信号、行为信号与名单信号。需要语义判断的内容可以继续调用可选的 `groupAssistantModel` 服务并进入异步 AI 复核，确定性信号则进入统一裁决链。\n\n| 层次 | 模块 | 主要职责 |\n| --- | --- | --- |\n| 事件入口 | Koishi 事件、中间件 | 接收群消息、入群申请和成员变更事件 |\n| 前置门禁 | 群范围、特权用户、访问名单 | 决定是否进入治理链路，黑名单直接产生高优先级信号 |\n| 内容治理 | 文本归一化、Aho–Corasick、可选模型服务、AI 复核 | 从规则和语义两个层面判断消息内容 |\n| 行为治理 | GCRA 单人刷屏检测 | 用同一套虚拟发送时间线识别瞬时爆发和长期持续高频 |\n| 决策治理 | 信号聚合、违规累计、分级处罚 | 将多个检测结果收敛成一次可执行动作 |\n| 状态与数据 | 规则、名单、违规状态、审计、阶段事件 | 保存规则和可追踪的完整治理链路 |\n\n主流程可以概括为：\n\n```text\nif 消息不在群范围 or 治理关闭:\n    放行\nif 发送者是群主、管理员或配置管理员:\n    放行\nif 发送者在白名单:\n    放行\n\nviews = {\n    rawText: 原始 Koishi 消息,\n    plainText: 提取文本节点后的正文,\n    keywordText: 用于词库匹配的归一化正文\n}\n\nsignals = []\nsignals += 黑名单检测\nsignals += GCRA 单人刷屏检测\nsignals += Aho–Corasick 词库匹配\n\nif groupAssistantModel 服务存在:\n    result = groupAssistantModel.evaluate({ text: plainText, sensitiveMatched })\n    result.status == skipped -> 忽略模型结果\n    result.status == pass    -> 放行并记录\n    result.status == review  -> 异步 AI 复核\n    result.status == action  -> 产生确定性内容信号\n\nselected = 按动作强度、信号优先级选择最高优先级确定性信号\nif selected:\n    更新同类违规窗口\n    合并基础动作与累计处罚等级\n    写审计并执行警告 / 撤回 / 禁言 / 踢出\nelse:\n    放行；若存在候选信号则等待 AI 异步裁决\n```\n\n### 1. 治理入口与三种消息视图\n\n消息中间件只处理具有 `guildId` 且正文非空的群消息。入口依次执行以下短路判断：\n\n1. `guildIds` 为空时插件不会注册治理功能，否则只处理命中的群。\n2. 群主、群管理员、适配器管理员角色和 `adminUserIds` 中的用户直接放行。\n3. 白名单用户直接放行。\n4. 黑名单用户不会立即结束检测，而是产生 `blacklist_user` 信号，后续仍进入统一审计和处罚流程。\n\n每条消息会构造三个视图：\n\n- `rawText`：原始 Koishi 消息字符串，用于审计和 AI 复核。\n- `plainText`：通过 `h.parse()` 解析消息元素，再抽取全部文本节点，避免图片、@ 等结构化元素干扰模型；解析失败时回退到原文。\n- `keywordText`：对 `plainText` 应用词库归一化，用于多模式匹配。\n\n这种分层避免了“为了词库鲁棒性而删除标点”影响语义模型：词库使用强归一化文本，本地模型和 AI 仍使用更接近自然语言的正文。\n\n### 2. 内容治理算法\n\n#### 2.1 词库导入与文本归一化\n\n词库导入首先限制输入规模：最大 2 MB、100,000 行、单条关键词最长 200 个 Unicode 字符。空行和以 `#` 开头的注释会被忽略，归一化后相同的词条只保留一份。\n\n消息和关键词使用同一个 `normalizeWordlistPattern()`，处理顺序如下：\n\n1. 使用 Unicode NFKC 将全角字符、兼容字符等折叠到统一形式。\n2. 删除零宽字符 `U+200B～U+200D`、`U+2060` 和 BOM，降低插入不可见字符绕过规则的概率。\n3. 转为小写。\n4. 将 `薇信`、带空格的 `微 信`、`v x`、`v 信` 统一为 `微信`；将 `扣扣`、`企鹅号` 统一为 `qq`。\n5. 删除全部空白。\n6. 删除 Unicode 标点和符号。\n7. 将连续出现三次及以上的同一字符压缩为两次，兼顾“刷字符绕过”和正常叠词。\n\n归一化过程可以表示为：\n\n```text\nN(x) = collapseRepeat(\n         removePunctuationAndSymbols(\n           removeWhitespace(\n             mapAliases(\n               lower(\n                 removeZeroWidth(\n                   NFKC(x)\n                 )\n               )\n             )\n           )\n         )\n       )\n```\n\n由于规则和消息共享同一个 `N(x)`，匹配对大小写、全半角、空格、常见标点和少量联系方式变体不敏感。\n\n#### 2.2 Aho–Corasick 多模式匹配\n\n每个群维护一个独立的 `AhoCorasickMatcher`，用于一次扫描同时匹配该群的全部红线词和敏感词。\n\n构建阶段分为两步：\n\n1. **Trie 插入**：按照归一化关键词逐字符建立前缀树，终止节点保存对应规则。\n2. **失败指针构建**：使用 BFS 遍历 Trie。若当前节点无法沿字符 `c` 继续，就沿 `fail` 指针回退，直到找到可转移节点或根节点；同时继承失败节点的输出集合。\n\n匹配阶段只扫描一次正文：\n\n```text\nnode = root\nfor char in keywordText:\n    while node != root and node 没有 char 子节点:\n        node = node.fail\n    node = node.children[char] or root\n    收集 node.outputs\n```\n\n设所有关键词总长度为 `P`，正文长度为 `N`，命中数为 `Z`：\n\n```text\n构建复杂度：O(P)\n匹配复杂度：O(N + Z)\n空间复杂度：O(P)\n```\n\n命中结果按规则 ID 去重，红线词和敏感词分别有界收集，最终按红线优先返回最多 20 个信号。敏感词达到上限不会停止后续红线扫描，避免消息前部的敏感词掩盖后部红线。\n\n数据库中的启用规则会被编译成按群隔离的自动机，并缓存 30 秒。通过控制台新增、修改、删除或导入规则后会主动清空缓存，因此正常管理操作不需要等待 TTL 到期。\n\n#### 2.3 红线词与敏感词分流\n\n两类词库使用同一匹配算法，但产生不同信号：\n\n| 规则类型 | 初始动作 | 是否需要语义复核 | 用途 |\n| --- | --- | --- | --- |\n| 红线词 | `delete` | 否 | 无需上下文即可确定违规的内容 |\n| 敏感词 | `silent` | 是 | 可能存在引用、讨论等正常语境的候选内容 |\n\n红线词和黑名单属于立即信号，会跳过本地模型和 AI 复核。敏感词只是召回候选；是否处置由可选本地模型返回状态和 AI 复核结果共同决定。\n\n### 3. 可选本地模型服务\n\n本地 BERT 检测由独立的 `koishi-plugin-group-assistant-model-onnx` 提供。\n\n主体向服务传递的内容只有正文和敏感词命中状态：\n\n```ts\ngroupAssistantModel.evaluate({\n  text: plainText,\n  sensitiveMatched: sensitiveSignals.length > 0,\n})\n```\n\n配套插件完成触发判断、BERT 分词、ONNX 七分类推理和双阈值分流。它返回分类标签、标签置信度、七类概率以及根据配置计算的总违规概率，再根据总违规概率返回标准化状态：\n\n| 状态 | 主体处理方式 |\n| --- | --- |\n| `skipped` | 本次不运行模型，继续处理已有关键词和行为信号 |\n| `pass` | 记录模型放行结果，不处罚该内容候选 |\n| `review` | 将模型分类和总违规概率加入证据并进入异步 AI 复核 |\n| `action` | 生成确定性内容信号，进入违规累计和处罚链路 |\n\n红线词和黑名单属于立即信号，主体不会再调用模型或 AI。没有安装配套插件时，敏感词候选直接使用 AI 复核；AI 也未启用时，候选消息不会仅凭敏感词自动处罚。\n\n这种服务边界允许后续接入其他本地分类插件，只要实现相同的 `evaluate()` 协议，主体治理链路无需了解具体模型格式和推理引擎。\n\n### 4. AI 复核队列\n\nAI 复核采用异步、限流、可追踪的任务队列。候选消息提交后，主消息流程继续执行；AI 稍后确认违规时，再尝试撤回原消息并执行累计处罚。这种设计避免外部模型延迟阻塞所有群消息。\n\n#### 4.1 队列控制\n\n| 机制 | 实现 |\n| --- | --- |\n| FIFO | 待处理任务存入数组，由 `pump()` 顺序取出 |\n| 并发限制 | 同时最多执行 2 个任务 |\n| 容量限制 | `pending + active` 最大为 100 |\n| 幂等 | 使用 `guildId:messageId` 作为任务键；缺少消息 ID 时使用用户和时间戳 |\n| 去重窗口 | 已见任务键保留 24 小时 |\n| 超时 | 每次请求使用 8 秒 Promise 超时包装 |\n| 重试 | 模型请求及响应解析最多重试 2 次；违规计次、审计更新和处罚执行不进入重试 |\n| 退避 | 两次重试前分别等待 250 ms、500 ms |\n\n队列已满、任务重复、功能未启用或缺少 API Key 时不会静默丢失，而是把 `full`、`duplicate` 或 `skipped` 写入审计状态。\n\n#### 4.2 Prompt 约束与结果校验\n\n系统提示明确把用户消息视为不可信数据，要求模型只做内容审核并只返回 JSON：\n\n```json\n{\n  \"violation\": true,\n  \"category\": \"不违规|普通广告|黑产广告|谩骂引战|低俗色情|博彩|欺诈\",\n  \"reason\": \"不超过 80 字\"\n}\n```\n\n解析器会：\n\n1. 从纯文本或 Markdown 代码块中提取最外层 JSON 对象。\n2. 校验 `violation` 必须是布尔值。\n3. 校验 `category` 必须属于固定白名单。\n4. 校验 `reason` 必须是字符串，并截断到 80 字。\n\n不符合约束的响应按请求失败处理并进入重试。最终不违规时将审计更新为 `dismissed`；确认违规则转成 `ai_review` 内容信号，进入与确定性信号相同的累计和处罚算法。\n\n### 5. 行为治理算法\n\n行为检测按 `guildId:userId` 保存独立状态，通过 GCRA（Generic Cell Rate Algorithm）同时约束短时突发和长期平均发送速度。\n\n#### 5.1 虚拟发送时间线\n\n设长期允许速率为每分钟 `R` 条、允许连续发送 `B` 条，则每条消息占用的理论时间和突发容忍时间为：\n\n```text\ninterval  = 60000 / R\ntolerance = (B - 1) * interval\n```\n\n每个用户只保存一个理论到达时间 `TAT`。新消息到达时间为 `now`：\n\n```text\nearliestAllowedAt = TAT - tolerance\n\nif now < earliestAllowedAt:\n    当前消息超限，TAT 保持不变\nelse:\n    当前消息通过，TAT = max(now, TAT) + interval\n```\n\n短时间连续发送会快速把虚拟时间线推向未来，超过突发容忍后立即触发；略高于长期允许速率的发送会逐渐积累虚拟时间差，因此也能识别慢速刷屏。停止发送后真实时间会追上 `TAT`，状态自动恢复。超限消息不推进 `TAT`，避免持续发送无限延长恢复时间。\n\n#### 5.2 处罚冷却\n\n每条超限消息都会产生行为信号并进入撤回链路，但只有首次超限或距离上次处罚达到 `floodCooldownSeconds` 时才累计一次违规并写主审计。这样持续刷屏会被连续拦截，同时避免每条消息都提升处罚等级。\n\n行为证据会同时记录允许速率、突发额度、当前虚拟积压、超出容忍时间以及本次是否新增违规。例如：\n\n```text\n个人发送频率超过限制：允许长期 15 条/分钟、短时连续 8 条，\n虚拟积压 32.0 秒，超出容忍 4.0 秒，是否新增违规：是\n```\n\n#### 5.3 行为状态的内存边界\n\n行为状态使用 Map 保存，并在每次访问后通过“删除再插入”刷新顺序。策略参数变化时，`policyKey` 变化会使该用户状态重新初始化，避免旧参数污染新策略。\n\n状态用户数达到 10,000 时会先删除超过 2 小时未活动的条目；若仍超限，则按 Map 插入顺序淘汰最旧条目，限制长期运行时的内存占用。\n\n### 6. 多信号聚合与确定性裁决\n\n所有检测器都输出统一的 `ModerationSignal`，其中包含信号类型、来源、证据、基础动作、是否需要 AI、是否累计违规和是否写审计。\n\n同一条消息可能同时命中黑名单、关键词和刷屏。插件先过滤仍需 AI 的候选信号，再对确定性信号排序：\n\n**动作优先级：**\n\n```text\nkick(5) > mute(4) > delete(3) > warn(2) > silent(1)\n```\n\n**同动作下的信号优先级：**\n\n```text\nblacklist(9)\n  > redline(8)\n  > ai_review / spam_model(7)\n  > spam_flood(6)\n  > others(1)\n```\n\n最终只选择最高优先级信号执行一次主裁决，避免多检测器同时处罚。其他命中仍通过同一个 `traceId` 写入阶段事件，因此不会丢失解释信息。\n\n如果同步链路已经处置消息，后续 AI 复核只补充内容证据，不再次计次、撤回、禁言、踢出或通知。消息入口按平台、机器人、群和消息 ID 去重，单实例内最多保留 10,000 个 ID、最长 24 小时；容量达到上限时淘汰最早记录。该去重不跨插件重启，缺少消息 ID 时不进行入口去重。\n\n### 7. 违规窗口与分级处罚\n\n#### 7.1 同类违规累计\n\n违规状态按以下联合维度查询：\n\n```text\n(guildId, userId, category)\n```\n\n`category` 目前按信号来源划分为“内容违规、行为违规、名单管控、手动处置”。如果距离最近一次同类违规超过 `offenseWindowMs`，次数重置为 1；否则在原次数上加 1。每次更新都会刷新 `updatedAt`，因此这是一个以最近违规时间为基准的滑动累计窗口。\n\n累计和手动清零通过同一 Koishi 根上下文共享的短事务队列执行，覆盖插件别名、同步检测和异步复核的并发更新。旧版若存在同一群、用户、类别的重复记录，下次累计时保留最大有效次数再加一，并在事务内移除重复状态；历史审计保留。无需变更现有表结构，该并发保障针对单个 Koishi 进程，不提供多进程共享数据库的分布式协调。\n\n#### 7.2 处罚等级选择\n\n先筛选所有满足 `offenseCount >= level.offenseCount` 的等级，再按以下顺序选择最强等级：\n\n1. 动作强度：踢出 > 禁言 > 警告。\n2. 同为禁言时，时长更长者优先。\n3. 动作和时长相同时，触发次数更高、等级更高者优先。\n\n最终动作取“检测信号基础动作”和“累计处罚动作”中更强的一项：\n\n```text\nfinalAction = maxByActionRank(signal.action, punishmentLevel.action)\n```\n\n例如红线词的基础动作是撤回，即使第一次违规对应的累计等级只是警告，最终仍会撤回消息；累计达到禁言等级后，则升级为“先撤回，再禁言”。\n\n#### 7.3 动作执行\n\n- `silent`：只记录，不做群内动作。\n- `warn`：按模板发送提醒，不撤回消息。\n- `delete`：撤回当前消息。\n- `mute`：先撤回消息，再调用适配器禁言接口。\n- `kick`：先撤回消息，再调用适配器踢出接口。\n\n撤回、禁言和踢出会检测适配器能力，并在审计阶段事件中分别记录成功、失败或无法执行。撤回失败仍会尝试后续禁言或踢出，通知在动作完成后发送，通知失败不回滚计次、不重试处罚。动作未全部完成时使用结果提示，不套用成功模板；最终动作强于模板对应级别时，改为报告实际动作。提醒模板留空仍保持静默。\n\n### 8. 审计链路与数据保留\n\n每条进入检测的消息都会生成随机 UUID 作为 `traceId`。关键词、行为、名单、本地模型、AI 和最终裁决使用同一个 `traceId` 写入不同阶段：\n\n```text\nkeyword / behavior / access\n        -> spam_model\n        -> ai_review\n        -> decision\n        -> execution_delete / execution_mute / execution_kick\n        -> execution_notice\n```\n\n数据分为两层：\n\n- `group-moderation-audit`：保存裁决状态、计划动作、累计次数、消息内容和主要证据；`confirmed` 表示确认违规，不代表动作成功。\n- `group-moderation-audit-event`：保存每个检测阶段的信号、结果和证据。\n\n阶段事件写入失败不会中断治理主流程。审计正文最多保存 2,000 字，规则模式最多 500 字，证据最多 2,000 字，避免异常输入无限放大存储。\n\n后台任务每 6 小时执行一次清理：\n\n- 超过 `auditRetentionDays` 的主审计和阶段事件被删除。\n- 超过违规累计窗口、长时间没有更新的违规状态被删除。\n- 规则词库和访问名单不受审计清理影响。\n\n### 9. 成员事件与访问名单\n\n成员管理与消息治理共用群范围和黑白名单：\n\n- 入群申请先检查群范围和总开关，黑名单用户直接拒绝。\n- 配置暗号后，通过正文 `includes(signal)` 判断是否自动同意；未配置暗号时交给其他逻辑或管理员处理。\n- 成员加入和退出事件使用模板替换生成欢迎语与退群提示。\n- 白名单只跳过自动治理，不删除历史记录。\n- 黑名单发言会进入统一信号、累计、处罚和审计链路，而不是在入口直接静默丢弃。\n\n### 10. 复杂度、边界与调参\n\n| 模块 | 单次消息主要复杂度 | 有界机制 |\n| --- | --- | --- |\n| Aho–Corasick | `O(N + Z)` | 每条消息最多 20 个信号，规则缓存 30 秒 |\n| GCRA 单人刷屏检测 | `O(1)` | 每个群用户只保存一份常数状态 |\n| 配套插件 tokenizer | 基础扫描为 `O(L)`；WordPiece 最长前缀搜索取决于单词长度，最坏为超线性 | 模型输入截断为 512 token，但预处理仍会扫描完整正文 |\n| 配套插件 ONNX 推理 | 由模型结构和序列长度决定 | Session 复用、可只在敏感词命中时触发 |\n| AI 复核 | 外部网络调用 | 并发 2、容量 100、8 秒超时、最多 3 次请求 |\n| 行为状态 | 平均 `O(1)` Map 查询 | 最大 10,000 用户，空闲 2 小时后可淘汰 |\n\n> `L` 是原始正文长度，`N` 是归一化消息长度，`Z` 是命中数。\n\n治理预设：\n\n| 预设 | 长期允许速率 | 突发条数 | 处罚冷却 | 适合场景 |\n| --- | --- | --- | --- | --- |\n| 宽松 | 24 条/分钟 | 12 条 | 90 秒 | 活跃群、通知较多的群 |\n| 均衡 | 15 条/分钟 | 8 条 | 60 秒 | 大多数普通群 |\n| 严格 | 12 条/分钟 | 6 条 | 45 秒 | 刷屏较多、需要强治理的群 |\n| 自定义 | 自行设置 | 自行设置 | 自行设置 | 需要精细调参的群 |\n\n建议：\n\n- 首次启用配套模型插件时，在配套插件中保持较高的直接处置阈值，通过审计观察误判，再逐步调整。\n- 红线词优先保证精度；含义宽泛、依赖上下文的词放入敏感词库。\n- 正常发言容易触发时提高长期允许速率或突发条数；持续慢速刷屏明显时降低长期允许速率。\n- 固定通知机器人或业务账号加入白名单，比整体关闭行为检测更可控。\n- AI 复核是异步兜底，不应替代高精度红线规则和本地确定性策略。\n","readmeFilename":"readme.md"}