{"_id":"@dengdai68/dundun-agent","_rev":"17-1f3e75a191ce030461533eb33fe329f0","name":"@dengdai68/dundun-agent","dist-tags":{"latest":"0.2.14"},"versions":{"0.1.0":{"name":"@dengdai68/dundun-agent","version":"0.1.0","_id":"@dengdai68/dundun-agent@0.1.0","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"c2219cf2aea26960c10a1faa1dc0233e4dab635e","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.1.0.tgz","fileCount":5,"integrity":"sha512-d/DmKBE5kPZaviEdiOkwsg6tomr/AGSveCfiM7U6RKHrsm0ogtIGxDB2BCv2OszQwFD/g0tPn5JU3QdwYFEmIA==","signatures":[{"sig":"MEYCIQDsqmEU4rZdkhQvMp/SORQqj3Mp70+8QLSp+ogSqEjISQIhAPmLj1Ou4rXKQFmaTGJOYUn25/8AotA9FItJbAbI3iZR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1467684},"type":"module","gitHead":"3e0e02fd7a75f32e6c6e35824f9667845caa9612","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.1.0_1780077315164_0.17764301216890677","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dengdai68/dundun-agent","version":"0.1.1","_id":"@dengdai68/dundun-agent@0.1.1","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"cae141bfb57fef97e98a8e9b9c67feb374f0fa8d","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.1.1.tgz","fileCount":5,"integrity":"sha512-AScTorQLz5e7Q30SDBYBJu+lfOYPvJHF92JOjTbXML7w0WMbSBeNvYseWV3ksr/8Yoa47YSwtBGyiNtSCjA8rw==","signatures":[{"sig":"MEQCIFj4WNFbLixrN8UE3K8JzklfvzFha33Eppqid/KN3zj6AiBXHLqtlRA8cts8YlGcAG6+KtIQoftAtXC24OhtZtjJJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1498853},"type":"module","gitHead":"4d55fd40bde653f9abe92d38cb5027114e83fbab","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.1.1_1780147526987_0.16091873510007448","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dengdai68/dundun-agent","version":"0.2.0","_id":"@dengdai68/dundun-agent@0.2.0","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"4ddee52775cc807a0788cddf9844c2e2aaf2b589","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.0.tgz","fileCount":9,"integrity":"sha512-nu9Lah9rjl4+G//X76XKmxlep5pwVpx2g4if+MxB8lW/uXCI8Tcxy2ap4YHhIJiuRlRHDxrE4cu1Iv8Z+Ymb1w==","signatures":[{"sig":"MEUCICqD/2IOrNcBYWFlX5aycx64lQ71OIqxxbFpVt3LI44LAiEA3YMUusIDMa9PEaUrfwngFonbD7FcDXJAlBTguCCTYn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1556939},"type":"module","gitHead":"d265f013134135d85903a618b8045a3340d84081","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.0_1780196384908_0.3601913092166329","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dengdai68/dundun-agent","version":"0.2.1","_id":"@dengdai68/dundun-agent@0.2.1","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"0d22724f8131c1650f527eb4b4bda4a2a9d90bc2","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.1.tgz","fileCount":21,"integrity":"sha512-YZmLJ+vKgpijm3YDByjh+ZY+fyyoj4QK61ci3LvasEV7O1kSqII5fbgF1Ymdy9Ag/5KB1Y11xpMiUVsNuiuwdw==","signatures":[{"sig":"MEQCIBhRtSk1PP8OCcpSLlxfQZ4spQJqPMHD+S26DE9UHeInAiAnyPh1YGzUUhVYZPbfCnaFBpH5hUZMQmnpuA0WyTG5sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1600184},"type":"module","gitHead":"b481a98d67f43bce1408dcb7c94f01028333a602","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.1_1780237235625_0.8449520043868377","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@dengdai68/dundun-agent","version":"0.2.2","_id":"@dengdai68/dundun-agent@0.2.2","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"7e4e8e274570cd0db886909aee60e496fea2b131","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.2.tgz","fileCount":21,"integrity":"sha512-YYdQrpsiGMr0oc+Ct9LyhUBEoItEPjXYfc39xwOyPdiWciUIzwcFV/45skXetj+3D0QuvFixHOe/aCQyqbdwZQ==","signatures":[{"sig":"MEUCIQDchEF3vwLKIh+hNgoDIFmDMfB6IsrNNR38BYtiaeIK5wIgdHOYMHtXQ1/ud+IOJj4c0YdfqTgd7V3vhenSFaP1S2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1608775},"type":"module","gitHead":"77ed1bc4f1a70c29e06f93609feed71c7ab87aca","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.2_1780284785114_0.26563660260974586","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@dengdai68/dundun-agent","version":"0.2.3","_id":"@dengdai68/dundun-agent@0.2.3","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"5f0ec26263051fae269bbf54fa14879f26f239bf","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.3.tgz","fileCount":33,"integrity":"sha512-a5p0HIrdwxtgUiLPFTCONK8pQBe6YfQs1YzqzE9/nkziVTivDuqJ3QfoNstt9VNbaOW93TsydK7+NKjbQEoMqQ==","signatures":[{"sig":"MEQCICdEtphdYrd26uU7OIIdC4CVvF/bCPPnIhtnAgouRv12AiBz3lQyf/+edRUl7g/pzjXlAa7NIJavpW/qahG53IO8Rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1658894},"type":"module","gitHead":"3d6fefd3d485f5d6248e12a690983200d8d671e3","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build && rm -rf assets && cp -R src/assets assets","postpack":"rm -rf assets","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.3_1780286204174_0.43069242631462457","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@dengdai68/dundun-agent","version":"0.2.4","_id":"@dengdai68/dundun-agent@0.2.4","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"10f31f6791e80a7e387fce8769c83a3287b22e23","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.4.tgz","fileCount":21,"integrity":"sha512-dQDfTYChGfxIRqCoNGufjwBPrW2ZhrzPujOQ7e8cqfSUp8tJTpj3a9zUY3XxfN1Kiqn4SA7DQq8aDlqpPlVgdw==","signatures":[{"sig":"MEUCIAJajEe9NZjeYRl0yIFh5RCFd1jfELsfhOzyDm01LPgnAiEAjy8bX18OoeJwZ0OBWqyDmNlf5EXP6bj4Emd+5yWVGfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1608807},"type":"module","gitHead":"4ec5e20c6b7e066a3a8459fa824aeff5619adfb2","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.4_1780300036319_0.7697108393432996","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@dengdai68/dundun-agent","version":"0.2.5","_id":"@dengdai68/dundun-agent@0.2.5","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"48cd20ca76922313fdeff4ce3c6325b03da1a15c","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.5.tgz","fileCount":21,"integrity":"sha512-Cp1kPe0T+ERh1crGxd7K/nwSrD8fMLQmUo+jWkbOEtsWji6VJgQfzxdGwOuEKWXgGoum/e3m9/kssSE9V68OlA==","signatures":[{"sig":"MEQCIHRoDOEetEYOZrtIWNhKq62n7oPtDwKF4pALGUi+rj2tAiA3pKGOwbesCttaCT+fuJ4/Aq+yUvvzIZZbhf7uVBqhtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1611327},"type":"module","gitHead":"4ec5e20c6b7e066a3a8459fa824aeff5619adfb2","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.5_1780304042855_0.17518522320857932","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@dengdai68/dundun-agent","version":"0.2.6","_id":"@dengdai68/dundun-agent@0.2.6","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"c811f5835bb359a3c3df49e59a98c8401c9f390d","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.6.tgz","fileCount":21,"integrity":"sha512-81eL8SCUJdbNeOKrKlx6u8zmHqf9EUrwhXfOBNpXhd9vtldrtPKKndmL1bOVUwJ8Jt60JCHe0GLNKlYgsdlhSg==","signatures":[{"sig":"MEUCIQD9iJasz/1W6Dn0/gGYR3/Ey0vCgBuTREdQ9LXIhghiQwIgOiQ7mOM0t2M5CRTZLddTR39rRshZBfuQWFSkGw0hXJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1613073},"type":"module","gitHead":"4ec5e20c6b7e066a3a8459fa824aeff5619adfb2","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.6_1780327472545_0.9594261799608779","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@dengdai68/dundun-agent","version":"0.2.7","_id":"@dengdai68/dundun-agent@0.2.7","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"46d7975dbe8a130ed54a57df87bf8494bfe1b284","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.7.tgz","fileCount":21,"integrity":"sha512-I3/g5JTfsQgRqjLjhdiuITmGZW2e0XYpn5ZwGS8LSiawvEUGuJM1Fpuw0S9QCkwJUS93/4v4ZfTUwGpnKBs0zQ==","signatures":[{"sig":"MEUCIQDiPtg7hbvtu1BeGWQbbmFX1NZgtOEec7BaOYWq1jrKqQIgNJxUzj3jSKd6qL/Frur75quA5j8qTCo/ekekGrycmug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1616259},"type":"module","gitHead":"4ec5e20c6b7e066a3a8459fa824aeff5619adfb2","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.7_1780328452828_0.45303513891510017","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@dengdai68/dundun-agent","version":"0.2.8","_id":"@dengdai68/dundun-agent@0.2.8","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"faf9cca86cf76ecd414ddd319d016e3cd1657621","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.8.tgz","fileCount":21,"integrity":"sha512-s3L4zzwIVsdgMDIdCz/e2ZiKWYqIvVC9SUEcGzGTiEcXdGTRuC+cf8YGikVA91hd6nnuXcsrLldgclIyZwhRGw==","signatures":[{"sig":"MEYCIQDWqm2uLl5iJWKw59eI35di2o3zTVHeNUqyg+/Hjot1DwIhANgs7lmBK8a189hPOYosM9HR7eALMqDtN42Fn7eYTPkC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1643200},"type":"module","gitHead":"4ec5e20c6b7e066a3a8459fa824aeff5619adfb2","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.8_1780334748606_0.7542544019541675","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@dengdai68/dundun-agent","version":"0.2.9","_id":"@dengdai68/dundun-agent@0.2.9","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"958f3607bd195fb56a236a77e9c98b33afa1f5e4","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.9.tgz","fileCount":21,"integrity":"sha512-r0Gqszfx4LNzEj6QopwyA9dx+4Y0TRUHYVOaN0JijOEUyxKcAfcX3dLspw1SEh+b8GCKEixHhkc20d0DAGuyww==","signatures":[{"sig":"MEYCIQCOCxmZeXro+m7lRal/oJV5GVjKg5NuZCYGmSYDXzW7xAIhAMH7AWjZHDf5WZFMoBFjpCZDbjUwSoGMPl1oQKaut87Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1643677},"type":"module","gitHead":"4ec5e20c6b7e066a3a8459fa824aeff5619adfb2","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.9_1780335369313_0.8718301189211339","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@dengdai68/dundun-agent","version":"0.2.10","_id":"@dengdai68/dundun-agent@0.2.10","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"0d52ace2ee1db7f9565b4342ee25f462038f769f","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.10.tgz","fileCount":21,"integrity":"sha512-K+QeaevydcD0O0pvY1/Gyxo1gHRZvlxseqWr2A72XKWvkew1TMt91ChLnBiNPmcvKUvd5N54eKaWwcvDhWwCyg==","signatures":[{"sig":"MEUCIQCQnyh2n83vVhm6r4MrsbGxOT/jLYzlLmI9oQZzN4+3WQIgI/sdeW22vpFgOCQcI+VFwdS0gCHQn/wwOrslZPWtCic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1657854},"type":"module","gitHead":"f8fa63c813a9baa4c2ef36558d0aa42757b2189a","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.10_1780420896232_0.6645107370883159","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@dengdai68/dundun-agent","version":"0.2.11","_id":"@dengdai68/dundun-agent@0.2.11","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"aff568a1b6ea0bd538b9ec6c6921d018c49b4b73","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.11.tgz","fileCount":21,"integrity":"sha512-/qI52jJ4F1tiqDviEQSb2KFF2SF5sjnuDn8rxpqNQxsQBhEFhhjCVKlzkLG5embuVKWpR3lFc76F/VH7ca5L3Q==","signatures":[{"sig":"MEQCIFjaHFlbAId0ur+3R9lwvcUsJ7oXrlo9PkDIA2RYKDq8AiBf6a2WTKIWl0C8p9COj9UKrYoGJ1jjlxZ46t0BOQHrgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1691462},"type":"module","gitHead":"12a3a0508e502f687326af4be438051d3dcf6995","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.11_1780595524489_0.9754107159990517","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@dengdai68/dundun-agent","version":"0.2.12","_id":"@dengdai68/dundun-agent@0.2.12","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"bbd5fd05016056ab8e5b0d59e08c887f81a33e36","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.12.tgz","fileCount":21,"integrity":"sha512-YesQdlVxckr6LLC1LuPh5u2DMjvR4lWSOwTetDUCC/p+y/YNOWwOdu1yRWvQqSk0FOKY7EkFt1BFDFD7oZwA+w==","signatures":[{"sig":"MEUCIQChHrk5KyKSY4KMV6+fuYRgjnYzDBxYpWvWSvrsWKZJmQIgTi07yNheLgjcVMJIldCCsGInSPOiIDQRf0Ab+85HWUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1693916},"type":"module","gitHead":"099bde95342e7648865583e288f5a661ec632f91","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.12_1780672233695_0.5048618565587517","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@dengdai68/dundun-agent","version":"0.2.13","_id":"@dengdai68/dundun-agent@0.2.13","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"bin":{"dundun":"dist/main.js"},"dist":{"shasum":"e97b64785b014ff01014e36d0dbb5c04f8643757","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.13.tgz","fileCount":21,"integrity":"sha512-eVUjtA3jaJtpEVzg9y4S+0gD8eClclBG0GLZf8o+pictHDcVXDiDbJcA3jsGf0bmzOhgAJ1u8D+/m703dCcQWQ==","signatures":[{"sig":"MEQCIHajf2QfGkbIQtY636WxuevJJMO2vtrp6IdL52x0iQ5CAiBebqWjRpazId2u8RCzDMxxZvYYohwhOPC2i8O4HGR81Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1702531},"type":"module","gitHead":"d691457bfa8940a8a8c7860eb1360b1614b3b452","scripts":{"dev":"tsx src/cli/main.ts","test":"vitest run","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"_npmVersion":"11.5.1","description":"Dundun Agent TypeScript rewrite","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ws":"^8.20.1","zod":"^4.1.13","openai":"^6.39.0","fastify":"^5.6.2","commander":"^14.0.2","fast-glob":"^3.3.3","@google/genai":"^2.6.0","@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^4.0.14","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/dundun-agent_0.2.13_1780838381136_0.9319110329265692","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@dengdai68/dundun-agent","version":"0.2.14","description":"Dundun Agent TypeScript rewrite","type":"module","bin":{"dundun":"dist/main.js"},"scripts":{"dev":"tsx src/cli/main.ts","build":"tsup src/cli/main.ts --format esm --dts --clean","prepack":"npm run build","test":"vitest run","typecheck":"tsc --noEmit"},"dependencies":{"@anthropic-ai/sdk":"^0.98.0","@fastify/websocket":"^11.0.2","@google/genai":"^2.6.0","@modelcontextprotocol/sdk":"^1.29.0","@vscode/ripgrep":"^1.18.0","commander":"^14.0.2","fast-glob":"^3.3.3","fastify":"^5.6.2","openai":"^6.39.0","ws":"^8.20.1","zod":"^4.1.13"},"devDependencies":{"@types/node":"^24.10.1","@types/ws":"^8.18.1","tsup":"^8.5.1","tsx":"^4.20.6","typescript":"^5.9.3","vitest":"^4.0.14"},"_id":"@dengdai68/dundun-agent@0.2.14","gitHead":"1b9b51dbc3ab40d259fc535e60b969dccedba9fb","_nodeVersion":"24.7.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-V3AhAw6JgMIOszT6nOJlM0gxJNJlfKJgw5USHeO3jnuEKBUwGcIOlyqHNQJ3kMaZhg4jWPyTIiwc+UEkbEoXzA==","shasum":"1726ac68ff3a675ef3129b5c9ea123f5a8a4cfd6","tarball":"https://registry.npmjs.org/@dengdai68/dundun-agent/-/dundun-agent-0.2.14.tgz","fileCount":21,"unpackedSize":1732823,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDSiceDO/pOI95AUxjpEtVHKjjRnPcBhSslURhDAT5MjgIhAPxHvu4S4PbpCRBhVk3ZZ3zo7gUjvVugx9FfYtZnUTtq"}]},"_npmUser":{"name":"dengdai68","email":"dengdai68@qq.com"},"directories":{},"maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dundun-agent_0.2.14_1781229795792_0.3181828163332501"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-29T17:55:14.949Z","modified":"2026-06-12T02:03:16.059Z","0.1.0":"2026-05-29T17:55:15.323Z","0.1.1":"2026-05-30T13:25:27.140Z","0.2.0":"2026-05-31T02:59:45.057Z","0.2.1":"2026-05-31T14:20:35.781Z","0.2.2":"2026-06-01T03:33:05.272Z","0.2.3":"2026-06-01T03:56:44.346Z","0.2.4":"2026-06-01T07:47:16.511Z","0.2.5":"2026-06-01T08:54:03.146Z","0.2.6":"2026-06-01T15:24:32.751Z","0.2.7":"2026-06-01T15:40:52.990Z","0.2.8":"2026-06-01T17:25:48.823Z","0.2.9":"2026-06-01T17:36:09.525Z","0.2.10":"2026-06-02T17:21:36.389Z","0.2.11":"2026-06-04T17:52:04.675Z","0.2.12":"2026-06-05T15:10:33.876Z","0.2.13":"2026-06-07T13:19:41.324Z","0.2.14":"2026-06-12T02:03:15.940Z"},"description":"Dundun Agent TypeScript rewrite","maintainers":[{"name":"dengdai68","email":"dengdai68@qq.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/node-%3E%3D24-brightgreen?style=flat&logo=node.js\" alt=\"Node\">\n  <img src=\"https://img.shields.io/badge/npm-0.0.0-blue?style=flat&logo=npm\" alt=\"npm\">\n  <img src=\"https://img.shields.io/badge/license-MIT-green?style=flat\" alt=\"License\">\n</p>\n\n# 🪨 Dundun Agent\n\n> *Solid as a rock, sharp as a blade.*\n\nTypeScript 实现的本地 AI Agent 运行时。提供终端 TUI、Fastify WebSocket 服务端、多模型 Provider、工具调用、权限管理、上下文压缩、会话持久化、记忆系统、Skill 插件与 MCP 扩展能力。\n\n---\n\n## 功能矩阵\n\n| 模块 | 能力 |\n|------|------|\n| **Terminal CLI** | 全功能 TUI：Markdown 渲染、流式输出、`/` 命令菜单、trace 详情页、交互式权限/澄清面板 |\n| **Server** | Fastify + WebSocket：`/health` 健康检查、`/ws` 双向消息协议（16 种消息类型） |\n| **Providers** | OpenAI / Anthropic / Minimax / Google Gemini / OpenAI-compatible（DeepSeek、Qwen、GLM 等） |\n| **Agents** | `general` · `build` · `plan` · `explore`，统一异步生成器运行时 |\n| **Tools** | 12 类内置工具（见下表），可扩展 MCP 工具 |\n| **Memory** | 三层记忆：SQLite 语义记忆 + Markdown file-backed + Skill 索引，反思侧车自动蒸馏 |\n| **Context Compression** | 工具输出裁剪 → 弱摘要 → 强摘要，基于 token 估算自动触发 |\n| **Permission** | glob 规则引擎，Allow / Deny / Ask + 规则持久化 |\n| **Persistence** | 兼容 Python 版布局：session / memory / plugin / log |\n| **Plugins** | 插件市场 + 本地/全局安装，支持 Git 源与本地路径 |\n| **MCP** | 完整 MCP 客户端，stdio + Streamable HTTP 双传输 |\n\n### 内置工具一览\n\n| 工具 | 说明 |\n|------|------|\n| `read` | 读取文件（文本/图片/PDF/Jupyter），支持行范围 |\n| `write` | 写入文件，自动创建目录 |\n| `edit` | 精确字符串替换（支持 replace_all） |\n| `glob` | 文件名 glob 匹配搜索 |\n| `grep` | 正则表达式代码搜索 |\n| `bash` | Shell 命令执行（带超时、风险等级、workspace 边界） |\n| `todowrite / todoread` | 任务列表管理 |\n| `clarify` | 歧义澄清，向用户提问 |\n| `skill` | 加载内置 Skill 到对话 |\n| `websearch` | 网页搜索 |\n| `webfetch` | 获取网页内容（size/type/redirect 限制） |\n| `codesearch` | Exa Code API 代码搜索 |\n| `task` | 启动子 Agent（explore / plan / general / build） |\n| `mcp` | MCP 工具代理调用 |\n| `lsp` | LSP documentSymbol / workspaceSymbol |\n| `maps_*` | 高德地图系列（地理编码/路径规划/周边搜索/天气/IP定位） |\n| `resolve-library-id / query-docs` | Context7 文档查询 |\n\n---\n\n## 快速开始\n\n### 环境要求\n\n- **Node.js ≥ 24**\n- **npm**\n\n```bash\ngit clone <repo>\ncd dundun_agent\nnpm install\n```\n\n### 运行模式\n\n```bash\n# 一体化模式（服务端 + Terminal CLI 同时启动）\nnpm run dev\n\n# 仅服务端\nnpm run dev -- --server-only --host 127.0.0.1 --port 8367\n\n# 仅客户端（连接已有服务端）\nnpm run dev -- --server 127.0.0.1:8367\n```\n\n### 全局安装\n\n```bash\nnpm run build\nnpm link                    # 注册为全局命令 dundun\ndundun --help               # 验证\n```\n\n---\n\n## CLI 参数\n\n```text\ndundun [options]\n\nOptions:\n  -s, --server <server>       服务端地址，如 localhost:8367\n      --server-only           只启动服务端（不启动客户端）\n  -c, --client <client>       客户端类型：cli | terminal | rocketchat | feishu | web\n      --trace-port <port>     Terminal CLI trace 详情页端口（默认 8377）\n      --web-port <port>       Web dev server 端口（默认 8110）\n      --web-host <host>       Web dev server host（默认 127.0.0.1）\n  -p, --port <port>           服务端端口（默认 8367）\n      --host <host>           服务端绑定地址（默认 0.0.0.0）\n  -d, --debug                 调试模式\n      --auto                  启动后直接进入自动权限模式\n  -a, --agent <agent>         外部 Agent 定义（可多次指定）\n      --mcp <mcp>             外部 MCP 服务器配置（JSON 字符串或文件路径）\n```\n\n---\n\n## 配置\n\n运行时配置读取 `~/.dundun/config.json`，模型选择写入 `~/.dundun/setting.json`。\n\n`api_key` 支持 `${ENV_NAME}` 环境变量展开。\n\n```json\n{\n  \"provider\": {\n    \"default\": \"minimax/MiniMax-M2.7\",\n    \"minimax\": {\n      \"type\": \"minimax\",\n      \"api_key\": \"${MINIMAX_API_KEY}\",\n      \"base_url\": \"https://api.minimax.io/v1\",\n      \"models\": [\"MiniMax-M2.7\", \"MiniMax-M2.7-highspeed\"],\n      \"context_window\": 204800\n    },\n    \"openai\": {\n      \"type\": \"openai\",\n      \"api_key\": \"${OPENAI_API_KEY}\",\n      \"models\": [\"gpt-5.4\"]\n    },\n    \"anthropic\": {\n      \"type\": \"anthropic\",\n      \"api_key\": \"${ANTHROPIC_API_KEY}\",\n      \"models\": [\"claude-opus-4-6\", \"claude-sonnet-4-6\"]\n    },\n    \"google\": {\n      \"type\": \"google\",\n      \"api_key\": \"${GOOGLE_API_KEY}\",\n      \"models\": [\"gemini-3.1-pro-preview\"]\n    }\n  }\n}\n```\n\n### 支持模型速查\n\n| Provider | 代表模型 | Context Window |\n|----------|---------|----------------|\n| OpenAI | gpt-5.4, gpt-5.3, gpt-5.2-codex | ~400K |\n| Anthropic | claude-opus-4-6, claude-sonnet-4-6 | 200K |\n| Minimax | MiniMax-M2.7, MiniMax-M2.7-highspeed | 204.8K |\n| Google | gemini-3.1-pro-preview, gemini-3-flash-preview | ~1M |\n| GLM | glm-5.1, glm-5, glm-4.7, glm-4.6 | 200K |\n| Qwen | qwen3.6-plus, qwen3.6-flash, qwen3-coder-plus | 256K~1M |\n| DeepSeek | deepseek-v4-flash, deepseek-v4-pro | 1M |\n\n---\n\n## 架构\n\n```\n                    ┌──────────────────────────────┐\n                    │        Terminal TUI           │\n                    │   (interactions/ rendering)   │\n                    └──────────────┬───────────────┘\n                                   │ WebSocket (msg types)\n                    ┌──────────────▼───────────────┐\n                    │      Fastify Server           │\n                    │   session mgr · msg router    │\n                    └──────────────┬───────────────┘\n                                   │\n        ┌──────────────┬───────────┼───────────┬──────────────┐\n        ▼              ▼           ▼           ▼              ▼\n   ┌─────────┐  ┌──────────┐ ┌────────┐ ┌─────────┐  ┌──────────┐\n   │Provider │  │  Agent   │ │Context │ │  Tools  │  │  Memory  │\n   │ layer   │  │ runtime  │ │compress│ │registry │  │  system  │\n   └─────────┘  └──────────┘ └────────┘ └─────────┘  └──────────┘\n        │              │                         │\n   ┌────┴────┐   ┌────┴────┐              ┌────┴────┐\n   │OpenAI   │   │general  │              │MCP      │\n   │Anthropic│   │build    │              │LSP      │\n   │Minimax  │   │plan     │              │Skill    │\n   │Google   │   │explore  │              │Plugin   │\n   │Compat.. │   └─────────┘              └─────────┘\n   └─────────┘\n```\n\n### 目录结构\n\n```\nsrc/\n├── cli/                    CLI 入口：参数解析、端口发现、启动编排\n├── server/                 Fastify/WebSocket 服务端\n│   ├── app.ts              服务创建、/health + /ws 路由\n│   ├── session.ts          Session 模型与模型工厂\n│   ├── session-manager.ts  Session 生命周期\n│   ├── websocket-handler.ts WebSocket 消息路由器（16 种消息类型）\n│   └── constants.ts        消息/事件枚举、Agent 类型常量\n├── providers/              模型 Provider 抽象层\n│   ├── base.ts             核心类型（Message, ToolCall, BaseModelClient）\n│   ├── factory.ts          客户端工厂 + 模型发现\n│   ├── models.ts           模型注册表 + Provider 推断\n│   ├── openai-client.ts    OpenAI / OpenAI-compatible\n│   ├── anthropic-client.ts Anthropic\n│   └── minimax-client.ts   Minimax\n├── agents/                 Agent 运行时\n│   ├── base-agent.ts       run() 异步生成器：工具循环、权限、doom loop\n│   └── index.ts            内置 Agent 类型注册\n├── context/                上下文管理\n│   ├── base-context.ts     CompressionResult 接口\n│   ├── compression.ts      摘要压缩逻辑\n│   └── default-context.ts  默认上下文实现\n├── tools/                  工具系统\n│   ├── registry.ts         工具注册与查找\n│   ├── base.ts             工具输出/错误类型\n│   ├── filesystem.ts       read/write/edit/glob/grep\n│   ├── system.ts           bash\n│   ├── todo.ts             todowrite/todoread\n│   ├── clarify.ts          澄清\n│   ├── skill.ts            Skill 加载\n│   ├── web.ts              websearch/webfetch\n│   ├── task.ts             Task 子 Agent\n│   ├── mcp.ts              MCP 工具代理\n│   ├── lsp.ts              LSP 符号查询\n│   └── truncation.ts       工具输出裁剪\n├── core/                   核心模块\n│   ├── config.ts           配置加载\n│   ├── logger.ts           日志\n│   ├── paths.ts            数据目录布局\n│   ├── permission.ts       权限引擎（glob 规则）\n│   ├── permission-config.ts 权限配置\n│   ├── plugin-config.ts    插件安装路径\n│   ├── plugin-importer.ts  插件导入器\n│   ├── plugin-marketplace.ts 插件市场\n│   ├── session-store.ts    会话持久化\n│   ├── interaction.ts      交互类型枚举\n│   └── memory/             记忆子系统\n│       ├── file-memory.ts / markdown-file.ts  File-backed 记忆\n│       ├── sqlite-store.ts  SQLite 语义记忆\n│       ├── service.ts      记忆服务（检索/注入/蒸馏）\n│       ├── skill-index.ts  Skill 索引\n│       ├── policy.ts       记忆策略\n│       └── models.ts       记忆数据模型\n└── integrations/           客户端集成\n    └── terminal-cli/       Terminal TUI（状态机、渲染、trace）\n```\n\n---\n\n## 数据目录\n\n默认路径 `~/.dundun/`：\n\n```\n~/.dundun/\n├── config.json              Provider 与运行时配置\n├── setting.json             默认模型、推理强度等用户设置\n├── user.md                  User file-backed memory\n├── tools.json               MCP 服务器连接状态\n├── projects/<id>/\n│   ├── sessions/            会话元数据与上下文\n│   └── memory.md            Project file-backed memory\n├── sqlite/                  SQLite 语义记忆 & 事件日志\n├── logs/                    运行日志\n└── plugins/                 本地插件安装目录\n```\n\n---\n\n## MCP 配置\n\n在 `~/.dundun/tools.json` 中配置外部 MCP 服务器：\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/tmp\"],\n      \"type\": \"stdio\"\n    },\n    \"exa\": {\n      \"url\": \"https://api.exa.ai/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${EXA_API_KEY}\" },\n      \"type\": \"streamableHttp\"\n    }\n  }\n}\n```\n\n---\n\n## 插件\n\n```bash\n# 从插件市场安装\n# （通过 Agent 对话自然触发，或直接修改 ~/.dundun/plugins/）\n\n# 插件源支持\n# - Git 仓库\n# - 本地路径\n# - NPM 包\n```\n\n---\n\n## 脚本速查\n\n| 命令 | 说明 |\n|------|------|\n| `npm run dev` | 一体化开发模式 |\n| `npm run build` | tsup 构建 → `dist/` |\n| `npm run typecheck` | TypeScript 类型检查 |\n| `npm test` | Vitest 运行全部测试 |\n| `npm link` | 全局注册 `dundun` 命令 |\n\n---\n\n## License\n\nApache 2.0\n\n--- ADDITIONAL TERMS ----\nFor commercial use of this software (including but not limited to integration into SaaS platforms or resale as part of a product), a separate commercial license is required. Please contact [Your Email/Company] for licensing options.\n","readmeFilename":"README.md"}