{"_id":"@duke-dsh-plugins/dsh-model-prompt-injector","_rev":"6-193de5e66c4b1b579199f39824f7cb55","name":"@duke-dsh-plugins/dsh-model-prompt-injector","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@duke-dsh-plugins/dsh-model-prompt-injector","version":"1.0.0","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-model-prompt-injector@1.0.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"e626619805598db6fc46d90498766fa438935a18","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-model-prompt-injector/-/dsh-model-prompt-injector-1.0.0.tgz","fileCount":7,"integrity":"sha512-g8gSizzt7Ho3DNJIDqRqmR7PzxATfS4NJ4OyvOVnjxJddz5SSft5ipOVZTipfHQfZSmWrNOIDLtywFDGEYNqbw==","signatures":[{"sig":"MEYCIQDa7I7u3LXuZD+djNcOUP48LdEnDHdWJ0+L/F+9iL9FYAIhAIBBGpDHK9C8KEm5ebs8Ikubw5ZjlzfMDUHRqGoZumJm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47709},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8bfe2add1a0465c7d40499435c60432e1bbac164","scripts":{"test":"node --check index.js && node --check client.js && node --check typert.host.js","check":"node --check index.js && node --check client.js && node --check typert.host.js"},"_npmUser":{"name":"dukebywwh","email":"wwhbygx@sina.com"},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"_npmVersion":"11.17.0","description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"4.0.1 || 4.0.2","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2 || 0.1.2-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-prompt-injector_1.0.0_1788794077442_0.3992314510451258","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@duke-dsh-plugins/dsh-model-prompt-injector","version":"1.0.1","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-model-prompt-injector@1.0.1","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"7242bbe08f67efd584af3d818015ca537eff083f","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-model-prompt-injector/-/dsh-model-prompt-injector-1.0.1.tgz","fileCount":7,"integrity":"sha512-/P6VGTFMd0UqCQHmO3y0G4oZ10h3KXAjKrYmGqabllNwh7SvhdTlchuMQv+W0iw/KLVVX4z35MwTYCsEstQoLg==","signatures":[{"sig":"MEUCIQCNHxM7VjF17Hhib9A/L+Y6X2HG4/VUrHeccp7zcJl6oQIga7cua3cZ0U+eiKsDgsam8YJdwBnizM9rheWOgUJs1Vs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGLBVPM5SlxLDRD0j9NL99Ik50WErJC7A04KPLwkdG0GAiBpkmp+Dh6D9NMa4OGZiIQNaZHeQoA5mfFg5GJquchvfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-model-prompt-injector@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50862},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3a65da89f891018b0033cb72990e3ff1c1d27820","scripts":{"test":"node --check index.js && node --check client.js && node --check typert.host.js","check":"node --check index.js && node --check client.js && node --check typert.host.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c7e09bff-2cf1-430a-bcc0-21c6d5bf85c6"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"_npmVersion":"11.19.0","description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"4.0.1 || 4.0.2","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2 || 0.1.2-rc.1 || ^0.1.5-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-prompt-injector_1.0.1_1789805792061_0.8116821817531759","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@duke-dsh-plugins/dsh-model-prompt-injector","version":"1.0.2","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-model-prompt-injector@1.0.2","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"cc16d0b241b99c8f465530924093aa5b80e870c2","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-model-prompt-injector/-/dsh-model-prompt-injector-1.0.2.tgz","fileCount":7,"integrity":"sha512-PJekYIY+M87EZA18ZTsxJgGYkoBz/CQnul5hy0CCGB0CJ0RL/82fD5grOQHZ37G5hXn5xq6rFhb4OJg+3LEbAQ==","signatures":[{"sig":"MEUCIQDTytiQbkucBv69qW2nm6B+rpkgEm+IS/EE2tAwTiRBbwIgHFTkKZgslplM1bTChSnL9Fr8kSPDEj8AWhVmzEdmJh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAz118uCwJBUos1XaAKx4FeICd198DjZQs4/hrCdB0mYAiA76zLpGShDl2+GptU+2UGastGNTsoIJ4S9f5LzQ31PMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-model-prompt-injector@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51190},"main":"index.js","type":"module","engines":{"dsh":">=0.1.5-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8393f2a42f2e04e99230705a3ffab646100834b9","scripts":{"test":"node --check index.js && node --check client.js && node --check typert.host.js","check":"node --check index.js && node --check client.js && node --check typert.host.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c7e09bff-2cf1-430a-bcc0-21c6d5bf85c6"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"_npmVersion":"11.19.0","description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2 || 0.1.2-rc.1 || ^0.1.5-rc.2 || ^0.1.7-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-prompt-injector_1.0.2_1790311013560_0.6640819617523377","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@duke-dsh-plugins/dsh-model-prompt-injector","version":"1.1.0","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-model-prompt-injector@1.1.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"92d45ec28e6c525413add0b2c4b310662ef354d2","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-model-prompt-injector/-/dsh-model-prompt-injector-1.1.0.tgz","fileCount":7,"integrity":"sha512-5n1dFLZ8bGyz4dz9e/QTZQFF3D9axa8vrXwkwdxbzpySX4/ezVjpH9K95tKUUk5KHr84dKxI1K5zMm4aLCEJMw==","signatures":[{"sig":"MEYCIQCVXwnZyojEYkvEAlMGftKuIIumo31Z5hjYdKuWLE5/HgIhALr1Ofd7XrsvLY+nL4B73EghPSx/c26dLQEnk9FGbByg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBXTmOMVhWGPEltf8eriqFNGNF8MBluTxpYMoI1/dhywAiEAktk8aAbK1yflQZaTmPm/P6pAz7qJjsa3z2bJX8pyOrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-model-prompt-injector@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58116},"main":"index.js","type":"module","engines":{"dsh":">=0.1.5-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"c245eb709737df5710f0d4a2e29d0ddccdcf0c18","scripts":{"test":"node --check index.js && node --check client.js && node --check typert.host.js && node test/delivery.test.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c7e09bff-2cf1-430a-bcc0-21c6d5bf85c6"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"_npmVersion":"11.19.0","description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.5-rc.2 || ^0.1.7-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2 || 0.1.2-rc.1 || ^0.1.5-rc.2 || ^0.1.7-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-prompt-injector_1.1.0_1790346145913_0.3887576886920199","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@duke-dsh-plugins/dsh-model-prompt-injector","version":"1.1.1","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-model-prompt-injector@1.1.1","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"55ebe9cec09a0d66094b65ae776731c179252cb8","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-model-prompt-injector/-/dsh-model-prompt-injector-1.1.1.tgz","fileCount":7,"integrity":"sha512-7sfZgQb2XEfDnwdfjaMTJHq1OhI5J98LhXrCVJR1SnJHWZeaMdTYPOWpJDqtxzQi+sqS2yyoO7H7Po/S/HCH1g==","signatures":[{"sig":"MEYCIQCzK/BOXVV4f1hVaKsV0N0IlF7Cmee3Dscqc1P3sDRgEQIhALNXyfAZWMqSJEU7xDqoSoQNwlp7ZApDzIMyHfZo76OB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCsZ3S7JeFjQG0xKYzAog/5RHb9qq2bEA19s4YaT1LargIgbK93yPzS7C2VC8QqKi4Ad3XcuMsXYryiy1su6npUHF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-model-prompt-injector@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58744},"main":"index.js","type":"module","engines":{"dsh":">=0.1.5-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"323cf30093b2d64b487a05e106bfeec76b1cc37f","scripts":{"test":"node --check index.js && node --check client.js && node --check typert.host.js && node test/delivery.test.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c7e09bff-2cf1-430a-bcc0-21c6d5bf85c6"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"_npmVersion":"11.19.0","description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.5-rc.2 || ^0.1.7-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2 || 0.1.2-rc.1 || ^0.1.5-rc.2 || ^0.1.7-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-prompt-injector_1.1.1_1790393654664_0.7977238793899122","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"_id":"@duke-dsh-plugins/dsh-model-prompt-injector@1.2.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"dist":{"shasum":"b32932a6fb86947a7d247ce14f01f301f8f4016d","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-model-prompt-injector/-/dsh-model-prompt-injector-1.2.0.tgz","fileCount":7,"integrity":"sha512-JH4LbkvB85Aat3pA/+NWtJU3ONkCaADl72MwHf1eb0ipWfh8+xo9fajspddC0IDm6v8QWFvK4rZoOXgATp80KA==","signatures":[{"sig":"MEYCIQD+lsgyQqFyT7Ai7RVB1ozumJVyfk8/q+WePryAnfrg2AIhAL4YtBs1c6p1U4R97zKwNZiea6NVX/Xhm1Qy9QVE7kvK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIED21UHkLDlfFDsB7kMyB6xOJemtSJkS68A0iV4FpRXqAiEA/UOjWD8gg4vXJwlkQ9N1xkrVTVfPDfOa/CR+w3mopKI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-model-prompt-injector@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59477},"main":"index.js","name":"@duke-dsh-plugins/dsh-model-prompt-injector","type":"module","engines":{"dsh":">=0.1.5-rc.2 <0.3.0-rc.1"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"c66ff48b5a4a9cf5e5ea37aec0bf8e3706bd09ef","license":"MIT","scripts":{"test":"node --check index.js && node --check client.js && node --check typert.host.js && node test/delivery.test.mjs && node test/host-compat.e2e.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js"},"version":"1.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"c7e09bff-2cf1-430a-bcc0-21c6d5bf85c6"}},"homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"_npmVersion":"11.19.0","description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","directories":{},"maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.5-rc.2 || ^0.1.7-rc.1 || ^0.2.0-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.1-rc.2 || 0.1.2-rc.1 || ^0.1.5-rc.2 || ^0.1.7-rc.1 || ^0.2.0-rc.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-model-prompt-injector_1.2.0_1790642360529_0.6869464744619889"}}},"time":{"created":"2026-09-07T15:14:37.326Z","modified":"2026-09-29T00:39:20.945Z","1.0.0":"2026-09-07T15:14:37.704Z","1.0.1":"2026-09-19T08:16:32.139Z","1.0.2":"2026-09-25T04:36:53.697Z","1.1.0":"2026-09-25T14:22:25.996Z","1.1.1":"2026-09-26T03:34:14.738Z","1.2.0":"2026-09-29T00:39:20.613Z"},"bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector/issues"},"license":"MIT","homepage":"https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector","keywords":["dsh","deepseek-harness","plugin","system-prompt","prompt","model","persona","llm"],"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-model-prompt-injector.git","type":"git"},"description":"为 DeepSeek Harness 中本地已配置的模型追加系统提示词：按 provider/model 精确匹配或服务商级通配（provider/*）注入到系统提示词末尾，设置面板逐模型管理，规则持久化、重启不丢。","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"readme":"# dsh-model-prompt-injector\n\n为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)（DSH）中**本地已配置的模型**追加系统提示词的插件：按 `provider/model` 精确匹配（或 `provider/*` 服务商级通配）把规则文本注入到**系统提示词末尾**，在设置面板中逐模型管理，规则**持久化保存、重启不丢**。\n\n## 功能\n\n- **按模型注入**：每次向模型发起请求时，命中规则的提示词追加到系统提示词末尾（内置段落排序之后，order 10250），对主会话、子代理（subagent / workflow）同样生效。\n- **两级规则**：`provider/*` 服务商级规则对该服务商所有模型生效；`provider/model` 模型级规则只对该模型生效；两者同时存在时按「服务商级 → 模型级」顺序叠加。\n- **设置页管理**：设置 → 「模型提示词」页自动列出本地已配置的服务商与模型（与「模型」设置页同一数据源），逐行添加/编辑/清除，已注入的条目带徽标与内容预览。\n- **持久化**：规则保存在 `<DSH_HOME>/model-prompt-injector/config.json`（默认 `~/.dsh/model-prompt-injector/config.json`），重启 DSH 后自动恢复。\n- **即时生效**：保存规则后，下一次模型请求即携带新提示词，无需重启。\n\n## 安装（标准 DSH bundle）\n\n```bash\ndsh plugin --profile web add @duke-dsh-plugins/dsh-model-prompt-injector --registry=https://registry.npmjs.org\n```\n\n> 显式指定 npmjs registry，避免被本地/镜像 registry 配置带偏。安装后**重启 DSH**（Host 加载、typert 注册、client bundle 注入都在启动时发生），设置面板出现「模型提示词」页。\n\n卸载：\n\n```bash\ndsh plugin --profile web remove @duke-dsh-plugins/dsh-model-prompt-injector\n```\n\n## 使用\n\n1. 打开 **设置 → 模型提示词**（在「模型」页之后）。\n2. 页面列出本地已配置的服务商卡片；每张卡片第一行是「所有模型（服务商级）」，其下是该服务商配置中的每个模型。\n3. 点击目标行的「添加提示词 / 编辑」，在文本框中编写要追加的系统提示词，**保存**即时生效；「清除规则」删除该条。\n4. 规则匹配是**路由级精确匹配**（`provider/model`，大小写敏感，如 `minimax-cn/MiniMax-M3`）；模型 id 以「模型」设置页中配置的值为准。\n\n## 规则示例\n\n| 规则 key | 作用范围 |\n| --- | --- |\n| `deepseek-official/*` | DeepSeek 官方路由的所有模型 |\n| `minimax-cn/MiniMax-M3` | 仅 MiniMax-M3 |\n| `zai-coding-cn/glm-5.3` | 仅 GLM-5.3 |\n\n典型用法：给弱一些的模型追加一段严谨的工作协议（先验证再声称、最小改动、契约对齐……）以提升输出质量；给特定模型追加项目约定或输出格式要求。\n\n## 实现要点\n\n- 注入基于 `systemPrompt` 服务的**动态段落**：段落文本是每次模型 step 组装时求值的函数，运行时组装上下文携带 `agent`，按宿主模型选择层的同一优先级解析本次请求的目标路由（UI 选择的模型 → 已记录请求头 → 创建时 options，DSH 0.1.5+ 下 `agent.options` 只是创建时快照）做规则匹配；未命中返回空串，渲染器自动丢弃空段落（零开销）。\n- **不重复注入**：每个 agent 的**首次**命中由系统提示词投递（规则在系统提示词末尾）；之后内容不变时段落恒为空。模型**切换**或**规则编辑**时，规则改经 `agent/pre-step` 注入点以一条用户通知消息投递——与宿主 `[model changed]` 通知同一时机、紧随其后；切到无规则的路由会收到显式的 `[model prompt rules cleared: …]` 清除通知。\n- 规则读写走插件自有的 Typert Remote 服务（`modelPromptInjector.getState / setRule`），Client 经 `ctx.remote.$mount` 自挂载命名空间后调用。\n\n> 注意：切换通知是对话消息，长会话被压缩后可能随通知一起被裁掉。若发现规则“丢失”，在设置页重存一次规则或切换一次模型即可重新注入。\n\n## 开发\n\n```bash\nnpm run check   # node --check index.js client.js typert.host.js\n```\n\n本地调试安装（link:，插件目录需已有 node_modules，见 AGENTS.md）：\n\n```bash\n# 依赖版本对齐本机宿主（0.1.5-rc.x → cordis@4.0.2 + typert@0.1.5-rc.2；0.1.7-rc.1 → cordis@4.0.4 + typert@0.1.7-rc.1）\nnpm install --no-save --registry=https://registry.npmjs.org @deepseek-ai/cordis@4.0.2 @deepseek-ai/dsh-typert-protocol@0.1.5-rc.2 zod@4.5.4\ndsh plugin --profile web add /path/to/dsh-model-prompt-injector\n# 重启 DSH 生效\n```\n\n**宿主要求**：`engines.dsh` 声明 `>=0.1.5-rc.2 <0.3.0-rc.1`（dshmarket 按此显示\"宿主要求\"并做安装适配判定）。已覆盖 DSH 0.1.5-rc.2 ～ 0.2.0-rc.1（0.2.0 起 profile 不再携带宿主包，插件导入由宿主运行时解析，本插件无需任何配置变更）。\n\n## 发布\n\n打 `v*` 标签推送 GitHub，`.github/workflows/release.yml` 自动构建 tgz、发布 GitHub Release，并经 npm OIDC Trusted Publishing 发布到 npmjs（需在 npmjs.com 包设置中先配置 trusted publisher：本仓库 + `.github/workflows/release.yml`）。\n\n## License\n\nMIT © duke\n","readmeFilename":"README.md"}