[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H0EMAE3VJMQG4J4HC7KZ7N":3,"skill-same:01M6H0EMAE3VJMQG4J4HC7KZ7N":88},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":24,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6H0EMAE3VJMQG4J4HC7KZ7N","snapshot-and-version-a-knowledge-base",null,"Use when a wrong answer may trace to a specific corpus state that has since changed. Snapshots the chunk set, embeddings and index config as one versioned unit so any answer is reproducible.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-snapshot-and-version-a-knowledge-base\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-snapshot-and-version-a-knowledge-base\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"snapshot and version a knowledge base","knowledge","knowledge base","snapshot","base","version","use","when","Wrong","answer","unit","as","snapshots","config","trace","SET","Reproducible","embeddings","index","chunk","state","2026-11-10 10:12:30",false,"---\nname: snapshot-and-version-a-knowledge-base\ndescription: Use when a wrong answer may trace to a specific corpus state that has since changed. Snapshots the chunk set, embeddings and index config as one versioned unit so any answer is reproducible.\n---\n\n# Snapshot and Version a Knowledge Base\n\nWhen an answer was wrong last week, you need the exact chunks, vectors and splitter that produced it — not the current corpus. A knowledge base version is the whole pipeline state, addressable and reproducible.\n\n## Procedure\n\n1. Define a version as the tuple: chunker id, embedding model id, chunk set hash, and index build id — all four.\n2. On every build, write `kb\u002Fversions\u002F\u003Cversion>.json` with those fields plus a UTC timestamp and the source manifest hash.\n3. Store the chunk set durably (`chunks-\u003Cversion>.jsonl`), not just its hash, so a past retrieval can be rebuilt exactly.\n4. Tag the serving index with its version, and log the version on every query and answer.\n5. Never mutate a built version in place; a change creates a new version and a new tag.\n6. Keep the previous version servable for a rollback window; switching is a pointer change, not a rebuild.\n7. Tie every evaluation run to a version id so a metric is always attached to a corpus state.\n8. On answering a \"why did it say X\" question, pull the chunk set for the logged version and reconstruct.\n9. Retain versions by policy: keep the last N and any that served during an incident.\n10. Document the diff between two versions (documents added\u002Fremoved\u002Fchanged) so drift is explainable.\n\n11. Record the serving version in every eval result so a metric and a corpus state are never separated.\n\n## Pitfalls\n\n- Versioning the code but not the corpus, so the same commit produces different answers a week apart.\n- Rebuilding over the same version tag, destroying the state a past answer depended on.\n- Storing only the chunk hash, so the text can never be recovered for a reconstruction.\n- Logging the version on the index but not on the query, so answers cannot be tied to a state.\n- Keeping so many snapshots that storage cost forces deleting the one an incident needs.\n- Tagging the model id but not the chunker version, so a splitter change is invisible.\n\n- A snapshot that stores the index but not the chunker config, so it cannot be rebuilt.\n- Versioning the corpus but not the query rewriter, so two runs of one version differ.\n\n## Verification\n\n    jq -r '.version,.chunker,.model,.chunks_sha,.built_at' kb\u002Fversions\u002F*.json | tail -5\n    python3 rebuild.py --version kb-2026-10-08.3 --out \u002Ftmp\u002Frebuilt.jsonl  # must match stored chunk set hash\n    # passes when any logged answer's version rebuilds byte-identically\n\nReport to the user: current version id, its four fields, the retention policy, and confirmation that a past version reconstructs.\n","# Snapshot and Version a Knowledge Base\n\nWhen an answer was wrong last week, you need the exact chunks, vectors and splitter that produced it — not the current corpus. A knowledge base version is the whole pipeline state, addressable and reproducible.\n\n## Procedure\n\n1. Define a version as the tuple: chunker id, embedding model id, chunk set hash, and index build id — all four.\n2. On every build, write `kb\u002Fversions\u002F\u003Cversion>.json` with those fields plus a UTC timestamp and the source manifest hash.\n3. Store the chunk set durably (`chunks-\u003Cversion>.jsonl`), not just its hash, so a past retrieval can be rebuilt exactly.\n4. Tag the serving index with its version, and log the version on every query and answer.\n5. Never mutate a built version in place; a change creates a new version and a new tag.\n6. Keep the previous version servable for a rollback window; switching is a pointer change, not a rebuild.\n7. Tie every evaluation run to a version id so a metric is always attached to a corpus state.\n8. On answering a \"why did it say X\" question, pull the chunk set for the logged version and reconstruct.\n9. Retain versions by policy: keep the last N and any that served during an incident.\n10. Document the diff between two versions (documents added\u002Fremoved\u002Fchanged) so drift is explainable.\n\n11. Record the serving version in every eval result so a metric and a corpus state are never separated.\n\n## Pitfalls\n\n- Versioning the code but not the corpus, so the same commit produces different answers a week apart.\n- Rebuilding over the same version tag, destroying the state a past answer depended on.\n- Storing only the chunk hash, so the text can never be recovered for a reconstruction.\n- Logging the version on the index but not on the query, so answers cannot be tied to a state.\n- Keeping so many snapshots that storage cost forces deleting the one an incident needs.\n- Tagging the model id but not the chunker version, so a splitter change is invisible.\n\n- A snapshot that stores the index but not the chunker config, so it cannot be rebuilt.\n- Versioning the corpus but not the query rewriter, so two runs of one version differ.\n\n## Verification\n\n    jq -r '.version,.chunker,.model,.chunks_sha,.built_at' kb\u002Fversions\u002F*.json | tail -5\n    python3 rebuild.py --version kb-2026-10-08.3 --out \u002Ftmp\u002Frebuilt.jsonl  # must match stored chunk set hash\n    # passes when any logged answer's version rebuilds byte-identically\n\nReport to the user: current version id, its four fields, the retention policy, and confirmation that a past version reconstructs.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-snapshot-and-version-a-knowledge-base",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-15 02:28:10",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill snapshot-and-version-a-knowledge-base",{"tool":66,"command":67},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill snapshot-and-version-a-knowledge-base",{"tool":69,"command":70},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill snapshot-and-version-a-knowledge-base","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-snapshot-and-version-a-knowledge-base\u002FSKILL.md",true,[74,78,84],{"path":75,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":16},"LICENSE","许可证",1063,{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"SOURCE.md","REFERENCE","参考文档",363,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-snapshot-and-version-a-knowledge-base\u002FSOURCE.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-snapshot-and-version-a-knowledge-base\u002FTRUST.auto.yaml",[89,117,140,158,171,180],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":93,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":46},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":121,"licenseFileUrl":122,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":46},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[126,127,128,129,130,131,132,133,134,135,136,137,138,139],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":121,"licenseFileUrl":144,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":46},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[148,127,149,150,151,152,153,137,136,135,154,155,156,131,157,130,129],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":121,"licenseFileUrl":162,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":46},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[166,167,128,168,169,138,136,170,134,133,131,130],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":172,"name":173,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":174,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":46},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[178,179,30],"refresh","0xklen version and refresh sanctions lists",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":184,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":46},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[188,189,190,191,192,193,194,31,195,196,197],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]