{"_id":"@boay/aibo","_rev":"10-6ddcb4746bcfac0560ccf064c60ea9b6","name":"@boay/aibo","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.0":{"name":"@boay/aibo","version":"1.0.0","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.0","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"a3e5e7a5066d935abcc7d08081dd41ae5c663a97","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.0.tgz","fileCount":663,"integrity":"sha512-aIKya+9fZzu15XKzSbe1FzItVoD/cqF9VWO9/koKUbFoMGe89gXgWQNj3hlmbheXx8DExKGXIn86UUQK5f94fA==","signatures":[{"sig":"MEUCIQCKZgat9jTKdXDRZ8HlyF2OcQ/r4OiJTY3HkCbFiPs7vwIgK9M2eQtD8dQSvUZgPSbjweyAai4l2eNrEi/vkDVqVNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11089743},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a099c2674e2715395ef83fd4b2b9527347875414","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","publish":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","puppeteer":"^24.37.2","deepagents":"^1.7.2","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","puppeteer-extra":"^3.3.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","puppeteer-extra-plugin-stealth":"^2.11.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0","@types/puppeteer":"^5.4.7","typescript-language-server":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.0_1772299395229_0.4172309174093174","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@boay/aibo","version":"1.0.1","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.1","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"0ef07bfbd3d7ca449ea953527adf0fcaad115670","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.1.tgz","fileCount":664,"integrity":"sha512-mH1+VDcJvc6KbEXuHGUyM9rzpPH9SbxdpUPOECjDFCBCaqkPb9VLe5N5ZsT1oB1YXx2xx4X4vKr9NuGEgEYeaQ==","signatures":[{"sig":"MEUCIAo3ryKzL8cWW4L93CgNYAXjePly/BEZZ9NPzC8hKfEnAiEAgmTseqVoLLT9jn3UI9uAjQHG0bJXhM7JjSZwumtLlQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11148472},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ea6ce195d4c5826d55c21de5144265731b6201d6","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","publish":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","deepagents":"^1.7.2","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.1_1772371591421_0.8144202232233753","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@boay/aibo","version":"1.0.2","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.2","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"58368d086d0851a9cafc771168594ff9b948943e","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.2.tgz","fileCount":665,"integrity":"sha512-ooQz6Y2N0hPPvGHa0eh6TmaxK+9eTSH029G20AjzyxPGq1tQhvBcUA4Q72AbKO2N4z+aZ9kcc9h+LE4UL6SBvA==","signatures":[{"sig":"MEUCIFZddczMK6uTZ/LrTM20FJMt4A2V4x8/x/UpmNdV5nNSAiEA3g0c1DFYsAhBgcV6NKj3ySgJoD7diAVzzKF1/OoHke8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11155410},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3e041b1fe93084a90184f08a89bbe36d78ab52e6","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","deepagents":"^1.7.2","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.2_1772374060837_0.518486721119356","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@boay/aibo","version":"1.0.3","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.3","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"26e5bbd9e30c299f21e2d1b33e3a20c99d77dfac","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.3.tgz","fileCount":665,"integrity":"sha512-jgahzWsOUHGlhYufp5wfnzJL1BgG+1uhoyzXkYgLilqSNUGqAm3Fad0Q9j5qz4FuNXMTFxaY9z9yYL3f6W0XUQ==","signatures":[{"sig":"MEYCIQCIQdaHpUZDVkgUifQ95tNsIFwISz7tFzgI549vX3wIaQIhAOe6mp4YeiHOlK0UeNVGp2HI7BIDR5bnWlazIumAWrYE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11153813},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a0402276aec8abd84500a0f4f2591a348223f206","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","deepagents":"^1.7.2","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.3_1772375741649_0.4128425207203199","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@boay/aibo","version":"1.0.4","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.4","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"3058565a69357608966f030ff497d1c2a09b01cf","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.4.tgz","fileCount":668,"integrity":"sha512-7PXnncsEnKY58lMM7zlcTK8KKPbHzc38JOeJC4XAbU+2hXaXilvY9l4nRy89tOq+32/KT1dS8us7qnB6PnNSoA==","signatures":[{"sig":"MEQCICbmMr+bhXtQheQ/6T5byx9Eg3csMoNizSPp3of0FBtZAiBcWwSFqOB5c/i7SCOYyiwhTrZWeAf9D7PoOyNYeS1QHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11138082},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2259aa2662f023496df37e38504d6db0d8e89593","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","deepagents":"^1.7.2","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.4_1772428533140_0.2958616184600049","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@boay/aibo","version":"1.0.5","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.5","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"6b3a6910ca5c7156499de6a7c075a8c688b6ad5d","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.5.tgz","fileCount":671,"integrity":"sha512-tEXWFrycRR4f4ZDhu0K71+W81Nj8ghzz/Nmou0Fomf73WEGZKM7YHdnTNCvlyA+X37YxuaVROHGQt3y7l9fPeg==","signatures":[{"sig":"MEQCICPklwN0/l6EwktqI5hbjvWWoK39iRKR+Muot5majyz+AiB94RFB5vxGoWiX4j9OC/31gMABYQVgIUYDFQHvi1HiRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11179950},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7c4db888df8809bf0cdb71de51663f02756080a5","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","deepagents":"^1.7.2","playwright":"^1.55.1","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.5_1772461789524_0.791950747651464","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@boay/aibo","version":"1.0.6","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.6","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"f33a9e0ea9fa18d98590c03fb3d185a2a4b25369","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.6.tgz","fileCount":680,"integrity":"sha512-WifP+LfHDbTOlHDaL+bThCqrt8VaB614jw748JHXgUmKhQ47ueHil3H8x8F8oVx0vy1skTn9XIcTfqKENXRuIQ==","signatures":[{"sig":"MEYCIQDydjr9BkMc4hv0+ezUKZPO55aQu9ZRtoX+1pRoKfJabwIhAKxASJ5a+/CXfiuQY4GjADDLomFYmVbmd2u/klDHXBVB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11242827},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3ba5b0e028bf72a04e67b18db3c68a7ff2a55a28","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false --forceExit","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage --forceExit","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","socket.io":"^4.8.3","deepagents":"^1.7.2","playwright":"^1.55.1","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","socket.io-client":"^4.8.3","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.6_1772681461915_0.17767915299883308","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@boay/aibo","version":"1.0.7","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.7","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"de64c001a2ffcdb3ddb8b39c47850c5e47ffa3e3","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.7.tgz","fileCount":680,"integrity":"sha512-+VEfOIVSy+fRt0Bn5ziuSB+H7A44vTw1A2tB0q0QnQTXlODst2mBv4cunFu2RGJUtGYFk7g/8amS1EFKtVIK1w==","signatures":[{"sig":"MEQCIFTEHyLvMZpQY0G5gW1z/aqn+snpeMIeViVvXNxXOXInAiAa/WRvRm2bMirFa9dZtvk3hiYGgR3J+kifXbYJ40F3pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11253096},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"82cd9620d9215f82843c8d8cbafc9665afc3aab0","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false --forceExit","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage --forceExit","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","socket.io":"^4.8.3","deepagents":"^1.7.2","playwright":"^1.55.1","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","socket.io-client":"^4.8.3","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.7_1772731786726_0.6760721773335394","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@boay/aibo","version":"1.0.8","author":{"name":"xiaoshuang"},"license":"ISC","_id":"@boay/aibo@1.0.8","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"homepage":"https://github.com/xiaoshuangLi/aibo#readme","bugs":{"url":"https://github.com/xiaoshuangLi/aibo/issues"},"bin":{"aibo":"bin/index.js"},"dist":{"shasum":"7577ab1ad478deb7de8516571c09a87e9e2cd305","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.8.tgz","fileCount":678,"integrity":"sha512-oU0vndVNvKer10XvgBP/FDXZ+RbrVp/O+u1/IRBIabKwivVilsk6TorzKZgDhARQgT10ORnZFX5mVmkEgteNkw==","signatures":[{"sig":"MEUCIQC2V0qq68LQ7ZcPCSeNWSuDxGD8edw2WL2yUDqsU7rZlAIgC5xPa23g0wDEdgcjfhB/vDJK//u3f+xVI2Ll6OPoMFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11333785},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9a35c92d91613c1462a004dcbfdbe000e1933538","scripts":{"dev":"ts-node -r tsconfig-paths/register src/main.ts","test":"jest --verbose=false --forceExit","build":"rm -rf dist && tsc && tsc-alias","start":"node dist/main.js","prepare":"husky","release":"npm publish --access public","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","start:lark":"AIBO_INTERACTION=lark node dist/main.js","test:watch":"jest --verbose=false --watch","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","start:console":"AIBO_INTERACTION=console node dist/main.js","test:coverage":"jest --verbose=false --coverage --forceExit","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect --experimental-network-inspection -r ts-node/register -r tsconfig-paths/register src/main.ts"},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"repository":{"url":"git+https://github.com/xiaoshuangLi/aibo.git","type":"git"},"_npmVersion":"10.9.4","description":"AI bot with DeepAgents","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","glob":"^11.1.0","axios":"^1.13.5","dotenv":"^17.2.4","js-yaml":"^4.1.1","turndown":"^7.2.2","commander":"^9.5.0","langchain":"^1.2.18","socket.io":"^4.8.3","deepagents":"^1.8.3","playwright":"^1.55.1","tree-sitter":"^0.21.1","@composio/core":"^0.6.3","@langchain/core":"^1.1.19","@langchain/groq":"^1.1.3","@types/turndown":"^5.0.6","socket.io-client":"^4.8.3","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","node-record-lpcm16":"^1.0.1","@langchain/anthropic":"^1.3.15","@langchain/langgraph":"^1.1.4","@langchain/mistralai":"^1.0.6","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","@langchain/google-genai":"^2.1.21","@langchain/mcp-adapters":"^1.1.3","@larksuiteoapi/node-sdk":"^1.59.0","tencentcloud-sdk-nodejs":"^4.1.186","typescript-language-server":"^5.1.3","@langchain/langgraph-checkpoint":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","ts-jest":"^29.4.6","ts-node":"^10.9.2","@types/ws":"^8.18.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.2","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/aibo_1.0.8_1774028149481_0.8648000278212997","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@boay/aibo","version":"1.0.9","description":"AI bot with DeepAgents","main":"dist/index.js","types":"dist/index.d.ts","bin":{"aibo":"bin/index.js"},"repository":{"type":"git","url":"git+https://github.com/xiaoshuangLi/aibo.git"},"scripts":{"build":"rm -rf dist && tsc && tsc-alias","test":"jest --verbose=false --forceExit","test:watch":"jest --verbose=false --watch","test:coverage":"jest --verbose=false --coverage --forceExit","start":"node dist/main.js","start:console":"AIBO_INTERACTION=console node dist/main.js","start:lark":"AIBO_INTERACTION=lark node dist/main.js","dev":"ts-node -r tsconfig-paths/register src/main.ts","dev:console":"AIBO_INTERACTION=console ts-node -r tsconfig-paths/register src/main.ts","dev:lark":"AIBO_INTERACTION=lark ts-node -r tsconfig-paths/register src/main.ts","dev:lark-inspect":"AIBO_INTERACTION=lark node --inspect --experimental-network-inspection -r ts-node/register -r tsconfig-paths/register src/main.ts","prepare":"husky","release":"npm publish --access public"},"author":{"name":"xiaoshuang"},"license":"ISC","dependencies":{"@composio/core":"^0.6.3","@langchain/anthropic":"^1.3.15","@langchain/core":"^1.1.19","@langchain/google-genai":"^2.1.21","@langchain/groq":"^1.1.3","@langchain/langgraph":"^1.1.4","@langchain/langgraph-checkpoint":"^1.0.0","@langchain/mcp-adapters":"^1.1.3","@langchain/mistralai":"^1.0.6","@langchain/ollama":"^1.2.5","@langchain/openai":"^1.2.5","@langchain/tavily":"^1.2.0","@larksuiteoapi/node-sdk":"^1.59.0","@nut-tree-fork/nut-js":"^4.2.6","@types/turndown":"^5.0.6","axios":"^1.13.5","commander":"^9.5.0","deepagents":"^1.8.3","dotenv":"^17.2.4","glob":"^11.1.0","js-yaml":"^4.1.1","langchain":"^1.2.18","node-record-lpcm16":"^1.0.1","playwright":"^1.55.1","screenshot-desktop":"^1.15.3","sharp":"^0.34.5","socket.io":"^4.8.3","socket.io-client":"^4.8.3","tencentcloud-sdk-nodejs":"^4.1.186","tree-sitter":"^0.21.1","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.23.2","turndown":"^7.2.2","typescript-language-server":"^5.1.3","zod":"^4.3.6"},"devDependencies":{"@types/jest":"^30.0.0","@types/js-yaml":"^4.0.9","@types/node":"^25.2.2","@types/screenshot-desktop":"^1.15.0","@types/ws":"^8.18.1","husky":"^9.1.7","jest":"^30.2.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","tsc-alias":"^1.8.16","tsconfig-paths":"^4.2.0","typescript":"^5.9.3"},"_id":"@boay/aibo@1.0.9","gitHead":"b22a23c224ad696674b5554ef931ada4e1788c5a","bugs":{"url":"https://github.com/xiaoshuangLi/aibo/issues"},"homepage":"https://github.com/xiaoshuangLi/aibo#readme","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-Dqp8MyVGt82kQ0fM1QnIElMRyK1y7NrqOGPdlQxedL8yN4lKGCvnx/MnU2qzTWW7sVoVTrBF8lRuK+MgEHQktg==","shasum":"d511a2f7a1a68a614d4e7f761b299b7443e34eef","tarball":"https://registry.npmjs.org/@boay/aibo/-/aibo-1.0.9.tgz","fileCount":682,"unpackedSize":11415456,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBRSk11+HZU8sR4BP7dxtAkjOON0qJJZXHHS3xptW5HGAiAW//DXY+WYKyHDAQbYP2e4N9pA4kTD4PVeWty0/8ey4A=="}]},"_npmUser":{"name":"xiaoshuang","email":"1157502759@qq.com"},"directories":{},"maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aibo_1.0.9_1775891185582_0.06046827398915999"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-28T17:23:15.128Z","modified":"2026-04-11T07:06:26.037Z","1.0.0":"2026-02-28T17:23:15.515Z","1.0.1":"2026-03-01T13:26:31.767Z","1.0.2":"2026-03-01T14:07:41.185Z","1.0.3":"2026-03-01T14:35:41.951Z","1.0.4":"2026-03-02T05:15:33.428Z","1.0.5":"2026-03-02T14:29:49.801Z","1.0.6":"2026-03-05T03:31:02.320Z","1.0.7":"2026-03-05T17:29:47.051Z","1.0.8":"2026-03-20T17:35:49.787Z","1.0.9":"2026-04-11T07:06:25.902Z"},"bugs":{"url":"https://github.com/xiaoshuangLi/aibo/issues"},"author":{"name":"xiaoshuang"},"license":"ISC","homepage":"https://github.com/xiaoshuangLi/aibo#readme","repository":{"type":"git","url":"git+https://github.com/xiaoshuangLi/aibo.git"},"description":"AI bot with DeepAgents","maintainers":[{"name":"xiaoshuang","email":"1157502759@qq.com"}],"readme":"# 🤖 AIBO - 高级多智能体自主编程AI助手\n\n一款基于多智能体架构的自主编程 AI 助手，支持终端和飞书两种交互方式，可接入主流 AI 模型服务。\n\n## ✨ 功能特性\n\n- 🧠 **自主编程**: 跨语言编写、修改、调试和优化代码，具备完整的本地文件系统访问能力\n- 🔌 **多模型支持**: 兼容 OpenAI、Anthropic Claude、Google Gemini、Mistral、Groq、Ollama、Azure OpenAI 及任意 OpenAI 兼容接口\n- 🤝 **多智能体协作**: 内置 15  个专业 Agent（协调者、架构师、编码者、测试者等），支持并行任务分解与执行\n- 🛠️ **技能扩展（Skills）**: 通过 `skills/` 目录扩展 AI 的专项能力，内置 45+ 技能（代码审查、CI/CD、前端开发、整理代码等）\n- 📄 **项目上下文配置（AIBO.md）**: 支持在项目根目录创建 `AIBO.md` 文件，提供持久化的项目级指令和上下文，适用于所有会话\n- 🔗 **MCP 工具集成**: 通过 `mcps/` 目录接入 GitHub、Slack 等外部服务，扩展 AI 工具调用范围\n- 🖥️ **本机 CLI 工具集成**: 自动检测并调用本机已安装的编程 CLI 工具（Claude Code、Gemini CLI、Codex、Cursor、GitHub Copilot），将编码子任务委派给这些工具执行\n- 🔗 **ACP 协议支持**: 通过统一的 ACP (Agent Client Protocol) 协议调用 13+ 种 AI 编码代理，支持持久化会话、命名并行会话、会话暂停/恢复\n- 🌐 **浏览器自动化**: 内置 Playwright 浏览器自动化工具集，支持网页导航、交互、内容提取、截图和自动化测试\n- 🖼️ **图像处理**: 支持读取和分析本地图像文件（JPEG、PNG、GIF、WebP），可与视觉模型集成进行图像识别和分析\n- 🏢 **飞书企业集成**: 作为飞书机器人接入企业群/私聊，支持互动卡片消息、图像消息和 `/rebot` 重启命令\n- 🎙️ **语音输入**: 通过腾讯云 ASR 实现实时语音转文字输入（需配置腾讯云密钥）\n- 🌐 **网页搜索与抓取**: 内置 Web 搜索和网页内容获取能力，辅助信息收集与研究\n- 🌍 **中英双语**: 支持中文和英文系统提示，可通过 `AIBO_LANGUAGE` 切换\n\n## 🚀 快速开始\n\n### 📋 先决条件\n- Node.js 18+\n\n### 📦 全局安装\n\n```bash\nnpm install -g @boay/aibo\n```\n\n### ⚙️ 配置\n\n在任意工作目录创建 `.env` 文件，至少填写 AI 模型相关配置：\n\n```dotenv\n# 必填：AI 模型（以 OpenAI 为例）\nAIBO_API_KEY=sk-...\nAIBO_MODEL_NAME=gpt-4o\n\n# 可选：语言（zh / en，默认 en）\nAIBO_LANGUAGE=zh\n```\n\n完整变量说明请参阅 **[docs/env.md](docs/env.md)**。\n\n### 📄 项目上下文配置（AIBO.md）\n\n在项目根目录创建 `AIBO.md` 文件，可以为 AIBO 提供持久化的项目级指令和上下文。该文件内容会在每次会话启动时自动加载，适用于所有交互场景。\n\n```markdown\n# AIBO.md\n你是一个专业的前端开发助手，专注于 React 和 TypeScript 项目。\n- 优先使用函数组件和 hooks\n- 代码必须包含完整的类型定义\n- 遵循项目的 ESLint 规则\n```\n\n> 💡 **提示**：`AIBO.md` 文件支持 Markdown 格式，可以包含项目架构、编码规范、技术栈说明等任何有助于 AI 理解项目上下文的信息。\n\n### 🖼️ 图像处理功能\n\nAIBO 现在支持读取和分析本地图像文件，包括 JPEG、PNG、GIF 和 WebP 格式。\n\n#### 终端模式图像处理\n在终端交互模式下，您可以直接要求 AIBO 分析本地图像：\n\n```bash\n# 启动 AIBO\naibo\n\n# 在对话中要求分析图像\n用户: \"分析这张图片中的内容\"\n用户: \"请描述 images/example.jpg 文件\"\n```\n\nAIBO 会自动调用 `read-image` 工具读取指定的图像文件，并将其转换为 Base64 编码供视觉模型分析。\n\n#### 飞书模式图像处理\n在飞书集成模式下，您可以：\n- 直接在飞书聊天中发送图像文件\n- AIBO 会自动接收并分析图像内容\n- 支持基于图像内容的多轮对话\n\n> 💡 **提示**：图像处理功能需要视觉能力的 AI 模型（如 GPT-4o、Claude 3.5 Sonnet 等）才能提供最佳的分析效果。\n\n### 🖥️ 使用场景\n\n#### 场景一：终端交互模式\n\n适合本地开发、日常编程辅助。\n\n```bash\naibo\n# 或显式指定\naibo --mode=console\n```\n\n启动后直接在终端与 AIBO 对话，输入任务描述即可。\n\n##### 📋 内部命令\n在终端交互模式下，支持以下内部命令：\n\n| 命令 | 说明 |\n|------|------|\n| `/help` | 显示帮助信息和可用命令列表 |\n| `/abort` | 中断当前正在执行的操作 |\n| `/session` | 查看会话元数据统计信息（模型使用量、Token 消耗等） |\n| `/verbose` | 切换详细/简洁输出模式 |\n| `/new` | 开始新会话（清除对话历史） |\n| `/compact` | 压缩对话历史（保留知识库，释放上下文） |\n| `/voice` | 启动语音输入（5秒录音） |\n| `/rebot` | 重启并重新构建 |\n\n> 💡 **提示**：在飞书模式下，同样支持这些内部命令，通过在飞书聊天中输入相应命令即可使用。\n\n#### 场景二：飞书机器人模式\n\n适合企业团队，通过飞书群聊或私聊与 AIBO 交互。\n\n在 `.env` 中额外配置飞书应用信息（详见 **[docs/env.md — Lark 飞书配置](docs/env.md#lark-飞书配置)**）：\n\n```dotenv\nAIBO_LARK_APP_ID=cli_xxxxxxxxxxxxxxxx\nAIBO_LARK_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n配置完成后启动：\n\n```bash\naibo\n# 或显式指定\naibo --mode=lark\n```\n\n> 💡 当 `AIBO_LARK_APP_ID`、`AIBO_LARK_APP_SECRET`、`AIBO_LARK_RECEIVE_ID`、`AIBO_LARK_INTERACTIVE_TEMPLATE_ID` 四个变量均已配置时，`aibo` 默认以飞书模式启动。\n\n#### 场景三：语音输入模式\n\n在终端交互模式下，额外配置腾讯云 ASR 密钥后可直接通过麦克风语音输入：\n\n```dotenv\nAIBO_TENCENTCLOUD_APP_ID=1234567890\nAIBO_TENCENTCLOUD_SECRET_ID=AKIDxxxxxxxxxxxxxxxx\nAIBO_TENCENTCLOUD_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n### 🖥️ 命令行参数\n\n`aibo` 命令支持以下参数：\n\n| 参数 | 说明 | 可选值 | 默认值 |\n|------|------|--------|--------|\n| `--version` | 输出当前版本号 | - | - |\n| `--mode <mode>` | 指定交互模式 | `console` \\| `lark` | 自动检测（有 Lark 配置时为 `lark`，否则为 `console`） |\n| `--type <type>` | 指定飞书交互类型（仅 `--mode=lark` 生效） | `user_chat` \\| `group_chat` | `user_chat` |\n\n示例：\n\n```bash\n# 强制使用终端模式\naibo --mode=console\n\n# 强制使用飞书模式\naibo --mode=lark\n\n# 飞书群聊模式\naibo --mode=lark --type=group_chat\n\n# 也可以通过子命令方式调用\naibo interact --mode=lark --type=group_chat\n```\n\n### 🔧 本地开发\n\n```bash\ngit clone https://github.com/xiaoshuangLi/aibo.git\ncd aibo\nnpm install\ncp .env.example .env  # 按需编辑\n\n# 终端模式\nnpm run dev\n\n# 飞书模式\nnpm run dev:lark\n\n# 构建\nnpm run build\n\n# 测试\nnpm test\n```\n\n---\n\n## 🔌 对接 AI 模型\n\nAIBO 支持市面上主流的 AI 模型服务商，只需在 `.env` 中配置对应的 API Key 和模型名称即可。\n\n### 🟣 Anthropic Claude（推荐）\n\nClaude 是 Anthropic 开发的高性能大语言模型，在编程和推理任务上表现出色。\n\n```dotenv\nAIBO_API_KEY=sk-ant-api03-...\nAIBO_MODEL_NAME=claude-opus-4-5\n# 也可以使用其他 Claude 版本：\n# AIBO_MODEL_NAME=claude-3-5-sonnet-20241022\n# AIBO_MODEL_NAME=claude-3-5-haiku-20241022\n```\n\n> 🔑 **获取 API Key**：访问 [https://console.anthropic.com](https://console.anthropic.com) → Settings → API Keys → Create Key\n\n### 🟢 OpenAI GPT\n\n```dotenv\nAIBO_API_KEY=sk-...\nAIBO_MODEL_NAME=gpt-4o\n# 其他可选模型：gpt-4o-mini、o1、o3-mini\n```\n\n> 🔑 **获取 API Key**：访问 [https://platform.openai.com](https://platform.openai.com) → API keys → Create new secret key\n\n### 🔵 Google Gemini\n\n```dotenv\nAIBO_API_KEY=AIzaSy-...\nAIBO_MODEL_NAME=gemini-2.0-flash\n# 其他可选模型：gemini-2.0-pro、gemini-1.5-flash\n```\n\n> 🔑 **获取 API Key**：访问 [https://aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey)\n\n### 🟡 Groq（超高速推理）\n\n```dotenv\nAIBO_API_KEY=gsk_...\nAIBO_MODEL_NAME=llama-3.3-70b-versatile\nAIBO_MODEL_PROVIDER=groq\n```\n\n> 🔑 **获取 API Key**：访问 [https://console.groq.com](https://console.groq.com) → API Keys\n\n### 🟠 Mistral\n\n```dotenv\nAIBO_API_KEY=...\nAIBO_MODEL_NAME=mistral-large-latest\n```\n\n### 🏠 Ollama（本地部署，完全免费）\n\n无需 API Key，在本地运行开源模型，保护数据隐私。\n\n```dotenv\nAIBO_BASE_URL=http://localhost:11434\nAIBO_MODEL_NAME=llama3\nAIBO_MODEL_PROVIDER=ollama\n```\n\n> 💻 **安装 Ollama**：访问 [https://ollama.com](https://ollama.com) 下载，然后执行 `ollama pull llama3`\n\n### ☁️ Azure OpenAI\n\n```dotenv\nAIBO_API_KEY=...\nAIBO_BASE_URL=https://<your-instance>.openai.azure.com\nAIBO_MODEL_NAME=<your-deployment-name>\nAIBO_MODEL_PROVIDER=azure\nAIBO_AZURE_API_VERSION=2024-02-15-preview\n```\n\n### 🇨🇳 国产模型（DeepSeek、Qwen 等 OpenAI 兼容接口）\n\n```dotenv\n# DeepSeek\nAIBO_API_KEY=...\nAIBO_BASE_URL=https://api.deepseek.com\nAIBO_MODEL_NAME=deepseek-chat\n\n# 阿里云百炼（Qwen）\nAIBO_API_KEY=...\nAIBO_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nAIBO_MODEL_NAME=qwen-max\n```\n\n---\n\n## 🤝 多智能体系统（Agents）\n\nAIBO 内置了 15 个专业 Agent，通过多智能体协作完成复杂任务。这些 Agent 定义在 `agents/` 目录中，每个 Agent 拥有独立的专业能力和职责边界。\n\n| 🤖 Agent | 职责 |\n|----------|------|\n| 🎯 `coordinator` | **协调者** — 任务分解、多 Agent 调度、依赖管理 |\n| 🏗️ `architect` | **架构师** — 系统设计、技术选型、架构评审 |\n| 💻 `coder` | **编码者** — 功能实现、Bug 修复、代码重构 |\n| 🧪 `testing` | **测试工程师** — 测试用例编写、自动化测试 |\n| ✅ `validator` | **验证者** — 代码质量验证、规范检查 |\n| 🔐 `security` | **安全专家** — 安全漏洞扫描、安全加固建议 |\n| ⚡ `performance` | **性能工程师** — 性能分析、优化方案 |\n| 🚀 `devops` | **DevOps 工程师** — CI/CD、部署、运维 |\n| 📖 `documentation` | **文档工程师** — 文档撰写、API 文档生成 |\n| 🔬 `researcher` | **研究员** — 技术调研、方案比较、信息收集 |\n| 🔄 `refactoring` | **重构专家** — 代码重构、技术债务清理 |\n| 💡 `innovator` | **创新者** — 创意方案、新技术探索 |\n| 📊 `data-analyst` | **数据分析师** — 数据处理、可视化方案 |\n| ✏️ `prompt_engineer` | **提示词工程师** — Prompt 优化、AI 交互设计 |\n| 🌐 `nexus` | **枢纽** — 跨 Agent 信息整合与汇报 |\n\n**📁 自定义 Agent**：在 `agents/` 目录下新建 Markdown 文件，按照现有格式定义 Agent 的名称、描述和能力，即可扩展自己的专属 Agent。\n\n---\n\n## 🛠️ 技能系统（Skills）\n\nSkills 是 AIBO 的专项能力模块，定义在 `skills/` 目录中，每个 Skill 为 AI 提供特定场景下的工作流指导。\n\n### 🎨 内置技能一览\n\n| 分类 | 技能 |\n|------|------|\n| 💻 **编程开发** | `autonomous-coding`、`debugging`、`self-debugging`、`code-review`、`refactoring` |\n| 🌐 **前端** | `react-development`、`vue-development`、`typescript-frontend`、`frontend-design`、`web-artifacts-builder` |\n| 🧪 **测试** | `test-driven-development`、`webapp-testing`、`playwright-skill` |\n| 🔧 **工程化** | `ci-cd`、`git-workflow`、`using-git-worktrees`、`spec-driven-development`、`claude-code-hooks` |\n| 📄 **文档与内容** | `doc-coauthoring`、`pdf`、`docx`、`pptx`、`xlsx` |\n| 🤖 **AI & Agent** | `coding-agent-router`、`parallel-agents`、`subagent-driven-development`、`write-subagent-todos`、`mcp-builder`、`skill-creator` |\n| 🎨 **设计** | `canvas-design`、`brand-guidelines`、`theme-factory`、`algorithmic-art`、`d3js-skill` |\n| ☁️ **平台集成** | `github-automation`、`gitlab-automation`、`slack-gif-creator`、`tencent-wsa` |\n| 📋 **项目管理** | `project-context`、`context-management`、`feature-organizer`、`internal-comms`、`file-organizer` |\n| 🧠 **提示词** | `chain-of-thought`、`few-shot-prompting`、`api-design` |\n\n**📁 自定义技能**：在 `skills/` 目录下创建新文件夹，添加 `SKILL.md` 文件，按照现有格式描述技能的触发条件、工作流程和最佳实践。\n\n---\n\n## 🖥️ 本机 CLI 工具集成\n\nAIBO 支持直接调用本机已安装的 AI 编程 CLI 工具，**无需额外配置**，启动时自动检测并加载。\n\n| 工具 | 命令 | 擅长场景 |\n|------|------|---------|\n| 🟣 **Claude Code** | `claude` | 架构决策、代码审查、复杂重构、跨文件分析 |\n| 🔵 **Gemini CLI** | `gemini` | 前端 UI 组件（React/Vue/CSS）、超长上下文任务 |\n| 🟢 **OpenAI Codex** | `codex` | 后端 API、数据库/ORM、服务端逻辑、脚本 |\n| 🔷 **Cursor** | `cursor` | 通用编程：文件编辑、Shell 命令、代码库搜索 |\n| ⚫ **GitHub Copilot** | `copilot` | 通用编程：文件编辑、Shell 命令、代码库搜索 |\n\n当多个工具同时可用时，AIBO 按任务类型自动路由（前端 → Gemini、后端 → Codex、架构 → Claude、通用 → Cursor/Copilot）；只有一个工具时，所有任务都委派给该工具。\n\n> 📖 详细安装指南及路由策略请参阅 **[docs/cli-tools.md](docs/cli-tools.md)**\n\n### 🔗 ACP 协议支持（Agent Client Protocol）\n\nAIBO 现在支持通过 **ACP (Agent Client Protocol)** 协议统一调用 13+ 种 AI 编码代理，提供更灵活的会话管理和交互模式。\n\n**支持的 ACP 代理**:\n- `codex` (OpenAI Codex CLI)\n- `claude` (Claude Code CLI)\n- `gemini` (Gemini CLI)\n- `cursor` (Cursor agent)\n- `copilot` (GitHub Copilot)\n- `pi` (Pi Coding Agent)\n- `openclaw` (OpenClaw ACP bridge)\n- `kimi` (Kimi Coding Agent)\n- `opencode` (OpenCode CLI)\n- `kiro` (Kiro Agent)\n- `kilocode` (KiloCode Agent)\n- `qwen` (Qwen Coding Agent)\n- `droid` (Droid Agent)\n\n**ACP 操作模式**:\n| 模式 | 说明 |\n|------|------|\n| `prompt` | 持久化会话模式（默认），支持多轮对话 |\n| `exec` | 单次执行，不保存会话状态 |\n| `sessions_new` | 创建新会话 |\n| `sessions_list` | 列出所有会话 |\n| `sessions_close` | 关闭指定会话 |\n| `cancel` | 取消进行中的提示 |\n\n**高级功能**:\n- **持久化会话**: 支持多轮对话，保持上下文连续性\n- **命名并行会话**: 通过 `session_name` 参数在同一项目中并行运行多个工作流\n- **会话暂停/恢复**: 支持临时暂停会话并在需要时恢复\n- **直传模式**: 允许用户直接与 AI 代理进行对话（通过 Lark 或 Console 适配器）\n\n**使用示例**:\n```typescript\n// 单次执行\n{ \"agent\": \"codex\", \"prompt\": \"总结这个仓库的目的\", \"mode\": \"exec\" }\n\n// 持久会话 - 多轮对话\n{ \"agent\": \"claude\", \"mode\": \"sessions_new\" }\n{ \"agent\": \"claude\", \"prompt\": \"找出 flaky 测试\" }\n{ \"agent\": \"claude\", \"prompt\": \"应用修复并运行测试\" }\n\n// 命名并行会话\n{ \"agent\": \"codex\", \"session_name\": \"backend\", \"prompt\": \"实现 token 分页\" }\n{ \"agent\": \"gemini\", \"session_name\": \"frontend\", \"prompt\": \"添加无限滚动组件\" }\n```\n\n> 📖 详细 ACP 使用指南请参阅 **[skills/acpx/SKILL.md](skills/acpx/SKILL.md)**\n\n---\n\n## 🔗 MCP 工具集成（Model Context Protocol）\n\nMCP（Model Context Protocol）允许 AIBO 连接外部工具和服务，极大扩展其能力边界。工具配置定义在 `mcps/` 目录中。\n\n### 🎯 功能场景\n\nAIBO 通过 MCP 协议接入外部工具和服务，扩展 AI 的工具调用范围：\n\n- 🐙 **GitHub / Slack 等**：通过标准 MCP 配置接入第三方服务 API，实现自动化操作\n- 🌐 **自定义服务**：接入任意支持 MCP 协议的 HTTP 服务，灵活扩展能力边界\n\n> 💡 **与本机 CLI 工具集成的区别**：AIBO 还支持直接调用本机已安装的编程 CLI 工具（Claude Code、Gemini CLI、Codex、Cursor、GitHub Copilot 等），这是独立于 MCP 的另一项功能特性，无需额外配置，AIBO 启动时会自动检测并加载。\n\n### ➕ 添加 MCP 工具\n\n在 `mcps/` 目录下创建 JSON 配置文件，格式如下：\n\n```json\n{\n  \"name\": \"my-tool\",\n  \"description\": \"工具描述\",\n  \"endpoint\": \"http://localhost:8080/mcp\",\n  \"authentication\": {\n    \"type\": \"none\"\n  }\n}\n```\n\n> `tools` 字段可选，省略时由 MCP Server 自动发现可用工具。\n\n> 📖 详细说明请参阅 **[docs/mcp.md](docs/mcp.md)**\n\n---\n\n## 📊 环境变量概览\n\n以下列出所有支持的环境变量及其简要说明，完整配置步骤请查阅 **[docs/env.md](docs/env.md)**。\n\n### 🧠 模型配置\n\n| 变量名 | 必填 | 说明 |\n|--------|------|------|\n| `AIBO_API_KEY` | 视服务商而定 | 统一 API 密钥（OpenAI / Anthropic / Google 等） |\n| `AIBO_BASE_URL` | 视服务商而定 | 自定义 API 基础 URL（Azure / Ollama / 兼容接口必填） |\n| `AIBO_MODEL_NAME` | ✅ | 模型名称，如 `gpt-4o`、`claude-opus-4-5` |\n| `AIBO_MODEL_PROVIDER` | 部分必填 | 显式指定服务商，Groq / Ollama / Azure 必须设置 |\n| `AIBO_AZURE_API_VERSION` | 仅 Azure | Azure OpenAI API 版本，默认 `2024-02-15-preview` |\n| `AIBO_CUSTOM_HEADERS` | ❌ | 附加到模型 API 请求的自定义 HTTP 请求头，格式：`Key1:Value1\\|Key2:Value2` |\n\n### ⚙️ 运行时配置\n\n| 变量名 | 必填 | 默认值 | 说明 |\n|--------|------|--------|------|\n| `AIBO_RECURSION_LIMIT` | ❌ | `1000` | LangGraph 递归深度上限 |\n| `AIBO_CHECKPOINTER_TYPE` | ❌ | `memory` | 检查点存储类型：`memory` / `sqlite` / `filesystem` |\n| `AIBO_VERBOSE_OUTPUT` | ❌ | `false` | 是否开启调试输出 |\n| `AIBO_LANGUAGE` | ❌ | `en` | 提示语言：`en` / `zh` |\n| `AIBO_PERSONA` | ❌ | 魅魔人设 | 自定义 AI 人设描述 |\n| `AIBO_MAX_CONCURRENT_SUBTASKS` | ❌ | `5` | 最大并发子任务数（1–50） |\n| `AIBO_SPECIAL_KEYWORD` | ❌ | `干活` | 触发特殊行为的关键词 |\n\n### 🎙️ 腾讯云 ASR（语音功能）\n\n| 变量名 | 必填 | 说明 |\n|--------|------|------|\n| `AIBO_TENCENTCLOUD_APP_ID` | ✅ | 腾讯云账号 AppID |\n| `AIBO_TENCENTCLOUD_SECRET_ID` | ✅ | 腾讯云 API SecretId |\n| `AIBO_TENCENTCLOUD_SECRET_KEY` | ✅ | 腾讯云 API SecretKey |\n| `AIBO_TENCENTCLOUD_REGION` | ❌ | 服务地域，默认 `ap-guangzhou` |\n\n### 🔗 Composio 集成\n\n| 变量名 | 必填 | 说明 |\n|--------|------|------|\n| `AIBO_COMPOSIO_API_KEY` | ✅ | Composio 平台 API Key |\n| `AIBO_COMPOSIO_EXTERNAL_USER_ID` | ✅ | Composio 外部用户 ID |\n\n### 🏢 Lark 飞书集成\n\n| 变量名 | 必填 | 说明 |\n|--------|------|------|\n| `AIBO_LARK_APP_ID` | ✅ | 飞书自建应用 App ID |\n| `AIBO_LARK_APP_SECRET` | ✅ | 飞书自建应用 App Secret |\n| `AIBO_LARK_RECEIVE_ID` | ✅ | 默认消息接收方 ID |\n| `AIBO_LARK_INTERACTIVE_TEMPLATE_ID` | ❌ | 飞书互动卡片模板 ID |\n\n> 💡 当 `AIBO_LARK_APP_ID`、`AIBO_LARK_APP_SECRET`、`AIBO_LARK_RECEIVE_ID`、`AIBO_LARK_INTERACTIVE_TEMPLATE_ID` 四个变量均已配置时，`aibo` 将自动以飞书模式启动。可通过 `aibo --mode=console` 或 `aibo --mode=lark` 显式指定模式。\n>\n> 📖 详细配置步骤（含飞书卡片搭建说明）请参阅 **[docs/env.md — Lark 飞书配置](docs/env.md#lark-飞书配置)**。\n\n---\n\n## 📚 文档\n\n| 📄 文件 | 说明 |\n|---------|------|\n| [docs/env.md](docs/env.md) | 所有环境变量的详细说明及获取步骤 |\n| [docs/mcp.md](docs/mcp.md) | MCP 工具集成说明（接入 GitHub、Slack 等外部服务） |\n| [docs/cli-tools.md](docs/cli-tools.md) | 本机 CLI 工具集成（Claude Code、Gemini CLI、Codex、Cursor、GitHub Copilot） |\n| [agents/](agents/) | 内置 Agent 定义，可扩展自定义 Agent |\n| [skills/](skills/) | 内置技能列表，可扩展自定义技能 |\n\n---\n\n## 🤝 贡献指南\n\n我们欢迎贡献！请遵循以下步骤：\n\n1. Fork 仓库\n2. 创建您的功能分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 打开 Pull Request\n\n## 📜 许可证\n\n此项目在 MIT 许可证下发布 - 有关详细信息，请参阅 [LICENSE](LICENSE) 文件。\n\n## 📬 联系方式\n\n如有问题或建议，请创建 GitHub Issue 或联系项目维护者。\n","readmeFilename":"README.md"}