{"_id":"@alanzhao/dsh-balance-monitor","_rev":"19-a316a1a3322cfabb889603e31273783f","name":"@alanzhao/dsh-balance-monitor","dist-tags":{"latest":"0.7.11"},"versions":{"0.6.3":{"name":"@alanzhao/dsh-balance-monitor","version":"0.6.3","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.6.3","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"c421ec42c4e3e9a4d095b6fb1a986a311dde9105","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.6.3.tgz","fileCount":9,"integrity":"sha512-nGs4tqGwxPb5GDYy3hVtALRRpMao5t9oEL+R89VBrtLAc7PHKSFxoMsxF9F3ooBMO3hUISaq6vaDVff/LIggZQ==","signatures":[{"sig":"MEUCIDxUcmTN3X/oMaNpoZhH8aj9kL4Hm/CsUXtruRVLhd+kAiEAhg73t3HlzugpCgKOLOVl6L05PDRfTi7zUw+8ChRfuL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113368},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"23ebf4c72ed395d1e3825e4ce08c8bb350fcf693","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.6.3_1787921145161_0.25699736999208755","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@alanzhao/dsh-balance-monitor","version":"0.6.4","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.6.4","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"4f3ac248e54ccfd36a554a434c97d66fe9645e4c","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.6.4.tgz","fileCount":9,"integrity":"sha512-xgKuT54nFbDGtTAKNHZyLBHZsSw+iBlnqz8YRXFiVNxrbZKTS/OKF7fgSuLIYfdSdUHvGV1DDZ9ZMlPVoSf98g==","signatures":[{"sig":"MEUCIEuOgkQj4Fng4t+163C+zdrY3W9Du6xCqo1WEMCtgSxxAiEAs0LAQWycQWXo9BiZFBE8qIEkI6JsgZGDl+LZaZyQ544=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113378},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"d0c978118330da7d73a573005d0534e57a72d67d","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.6.4_1787927238583_0.9077942542325312","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@alanzhao/dsh-balance-monitor","version":"0.6.5","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.6.5","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"370ac3a3a3092f2654d7888740cc5f66f3232a28","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.6.5.tgz","fileCount":9,"integrity":"sha512-2AYhPumJR2B+wheJBQ0EZXG2f1lj1E7c7tOG5A0RL/6ye3ICmS+pfnX8H6sDhuDDPM7kHo4MJ318gx8O4Nf5eA==","signatures":[{"sig":"MEQCIHBs/Nqf/9jMk27ZfdrKQFarcLHO55WlizHg68CHoMikAiBwx1eGkJUUHGlOJte3ypcswBWvBFxX/GstKQEqS0vIfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113388},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"8e0e02514745dad45e5fcb9f366014e6f9a31852","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.6.5_1787927594927_0.10408319043995906","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.0","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.0","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"13a79d2c596b7325539addf7a816970137c3b5b9","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.0.tgz","fileCount":9,"integrity":"sha512-AGzeHtNzvp2TMqqcM6nP6T2r4iB8O55fn7q0IOcldbqwklfK1YPG+gtS2RP3tzoCULtUB1UuETUfddctlq6vJw==","signatures":[{"sig":"MEUCIQDLegaV4uB9xd457zhNV0vkHRAGK6to1FggXSWnI0NXIgIgT/glwoMb4IYEkaujSz2f/Ofab2iAgsKPS73FKTFzbRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116809},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"9f79d0f1b8a42a3e46366baf253271d72e1e0c07","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.0_1788751544090_0.6788235742110198","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.1","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.1","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"60ecba207ff8398192489fb1bcdad78a0233bc93","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.1.tgz","fileCount":9,"integrity":"sha512-1L+ElVHnVZIXwj74UTG7dhZw9AiiuitfQrdGmf6j/LRIVAlNV+tD2jgd+1ZRFmUdQbWREKDk5k5cgaGLmTyUtQ==","signatures":[{"sig":"MEQCIEEs2F9GqVc3i9c8tg1QXJyllUBZq0cDrN2c//HSCqLuAiAqKnYd3gePMH/ChKGkYJMqvr0TJn+wlPlCyZb1ED2w2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119052},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"dd4b1e2862a5c7e728b053012866a6fe44917a03","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.1_1788835928163_0.34671682490133504","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.2","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.2","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"ba5c9adeb1c93cf87c8858b0676f8df3be94f150","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.2.tgz","fileCount":9,"integrity":"sha512-OGMGwvYSI0tBn213ZKpb8ntmCRQwZ3ggzsFfFlkNyql61RStojDQmAOhYeWiQZKcFkJExGe4T/RAbs+kOBeMeQ==","signatures":[{"sig":"MEUCIEnxkq42LoXhwZLKaUpaHi1ezpDCkvVCCwrEIupCLbbGAiEAiLZPGfLUiJUL6sZeGcY/YLC8w3DQOLuW4ucSgxE8/X4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121949},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"a704d5defbc682df87292c05476046665307a193","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.2_1789021078377_0.17293029400147053","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.3","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.3","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"a46070686ffe89377fa88867e549fac61522e24c","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.3.tgz","fileCount":9,"integrity":"sha512-Mg4HL5TfHTwhKb+qxQMApg0W79F3Muf/ctE0yF+JIMBlNsHj+lRp66CyV2l9k+KwhPXIwBzfqwdCf5pk+MywBQ==","signatures":[{"sig":"MEYCIQCHd9/NGKQIn2zgvWLNz5URr8iV2xcFq5CRbXBLvXqJCgIhAP4pr68pwJongR/MMmIvpmvOSayyFLldbgHOYd7DYpk8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDv1A3CmWFN7F94ZDYT2ZxP6EW0p09gUwWsUpkVxnVxAAIgQGTniTN+SBE3fBZ7H4QjrrmEE3Jc7Kuk0P6iiOnAYm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142668},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"b1be4a385c286785c74e5a8a4d7097a08e2e2ea2","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"deprecated":"0.7.3-0.7.5 hardcoded a private CLIProxyAPI hostname as the default value of network.cpaBaseUrl. Upgrade to 0.7.6+ (defaults to empty; see the CPA setup guide in the README). 该版本把私有 CPA 地址硬编码为默认值，请升级到 0.7.6+。","_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.3_1790349950969_0.8766161768629601","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.4","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.4","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"00cc74ce47284ca69ee521241cf5ef3cc3f58761","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.4.tgz","fileCount":9,"integrity":"sha512-Gi94SwhJ05VQp8Uxa2+SUQ482F2LQbpfSbXzfqknbG3Lq3DbSf3NxZzEOKXtgkNgW+hxcztC3DDWyitOBf8Kxw==","signatures":[{"sig":"MEQCIE1fZrNH8ORgokSjo2/eQpQYvqZ2Wph4tTPRH3g2QTP1AiAGdC/ldK3df+4ug8OBOoL0/RN9WfItB3W329b5qy5lcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQyclv7ldTBE/ohtjlIOCv0nQhYn4qSl/pn8zPncjv/QIgMEOCpU26aL+Rck0/LhRulTIFeoluQdmZXtiG3wJKubI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143216},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"9e83968c26e590ac0b9ec715ec7931d1bc85522c","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"deprecated":"0.7.3-0.7.5 hardcoded a private CLIProxyAPI hostname as the default value of network.cpaBaseUrl. Upgrade to 0.7.6+ (defaults to empty; see the CPA setup guide in the README). 该版本把私有 CPA 地址硬编码为默认值，请升级到 0.7.6+。","_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.4_1790350453734_0.9843610134766052","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.5","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.5","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"377afcafbdb8806b6850d83609907205f477f204","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.5.tgz","fileCount":9,"integrity":"sha512-+KJksScnTCFu1LcH3hpZfZVQGuKfCEE9+bJGGbHKUkEaU24TlYs2/8WEYz7zMcOXby5LR49vqFAYl1yuRhe5Lg==","signatures":[{"sig":"MEUCIQCedCH7FaSp8JjfB2r2M/mw1F/++LglFrSreHuzE/mBWQIgT/JDGrw7zIsmjBFggNO4RAFef9apUxctwJok6J/9/2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCndrMPB9N9tFYrDoGruD00foTWI+yP6EtLyZ5qO7+luAIgPzFTJTGlUkbzE51mk83e3sdd1ccm0VcCzXx67uw8hx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143150},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"218b7cc87842d6407dcf56bb883bff9df38be34a","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"deprecated":"0.7.3-0.7.5 hardcoded a private CLIProxyAPI hostname as the default value of network.cpaBaseUrl. Upgrade to 0.7.6+ (defaults to empty; see the CPA setup guide in the README). 该版本把私有 CPA 地址硬编码为默认值，请升级到 0.7.6+。","_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.5_1790351065509_0.4602322593687005","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.6","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.6","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"78fc02ca2ff3799bc9236f120693391abe159ea2","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.6.tgz","fileCount":9,"integrity":"sha512-07HBUXuwrnH+o9LsxW/2wK2Jq/1ZDVlyv293qzKv6A5Rp/bNYn/HL/TfdklVdQFjvQwcjg8tr5RiaaFeQtoJ+A==","signatures":[{"sig":"MEQCIAYC/0nnqPI3vfdWjLAyuNTsqBgpACij88ict/nyCNsrAiB7obBMMbGb5Hrh/S3xiNqCk5eJLvz3X1DTYY0yWDgKpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBidmChSjrh7dfmdzD8To3fqkT8BIxQgt6G9sf+2/zSAAiEAsrHBHa1r84bQXgLUWoBpkIPx77SGfafsvi1axivucJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156150},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"05baf9f40938df78ccbf631e20a0bade740bb5b9","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.6_1790390965781_0.6931991422829693","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.7","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.7","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"c3abaa669490e8a8315a676958df0539bf1a0414","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.7.tgz","fileCount":9,"integrity":"sha512-7vbUsrS7Kz/qCcDmiX58tmnfFmG7fr0p4iICkEN4193lcGP5EkiNQiEPR6OPynF4vXl46vion4UvDcrPFzHQFA==","signatures":[{"sig":"MEUCIQDyANu8AL9FH3VOKb3QXykgibRLo2zhO3Nl6axn0KtwvAIgB6dCeuqSg0TiQcJjAJOHiHQ6nKfwcdY8jVSd9+5g93g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEg5jUX491Lzz4Cg1tyC8AcpCS/k1ZkaPbNRJx0bW2/JAiBFJoUaRq4wjaMt9qWlOSO2Jyhc7BoWVKMdHKBI+APjbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165196},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"bd08aa2cc56eccbaed2c602a78b11a8cc6286482","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.7_1790397595457_0.9981478851570018","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.8","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.8","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"60710fde78465b600e8708de86cc7daee1bdaaf4","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.8.tgz","fileCount":9,"integrity":"sha512-Zpc9kBz3e+kHmjUhW8IeKWfWzELe6e2GulSgAO837uVV3Npt2SeA6sy+MUPjSFKczCmx6cj7LE0dLqMGddtK3w==","signatures":[{"sig":"MEQCIEb88gUCWofA+OH/FY6CBub458cdVQ+hw0YVl5TAxlccAiBxXW2/TNDeh2VgjNqeJ92q/G11DgzRnmiaLXq5INh3lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGT8UBQUEyQ9twBfG3WN/a8zXzae0FJzJoOJDBzq3josAiEAzcACcGBj1CLmQdnMG/vs9BQcmoe3P6s4gszE/O21QXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167990},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"fc22526929333f25382b8c26ce0dd3195bd4e564","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.8_1790657592603_0.6601749636292062","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.9","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.9","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"7861fb7ccc941e949154d274b27c126dcb1a01bd","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.9.tgz","fileCount":9,"integrity":"sha512-h3kXdrY+gPoU+STgbCVWGdJoBFAO5QkPNYGFdZ9okTX6PWh+Zc1TtDhaj7KIRoWDq+FIWeGN/9Swspqm/L7lbw==","signatures":[{"sig":"MEQCIHpD+LgW2iKdIIpxe+CcrxtqOhY/5S6Mtrb5pjRclRw/AiB/q7JBUivWY0UTf/Zhpes5bVInGbmJ8gTKfG+hosmwtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBYFLfXwmnn3I8QU5vQzN+KGV5mU3uFJ0SzBnrMOS2OQAiB4eGqSVPg4nnUBTXoIoxrt49aeaDydkurnPOhLZlipLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169392},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"6e6e37a5584b7bc0385b32c014676ffd48c49d3e","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.9_1790664401313_0.10606870497405052","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"@alanzhao/dsh-balance-monitor","version":"0.7.10","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"license":"MIT","_id":"@alanzhao/dsh-balance-monitor@0.7.10","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"13235a76c9eb1b1ef7699bd045dcfd96415eba5b","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.10.tgz","fileCount":9,"integrity":"sha512-oIEwjfu9THOUuQDP4Gpt4ls+UKfo+M0w7GGYOPHzYRh4/fChH2Y5fmFcUWpnNrqODYbYL5GXs4RnksxmMDpKTg==","signatures":[{"sig":"MEUCIGDneF2xhz/l7hZC0Uhp/O/aQi6kMmOmiGWibbJpx/aXAiEAtO89IybarXtF9D/rtf/0txw1v6wSIllIzDOICtryHNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDA+rNMl96Pf3N1I2X0fBeynvQ4lV4RgFnxZ8bvrmIaWgIgcQFZjzdYlNL070pe60C9MSjCJclVgjLn2jUZrVtcXLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169897},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"c4df46a59a21c86ea8135a1cfd05cec60e1df69c","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-balance-monitor_0.7.10_1790665488113_0.7175838679985975","host":"s3://npm-registry-packages-npm-production"}},"0.7.11":{"_id":"@alanzhao/dsh-balance-monitor@0.7.11","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"238d3325354386ab265957ba63ba85a6a1c5e786","tarball":"https://registry.npmjs.org/@alanzhao/dsh-balance-monitor/-/dsh-balance-monitor-0.7.11.tgz","fileCount":9,"integrity":"sha512-8/BGZPpAZSjZGHpuBstpZ2l6dupY6IwStvtkR1t679hK1m4dkJP4yGHEu9JzgugkKt9LMaqUWwqm7zM+sJiBmQ==","signatures":[{"sig":"MEQCIFtyBED0GjIYlVrLW8T9krcAENNIADyk0/jnTUNC5fRtAiAbRLjHZq21ZLi5MI3fsfmnKNobtinmhuPckTeFkrTq4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHgPzjHdtB6c8VLQRZG3Q4bfR1/UlnYUTSgEeQIyXj9pAiEAw0NBg2UNcApRsBAmPvDWdwhqcVRYs3/ho1Pi4DU1y6M="}],"unpackedSize":173208},"main":"lib/index.js","name":"@alanzhao/dsh-balance-monitor","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"5eef03312bddcd0b9a7eef3fce1a8697d1942b15","license":"MIT","version":"0.7.11","_npmUser":{"name":"alanzhao","email":"alanzhao0128@gmail.com"},"keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"_npmVersion":"11.17.0","description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","directories":{},"maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/schemastery":"^3.18.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-balance-monitor_0.7.11_1790735359308_0.5227918270326211"}}},"time":{"created":"2026-08-28T12:45:44.981Z","modified":"2026-09-30T02:29:19.558Z","0.6.3":"2026-08-28T12:45:45.291Z","0.6.4":"2026-08-28T14:27:18.737Z","0.6.5":"2026-08-28T14:33:15.089Z","0.7.0":"2026-09-07T03:25:44.237Z","0.7.1":"2026-09-08T02:52:08.296Z","0.7.2":"2026-09-10T06:17:58.524Z","0.7.3":"2026-09-25T15:25:51.067Z","0.7.4":"2026-09-25T15:34:13.830Z","0.7.5":"2026-09-25T15:44:25.634Z","0.7.6":"2026-09-26T02:49:25.885Z","0.7.7":"2026-09-26T04:39:55.541Z","0.7.8":"2026-09-29T04:53:12.687Z","0.7.9":"2026-09-29T06:46:41.405Z","0.7.10":"2026-09-29T07:04:48.202Z","0.7.11":"2026-09-30T02:29:19.405Z"},"license":"MIT","keywords":["dsh","dsh-plugin","deepseek","deepseek-harness","balance","billing","sidebar"],"description":"Channel-aware balance/usage card for DeepSeek Harness: DeepSeek official balance + spend windows, Volcano Ark Agent Plan quota bars.","maintainers":[{"name":"alanzhao","email":"alanzhao0128@gmail.com"}],"readme":"[English](README.en.md) | 简体中文\n\n\n# dsh-balance-monitor\n\nDeepSeek 余额与花费窗口，直接显示在 dsh 侧边栏底部。\n\n一个极简的 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) 插件：在侧边栏底部（设置上方）显示当前会话渠道的余额/用量。**DeepSeek 官方渠道**显示余额与今日/7日/30日花费窗口（支持官方用量数据）；**火山方舟渠道**显示 Agent Plan 套餐额度（5小时/周/月进度条）；**Command Code 渠道**显示 5h/周/月 用量窗口（GOAT/Pro/Max 等套餐）；**Google AI Pro 渠道**（Antigravity 经 CLIProxyAPI 反代）显示 5 小时/周剩余额度（Gemini 与 Claude/GPT 两个模型组）。样式完全使用官方设计令牌，克制内敛。\n\n<p align=\"center\">\n  <img src=\"docs/preview/balance-wide.png\" alt=\"侧边栏底部余额卡片\" width=\"280\">\n</p>\n\n## 功能\n\n| 功能 | 实现 |\n|---|---|\n| 实时余额 | 服务端调用 `GET https://api.deepseek.com/user/balance`，使用 `$DSH_HOME/.credentials.yaml` 中的 `DEEPSEEK_API_KEY`（环境变量优先） |\n| 今日/7日/30日花费（官方） | 配置 `DEEPSEEK_PLATFORM_TOKEN` 后，服务端调用官方用量接口 `platform.deepseek.com/api/v0/usage/cost`（与平台用量页同一份数据），按日期窗口累加。7日 = 今天往前 6 天，30日 = 今天往前 29 天（均含今天）。不受「在其他环境使用 API」影响 |\n| 余额差值回退 | 无平台 token 或官方接口失败时，今日花费回退为余额差值账本（只累计余额下降，充值不冲账）；7日/30日显示 `—` |\n| 渠道感知 | 卡片跟随当前会话的模型渠道（provider）自动显隐：DeepSeek 官方显示余额/花费；火山方舟显示 Agent Plan 进度条；Command Code 显示用量窗口；Google AI Pro（`cliproxy`）显示 5h/周 剩余额度；其他渠道显示「暂不支持」占位；无会话不显示 |\n| 火山方舟 Agent Plan | 配置 AK/SK 后，调用 `GetAFPUsage` 控制面 API（SigV4 签名），显示 5小时/周/月 三档套餐额度进度条，颜色随用量变化（绿→黄→红） |\n| Command Code 用量 | 配置 `COMMANDCODE_API_KEY` 后，调用 `api.commandcode.ai/alpha/billing/credits` 等接口，显示 5h/周/月 三窗口已用百分比与重置倒计时 |\n| Google AI Pro 额度 | 配置 CPA 管理地址 + Basic 认证 + 管理密钥后，读取 CPA 上 `antigravity-priority` 插件探测的配额快照，按 Gemini / Claude+GPT 两个模型组显示 5h 与每周剩余百分比、重置倒计时（CPA 刚重启导致快照为空时自动触发一次探测）。**服务端需自行搭建，见[搭建指南](#google-ai-procliproxy渠道搭建)** |\n| 位置 | 注册在官方 `sidebar.footer.action` 槽位 —— 设置上方，零 hack |\n| 折叠态 | 收起后变为 36px 圆形，显示紧凑余额 + tooltip |\n| 健壮性 | 60s 轮询 + 切回标签页时刷新；上游失败时保留上次数据（变淡标记 stale），不闪错误 |\n\n## 安装\n\n浏览器端 bundle 是手写的 classic script，**无构建步骤**，git 安装无需 prepare 脚本：\n\n```sh\ndsh plugin --profile web add \"github:alanzhao0128/dsh-balance-monitor#main\"\n```\n\n或从 npm：\n\n```sh\ndsh plugin --profile web add @alanzhao/dsh-balance-monitor\n```\n\n然后重启 Web UI（`dsh --profile web`）。卡片出现在展开的侧边栏底部、设置按钮上方。\n\n> **版本要求**：`0.7.8+` 兼容 dsh `≥ 0.1.5-rc.1`（包含 `0.1.7+` 架构重构，支持 SettingsForms 与双轨设置）；dsh `0.1.2-rc.1` 宿主请固定安装 `0.7.1`。\n\n## 配置\n\n### 设置面板（推荐）\n\n打开 dsh 设置（齿轮）→ **余额监控 / Balance Monitor**，可编辑卡片行为参数，保存后写入 `~/.dsh/settings.yaml` 的 `dsh-balance-monitor:` 段，**即时生效**（个别参数重启后生效）：\n\n| 分组 | 字段 | 默认 | 说明 |\n|---|---|---|---|\n| 显示 | `ui.showCard` | `true` | 关闭后不显示任何渠道卡片 |\n| 显示 | `ui.warnThreshold` | `30` | 用量 ≥ 该百分比进度条变黄 |\n| 显示 | `ui.dangerThreshold` | `70` | 用量 ≥ 该百分比进度条变红 |\n| 刷新 | `ui.pollMs` | `60` 秒 | 卡片刷新间隔（面板以秒显示，内部存毫秒） |\n| 网络 | `network.cacheMs` | `40` 秒 | 服务端配额缓存，建议保持低于卡片刷新间隔 |\n| 网络 | `network.timeoutMs` | `20` 秒 | 上游超时（火山方舟 / Command Code / DeepSeek 官方用量 / CPA 管理接口） |\n| 网络 | `network.cpaBaseUrl` | 留空 | **你自己的** CLIProxyAPI 管理地址（Google AI Pro 渠道的配额来源）；留空则该渠道显示「未配置 CPA 地址」，见下文[搭建指南](#google-ai-procliproxy渠道搭建) |\n| 网络 | `network.cpaStaleMs` | `1200` 秒 | CPA 快照超过该时长即视为过期，插件自动补一次探测（建议大于 CPA 侧的定时探测周期） |\n| 凭证 | `credentials.file` | `.credentials.yaml` | 凭证文档文件名（相对 `$DSH_HOME`） |\n\n### 渠道凭证\n\n设置面板的 **「渠道凭证」分组** 显示每个渠道展示余额/用量需要的凭证及其配置状态，按是否已被 DSH 模型配置引用区分只读/可写：\n\n| 渠道 | 凭证 | 交互 |\n|---|---|---|\n| DeepSeek 官方 | `DEEPSEEK_API_KEY` | 只读（DSH 模型配置已引用），显示 ✅/⚠️ 状态 |\n| DeepSeek 官方 | `DEEPSEEK_PLATFORM_TOKEN` | **可写**密码框（官方花费需要，会过期），带三段说明：它是什么 / 怎么取（platform.deepseek.com → F12 → Console → `JSON.parse(localStorage.getItem('userToken')).value`）/ 用来干什么 |\n| 火山方舟 | `ARK_ACCESS_KEY_ID` | **可写**密码框（插件专属，DSH 模型用的是 `HUOSHAN_API_KEY`，两套不同凭证） |\n| 火山方舟 | `ARK_SECRET_ACCESS_KEY` | **可写**密码框 |\n| 火山方舟 | 区域 | 只读，自动跟随 DSH 模型配置（从 huoshan provider 的 `baseURL` 解析，如 `cn-beijing`） |\n| Command Code | `COMMANDCODE_API_KEY` | 只读（DSH 模型配置已引用），显示 ✅/⚠️ 状态 |\n| Google AI Pro | `CPA_BASIC_AUTH` | **可写**密码框，格式 `user:pass` —— CPA 服务器上 nginx 的 Basic 认证（第二把锁） |\n| Google AI Pro | `CPA_MANAGEMENT_KEY` | **可写**密码框 —— CPA 的 management key（第三把锁）；插件把它放在 `X-CPA-Key` 头里，由 nginx 改写成上游的 `Authorization: Bearer` |\n\n可写框保存时走官方 `ctx.credentials.set()` 写入 `$DSH_HOME/.credentials.yaml`（`refs:` 段，带锁 + 原子写），插件自身不写文件。\n\n### 凭证\n\n凭证存于 `$DSH_HOME/.credentials.yaml`（Web 界面 Models 页写入，或直接编辑文件；插件通过官方 `ctx.credentials` 服务读取，环境变量优先）：\n\n| 凭证 | 必需 | 用途 |\n|---|---|---|\n| `DEEPSEEK_API_KEY` | ✅ | 查询余额 `api.deepseek.com/user/balance` |\n| `DEEPSEEK_PLATFORM_TOKEN` | 可选 | 查询官方用量（今日/7日/30日）。获取：登录 [platform.deepseek.com](https://platform.deepseek.com) → DevTools Console 执行 `JSON.parse(localStorage.getItem('userToken')).value`，把输出写入凭证 |\n\n> ⚠️ `DEEPSEEK_PLATFORM_TOKEN` 是网页会话 token，**会过期**（官方返回 code 40002/40003 即过期）。过期时卡片显示红色提示并回退余额差值估算；在设置面板凭证组粘贴新 token 即可恢复，余额查询不受影响。\n\n| 凭证 | 必需 | 用途 |\n|---|---|---|\n| `ARK_ACCESS_KEY_ID` | 火山方舟渠道时需要 | 火山方舟控制面 API 签名（AK/SK），查询 Agent Plan 套餐额度 |\n| `ARK_SECRET_ACCESS_KEY` | 火山方舟渠道时需要 | 同上，Secret Access Key |\n| `COMMANDCODE_API_KEY` | Command Code 渠道时需要 | Command Code API key（`user_...`），查询 5h/周/月 用量 |\n| `CPA_BASIC_AUTH` | Google AI Pro 渠道时需要 | CPA 前置 nginx 的 Basic 认证，格式 `user:pass` |\n| `CPA_MANAGEMENT_KEY` | Google AI Pro 渠道时需要 | CPA management key，用于读取 `antigravity-priority` 插件探测到的配额快照 |\n\n> 火山方舟 AK/SK 获取：登录 [console.volcengine.com](https://console.volcengine.com) → 访问控制 → API 访问密钥 → 新建密钥。注意：AK/SK 是 IAM 账号级凭证，能操作所有资源，请妥善保管。\n\n## Google AI Pro（CLIProxyAPI）渠道搭建\n\n这个渠道**没有现成的公共接口可用**：Google 侧不提供可查询的配额 API，[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)（下称 CPA）自身也不暴露配额 —— 必须由 CPA 上运行的一个**配额 provider 插件**去探测 Antigravity 的 5 小时 / 每周窗口，本插件再读这份探测快照。所以想看到这张卡片，需要你自己把下面这条链路搭起来：\n\n```\ndsh 插件 ──HTTPS:443──▶ nginx（TLS + Basic 认证 + 限流）\n                          └──▶ CPA 127.0.0.1:8317（management key 鉴权）\n                                 └──▶ antigravity-priority 插件（探测 Antigravity 配额）\n                                        └──▶ Antigravity 上游\n```\n\n`network.cpaBaseUrl` 默认**留空**（本项目不附带任何他人地址），此时卡片显示「未配置 CPA 地址」；搭好后填入地址、再配上两条凭证即可。\n\n### 1. CPA 侧\n\nCPA `config.yaml`（v7.3+）：\n\n```yaml\n# 管理 API：secret-key 必须非空，否则 /v0/management/* 不可用\nremote-management:\n  secret-key: \"<随机强密钥 —— 这就是 CPA_MANAGEMENT_KEY>\"\n\n# 允许非本机来源访问管理接口（我们要经 nginx 转发进来）\nallow-remote: true\n\n# 配额探测插件\nplugins:\n  enabled: true\n  dir: \"plugins\"\n  configs:\n    antigravity-priority:\n      enabled: true\n      state_cache_path: \"/root/.cli-proxy-api/antigravity-priority-cache.json\"\n\n# 【重要】声明反代来源网段，让 CPA 看到真实客户端 IP。\n# 不配的话，经反代的所有请求都来自同一个 IP，而 CPA 对连续失败的管理鉴权\n# 会把源 IP 封禁约 30 分钟 —— 等于把你自己的整条链路封死。\ntrusted-proxies:\n  - \"172.23.0.0/16\"\n```\n\n把配额插件 [`antigravity-priority`](https://github.com/ygq-future/antigravity-priority) 装进 `plugins/` 目录（Go 编译的 c-shared `.so`；它 `supports_quota: false`，不走 CPA 标准配额接口，而是提供自己的 `plugins/antigravity-priority/snapshot/latest`、`run?mode=probe`、`samples`、`diagnostics` 路由）。**只放插件不启用 = 快照永远为空**。\n\n> **⚠️ 还要让插件真的会探测，否则卡片会\"冻住\"。** `antigravity-priority` 的后台定时调度由它自己的运行时开关 **`auto_apply`** 控制，而该开关**默认关闭** —— 关闭时插件只在被显式要求时才探测一次，于是快照会永远停在最后一次探测的数字上（症状：卡片不报错、也有数，但几个小时都不动）。两条路任选：\n>\n> - **开启插件原生调度**：在 CPA 管理面板的「⚙️ 配置中心」打开 **自动定时调度 (`auto_apply`)**（周期默认 15 分钟）。它会周期性探测**并写回凭证优先级** —— 这正是该插件的核心功能，想要它的双窗口调度与 429 熔断就应该开。\n> - **什么都不做**：本插件会在快照超过 `network.cpaStaleMs`（默认 20 分钟）时**自动补一次探测**（只探测、不写回优先级），保证卡片不会一直停在旧数字上；此时卡片会把数字渲染成半透明以示\"非最新\"。\n>\n> 排查方法：`GET .../plugins/antigravity-priority/diagnostics` 看 `management_api.auto_apply` 与 `run_history` —— 若 `run_history` 只有一条且时间很久远，就是没人探测。\n\n容器只监听回环，公网只暴露 443：\n\n```yaml\n# docker-compose.yml\nports:\n  - \"127.0.0.1:8317:8317\"\nvolumes:\n  - ./plugins:/CLIProxyAPI/plugins\n```\n\n### 2. nginx 反代（两层锁 + 路径封锁）\n\n`/v1/`（推理）直通，`/v0/`（管理）叠一层 Basic，其余路径一律 404；再加限流防爆破：\n\n```nginx\nlimit_req_zone $binary_remote_addr zone=cpa_mgmt:10m rate=30r/m;\n\nserver {\n  listen 443 ssl http2;          # nginx 1.24 及更早：http2 只能写在 listen 行上\n  server_name cpa.example.com;   # ← 换成你自己的域名\n\n  ssl_certificate     /etc/letsencrypt/live/cpa.example.com/fullchain.pem;\n  ssl_certificate_key /etc/letsencrypt/live/cpa.example.com/privkey.pem;\n\n  # 推理路径：直通，靠 CPA 自己的 API key 鉴权\n  location /v1/ {\n    # 关键：nginx 内置默认只有 1m，而 0.5M token 的上下文光文本就 ≥2MB，\n    # 超限会直接 413（请求根本到不了 CPA），大上下文必须放开\n    client_max_body_size 128m;\n    # 大 body 直接流给上游，不先缓冲落盘\n    proxy_request_buffering off;\n\n    proxy_pass http://127.0.0.1:8317;\n    proxy_buffering off;\n    proxy_read_timeout 3600s;\n    proxy_send_timeout 3600s;\n  }\n\n  # 管理路径：Basic 认证 + 限流 + 认证头改写\n  location /v0/ {\n    limit_req zone=cpa_mgmt burst=5 nodelay;\n    auth_basic \"CPA\";\n    auth_basic_user_file /etc/nginx/.htpasswd-cpa;\n\n    proxy_pass http://127.0.0.1:8317;\n    # 关键：Basic 占用了 Authorization 头，而 CPA 只认 Authorization: Bearer。\n    # 所以客户端把 management key 放在 X-CPA-Key，这里为上游改写成 Bearer。\n    proxy_set_header Authorization \"Bearer $http_x_cpa_key\";\n  }\n\n  location / { return 404; }\n}\n```\n\n> `/v0/` 只服务于本插件，暴露面越小越好；有条件可再叠一层 IP allowlist，或干脆只走内网 / WireGuard。\n\n### 3. 插件侧\n\n| 位置 | 填什么 |\n|---|---|\n| 设置面板 → 网络 → **CPA 地址** | `https://cpa.example.com`（你的 nginx 入口，**不要**带 `/v0` 后缀） |\n| 设置面板 → 渠道凭证 → **Basic 认证** | `CPA_BASIC_AUTH`，格式 `user:pass`（对应 nginx 的 `.htpasswd-cpa`） |\n| 设置面板 → 渠道凭证 → **管理密钥** | `CPA_MANAGEMENT_KEY`，即 CPA 的 `remote-management.secret-key` |\n\n### 4. 自检\n\n```bash\n# ① 无 Basic → 401（被 nginx 拦下）\ncurl -s -o /dev/null -w '%{http_code}\\n' https://cpa.example.com/v0/management/quota/providers\n\n# ② 有 Basic、无 management key → 401（被 CPA 拦下）\ncurl -s -o /dev/null -w '%{http_code}\\n' -u user:pass https://cpa.example.com/v0/management/quota/providers\n\n# ③ 两者齐 → 200\ncurl -s -u user:pass -H 'X-CPA-Key: <management key>' \\\n  https://cpa.example.com/v0/management/plugins/antigravity-priority/snapshot/latest\n```\n\n### 5. 踩坑清单\n\n- **配额接口 501 / 快照为空**：CPA 上没装或没启用配额 provider 插件。快照为空时（例如 CPA 刚重启）本插件会自动 POST 一次 `.../run?mode=probe` 再读一次，第二次仍空则说明插件侧没探测成功。\n- **卡片有数但几小时不动**：CPA 侧没人探测 —— 即上面的 `auto_apply` 没开。本插件会在快照过期（默认 20 分钟）后自动补探测兜底，但要让数据持续新鲜，建议直接开启插件侧调度。\n- **Basic 与 Bearer 抢同一个 `Authorization` 头**：必须按上面的写法把 management key 放进 `X-CPA-Key`，由 nginx 改写成上游 Bearer；同时传两种 `Authorization` 只会互相覆盖。\n- **连续鉴权失败会封源 IP**：CPA 对失败的管理鉴权有暴力破解封禁（约 30 分钟）。经反代时所有请求源 IP 相同，一旦触发就是整条链路不可用 —— 所以务必配 `trusted-proxies`；已经触发时 `docker restart <容器>` 可清除封禁。\n- **`413 Request Entity Too Large`（响应体是 nginx 的 HTML 错误页）**：撞上了 nginx `client_max_body_size` 的**内置默认值 1m**。它跟 token 上限无关，请求在反代就被拒了，CPA 和模型根本没收到。0.5M token 的上下文光文本就 ≥2MB，所以只要用大上下文就必然触发 —— 按上面的示例在 `location /v1/` 里加上 `client_max_body_size 128m;`。注意该指令**不会**从 `/v0/` 那样的兄弟 location 继承，必须写在 `/v1/` 自己（或写在上层 `server`/`http` 块里）。\n- **大上下文上传慢**：`proxy_request_buffering off` 去掉了 nginx 的落盘缓冲，但 body 仍要完整传到反代，瓶颈是**客户端上行带宽**（实测 3MB ≈ 15s）。这部分不是配置能解决的。\n- **`http2 on;` 在 nginx 1.24 上不支持**：老版本只能写 `listen 443 ssl http2;`，写错会 `unknown directive \"http2\"` 导致 nginx 起不来。\n- **必须走 TLS**：Basic 是明文凭据，公网裸 HTTP 等于把密码广播出去。\n- **推理与管理是两套密钥**：`/v1/` 用的 API key（DSH 模型里的 `CLIPROXYAPI_KEY`）和 `/v0/` 用的 management key 互不通用。\n\n> 本项目不含以上任何服务端组件，也不附带默认地址 —— 你需要自己部署 CPA + 配额插件 + 反代，并把地址填进 `network.cpaBaseUrl`。\n\n## 工作原理\n\n一个插件行同时承担两种角色（`dsh.bundle` patch + `dsh.client` 浏览器注册表声明）：\n\n- **服务端半**（`lib/index.js`）—— 通过 `connection.fetch.register` 在共享 `/api` 通道上注册 6 个 RPC 端点（继承官方信任围栏与浏览器认证）：`balance/snapshot`（DeepSeek 余额+官方用量窗口）、`ark-quota/snapshot`（火山方舟 Agent Plan 额度，每次调用签 AK/SK SigV4 调 `GetAFPUsage`，缓存 40s——严格小于浏览器端 60s 轮询，保证每次轮询都触发上游刷新）、`cmdcode-quota/snapshot`（Command Code 用量，Bearer 调 `api.commandcode.ai/alpha/billing/credits` 等，缓存 40s）、`cpa-quota/snapshot`（Google AI Pro 配额，读 CPA 管理接口上 `antigravity-priority` 插件的快照）、`credential-status/snapshot`（凭证状态与区域）、`session-provider/snapshot`（按会话解析渠道 provider）。缓存与超时时长来自设置面板（`network.*`）。凭证统一走官方 `ctx.credentials` 服务读取。\n- **浏览器半**（`lib/client.js`）—— 零依赖 classic-script bundle，注册 `sidebar.footer.action` 条目。通过 `sessions.list` 订阅 + 1s 轻量轮询 `/session-provider` RPC（携带当前 `sessionId`，host 端按该会话的 `modelSelection` 投影解析渠道；0.7.1 起跨会话切换也会跟随）感知当前会话的 provider，再按渠道注册表分发：`deepseek-official` 渲染余额卡片（每 60s 轮询一次余额，标签页重新可见时立即刷新）；未注册渠道渲染「暂不支持」占位；无会话则不渲染。渠道目录变化（`llm/adapters-updated` 事件）会立即触发重新判定。同时注册 `settings.section` 设置页（余额监控），读写 `dsh-balance-monitor` 命名空间；`credential-status` 端点（凭证状态 + 区域解析，host 端从 `ctx.llm`/`ctx.settings` 判定哪些凭证被 DSH 模型配置引用）。\n\n状态文件（`$DSH_HOME/storages/balance-monitor.json`）：\n\n```json\n{\n  \"date\": \"2026-08-17\",\n  \"dayStart\": 100.0,\n  \"lastTotal\": 97.7,\n  \"lastCurrency\": \"CNY\",\n  \"spent\": 1.65,\n  \"spent7d\": 5.24,\n  \"spent30d\": 18.54,\n  \"spentSource\": \"official\",\n  \"updatedAt\": 1755400000000\n}\n```\n\n`spentSource` 为 `official`（官方接口）或 `estimate`（余额差值估算）。\n\n## 安全说明\n\n- API key 与平台 token 永不离开服务端：浏览器半只能通过 RPC 通道看到余额/花费数字，接触不到凭证。\n- 通道走 `loopback` 信任策略。\n- 无遥测，网络请求仅官方余额接口与官方用量接口。\n\n## 目录结构\n\n```\ndsh-balance-monitor/\n├── package.json        # dsh.bundle (patch) + dsh.client (浏览器注册表)\n├── cordis.patch.yml    # 插入这一个组合插件行\n└── lib/\n    ├── index.js        # 服务端半：6 个 /api RPC 端点（余额/方舟/Command Code/Google AI Pro/凭证状态/会话渠道）+ settings 接入\n    ├── config.js       # 设置 schema + 默认值（与设置面板字段一一对应）\n    ├── signature.js    # 火山方舟 SigV4 签名\n    └── client.js       # 浏览器半：侧边栏卡片 + 设置页（手写，无构建）\n```\n\n## 开发\n\n无需工具链。直接改 `lib/*.js`；bundle 格式与官方 `tsdown` 预设产物一致（`window.__ModuleLoader__.load({ id, factory })`）。\n\n## License\n\nMIT\n","readmeFilename":"README.md"}