{"_id":"@chetuoche/ai-track","_rev":"16-eb51c265772bacd73caeae13791ccb37","name":"@chetuoche/ai-track","dist-tags":{"latest":"0.4.5"},"versions":{"0.1.1":{"name":"@chetuoche/ai-track","version":"0.1.1","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.1.1","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"09c47b790a78e0aa3d5130a0f161b4c65513ad9f","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.1.1.tgz","fileCount":5,"integrity":"sha512-mQxQgddFd4VjFfzUUBN8o9D8blNKatoNopT2N2PFVGU8WrH1OT8dG6kO3b92/rsvwaLsKv6XlguspoYyJgCxJg==","signatures":[{"sig":"MEUCIQDmsAVgifNBvx7FpBK+OwD9O3AqjhWB+tnFDpAJK7f32AIgDN4h09iXnTCvLNmdlmd5jd0yCyv6xibmkF4k9wspiPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29606},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"50a69570fd7d46edd5fdb9e6f17752ef6ec6c09f","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.1.1_1782118896556_0.8140177944873472","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@chetuoche/ai-track","version":"0.1.2","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.1.2","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"f8d4c3f7401a62ebba4929ca0de7cf70552a29e4","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.1.2.tgz","fileCount":5,"integrity":"sha512-8Z2TBkfHp/g5evlFFP50P2RDMlzmh837owmLh4ZQyn86rTLZoIb+ciKqXbkqJUSk8DelNnFpkBHic+N8qEUcKg==","signatures":[{"sig":"MEUCIQD2k/KbWlNrYvr1iN6zJQ/z/Q1XToHPx9EQu+JisFIO/QIge6UZgT4Z/S7u3wZp6wfzhjz69geOARE4IToPCr0ekNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29664},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8ba06433841dfb4739d77565db15d5cbcf61f3ef","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.1.2_1782178351018_0.651088186402476","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@chetuoche/ai-track","version":"0.2.1","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.2.1","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"dbd0a4eaeba3979735aef1f02d0fbf644b272721","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.2.1.tgz","fileCount":5,"integrity":"sha512-hFCJNmz49YEATry9nWXB+jxzbUoOElhxoJIPuKkt1EVj+rsUWwmAAbVX3ENuLcgesZ2YUUjB1lY1bIl89XVUCA==","signatures":[{"sig":"MEQCIAi/K0Xjb1gGRoPxq993pL1KSm6Ysf9CgyWHojIivCTaAiAQB0JAqnB7G4UcyNcRRuHwKXWbqcIKIPb5ORISE+gZJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34772},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"716ba8c7a3ae6eb24bd15cd1c7894caa76103127","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.2.1_1782291035644_0.1827036519275902","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@chetuoche/ai-track","version":"0.3.1","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.1","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"b5b7b3ab6c93ea3f239bff145017a583cc85d7f3","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.1.tgz","fileCount":6,"integrity":"sha512-HT9VF1ZbjokCSM+331plX/BWtPyao5DTZYAg4/jSBk0qx4JobpSQZAmkLqjAty0wrpRaq34KyumdueQUUHhiPg==","signatures":[{"sig":"MEUCIQCp8O7J+PYFZK/NWEiQUHc82Sb5cyhPyUUCtGOcfVGV+QIgTwqFoTJGF0IO8TyggLp27YbmsxZAmrLQQ/My+LCCgDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42322},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"583dd7eea20aa6ced0dad2edd0cf206a2694e504","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.1_1782292516395_0.3500988654316157","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@chetuoche/ai-track","version":"0.3.2","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.2","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"31e5ea52a852cbe82b40d013215d1d0eaba648b2","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.2.tgz","fileCount":6,"integrity":"sha512-ABOeIQVrcUvaJ0j/7yN72tjQQGOYhb0ai6FmEbFe9Hjx2x7Ut7bjkpTOdt9S4NaPt/tXyvnPrD1kPNFMe0i+Eg==","signatures":[{"sig":"MEYCIQDlxgghCmyo/py3EmS2Z2tIR5TcvDU9wcNwLwnsL6rmegIhAJOjhrydwwZtrLcltRdwx/n70AyAL2XZWuvRhC26d23U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47828},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f4624b0f934937b20accaa7536c97e33fdc53137","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.2_1782294970503_0.24889861946242786","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@chetuoche/ai-track","version":"0.3.3","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.3","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"82e645be5ba5d73255059099aaa6b1df60d22864","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.3.tgz","fileCount":6,"integrity":"sha512-FLU2ixCpnJ/KzXd8odpvjNukJr12LopQFspOj5Qx75rwCvUXy5jz9KQCSrDWrWZLpeSLwB4SKrXVRKnSvS7TVw==","signatures":[{"sig":"MEUCIEVY4G2a/YE0HsI9lSeq919MhBCT2uIq08QxooMpfsDfAiEAqSNaMMoFeLByi3Y8tLePlxLyipIDm2E9TbwtnOiqMuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48580},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"01a097e4f3e4ff54526b0cd88a66f58f965f11a5","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.3_1782354230747_0.967026336271744","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@chetuoche/ai-track","version":"0.3.4","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.4","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"3ff028fee1850fdcadbc89f996852bfa04569884","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.4.tgz","fileCount":6,"integrity":"sha512-HP2qTrXM6QxaBN6wnpWiSJw97tD9WXAPtumTTKmHNo5HwESH6obB5oB9y8VDGrqxa+D1zugknIn5BbGFPSMlKg==","signatures":[{"sig":"MEUCIQC/2GVy5BC+IDKVaS9WgamY2nzPZmjTlIiCAeoE8vDeIQIgGj+TXLx6D9rf7ZuyFl0X9qMGwiYFN+V7yDB8iVmBgWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53509},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b05171020a62c544c5149bbbe51f60363c98b520","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.4_1782355233876_0.8088000899872616","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@chetuoche/ai-track","version":"0.3.5","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.5","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"514c2d53ce46f4c28a89d8c1cc1bd90dc69bf391","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.5.tgz","fileCount":6,"integrity":"sha512-/2e8blN0mNz7vhSUZ5Mb/sPZu2C36BhIGPSzdr6pNhjI5yOGNY+FnuJ0cRfHUUYs60qahwdkLuzeBzTp/fON7Q==","signatures":[{"sig":"MEQCIEI9qltQwpjk52TYMnVz8wQQjQtDbXqktT6PeDSJAQzoAiAb1Oi6+KfuG09VqrV4y4RyW4wS2Ke9l9f+ySinLU0ObA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63527},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d2682e1c30e64b03ad65c349da41851b69e23a6a","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.5_1782368333972_0.846182413086084","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@chetuoche/ai-track","version":"0.3.6","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.6","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"7445b57da862ed9b3b0d028deb1a624b1626e1c1","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.6.tgz","fileCount":6,"integrity":"sha512-xxg9PPLCCGuvKsxIUwrT5RhmdHVKRzhROlVXfWgbCKr8PmLhtVxHnlB+p28ZlZDqOjDjHjFEiX0Tx9aNVsRprQ==","signatures":[{"sig":"MEYCIQCxavTJxLtBNsrWtqPpv4CGYfn0IsmDBHzqWVPMzgGe+gIhALWfYW2Tj5k5eOsiY98OA/21GRLrPNz3luqejcSEsCAQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65174},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"298f4023e8e43e6e088648c97c929b6b8b0b319f","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.6_1782370724868_0.015768501314140426","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@chetuoche/ai-track","version":"0.3.8","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.8","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"32045f194b6a6be0ee4378d951a27277423585ec","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.8.tgz","fileCount":6,"integrity":"sha512-foX8I40O9GYlun9QRYA970CUtz0yhMP2UZ/ROYQ9LdbKC8dMUBY17Mro+k31Ou5eGPTp2KfoKNbIgD2zPt6Qvw==","signatures":[{"sig":"MEUCIDULmxoQF28MjvwkwvpyD+8oIAO9i4zPlw8FHBZc8jbEAiEAlmfNReLKlN5DQ9c15qRnirWGIVdvXpl4fO7RpIOAurs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66119},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"91f69c32d8e39ccc7301c7a31052feb577c84ecf","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.8_1782372274705_0.8785322725303568","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@chetuoche/ai-track","version":"0.3.9","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.3.9","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"44599de005c5e5e8476b4e9e8efeb0f7eaada059","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.3.9.tgz","fileCount":6,"integrity":"sha512-yWXBVAiI/PlklzjTsxysKEowNSfD9G4NMO83urjjsWLO6d1t7vLcMr9cQJFiV8AkaO1yIQM3xRsWUj73t1MhvA==","signatures":[{"sig":"MEYCIQCP1Ngdg6rvYleTZwG7T44xbUztErX7SKQjhJrSf+puxgIhANHlCiMdB1VUqHvTTf/l74kiKSdlG/HSffMuN0gqxgn2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66768},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"55ee46c46106d7e31ccb2c908c385dfa06c0f2f1","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.3.9_1782373407639_0.31828308072400113","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@chetuoche/ai-track","version":"0.4.0","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.4.0","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"539657c9a63b14814d4ab532864e1e68b0c3b117","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.4.0.tgz","fileCount":6,"integrity":"sha512-05nHh8Qc5l9M7ih+LOlnnjIau1oF6oTugiT4L6nQKMW9mpv3PZIsQpIH0ZmYQDoB61kO3OYsMYUP0fvrjpBXrw==","signatures":[{"sig":"MEQCICGIAuHjocs7gkKMq2ykrQQ2F/GCvImfyR7FIqTQlqNxAiAE/CdT66NBF+ym/qhkYSIARvNLqHTcUy/393anfG48aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66077},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7b68d797622d498b141a24ee8740b726bef9b603","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.4.0_1782378200326_0.9456564245007009","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@chetuoche/ai-track","version":"0.4.1","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.4.1","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"515b9f89ba7ca5eaf8961c1ebd9a87bd08cb2b87","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.4.1.tgz","fileCount":6,"integrity":"sha512-aldf4f3QTjjwdOHOPgOXr2Q2fzXgqCPFmAnrJ/15GUVediN8qio7mKACaXhyain5KCG3UNj1jCI2yXr4V4DD3A==","signatures":[{"sig":"MEUCIQDqCwdPNoNVHaePRsLwvUhWa5r91MF4b9CUMoKkioxUYwIgCo8k7KWEmXfsLEc41Dx/wHjkTnCX6KRhh61FWy9YVus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71589},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"24b1adc0a91240f6b626fb49af94ef0893579e21","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.4.1_1782470212611_0.7714689401021226","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@chetuoche/ai-track","version":"0.4.2","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.4.2","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"38d764b666e9eece115c7343291a0d3e225ef7ba","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.4.2.tgz","fileCount":6,"integrity":"sha512-sMEGuVH4/E8QppSAZw0cmefNILD3TnCo24MzpTSfnft6yii+blUXxvv14OLkXwqWxMl0Oxqqdhby1JvZMfh29Q==","signatures":[{"sig":"MEQCIHClHUMbuOc9cD6s2S1GqnkJvwAsI1+JEPAz5WC4PdCkAiBXvCfOl7x0ZO8tzrkU+Jzm4NZpJPCuuWcjAP/F4AAU1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71574},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"24b1adc0a91240f6b626fb49af94ef0893579e21","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.4.2_1782470936351_0.08505878413845624","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@chetuoche/ai-track","version":"0.4.3","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","_id":"@chetuoche/ai-track@0.4.3","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"bin":{"ai-track":"dist/index.js"},"dist":{"shasum":"190496082a5429dc19eb0b17945c265789a0e0ea","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.4.3.tgz","fileCount":6,"integrity":"sha512-07HIAX99ZXZEBDAJQ7sZ9Rl4OBHHmftIw6p3VvkpJB/kkYCV9yAtgGHQI2H/YkF8rnST+aWrViEi0+yhnJeF9Q==","signatures":[{"sig":"MEYCIQCtTHtCfxOGFIjtWZk3VhCp+4XRrCGyjc3BSIQ68iICYwIhAOGEZw8YM/JGHOq4iPPZL6VR7RZFcRJcRfpSBPjweoU0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72365},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"df31b2b5ea0f921443334c0d188f5279ee166dac","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"_npmVersion":"10.9.7","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","undici":"^8.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.9.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-track_0.4.3_1782715476321_0.24869171954284353","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@chetuoche/ai-track","version":"0.4.5","description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"ai-track":"dist/index.js"},"scripts":{"build":"tsup","dev":"tsup --watch","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm run build"},"keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"author":{"name":"ctc"},"license":"ISC","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"engines":{"node":">=18.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","undici":"^6.27.0","zod":"^3.23.0"},"devDependencies":{"@types/node":"^22.0.0","tsup":"^8.3.5","typescript":"^5.9.3"},"_id":"@chetuoche/ai-track@0.4.5","gitHead":"7af08d6b21b1a402bafa3b8ad216e4839c025d7a","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-dvpDkx+otCZdF00iW07ki/X/BT+gScpFG9cqcTHd5nFWT/pUGX7iIwMuH6G32hdn5BhePYkTy+GF7kVMHn+VoQ==","shasum":"9f629bb0b052dac1891e064e0be470069e1c23b6","tarball":"https://registry.npmjs.org/@chetuoche/ai-track/-/ai-track-0.4.5.tgz","fileCount":6,"unpackedSize":73175,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHBRzEWj7dO4qhEuLMzijxFHQ7/wAgL48ebqygH+ivVvAiEAtWj76DC0vA6oiDnaxxmKtVy5PB7DsiM5jeQKb1KlaCE="}]},"_npmUser":{"name":"chetuoche","email":"97683468@qq.com"},"directories":{},"maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-track_0.4.5_1782733263967_0.7696882815033985"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T09:01:36.357Z","modified":"2026-06-29T11:41:04.221Z","0.1.1":"2026-06-22T09:01:36.699Z","0.1.2":"2026-06-23T01:32:31.175Z","0.2.1":"2026-06-24T08:50:35.776Z","0.3.1":"2026-06-24T09:15:16.543Z","0.3.2":"2026-06-24T09:56:10.663Z","0.3.3":"2026-06-25T02:23:50.915Z","0.3.4":"2026-06-25T02:40:33.997Z","0.3.5":"2026-06-25T06:18:54.097Z","0.3.6":"2026-06-25T06:58:45.000Z","0.3.8":"2026-06-25T07:24:34.819Z","0.3.9":"2026-06-25T07:43:27.756Z","0.4.0":"2026-06-25T09:03:20.462Z","0.4.1":"2026-06-26T10:36:52.746Z","0.4.2":"2026-06-26T10:48:56.504Z","0.4.3":"2026-06-29T06:44:36.444Z","0.4.5":"2026-06-29T11:41:04.095Z"},"author":{"name":"ctc"},"license":"ISC","keywords":["mcp","model-context-protocol","ai-tools","codex","claude-code","telemetry","usage-tracking","engineering-productivity"],"description":"AI coding usage telemetry MCP Server for Codex, Claude Code CLI and other AI coding tools.","maintainers":[{"name":"chetuoche","email":"97683468@qq.com"}],"readme":"# @chetuoche/ai-track\n\nAI 对话使用率统计 MCP Server。它可以在 Codex、Claude Code CLI 等 AI 工具处理任意用户对话请求时，记录用户 prompt、响应耗时、代码变更、项目上下文和自定义人员信息，并通过 POST 上报到业务埋点接口。\n\n> **详细配置教程**：[Claude Code CLI 配置 ai-track MCP 教程](docs/claude-mcp-config.md)\n\n> 注意：MCP Server 只负责暴露工具，不能在操作系统层面隐形拦截所有 CLI 输入。推荐在 AI 工具规则、工作流或包装脚本中约定调用时机：请求开始前调用 `ai_track_start`，请求处理完成后调用 `ai_track_finish`；如果调用方已经有完整统计数据，也可以直接调用 `ai_track_prompt`。\n\n## 规则接入流程\n\n### Codex 全局接入\n\nCodex 支持全局 `AGENTS.md`。把下面的规则保存到 `~/.codex/AGENTS.md` 后，它会在每次 Codex 对话时作为系统提示自动加载，不需要在每个项目里重复维护同一份规则。\n\nWindows 示例路径：\n\n```text\nC:\\Users\\<你的用户名>\\.codex\\AGENTS.md\n```\n\nmacOS / Linux 示例路径：\n\n```text\n~/.codex/AGENTS.md\n```\n\n如果某个项目需要覆盖或补充全局规则，也可以在项目根目录继续放置项目级 `AGENTS.md`。\n\n### 通用规则模板\n\n```md\n# 全局 AI 埋点规则\n\n每次收到用户 AI 对话请求后，如果 MCP 工具 `ai_track_start` 可用，先调用 `ai_track_start`，记录用户 prompt、工具类型和项目路径；不限于编码任务，问答、分析、写作、排障等请求也需要记录。\n\n请求处理完成后，如果 MCP 工具 `ai_track_finish` 可用，调用 `ai_track_finish`，上报处理状态、耗时和代码变更；没有代码变更时也需要上报，代码变更统计可以为 0。\n\n如果请求处理失败，也需要调用 `ai_track_finish`，并将 `status` 设置为 `failure`，同时通过 `errorMessage` 记录错误信息。\n\n如果请求只完成了一部分，可以将 `status` 设置为 `partial`，并通过 `errorMessage` 说明未完成原因。\n\n如果调用方已经有完整统计数据，可以直接调用 `ai_track_prompt` 一次性上报。\n\n允许向 `http://localhost:3000/api/ai-track` 或实际配置的 `AI_TRACK_ENDPOINT` 埋点服务上报数据。\n\n如果 `ai_track_finish` 被安全策略拦截，必须说明原因，不得静默跳过。\n```\n\n### 推荐调用顺序\n\n1. 收到用户 AI 对话请求后调用 `ai_track_start`，传入 `prompt`、`toolType` 和 `projectPath`。\n2. 执行问答、分析、写作、代码修改、测试或排障等处理。\n3. 完成后调用 `ai_track_finish`，成功时使用 `success`，失败时使用 `failure` 并补充 `errorMessage`，部分完成时使用 `partial`。\n4. 如果调用方已经自行统计了耗时和代码变更，可以跳过 start/finish 流程，直接调用 `ai_track_prompt`。\n\n对于不支持全局 `AGENTS.md` 的工具，可以把同一段规则写入对应工具的项目规则文件、团队工作流或 CLI 包装脚本中。\n\n## 安装与构建\n\n```bash\nnpm install\nnpm run build\n```\n\n本包 npm 名称为 `@chetuoche/ai-track`，构建后会暴露 `ai-track` 命令：\n\n```bash\nai-track\n```\n\n## MCP 配置\n\n根据你使用的 AI 工具，选择对应的配置方式：\n\n### Claude Code CLI 配置\n\nClaude Code CLI 的 MCP 配置存储在 `~/.claude.json` 文件中，支持 **全局级** 和 **项目级** 两种配置方式。\n\n#### 方法一：使用命令行添加（推荐）\n\n在项目目录下执行：\n\n```bash\nclaude mcp add ai-track -- npx -y @chetuoche/ai-track\n```\n\n这会将配置添加到当前项目的 MCP 服务列表。然后手动编辑 `~/.claude.json` 文件，在对应项目的 `env` 字段中添加环境变量：\n\n```json\n{\n  \"projects\": {\n    \"E:/code/ctc/your-project\": {\n      \"mcpServers\": {\n        \"ai-track\": {\n          \"type\": \"stdio\",\n          \"command\": \"npx\",\n          \"args\": [\"-y\", \"@chetuoche/ai-track\"],\n          \"env\": {\n            \"AI_TRACK_ENDPOINT\": \"https://example.com/api/ai-track\",\n            \"AI_TRACK_EXTRA\": \"{\\\"name\\\":\\\"张三\\\",\\\"department\\\":\\\"前端组\\\"}\",\n            \"AI_TRACK_USER_ID\": \"zhangsan@company.com\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n#### 方法二：直接编辑配置文件\n\nClaude Code CLI 的配置文件位置：\n\n**Windows 路径：**\n\n```text\nC:\\Users\\<你的用户名>\\.claude.json\n```\n\n**macOS / Linux 路径：**\n\n```text\n~/.claude.json\n```\n\n##### 全局级配置\n\n在 `mcpServers` 字段添加配置，对所有项目生效：\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-track\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chetuoche/ai-track\"],\n      \"env\": {\n        \"AI_TRACK_ENDPOINT\": \"https://example.com/api/ai-track\",\n        \"AI_TRACK_EXTRA\": \"{\\\"name\\\":\\\"张三\\\",\\\"department\\\":\\\"前端组\\\"}\",\n        \"AI_TRACK_USER_ID\": \"zhangsan@company.com\"\n      }\n    }\n  }\n}\n```\n\n##### 项目级配置\n\n在 `projects[\"项目路径\"].mcpServers` 字段添加配置，仅对指定项目生效：\n\n```json\n{\n  \"projects\": {\n    \"E:/code/ctc/your-project\": {\n      \"mcpServers\": {\n        \"ai-track\": {\n          \"type\": \"stdio\",\n          \"command\": \"npx\",\n          \"args\": [\"-y\", \"@chetuoche/ai-track\"],\n          \"env\": {\n            \"AI_TRACK_ENDPOINT\": \"https://example.com/api/ai-track\",\n            \"AI_TRACK_EXTRA\": \"{\\\"name\\\":\\\"张三\\\",\\\"department\\\":\\\"前端组\\\"}\",\n            \"AI_TRACK_USER_ID\": \"zhangsan@company.com\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n#### 配置优先级\n\n当全局级和项目级同时配置时，项目级配置会覆盖全局级配置。\n\n#### 重要说明\n\n- `env` 中的值必须是**字符串类型**，JSON 对象需要转义为字符串格式\n- `AI_TRACK_EXTRA` 需要写成 `\"{\\\"name\\\":\\\"张三\\\"}\"` 而不是 `{\"name\":\"张三\"}`\n- 添加 `-y` 参数可以跳过 npx 的安装确认提示\n\n### Claude Desktop 配置\n\n打开 Claude Desktop 应用，进入 `设置` → `开发者` → `编辑配置`，或直接编辑配置文件：\n\n**Windows 路径：**\n\n```text\n%APPDATA%\\Claude\\claude_desktop_config.json\n```\n\n**macOS 路径：**\n\n```text\n~/Library/Application Support/Claude/claude_desktop_config.json\n```\n\n配置内容：\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-track\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chetuoche/ai-track\"],\n      \"env\": {\n        \"AI_TRACK_ENDPOINT\": \"https://example.com/api/ai-track\",\n        \"AI_TRACK_EXTRA\": \"{\\\"name\\\":\\\"张三\\\",\\\"department\\\":\\\"前端组\\\"}\",\n        \"AI_TRACK_USER_ID\": \"zhangsan@company.com\"\n      }\n    }\n  }\n}\n```\n\n配置完成后重启 Claude Desktop 应用。\n\n### Codex 配置\n\nCodex 使用 `~/.codex/settings.json` 进行 MCP 配置：\n\n**Windows 路径：**\n\n```text\nC:\\Users\\<你的用户名>\\.codex\\settings.json\n```\n\n**macOS / Linux 路径：**\n\n```text\n~/.codex/settings.json\n```\n\n配置内容与其他工具相同。\n\n### 验证 MCP 配置\n\n配置完成后，可以通过以下方式验证是否生效：\n\n#### Claude Code CLI\n\n```bash\n# 查看 MCP 服务器状态\nclaude mcp list\n\n# 查看 MCP 工具列表\nclaude tools\n```\n\n如果配置正确，`claude mcp list` 应该显示：\n\n```text\nai-track: npx -y @chetuoche/ai-track - ✓ Connected\n```\n\n`claude tools` 应该显示可用的工具：\n- `mcp__ai-track__ai_track_start`\n- `mcp__ai-track__ai_track_finish`\n- `mcp__ai-track__ai_track_prompt`\n\n#### Claude Desktop\n\n在 Claude Desktop 中，可以通过查看 MCP 连接状态确认配置是否生效。如果配置正确，Claude 会在对话中自动识别并可调用 MCP 工具。\n\n### 常见问题排查\n\n#### MCP 列表中没有显示 ai-track\n\n1. **检查配置文件位置**：确保配置写入的是 `~/.claude.json`，而不是 `~/.claude/settings.json`\n2. **检查环境变量格式**：确保 `env` 中的值都是字符串类型，JSON 对象需要转义\n3. **检查命令参数**：建议添加 `-y` 参数跳过 npx 安装确认\n\n#### 环境变量没有生效\n\n确保在 `env` 字段中正确配置了环境变量，而不是在其他位置。项目级配置需要修改 `projects[\"项目路径\"].mcpServers.ai-track.env`。\n\n### 本地开发调试配置\n\n如果你在本地开发调试此 MCP 包，可以直接指向本地构建产物：\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-track\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/ai-track/dist/index.js\"],\n      \"env\": {\n        \"AI_TRACK_ENDPOINT\": \"https://example.com/api/ai-track\"\n      }\n    }\n  }\n}\n```\n\n或者使用 `npm link` 后通过 npx 调用：\n\n```bash\n# 在 ai-track 项目目录执行\nnpm link\n\n# 然后在配置中使用\nnpx -y @chetuoche/ai-track\n```\n\n## 环境变量与命令行参数\n\n可以通过环境变量配置埋点接口和额外字段：\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-track\": {\n      \"command\": \"npx\",\n      \"args\": [\"@chetuoche/ai-track\"],\n      \"env\": {\n        \"AI_TRACK_ENDPOINT\": \"https://example.com/api/ai-track\",\n        \"AI_TRACK_EXTRA\": \"{\\\"name\\\":\\\"张三\\\",\\\"department\\\":\\\"前端组\\\"}\",\n        \"AI_TRACK_USER_ID\": \"zhangsan@company.com\",\n        \"AI_TRACK_PROMPT_OPTIMIZATION_ENABLED\": \"true\",\n        \"AI_TRACK_PROMPT_MAX_LENGTH\": \"1000\",\n        \"AI_TRACK_MODIFIED_FILES_LIMIT\": \"50\"\n      }\n    }\n  }\n}\n```\n\n也支持命令行参数：\n\n```bash\nai-track --endpoint https://example.com/api/ai-track --extra '{\"name\":\"张三\",\"department\":\"前端组\"}'\n```\n\n配置优先级：tool 调用参数 > 命令行参数 > 环境变量 > git config / 系统信息。\n\n### Prompt 优化建议开关\n\n默认会根据原始 prompt 自动生成 `promptOptimizationRichText`。如果不希望生成 Prompt 优化建议，可以通过环境变量关闭：\n\n```bash\nAI_TRACK_PROMPT_OPTIMIZATION_ENABLED=false\n```\n\n关闭后：\n\n- 不会执行基于 prompt 内容的改进建议生成逻辑。\n- `promptOptimizationEnabled` 会随 payload 上报为 `false`。\n- `promptOptimizationRichText` 会以空字符串上报。\n\n该配置也支持命令行参数覆盖：\n\n```bash\nai-track --prompt-optimization-enabled false\n```\n\n### Payload 体积控制\n\n为减少埋点 payload 和 MCP 工具返回内容带来的 token 消耗，默认会做以下压缩：\n\n- MCP 工具返回给 AI 客户端时只返回摘要；真实 POST 仍使用完整 payload。\n- `promptNav` 默认最多保留 1000 个字符，可通过 `AI_TRACK_PROMPT_MAX_LENGTH` 或 `--prompt-max-length` 调整。\n- `modifiedFiles` 默认最多保留 50 个文件名，可通过 `AI_TRACK_MODIFIED_FILES_LIMIT` 或 `--modified-files-limit` 调整。\n- `modifiedFileCount` 会记录完整修改文件数量，即使 `modifiedFiles` 被截断也不会丢失总数。\n\n```bash\nAI_TRACK_PROMPT_MAX_LENGTH=500\nAI_TRACK_MODIFIED_FILES_LIMIT=20\n```\n\n## 暴露工具\n\n### ai_track_start\n\n`prompt` must be the original user prompt. `promptNav` is generated from this original prompt only, not from an AI summary or rewritten task description. If `promptBase64` is provided, it must be the UTF-8 base64 encoding of the same original prompt.\n\n开始一次 AI 对话追踪，记录提示词、开始时间和当前 git diff 基线。\n\n入参：\n\n```json\n{\n  \"prompt\": \"帮我优化 Header 组件\",\n  \"toolType\": \"codex\",\n  \"projectPath\": \"E:/code/ctc/my-project\",\n  \"endpoint\": \"https://example.com/api/ai-track\",\n  \"extra\": {\n    \"name\": \"张三\",\n    \"department\": \"前端组\"\n  }\n}\n```\n\n返回：\n\n```json\n{\n  \"sessionId\": \"ait_lx...\",\n  \"startTime\": \"2026-06-17T10:00:00.000Z\",\n  \"packageVersion\": \"0.3.1\",\n  \"capabilities\": {\n    \"untrackedFileStats\": true,\n    \"stagedFileStats\": true\n  }\n}\n```\n\n### ai_track_finish\n\n结束一次 AI 对话追踪，计算从 start 到 finish 之间新增的 git diff，并 POST 上报；没有代码变更时相关统计为 0。\n\n入参：\n\n```json\n{\n  \"sessionId\": \"ait_lx...\",\n  \"status\": \"success\",\n  \"timeSavedEstimate\": 120\n}\n```\n\n### ai_track_prompt\n\n`prompt` / `promptBase64` must contain the original user prompt. `promptNav` is generated from that original prompt only, not from an AI summary or rewritten task description. When both fields are provided, `promptBase64` must decode to the exact same text as `prompt`.\n\n一次性上报完整提示词埋点。适合调用方已经知道耗时和代码变更的场景。\n\n入参：\n\n```json\n{\n  \"prompt\": \"帮我新增登录页\",\n  \"toolType\": \"claude-code-cli\",\n  \"status\": \"success\",\n  \"startTime\": \"2026-06-17T10:00:00.000Z\",\n  \"endTime\": \"2026-06-17T10:00:05.500Z\",\n  \"addedLines\": 45,\n  \"deletedLines\": 12,\n  \"modifiedFiles\": [\"src/components/Header.tsx\", \"src/utils/api.ts\"],\n  \"modifiedFileCount\": 2,\n  \"createdFiles\": [\"src/components/Header.tsx\"],\n  \"deletedFiles\": [],\n  \"renamedFiles\": [\n    {\n      \"from\": \"src/utils/request.ts\",\n      \"to\": \"src/utils/api.ts\"\n    }\n  ],\n  \"binaryFiles\": [],\n  \"ignoredFiles\": [\"dist/\"],\n  \"language\": \"TypeScript\",\n  \"charactersAdded\": 2300,\n  \"extra\": {\n    \"name\": \"张三\"\n  }\n}\n```\n\n## 上报 Payload\n\n最终会以 `application/json` POST 到 `AI_TRACK_ENDPOINT`：\n\n```json\n{\n  \"userId\": \"zhangsan@company.com\",\n  \"machineId\": \"00:11:22:33:44:55\",\n  \"packageVersion\": \"0.3.1\",\n  \"capabilities\": {\n    \"untrackedFileStats\": true,\n    \"stagedFileStats\": true\n  },\n  \"toolType\": \"codex\",\n  \"startTime\": \"2026-06-17T10:00:00.000Z\",\n  \"endTime\": \"2026-06-17T10:00:05.500Z\",\n  \"responseTimeMs\": 5500,\n  \"addedLines\": 45,\n  \"deletedLines\": 12,\n  \"modifiedFiles\": [\"src/components/Header.tsx\", \"src/utils/api.ts\"],\n  \"modifiedFileCount\": 2,\n  \"createdFiles\": [\"src/components/Header.tsx\"],\n  \"deletedFiles\": [],\n  \"renamedFiles\": [\n    {\n      \"from\": \"src/utils/request.ts\",\n      \"to\": \"src/utils/api.ts\"\n    }\n  ],\n  \"binaryFiles\": [],\n  \"ignoredFiles\": [\"dist/\"],\n  \"language\": \"TypeScript\",\n  \"charactersAdded\": 2300,\n  \"projectName\": \"ecommerce-platform\",\n  \"gitBranch\": \"feature/payment-optimization\",\n  \"promptLength\": 45,\n  \"promptNav\": \"帮我优化 Header 组件\",\n  \"promptOptimizationEnabled\": true,\n  \"promptOptimizationRichText\": \"<section class=\\\"ai-track-prompt-optimization\\\"><h3>Prompt 优化建议</h3>...</section>\",\n  \"status\": \"success\",\n  \"errorMessage\": null,\n  \"timeSavedEstimate\": 120,\n  \"extra\": {\n    \"name\": \"张三\",\n    \"department\": \"前端组\"\n  }\n}\n```\n\n## 自动采集规则\n\n- `userId`：优先使用 `AI_TRACK_USER_ID`，其次 `GIT_AUTHOR_EMAIL`、`GIT_COMMITTER_EMAIL`、`USER_EMAIL`、`git config user.email`、`git config user.name`。\n- `machineId`：优先使用 `AI_TRACK_MACHINE_ID`，其次本机非内网 MAC 地址，最后 hostname。\n- `packageVersion`：当前运行中的 `@chetuoche/ai-track` 包版本，用于排查 MCP 服务是否已经重启到最新版本。\n- `capabilities`：当前运行版本支持的核心代码变更统计能力，例如未跟踪文件统计和已暂存文件统计。\n- `projectName`：从当前目录向上查找 `package.json.name`，找不到时使用 git root 目录名。\n- `gitBranch`：来自 `git rev-parse --abbrev-ref HEAD`。\n- `addedLines/deletedLines/modifiedFiles`：来自未暂存 diff、已暂存 diff 和未跟踪文本文件统计；`modifiedFiles` 会按配置限制返回数量。\n- `modifiedFileCount`：完整修改文件数量，不受 `AI_TRACK_MODIFIED_FILES_LIMIT` 截断影响。\n- `charactersAdded`：来自 git patch 新增行字符数，以及未跟踪文本文件字符数。\n- `language`：根据变更文件扩展名推断主要语言。\n- `promptOptimizationEnabled`：是否开启 Prompt 优化建议生成，来自 `AI_TRACK_PROMPT_OPTIMIZATION_ENABLED` 或命令行参数，默认 `true`。\n- `promptOptimizationRichText`：根据原始 prompt 自动生成的短 HTML 富文本，包含最多两条改进建议和一版精简优化后 prompt；长 prompt 会被截断以降低 payload 体积。\n\n## 本地调试\n\n没有配置接口时可以传 `dryRun: true`，只返回 payload，不发送 POST：\n\n```json\n{\n  \"prompt\": \"统计当前变更\",\n  \"toolType\": \"codex\",\n  \"dryRun\": true\n}\n```\n\n### 新增文件统计仍为 0 的排查\n\n如果 AI 新建文件后，`addedLines` 仍然上报为 0，优先检查 `ai_track_start` 返回值：\n\n```json\n{\n  \"packageVersion\": \"0.3.1\",\n  \"capabilities\": {\n    \"untrackedFileStats\": true,\n    \"stagedFileStats\": true\n  }\n}\n```\n\n如果返回值里没有 `packageVersion` / `capabilities`，或 `capabilities.untrackedFileStats` 不是 `true`，说明当前 MCP 服务进程仍在运行旧版本代码。此时需要重启 AI 工具里的 MCP Server，或重新安装/重新发布 `@chetuoche/ai-track` 后再启动。\n\n本地也可以用以下命令确认新建但未暂存的文件是否能被 git 识别：\n\n```bash\ngit ls-files --others --exclude-standard\n```\n\n只要文件出现在该命令输出中，新版本 `ai-track` 就会将其按新增文件统计到 `addedLines`、`modifiedFiles` 和 `charactersAdded`。\n\n## 更新日志\n\n### 0.3.1\n\n#### 新增\n\n- 新增 `promptOptimizationRichText` 上报字段，会根据每次对话的原始 prompt 自动生成 Prompt 优化建议富文本。\n- 新增 `AI_TRACK_PROMPT_OPTIMIZATION_ENABLED` 环境变量，用于控制是否生成 Prompt 优化建议；关闭时会跳过生成逻辑，并通过 `promptOptimizationEnabled` 随 payload 上报开关状态。\n- 新增 `AI_TRACK_PROMPT_MAX_LENGTH` 和 `AI_TRACK_MODIFIED_FILES_LIMIT` 配置，用于限制 `promptNav` 和 `modifiedFiles` 的 payload 体积。\n- 新增 `packageVersion` 和 `capabilities` 上报字段，用于确认当前 MCP 服务运行版本及是否支持未跟踪文件统计。\n- `ai_track_start` 返回值也会包含 `packageVersion` 和 `capabilities`，用于在请求开始时确认当前 MCP 进程是否已经重启到最新版本。\n- Prompt 优化建议包含两部分内容：\n  - 当前 prompt 可以改进的地方\n  - 一版更清晰、可直接复用的优化后 prompt\n- 该字段在 `ai_track_finish` 和 `ai_track_prompt` 两种上报路径中都会自动生成，不影响主任务执行流程。\n- 新增 `src/utils/prompt.ts`，用于本地、确定性地生成 Prompt 优化建议 HTML 富文本。\n- 简化 Prompt 优化建议生成流程，限制建议条数和原始 prompt 嵌入长度，减少 `promptOptimizationRichText` 的 payload 体积和 token 消耗。\n- MCP 工具返回内容改为摘要模式，避免完整 payload 进入对话上下文；`dryRun` 仍返回完整 payload 便于调试。\n- 新增 `modifiedFileCount` 字段保留完整文件数量，同时允许 `modifiedFiles` 按配置截断。\n\n#### 更新\n\n- 更新 `TelemetryPayload` 类型，补充 `promptOptimizationRichText` 字段。\n- 更新 payload 构建流程，在每次 POST 埋点请求前自动生成 Prompt 优化建议。\n- 更新 README 的上报 payload 示例和字段说明。\n- 将 `changelog.md` 加入 npm 发布文件列表，便于使用方随包查看版本变更。\n\n#### 验证\n\n- 已通过 `npm run typecheck`。\n- 已通过 `npm run build`。\n\n### 0.2.1\n\n#### 修复\n\n- 修复 AI 新建文件并编写代码时，新增文件的代码行数没有被埋点上报统计的问题。\n- 原统计逻辑主要依赖 `git diff --numstat` 和 `git diff --unified=0`，只能覆盖已被 git 跟踪的文件变更；对于未执行 `git add` 的新文件，git diff 不会输出对应行数，导致上报 payload 中 `addedLines`、`modifiedFiles`、`charactersAdded` 漏统。\n\n#### 优化\n\n- `collectChangeStats` 现在会同时合并未暂存变更和已暂存变更：\n  - `git diff --numstat`\n  - `git diff --cached --numstat`\n  - `git diff --unified=0 --no-ext-diff`\n  - `git diff --cached --unified=0 --no-ext-diff`\n- 新增未跟踪文件统计逻辑，通过 `git ls-files --others --exclude-standard -z` 获取新建但未暂存的文件。\n- 对未跟踪文本文件按“新增文件”口径统计：\n  - `addedLines`：文件文本行数\n  - `deletedLines`：固定为 `0`\n  - `charactersAdded`：文本内容字符数，不包含换行符\n- 跳过二进制文件或不可读文件，避免将非代码资源错误计入代码行数。\n- 新增多份文件统计结果合并逻辑，避免已暂存和未暂存变更相互覆盖。\n\n#### 影响范围\n\n- `ai_track_finish` 在计算 start 到 finish 之间的代码变更时，可以正确统计 AI 新建文件产生的新增行数。\n- `ai_track_prompt` 如果使用显式传入的 `addedLines`、`modifiedFiles` 等字段，不受本次变更影响。\n- 已有原文件的新增、删除统计逻辑保持兼容。\n\n#### 验证\n\n- 已通过 `npm run typecheck`。\n- 已通过 `npm run build`。\n- 已验证未跟踪新文件不会出现在 `git diff --numstat` 中，但会出现在 `git ls-files --others --exclude-standard` 中，本次优化补齐了该统计来源。\n","readmeFilename":"README.md"}