{"_id":"@kakadeka/dsh-baton","_rev":"78-bdbe519d0a942594ecb42d94b316f852","name":"@kakadeka/dsh-baton","dist-tags":{"latest":"0.1.55"},"versions":{"0.1.47":{"name":"@kakadeka/dsh-baton","version":"0.1.47","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.47","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"d336aaff206afbf2a38536a1e8f98a8a0b0d583b","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.47.tgz","fileCount":56,"integrity":"sha512-LLpADYGz1SILtV3jYhwNMvT+3LJftp7HMvwBhA05z+9S0S9uHBjHjk5JbyCv1cstk7osv/PLVagtf1IfgmcBfw==","signatures":[{"sig":"MEUCIQCUHpPwPssu3Y/jinTSLZy+0SV3ZpdNPa3tz9sCOdzHKQIgfQ7VW3xWAk5cV5rj+HAlS7F3FALJAA9qr+dQ75PzEmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.47","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2560950},"main":"index.mjs","gitHead":"44a4a93142853cb526e76708fcfff63cd57c1266","scripts":{"test":"node tests/p0-closeout.test.js && node tests/p1-behavior.test.js && node tests/p2-e2e.test.js && node tests/p3-sync.test.js && node tests/p4-crossmachine.test.js && node tests/p5-posix.test.js && node tests/p6-concurrency.test.js && node tests/p7-crash.test.js && node scripts/check-drift.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.47_1786900737062_0.1708673861202228","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.48":{"name":"@kakadeka/dsh-baton","version":"0.1.48","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.48","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"fe2e02e65dc1f281c37cac088a5b76fd50a09986","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.48.tgz","fileCount":56,"integrity":"sha512-ATfo8nCpr4oHAPPG/OL+RaOQ8ek8PimvAtrlu9ag0LIEhIwVKSRdTNxK2yqAVkDr9rugMuF1eeSXIQd/Bzx++g==","signatures":[{"sig":"MEUCIDQ/9kfGYBwRQjIIT0VBtL7AY6WMM/mYAZtCnwP/KmSiAiEAokNk7iVGQdNFOAE19FaresAsy0cUUcK3YY4LQUyT4x4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.48","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2560686},"main":"index.mjs","gitHead":"5b88b727f558e151fea6ef9c3d438e5b23acbfb1","scripts":{"test":"node scripts/check-drift.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.48_1786901165831_0.004523354603112928","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.49":{"name":"@kakadeka/dsh-baton","version":"0.1.49","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.49","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"997662a3af9117f4f089b120b2071ed29c0b9218","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.49.tgz","fileCount":44,"integrity":"sha512-RFl6xBBFWJvfLh421nC7FxMCeiUUTFjujG5klU85vcbX4uKpMJ/oX5rjSmxSPQyq2rA89T3jXNjRBear3nhktQ==","signatures":[{"sig":"MEUCIQCiQokqXhJwn2nNlEbFs8yIJy7G2vCIxNywz1yWCSfXDgIgQSCHEoQsUIJ2nuFHp7/L1LARxz1z85T8KXDpYF/pTUI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.49","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":472376},"main":"index.mjs","gitHead":"b5f48e01131ff5e08cc113c7a0578158e98994e8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.49_1787247366944_0.7605948593072671","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.50":{"name":"@kakadeka/dsh-baton","version":"0.1.50","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.50","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"2e95821afcdd5584bc6d924ea52b7e5de5cb51f7","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.50.tgz","fileCount":45,"integrity":"sha512-gL5lE3qSrXlikXVngduUkLAQPES/v7BiywcHOjoPNt+RyudkCpFu4UgEQ5ADuc9RMDKsyHBLOb5eJwZWG0MB1w==","signatures":[{"sig":"MEUCIQC7t+GkPEnNcz2HmOwX7PdRncUxd28QVPbUpCYXAN4HjgIgCz3AkQ7LD3+Zcnw+Un50+JiP+bJYTwLWoPiaQzpAFAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.50","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":543543},"main":"index.mjs","gitHead":"a3a417277e5175cabe9b391a96cc10208dca77d8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.50_1787319061843_0.941952273557233","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.51":{"name":"@kakadeka/dsh-baton","version":"0.1.51","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.51","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"d0f82989b3dc612839ceb5b5e7026e4075c9b5e1","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.51.tgz","fileCount":45,"integrity":"sha512-tqazu+8E7P7jKGOiRUnAcP5IyP28a3XalU4tsELnFD2fsHKUCOo77XqjDFVSKkw8pJFb8U4uQOxujLXS7tiY7A==","signatures":[{"sig":"MEUCIQD3vWl8cuqnm1rfO3Zq88MYbsbIwUKVVVHWDLB1efNY5wIgBMc0Pd+RojcOUIo24g24oq+6qpCp0IK2IitX79PNyH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.51","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":562256},"main":"index.mjs","gitHead":"a10c51fa475287757d9ab1a02b42a78c4edd852c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.51_1787335865238_0.8147183095693211","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.52":{"name":"@kakadeka/dsh-baton","version":"0.1.52","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.52","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"2bb926e2281fbd7f2c41330d2b55b7f9b41ee0db","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.52.tgz","fileCount":45,"integrity":"sha512-NhCBa2CpZZ0d0FU0zL9TTwmCKzBkgU3GsW9c4kEltZ3sSjj6YSENIj58jNj0SM1aK4UEXNDSJCeq/ZyUeErkwQ==","signatures":[{"sig":"MEUCIQDp1LozxWP2H5rHq/sFiiQDXB7y+Bj4kEf7pHeZpmtsrAIgZlRcL4s+NbokzpeNATJOyX/zdtGW/sy378wDsYj7QvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.52","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":571310},"main":"index.mjs","gitHead":"73e87b3767edba27f912152ca307718dafd82d05","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.52_1787471298810_0.3244792899759801","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.53":{"name":"@kakadeka/dsh-baton","version":"0.1.53","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.53","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"c0f5fec9fd730cf756f526cb766b49b5cff9b981","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.53.tgz","fileCount":45,"integrity":"sha512-MpNCFAlXwSzE8cSGUWQZ8NTMac+mgmQfkKWc5dxKPW3+Xb8zWoi7mXUGRRCyBAAPf7BYTprAhpmK9M3gK1zfFA==","signatures":[{"sig":"MEUCIQCFKdod0mCWB9bgrf92KUlKsv1tRMQykY8cl56glsxJLwIgSBr4DpigLeQvi4VwpuIj1YjMl4kNSEdIxVK4Ma9Mabs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.53","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":577598},"main":"index.mjs","gitHead":"6f315a5a57b4e55e25ab31ee78f6f0a6cff20ad0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.53_1787751563149_0.8983274155182879","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.54":{"name":"@kakadeka/dsh-baton","version":"0.1.54","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.54","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"e437cccebf05aca6440bf3b65ccd933484c1bc21","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.54.tgz","fileCount":45,"integrity":"sha512-JwUbKdOfCgXa+w+L/XKR1opHlwsP015WndvBueN5t/1lxaTmYZrwlbBWQXy96W6iSnaOG6BgBEY7gwOL+Iyyrg==","signatures":[{"sig":"MEQCIHi5O4WC4YYVxlg1GZTa2rhZn4+Q0XxUAR80Jdpwclo2AiBdAOxNPi5Gzfj+Si01EKhZnpFNNq3IUmpOa9FQ/TOjHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.54","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":586874},"main":"index.mjs","gitHead":"d82eb6dda49dc769d3eb11c9e4cff46d903b313e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.54_1787844251874_0.09005378565867717","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.55":{"name":"@kakadeka/dsh-baton","version":"0.1.55","license":"Apache-2.0","_id":"@kakadeka/dsh-baton@0.1.55","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"homepage":"https://github.com/kakadeka/Baton#readme","bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"b8c01a911b49e762a49ab597974b49137accbf00","tarball":"https://registry.npmjs.org/@kakadeka/dsh-baton/-/dsh-baton-0.1.55.tgz","fileCount":45,"integrity":"sha512-XgqyP0PPpQapI14zvSAwUwo9TN0Kc0H9JsBYv0k7U4++YmWEEz+WCF7Tqmi/Qa5BO4ybXyjIJJG4D2OcF4e/pw==","signatures":[{"sig":"MEQCID0hSxCN7m3aYvC2Vt8hLN1F77KZbQy5WzP00yM9NrR+AiBeC6ZsI4P9iRVDrvPDlqRW4e0QZpG5iKgRrIi0Jo/hFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kakadeka%2fdsh-baton@0.1.55","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":587438},"main":"index.mjs","gitHead":"75fbb11496100befa3b87fe788c8201f0b033a92","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2cacea6d-dc17-4cac-97ed-7a235b3ecef8"}},"repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"_npmVersion":"12.0.2","description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-code-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-agent":{"optional":true},"@deepseek-ai/dsh-scope":{"optional":true},"@deepseek-ai/dsh-tools":{"optional":true},"@deepseek-ai/dsh-session":{"optional":true},"@deepseek-ai/dsh-invariants":{"optional":true},"@deepseek-ai/dsh-code-runtime":{"optional":true},"@deepseek-ai/dsh-system-prompt":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-baton_0.1.55_1787847707719_0.2979332594925348","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2026-08-14T16:00:05.098Z","modified":"2026-08-29T06:40:13.050Z","0.1.0":"2026-08-14T16:00:05.425Z","0.1.1":"2026-08-14T16:06:29.849Z","0.1.2":"2026-08-14T16:35:52.118Z","0.1.3":"2026-08-14T17:25:39.761Z","0.1.4":"2026-08-14T18:12:22.103Z","0.1.5":"2026-08-14T18:20:14.519Z","0.1.6":"2026-08-14T18:38:11.566Z","0.1.8":"2026-08-14T19:25:40.416Z","0.1.9":"2026-08-14T20:02:28.656Z","0.1.10":"2026-08-14T20:26:09.415Z","0.1.11":"2026-08-14T20:47:12.698Z","0.1.12":"2026-08-14T20:58:30.781Z","0.1.14":"2026-08-15T04:22:15.898Z","0.1.16":"2026-08-15T05:05:16.946Z","0.1.17":"2026-08-15T05:55:34.571Z","0.1.18":"2026-08-16T08:44:06.361Z","0.1.19":"2026-08-16T08:56:53.611Z","0.1.20":"2026-08-16T09:09:57.128Z","0.1.21":"2026-08-16T09:24:18.959Z","0.1.23":"2026-08-16T10:50:42.536Z","0.1.24":"2026-08-16T11:35:54.028Z","0.1.25":"2026-08-16T11:43:08.062Z","0.1.34":"2026-08-16T13:04:47.029Z","0.1.36":"2026-08-16T13:56:26.829Z","0.1.37":"2026-08-16T14:28:10.825Z","0.1.38":"2026-08-16T14:43:52.318Z","0.1.39":"2026-08-16T14:49:49.438Z","0.1.40":"2026-08-16T15:16:08.851Z","0.1.41":"2026-08-16T15:17:59.080Z","0.1.42":"2026-08-16T15:19:45.729Z","0.1.43":"2026-08-16T15:36:45.810Z","0.1.44":"2026-08-16T16:14:53.259Z","0.1.45":"2026-08-16T16:23:33.229Z","0.1.46":"2026-08-16T16:41:58.417Z","0.1.47":"2026-08-16T17:18:57.276Z","0.1.48":"2026-08-16T17:26:06.043Z","0.1.49":"2026-08-20T17:36:07.112Z","0.1.50":"2026-08-21T13:31:02.001Z","0.1.51":"2026-08-21T18:11:05.389Z","0.1.52":"2026-08-23T07:48:18.972Z","0.1.53":"2026-08-26T13:39:23.307Z","0.1.54":"2026-08-27T15:24:12.034Z","0.1.55":"2026-08-27T16:21:47.897Z"},"bugs":{"url":"https://github.com/kakadeka/Baton/issues"},"license":"Apache-2.0","homepage":"https://github.com/kakadeka/Baton#readme","repository":{"url":"git+https://github.com/kakadeka/Baton.git","type":"git"},"description":"Baton 项目接力协作系统 —— DeepSeek Harness 组合包（19 个 baton_* 工具）","maintainers":[{"name":"kakadeka","email":"timerules@163.com"}],"readme":"# 🥁 Baton — 换个 AI，项目也别失忆\n\n<p align=\"center\">\n  <img src=\"./gittop.png\" alt=\"Baton — 把项目传下去，不必反复解释上下文\" width=\"100%\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/kakadeka/Baton\"><img src=\"https://img.shields.io/github/stars/kakadeka/Baton?style=social\" alt=\"GitHub stars\"></a>\n  <a href=\"https://www.npmjs.com/package/@kakadeka/dsh-baton\"><img src=\"https://img.shields.io/npm/v/@kakadeka/dsh-baton?logo=npm\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/kakadeka/Baton/blob/master/LICENSE\"><img src=\"https://img.shields.io/badge/license-Apache--2.0-blue\" alt=\"license\"></a>\n</p>\n\n<p align=\"center\">\n  <strong>简体中文</strong> · <a href=\"README.md\">English</a>\n</p>\n\n你有没有经历过这种循环：\n\n> 换了个 AI。它眨眨眼：这个项目做到哪了？\n>\n> 你深吸一口气，又从盘古开天开始讲。\n\nBaton 就是给 AI 项目准备的接力棒。它把任务、进度、设计规范、踩过的坑和交接记录放进项目，再通过 Git 带到下一台电脑、下一个 AI。\n\n支持 **Codex、Cursor、Claude Code、DeepSeek Harness**。\n\n## 先用 20 秒搞懂：到底在哪里输入？\n\n这个表请先看一眼。真的能少绕半小时。\n\n| 你要输入的东西 | 输入到哪里 | 它在干什么 |\n|---|---|---|\n| <code>git clone ...</code> | **PowerShell / 终端** | 把 Baton 下载到电脑 |\n| <code>baton-install.ps1</code> | **PowerShell / 终端** | 让 AI 认识 Baton |\n| <code>Baton init</code> | **AI 聊天框** | 给你当前打开的项目建立记忆 |\n| <code>上班啦</code> | **AI 聊天框** | 开始读取进度并继续工作 |\n\n一句话版：\n\n> **终端负责安装，聊天框负责使用。**<br>\n> <code>Baton init</code> 不是 Git 命令，别把它塞进 PowerShell，它会一脸无辜地看着你。\n\n## 🛝 新手三步上车\n\n这是推荐路线。第一次用，先只看这一节。\n\n开始前确认电脑里有：\n\n- [Git](https://git-scm.com/downloads)\n- [Node.js 18+](https://nodejs.org/)\n- Windows：系统自带 PowerShell 5.1 就能用\n- macOS / Linux：需要 [PowerShell 7](https://learn.microsoft.com/powershell/scripting/install/installing-powershell)，然后在 <code>pwsh</code> 里运行命令\n\n### 第 1 步：安装 Baton（在终端里）\n\n#### 如果你用 Codex、Cursor 或 Claude Code\n\n打开 **PowerShell**，依次复制下面两行：\n\n~~~powershell\ngit clone https://github.com/kakadeka/Baton.git \"$HOME/Baton\"\n& \"$HOME/Baton/scripts/baton-install.ps1\" -Scope User\n~~~\n\n就两行。第一行下载，第二行安装。没有隐藏剧情。\n\n这条命令会一次装好 Codex、Cursor、Claude Code 三端的用户级 Skill，所以不用重复跑三遍。\n\n如果你以前已经下载过 <code>$HOME/Baton</code>，不要再 <code>clone</code>。改用：\n\n~~~powershell\ngit -C \"$HOME/Baton\" pull --ff-only\n& \"$HOME/Baton/scripts/baton-install.ps1\" -Scope User\n~~~\n\n安装完后，**重新打开 AI，或者新建一个会话**。Skill 通常在新会话启动时加载。\n\n#### 如果你用 DeepSeek Harness\n\n在终端里运行：\n\n~~~powershell\nnpm install -g @deepseek-ai/dsh@latest\ndsh plugin --profile web add @kakadeka/dsh-baton\n~~~\n\n然后重启 DSH 的 <code>web</code> profile。你用的不是 <code>web</code>？把它换成自己的 profile 名就行。\n\n### 第 2 步：初始化你的项目（在 AI 聊天框里）\n\n用 Codex、Cursor、Claude Code 或 DSH **打开你真正要开发的项目文件夹**。\n\n然后在 **AI 聊天框** 发这句话：\n\n~~~text\nBaton init\n~~~\n\n注意，是发给 AI，不是发给 PowerShell。\n\nAI 会为当前项目准备 <code>docs/ai_memory/</code>、<code>.baton/config.json</code> 和对应宿主入口。它不会覆盖你已有的项目文档；遇到冲突会停下来说明。\n\n看到项目里出现 <code>docs/ai_memory/</code>，这一步就算成功。\n\n### 第 3 步：开工（还是在 AI 聊天框里）\n\n新建一个 AI 会话，然后说：\n\n~~~text\n上班啦\n~~~\n\n如果一切正常，AI 会检查 Git、读取最近进度和交接记录，再给你任务表。\n\n恭喜，你已经用完安装教程了。下面都是“想多了解一点再看”的内容。\n\n## 这三步分别做了什么？\n\n~~~text\n第 1 步：安装 Baton 到这台电脑\n              ↓\n第 2 步：给当前项目建立接力记忆\n              ↓\n第 3 步：让 AI 读取记忆，开始工作\n~~~\n\n- **用户级安装**：一台电脑通常只做一次。作用是让 AI 认识 Baton 口令。\n- **项目初始化**：每个需要接力的项目做一次。作用是把记忆骨架放进项目。\n- **以后工作**：不用再安装。直接说“上班啦”“继续工作”“下班啦”。\n\n只做第 1 步，AI 虽然认识 Baton，但项目还没有自己的长期记忆。<br>\n只做项目级手动安装也能用，但新手没必要先走那条路。\n\n## 你的 AI 装到了哪里？\n\n四个工具的日常口令相同，安装落点不同。下面按工具分开写，方便你对号入座。\n\n<a id=\"install-codex\"></a>\n### Codex\n\n第 1 步的用户级安装会写入：\n\n~~~text\n~/.agents/skills/baton/SKILL.md\n~/.agents/skills/baton-lean-review/SKILL.md\n~/.agents/skills/baton-debt/SKILL.md\n~/.agents/skills/baton-doctor/SKILL.md\n~/.agents/skills/baton/version.json\n~~~\n\n项目执行 <code>Baton init</code> 后，还会得到 <code>AGENTS.md</code> 和 <code>.agents/skills/baton/</code> 等项目入口。\n\n<a id=\"install-cursor\"></a>\n### Cursor\n\n第 1 步的用户级安装会写入：\n\n~~~text\n~/.cursor/skills/baton/SKILL.md\n~/.cursor/skills/baton-lean-review/SKILL.md\n~/.cursor/skills/baton-debt/SKILL.md\n~/.cursor/skills/baton-doctor/SKILL.md\n~/.cursor/skills/baton/version.json\n~~~\n\n项目执行 <code>Baton init</code> 后，还会得到 <code>.cursorrules</code>、<code>.cursor/rules/baton.mdc</code> 和 <code>.cursor/skills/baton/</code>。\n\n<a id=\"install-claude\"></a>\n### Claude Code\n\n第 1 步的用户级安装会写入：\n\n~~~text\n~/.claude/skills/baton/SKILL.md\n~/.claude/skills/baton-lean-review/SKILL.md\n~/.claude/skills/baton-debt/SKILL.md\n~/.claude/skills/baton-doctor/SKILL.md\n~/.claude/skills/baton/version.json\n~~~\n\n项目执行 <code>Baton init</code> 后，还会得到 <code>CLAUDE.md</code> 和 <code>.claude/skills/baton/</code>。\n\n<a id=\"install-dsh\"></a>\n### DeepSeek Harness\n\nDSH 的第 1 步叫 **profile 级插件安装**：\n\n~~~powershell\ndsh plugin --profile web add @kakadeka/dsh-baton\n~~~\n\n它会给这个 profile 安装 19 个原生 <code>baton_*</code> 工具。第 2 步仍然要在目标项目的 AI 聊天框说：\n\n~~~text\nBaton init\n~~~\n\nprofile 插件属于这台电脑，不会跟着项目 Git 跑到另一台电脑；项目记忆会。\n\n## 手动项目级安装（备用路线）\n\n绝大多数新手不需要这一节。只有下面两种情况再用：\n\n- AI 没有识别 <code>Baton init</code>\n- 你明确想从终端初始化项目\n\n先进入你的项目，再运行安装脚本：\n\n~~~powershell\ncd C:\\你的项目路径\n& \"$HOME/Baton/scripts/baton-install.ps1\" -Scope Project -ProjectRoot (Get-Location).Path\n~~~\n\n这和在聊天框说 <code>Baton init</code> 的目标相同：给**当前项目**创建记忆和四端适配器。两种方式选一种即可，不需要叠加施法。\n\n如果 <code>$HOME/Baton</code> 还不存在，请先完成新手教程第 1 步。\n\n## 第一次提交前，先看一眼 Git\n\nBaton 靠 Git 把项目记忆带到下一台电脑。已有 Git 仓库不需要重复初始化。\n\n如果这是一个全新项目，可以在终端运行：\n\n~~~powershell\ngit init\ngit status\n~~~\n\n先用 <code>git status</code> 看清楚哪些文件会被提交，再决定什么时候 <code>git add</code> 和 <code>git commit</code>。不建议闭眼 <code>git add -A</code>，毕竟惊喜应该留给生日，不该留给 Git。\n\n## 常用口令\n\n这些都发到 **AI 聊天框**，不是终端。\n\n| 你说 | Baton 会做什么 |\n|---|---|\n| <code>上班啦</code> | 检查 Git、读取交接和任务，给出任务表 |\n| <code>继续工作</code> | 从上次唯一下一步继续，不从头考古 |\n| <code>完成</code> | 把任务转为待验收；你确认后才算已完成 |\n| <code>更新项目文档</code> | 保存当前进度和交接，不做全天收尾 |\n| <code>这个坑记下来</code> | 把已验证的坑写进长期记忆 |\n| <code>这个决策记下来</code> | 保存技术决策和取舍 |\n| <code>下班啦</code> | 验证、记录、提交、推送，并核对远端 SHA |\n| <code>检查更新</code> | 只读检查 Baton 是否有新版 |\n| <code>更新 Baton</code> | 经确认后更新，并核对是否真的生效 |\n| <code>修复 Baton</code> | 更新官方 Baton，并重装当前项目镜像、迁移骨架、执行 init/Doctor 后验；不修改业务代码 |\n\n英文环境可以使用 <code>clock in</code>、<code>continue work</code>、<code>complete task</code>、<code>clock out</code> 等对应口令。\n\n## 换电脑或换 AI\n\n### 换 AI，不换项目\n\n直接用另一个 AI 打开同一个项目，然后说：\n\n~~~text\n继续工作\n~~~\n\nCodex、Cursor、Claude Code 会读取项目里的 Skill 和 <code>docs/ai_memory/</code>。DSH 还要求当前电脑的对应 profile 已安装插件。\n\n### 换电脑\n\n1. 在新电脑安装 Git 和你要用的 AI。\n2. <code>git clone</code> **你自己的项目**。\n3. 用 AI 打开项目，先说“更新 Baton”，再说“上班啦”。\n\n这里 clone 的是你的项目，不是 Baton 安装仓库。<br>\n「更新 Baton」会补齐这台电脑缺失的用户级 Skill 和本机 <code>.baton/version.json</code>。没有 PowerShell 也没关系：它会用 Node 把官方 npm 包放到 <code>~/.baton/runtime</code>，不会把 Baton 源码写进你的项目。若当前 npm 包还不会 <code>--restore-anchor</code>，口令必须停下来报告，而不是假装更新成功。<br>\nDSH 仍必须在新电脑重新安装 profile 插件。\n\n## 项目里会多出什么？\n\n~~~text\n你的项目/\n├── AGENTS.md                       # Codex 入口\n├── CLAUDE.md                       # Claude Code 入口\n├── .cursorrules                    # Cursor 兼容入口\n├── .agents/skills/baton/           # Codex 项目 Skill\n├── .claude/skills/baton/           # Claude Code 项目 Skill\n├── .cursor/skills/baton/           # Cursor 项目 Skill\n├── .cursor/rules/baton.mdc         # Cursor 现代规则\n├── docs/ai_memory/                 # 会跟 Git 走的长期项目记忆\n└── .baton/\n    ├── config.json                 # 入 Git：项目门禁与路由配置\n    ├── manifest.json               # 入 Git：安装器管理文件清单\n    ├── version.json                # 不入 Git：本机版本锚\n    └── local/                      # 不入 Git：本机临时数据\n~~~\n\n重点：<code>.baton/</code> 不是整个目录都忽略。<code>config.json</code> 和 <code>manifest.json</code> 应进入 Git；<code>version.json</code>、<code>local/</code> 和私有扫描清单不进入 Git。\n\n## 四个宿主并不是完全一样\n\n| 能力 | Codex / Cursor / Claude Code | DeepSeek Harness |\n|---|---|---|\n| 项目记忆、任务、交接 | Skill + Markdown/JSON | 同一套项目文件 |\n| Git 操作 | AI 按 Skill 调用宿主命令 | 原生工具编排 |\n| <code>baton_*</code> 原生工具 | 没有，按 Skill 做等价流程 | 有，当前组合包提供 19 个 |\n| 单写入者保护 | 文件/Git 级规则，不能冒充原子锁 | 插件可提供更强机械门禁 |\n| 实际模型与授权证据 | 宿主不提供时如实记 <code>unknown</code> | 可使用 DSH 宿主事件与授权服务 |\n\n共同点是项目记忆和工作流程；不同点是自动化和机械保证。Baton 不会假装四个平台底层能力一模一样。\n\n## 更新与卸载\n\n### 更新\n\n最省心：在 AI 聊天框说 <code>检查更新</code>。确认有新版后再说 <code>更新 Baton</code>。\n\n如果某个业务项目遇到已由 Baton 官方修复的 Bug，直接在该项目聊天框说 <code>修复 Baton</code>。Baton 会更新官方来源，重装用户级和当前项目级 Skill，必要时做不删除历史的迁移，然后执行 <code>Baton init</code> 与 Doctor 后验。业务项目不应复制、修改或维护 Baton 源码；如果官方还没有包含修复的新版本，正确结果是等待发布，而不是现场打补丁。\n\n想自己更新也可以在终端运行：\n\n~~~powershell\ngit -C \"$HOME/Baton\" pull --ff-only\n& \"$HOME/Baton/scripts/baton-install.ps1\" -Scope User\n~~~\n\n更新后新建 AI 会话；DSH 更新插件后重启对应 profile。只有全局 Skill、项目 Skill 镜像、项目版本锚、报告脚本路径和 init/Doctor 都对齐，才算更新完成。\n\n### 项目级安全卸载\n\n先演练，不写文件：\n\n~~~powershell\n& \"$HOME/Baton/scripts/baton-uninstall.ps1\" -ProjectRoot \"C:\\你的项目路径\" -DryRun\n~~~\n\n确认输出后去掉 <code>-DryRun</code>。默认保留 <code>docs/ai_memory/</code> 与 <code>.baton/config.json</code>；只有显式加 <code>-RemoveMemory</code> 才会删除项目记忆。\n\n当前卸载脚本只处理项目级文件，不会删除用户级 Skill。删除用户级安装时，只删除下面三个根目录里的 <code>baton</code>、<code>baton-lean-review</code>、<code>baton-debt</code>、<code>baton-doctor</code> 子目录，别把整个 <code>skills</code> 文件夹一锅端：\n\n- <code>~/.agents/skills/</code>\n- <code>~/.cursor/skills/</code>\n- <code>~/.claude/skills/</code>\n\nDSH profile 卸载：\n\n~~~powershell\ndsh plugin --profile web remove @kakadeka/dsh-baton\n~~~\n\n## 卡住了？先看这里\n\n### <code>git clone</code> 说 <code>$HOME/Baton</code> 已存在\n\n说明以前下载过。不要重复 clone，运行更新命令：\n\n~~~powershell\ngit -C \"$HOME/Baton\" pull --ff-only\n~~~\n\n如果它不是 Git 仓库，先确认里面有没有重要文件，再手动改名。Baton 不会替你覆盖它。\n\n### <code>baton-install.ps1</code> 不存在\n\n通常是第 1 步的 <code>git clone</code> 没成功。先看终端上方的 Git 报错，不要直接跳到第二行。\n\n### macOS / Linux 提示 <code>pwsh</code> 不存在\n\n先安装 PowerShell 7，再进入 <code>pwsh</code> 执行教程里的 PowerShell 命令。\n\n### 安装成功，但 <code>Baton init</code> 没反应\n\n1. 新建 AI 会话或重启 DSH profile。\n2. 检查对应的用户级 <code>SKILL.md</code> 是否存在。\n3. 确认 AI 打开的是你的项目目录，不是 <code>$HOME/Baton</code> 安装目录。\n4. 明确告诉 AI：“请按 Baton skill 执行 <code>Baton init</code>。”\n\n### <code>git pull --ff-only</code> 说无法快进\n\nBaton 会停下来，不会偷偷 rebase、reset 或覆盖修改。先运行：\n\n~~~powershell\ngit -C \"$HOME/Baton\" status\n~~~\n\n看清楚差异后再决定，不要为了更新安装器直接 <code>reset --hard</code>。\n\n### “下班啦”但没有 push 成功\n\n只有 <code>git push</code> 成功，而且远端 SHA 等于本地 HEAD，Baton 才应该报告“下班完成”。网络、权限或分支保护失败时，正确答案就是“还没完成”，不许演。\n\n## 安全底线\n\n- 不 force push，不 <code>reset --hard</code>，不危险 <code>clean</code>，不偷偷 rebase。\n- 同步默认只允许 <code>ff-only</code>；遇到分叉先停。\n- API Key、Token、密码和私钥不写进 Git、项目记忆、报表或交接。\n- 历史只追加，或者明确标记“已取代”。\n- 公开仓库只包含 Baton 运行所需文件，不包含你项目里的 <code>docs/ai_memory/</code>。\n\n## 仓库与许可证\n\n- GitHub：<https://github.com/kakadeka/Baton>\n- npm：[@kakadeka/dsh-baton](https://www.npmjs.com/package/@kakadeka/dsh-baton)\n- License：[Apache-2.0](./LICENSE)\n\n**Pass your project, not your context.** 🥁\n","readmeFilename":"README.zh-CN.md"}