v0.2.1
sipeed/picoclawv0.2.1Mar 9, 2026by github-actions[bot]
AI Summary
A feature-rich release adding several new AI providers (Minimax, Avian, Exa, Kimi/Opencode, SearXNG) and integrating MCP tools. It also adds IRC support and improves the agent browser skill.
Key Highlights
- Add minimax provider
- Add Avian, Exa, Kimi/Opencode, SearXNG providers
- Add MCP integration and tools support
- Add IRC channel integration
- Add agent browser skill
New Features
- Minimax provider
- Avian provider
- Exa provider
- Kimi/Opencode providers
- SearXNG provider
- MCP integration
- IRC channel
- Agent browser skill
Full Release Notes
## Changelog * 435223f500b56b81c2c238c36109401ef5f1ba99 * Add new style banner for picoclaw and picoclaw-launcher-tui (#1008) * abafa3c2aac12cd3483d9ccc345e6033f8a7f2d4 * add minimax provider (#1273) * 4402fcf63c949e403c2d0a00df7ed3a308d9266b * update contributing.md * 5fa2e1d1e4f7372b5fbb4c79c215728778531bce * update contributing.md * b74f92ed28bc4f14641cc993311d928034f10a87 A more neutral and elegant voice.Transcriber interface * 6caee427bb4c4556ff06c17ded8b36a4c4364e8b Add WeCom AIBot channel implementation and tests * 84ded81a8cee24f9bd3ef6c1fb1e624ad9695d56 Address Copilot review feedback for .env loading * 8219b5a26fbb437ce98bce3e9b74b0e4847ac0e2 Address Copilot review feedback for Exa search provider * 9c91d66427bef2475743336c3db6551e3cd17083 Address Copilot review feedback for Kimi/Opencode providers * 2dccee5044665ed3a02bd19f4576654b22798fce Address Copilot review feedback for Telegram message chunking * 33109a1676aa69150bcaabd46b30743538616b90 Address Copilot review: handle HTML expansion exceeding Telegram limit * ead22368bde0c1e7049d97a1cd02cbf15730767d Enhance model selection and add footer navigation instructions (#1271) * 6f5930624b1cfaea113279f637a45569eafa812b Feat/add tool enable or disable configuration (#1071) * a2f63e4207828273d75dcf7771cdbd240facdc34 Fix HasProvidersConfig * 4df413866381a7cc417e35c7d37c371241969db7 Fix Vivgrid docs and inference logic * e6f546771182e0cdd6866b497a6f6d5e8c9d69d9 Fix golines for vivgrid case * 494953fb780e86d82535fc475ad746ac9cf83fb7 Fix lint * b1386ad71fbe43142b96deca018d73294df06fcc Fix voice transcription * 2c3952b8c02d93774115adabe4eb452ac320d254 Fix: improve history compression with retry logic and multi-byte character support (#1167) * cd500d2046c848768e884345501d3cb293a4dd85 Merge branch 'main' into feat/jsonl-memory-store * 4a067cd9ed37fa1a792e1cbed07fdb410590500c Merge branch 'main' into feat/kimi-opencode-providers * 9be6fb1a7d3165dc207ff76598758348356c24fe Merge branch 'main' into feat_discord_proxy * b86bf5b7ea9ad38d41152de58feda2672bd602d5 Merge branch 'main' into fix/max-payload-size-in-web-fetch * d867e86dbead31f9b63ba757c022c0cfc3adae09 Merge branch 'main' into mcp-tools-support * 672da984e5d0d7902677ad6d80b7eb3af5dd155d Merge branch 'main' into mcp-tools-support * acb974fcf1eef57a0dd3af6b834ba082de26b597 Merge branch 'main' into mcp-tools-support * 257b0d82b52e8ad12f702a647b7702d0a8551f16 Merge branch 'main' into mcp-tools-support * 4e348e39ac637f7466bdcf10809e3f2960810e31 Merge branch 'main' into mcp-tools-support * c319db431e700e9c81e0ae6837fa926882d4202f Merge branch 'main' into telegram-bot-commands * d49ce320104d9923690589d7be7972a2d02dc890 Merge branch 'main' into telegram-bot-commands * 50d2616172a307e9085b1cc3bc7cba1184806ce1 Merge branch 'main' into telegram-bot-commands * bebf4b0c1711c9ad11cbb1f544473246f8f7986f Merge branch 'main' into telegram-bot-commands * aeed392c3f506f0236009a4b9f77ad28ddba1134 Merge branch 'main' into telegram-bot-commands * 0f568aceb74f91d6e29ba564ce05cdec6a4ccd71 Merge branch 'sipeed:main' into fix/reload-config-selfkill-guard * d0f627697e7b4d5015ac28afcba3551307dad4a1 Merge branch 'sipeed:main' into fix/reload-config-selfkill-guard * cf68166cf2ef27d2e111e2382bb57abb7740fa8f Merge pull request #1000 from alexhoshina/main * 227f22d28a5d49122d0e4676674ba052a9512dce Merge pull request #1002 from afjcjsbx/docs/mcp-http-server-example * 3bb4f4ecc645f349005d1afd335956041874eee4 Merge pull request #1010 from sipeed/revert-990-feat/agent-vision-pipeline * a65ccc0d1d63d208a945e04e755fdde9b97c1c3b Merge pull request #1020 from shikihane/feat/agent-vision-pipeline-v2 * 4a7605ee14bff076ca77c8916c6bd59930224566 Merge pull request #1024 from wangyanfu2/fix-TavilySearch-response * 4d965f2c81b3aeffe4f478d720c8d2c41639d3ed Merge pull request #1047 from AaronJny/feat/discord-reply-context * b075ee43d87007b166c3b180876411160244071e Merge pull request #1052 from imguoguo/update-wechat-qr * 440d665baa2dcaff8422c0e645fc7921f351c12a Merge pull request #1075 from qs3c/fix/1068-html-response-error * a00ecedeb6b0fc1e69144c5cafb14e4f8aec51e9 Merge pull request #1081 from rankaiyx/rankaiyx-patch-1 * 858e51da62cd0b2e20cb62c458c69b7e5c44a53d Merge pull request #1096 from Oceanpie/docs/summarize-config-example * 81dfdf5f45d8f503189b9d7087c3e47e61b27c63 Merge pull request #1100 from zihan987/main * 74b5af9e53932c11abb0af167b3eb049f3275c19 Merge pull request #1105 from cornjosh/fix/registry-flag-usage * 464ae1846efaf1faf36e44075face87aa476594f Merge pull request #1106 from afjcjsbx/fix/prevent-audio-as-image-url * 37380409870d8b985e812e548fd1a84145c76241 Merge pull request #1127 from mosir/fix/reload-config-selfkill-guard * 445c32af4fb7ed9d20ba7a5e52d6cf58d1f57a3e Merge pull request #1135 from qs3c/fix/1134-clawhub-429-retry * aeabbcf2e8ae0d17032ba767c8cf18fb7afb8c01 Merge pull request #1138 from amirmamaghani/feat/irc-channel * 8581d46eaac0ecfc9678a33e5721bdf8c49c51b6 Merge pull request #1142 from mattn/fix/handle-io-readall-errors * a32a4e007d264cbf3f6d82ab5c041771a925d65b Merge pull request #1143 from blib/bug/parallel-execution * 23da4503c1743d4f07947b117b63622b2b527e80 Merge pull request #1145 from Esubaalew/fix/upstream-skills-global-toggle * 651cb2ebdabe8506eac7c02417aa9b168975f32b Merge pull request #1155 from keithy/feature/picoclaw-home-env * f600829158d91695dbfb62687a8c46eb560e3bb4 Merge pull request #1157 from wangyanfu2/fix-config-shell-command-exec-timeout * 7ea7bb0717ed2573eac020a6efc64991bc94658f Merge pull request #1171 from mutezebra/feat/feishu-random-emoji-v2 * 4768edc67b459ca695894c026602bdd3fed3b3b3 Merge pull request #1215 from yinwm/refactor/agent * b767ca9c3c64e7b34aa7b2ce45fc7cb0f02e3ad9 Merge pull request #1220 from horsley/feat/matrix-channel-support * 0150947e61f167507d0d1271cbcef70b74402342 Merge pull request #282 from yuchou87/mcp-tools-support * 25639168eaef2a6b11b42b05ca8f6abc1182ca54 Merge pull request #300 from mymmrac/telegram-bot-commands * a3648aee1949da173671a977bc4f8a1f48149503 Merge pull request #534 from truongvinht/feat/searxng * faec0261d052b8abb191d2cfe165bf123c29c71a Merge pull request #535 from xiaket/ci-enable-dupl-linter * 8fddbaed4f74636d9960baa28768c19f0b6d9730 Merge pull request #682 from Esubaalew/fix/makefile-test-vet-generate * 475d8f948bf55c1d7d3e39845da3de6e3bb7790a Merge pull request #727 from Esubaalew/fix/wecom-dedupe-race * c8178f4ad4aea855693ca87b0bfcc74948efd7b6 Merge pull request #732 from is-Xiaoen/feat/jsonl-memory-store * 325af2163b37f6252c496838a665e0b4210b0014 Merge pull request #844 from avianion/feat/add-avian-provider * bea238c3378aeea7e6f4fcad57713a5bb94cf60a Merge pull request #853 from nayihz/feat_discord_proxy * f7136b6a5de8bb05cc385da3499dbcbc90943af2 Merge pull request #861 from p3ddd/refactor/modernize * 83dbff77851d0cec295648b5b94fbb6480658c81 Merge pull request #883 from afjcjsbx/fix/max-payload-size-in-web-fetch * f2ab1a74da83a7aedce1756cbd7458a516778836 Merge pull request #893 from reevoid/rui-dev * 9c9524f93497b025512e3fd33dc83bdc47b86ea0 Merge pull request #914 from alexhoshina/fix/wecom-context-canceled * 3926585786b8757c7173d969f8f0ac9d922445b1 Merge pull request #916 from alexhoshina/fix/channel-config-cleanup * 33f67e8275d9ae9b62010d7407d380de578f3f07 Merge pull request #918 from alexhoshina/fix/wecom-resource-leaks * 826f92cf537f8dd04cfa990f78ecf2d2f5b82032 Merge pull request #935 from putueddy/feat/telegram-chunking * 26d1b8e37461e64a1e82b4101ff5397bc3846c02 Merge pull request #946 from winterfx/fix/preserve-reasoning-content-in-history * 3e5b849984c81b0b8071aa079ed40c29a75fa4b3 Merge pull request #947 from dim/fix/transcription * 929589a025a5c9cf3027d62cf7beb59381013319 Merge pull request #987 from lxowalle/doc/update_contribute * 12d4570a36672bf247312e4b1771926504a433ec Merge pull request #990 from shikihane/feat/agent-vision-pipeline * 9b1e73de9c487d24820e70d1683e71281976b404 Merge pull request #994 from is-Xiaoen/feat/model-routing * de2ccb5da4ab517c96bfef66f49a56a8b3d90edb Merge pull request #999 from yinwm/fix/mcp-race-condition-and-resource-leak * b7aaa5b887c5bd7f61a29f7d177befde5faec35f Merge remote-tracking branch 'origin/feat/dotenv-loading' into deploy/pi-integration * fe97387f0fbe1496b4242537fdc66383c4453dd7 Merge remote-tracking branch 'origin/feat/exa-search' into deploy/pi-integration * c5d22984908fede913642bc6965d1482ea1a7fd0 Merge remote-tracking branch 'origin/feat/kimi-opencode-providers' into deploy/pi-integration * 8ed351cf2827195fa5dd68a6b71fe7d2f9dad6b8 Merge remote-tracking branch 'origin/feat/telegram-chunking' into deploy/pi-integration * 2580ef31ca9dc28e0d6ce14a4e74e75ef4d37bf5 Merge remote-tracking branch 'origin/main' into feat/searxng * 69b1ae48d590f6df43201cf7125aec4d9ee70f73 Merge remote-tracking branch 'origin/main' into feat_discord_proxy * 0c17c075da6e5cae378e9c4cc03c16ee05342ab1 Merge remote-tracking branch 'origin_picoclaw/main' * 7308f0621bcd7b11d3be5645bd2cf011d8902597 Merge upstream main * b15cff1266cb640603f0ceb2102f60fc152f1311 Merge upstream/main and resolve conflicts in .env.example * 56ad77b7353df2ef6b77565112b101ddd7fb7d6d Merge upstream/main into feat/dotenv-loading * 4599064f2a1699f5456ff834285b255a6314247e Merge upstream/main into feat/searxng * e4daab8b09ca6e6d0ab3a16c4caad9ef14de0edf Merge upstream/main into feat/searxng * 5dcd42e5d332ec4b8c6f2fce1def82bf3a62ca3f Merge upstream/main into fix/bugfixes * 91f52c45861654788a6e0154d6a073f379a1112d Resolve merge conflicts * d1cf6806572118ce4b5a03f7327ef902c108d170 Resolve merge conflicts * 407707a7cccaf555fdc3d54b26c5f4a46467a41a Revert "feat(agent): add vision/image support to agent pipeline" * 93689b82314a32a01fe6ffc431eca54affc2cf39 Update README.md * 1ebfbc1c6bd1551c267f3fc1801bc759ad5efc6c Update docs/channels/line/README.zh.md * 00ad6be7ea993fd7d45c4f9de7d89da72d095a59 Update pkg/agent/loop.go * 8d2f2d67b2d57ad30f35df78b3ad612e69f42a08 Update pkg/channels/line/line.go * e33712deff3be0b766d5d4490b646f22685aff06 Update pkg/channels/wecom/aibot.go * 0b6d913dfca4b72f56703799c14809ef4cdc629f Update pkg/channels/wecom/aibot.go * e88b39f21e6bb619b43081591be75a931897efe4 Update pkg/channels/wecom/aibot.go * aa9ce6955b18574cc920907703fa22654c1078d4 Update pkg/channels/wecom/aibot.go * ee2ebc8bf35141abc609457c92964baf73c08335 Update pkg/channels/wecom/app.go * 42a32fbf3bb956340e59985f2d56f36fde4db1d8 Update pkg/channels/wecom/app.go * ca4e44bd0feef193ae12dbb4bf53b731639ad52a Update pkg/channels/wecom/bot.go * ea0b634b3b05681511bdfa4fc4bf7ba6886a0669 add Vivgrid config * 42fc589a75258ec18b11e70cf5d84f5dd0b183e4 add Vivgrid config example to README * e38364b08a60f9d586c3191ebcdf208b3eef07db build(docker): migrate full image from Debian to Alpine base * 08d668c1657e3ddb03d173ecaf0f565585dfa401 chore(config): gofmt 格式化 FeishuConfig 字段对齐 * 4113190c2a981e9ac3f0ffd9738e6985797976c3 chore(config): remove example MCP servers from default config * 91a633c009d2f0baf067e3cfa94140819d6282af chore(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 (#1200) * 78aa45f107df063d44533d8aeb5391d573bda6b7 chore(deps): bump github.com/modelcontextprotocol/go-sdk (#1199) * a026d56c0f7ce097e645693018ebff7965c32891 chore(deps): consolidate indirect require for uritemplate * 87e0336d6271bfd97d056234a8a626ca25974405 chore(deps): format go.mod * 24610693e4a9e6df3fbf615eab31cb7363c38e48 chore(docker): add execute permission to test script * 109a382507dd894282983721ec2416fb61a0678c chore(feishu): add random_reaction_emoji to example config * 92a0db4993d2e44a677421386b8ca524d55cfc67 chore(feishu): document reaction emoji option and promote filetype dep * 559cef3d5b27d8f5f13cc839c43dac91f853041c chore: add h2non/filetype dependency for magic-bytes MIME detection * 2a577f7a1d2aecb2eb50a0fb67cd95311b8891bf chore: alter env timezone from Asia/Tokyo to Asia/Shanghai (#1054) * 077d7c8d9b04d84c7c8072f3f07bc7a6f5e24a50 chore: fix lint issues in mcp and agent packages * a5d2e109bf5f0211bf4910aede4fbb4bfc08ae0b chore: merge main branch into mcp-tools-support * 04ddb6b472e991a25fc05b6d3fba100649025d33 chore: remove accidentally committed local files * 62bdece7f50dcbe6de586f042d8e41097f480824 chore: resolve conflicts with upstream/main * b3946984ada6c7c158efee60341b9692bc712cca docs(config): expose summarization thresholds in config example * 59e9c5545413626d11e3628f981503ea16e8f82d docs(config): restore MCP server examples in config.example.json * 32c864c309a7717b0254f270444df11ade1868f8 enable dupl check * 66e6fb6c79e6f3d1bbc6f714ba89c8c070f83096 feat(agent) fallback to reasoning content (#992) * 18b36af9342b648b0dd1e2ba6d9f56866af76744 feat(agent): add resolveMediaRefs to convert media:// refs to base64 data URLs * 6fd65825e731cf27a24b477bb5516dd2f2ea52b2 feat(agent): implement resolveMediaRefs with streaming base64 and filetype detection * 6997edc82e1cd555187f982701d03ebc51e26bba feat(agent): wire Media through agent pipeline (cherry-pick PR #555) * 43227411eedde9c35aa5de37d3f12b0745bf2cf9 feat(agent): wire media refs through agent pipeline to LLM provider * 02e81923493712bd714fce8f63d08a79912bd97b feat(agent): wire model routing into the agent loop * 23abbb67ea378d59d9384ce88bc32a1d1aa2ad9a feat(auth): add Anthropic OAuth setup-token login (#926) * c3af1543db7664c704ef42c89ac93aa5fe56cfae feat(build): add MIPS32 LE (mipsle) cross-compilation support (#1051) * 40b7b6ee4b7643c060c8a3dd71fc474d0027658c feat(channels): add IRC channel integration * 41bb78f5939686235ac2cb4bd4bb50aaa44f11c6 feat(ci) govulncheck (#1086) * ad9d5a3d19acc278c972a3b356f924e11abed1c6 feat(ci/cd) Add nightly build workflow (#1226) * b716b8a053a4d1e163fc43f6832aa081fb748152 feat(commands): centralized command registry with sub-command routing (#959) * d4bc28c11366b9f9b787ecd0d540591214f97473 feat(config): Add support for env var configuration (#896) * c5a21b269f1d1487e89125228979b1dd0fcc4477 feat(config): add RoutingConfig to AgentDefaults * 4c6c05a251895ad28cb7329664a3d028aa3d5948 feat(config): add configurable max_media_size with 20MB default * 1945436dd44817bb3eca9919e63dc8d7f1325c25 feat(cron): add execution lifecycle logging (#1185) * b5a4bb28b6f74de5df38143aeea7cfbecdaa9614 feat(discord): add proxy support and tests * 922604fc7eeab69fc0ec5d073dc51573871b47ee feat(discord): resolve channel references and expand message links * 465819e1c66c74b38ab86e2358f0159d1c86027d feat(discord): support referenced/quoted messages in replies * ce3fc4bc67ee7362ff536516d43f5af826e2f61f feat(docker): add full-featured Docker image with MCP tools support * 9f017d077e9bbec678ba64ff39e8e67762a846c3 feat(feishu): add random reaction emoji config * c9fb681f3b2253142623ff4079dc5aaafa4ca3c0 feat(feishu): enhance channel with markdown cards, media, mentions, and editing * c368b5b3599c918fb2c1c7cf99639b63c61264d9 feat(feishu,tools): add outbound media delivery via send_file tool (#1156) * 91c168db2042998fa90ec993febf0cc2d0b3f75c feat(mcp): add Model Context Protocol integration * b464687e2fc0578eb23f3e9be4aa20849d5bcaa4 feat(memory): add Compact method for physical JSONL compaction * 32ec8cadeb039fca8430520bed8f45b9f4f3f1b0 feat(memory): define Store interface for session persistence * 9f36e50807093181d13619b2f21d988f98553276 feat(memory): implement append-only JSONL session store * 903681207ba3b423ee04d6a7056738dacbf75f08 feat(memory): support migration from legacy JSON sessions * 03f7ae494f348ada4a7327486010a4ea88d05d9d feat(openai_compat): implement serializeMessages with multipart media support * 6689c0b1c068a8149cb801b39cba959948a88272 feat(providers): add Media field to Message struct for vision support * 82773fcd42151abf726d7693c49a384e277e9137 feat(release): add linux/s390x and linux/mipsle to goreleaser builds (#1265) * f505f009df1d54a6d735170f870e9651cf1ceb08 feat(release): add macOS binary notarization via goreleaser (#1274) * 1943c3e6602930880c2da90fb973d5e07dc98854 feat(routing): add language-agnostic model complexity scorer * 1b1e472df25cf91f0a8ceb53d347ab5b4888b27a feat(telegram): Changed command scope * 26bca10b81cfb47ae4903bfad469a90e5591eb02 feat(telegram): Do not fail on commands init * 2bf467fbbe7479d45501b5843508c8bb22da97d6 feat(telegram): Fix conflicts * b0c8fc4a7ed21657a56d487ac8636e6cdd2678eb feat(telegram): Fix conflicts * d1a66cbf50ae2261f6c605f07f24a7e12ee1b905 feat(telegram): Fix text * bfb9d8f644b19f774fb6c4139ff386608bbe88c8 feat(telegram): Init bot commands on start * e1ba69293e144d3fdb486516f54c193d09eb6fee feat(telegram): Updated log message * 1265655ef09427b26028b560d47643a9e83cb211 feat(telegram): add base_url support for custom Telegram Bot API server (#1021) * b82bb9acc0b9a53b9a14c4d9a916778f9675b257 feat(tools): add GLM Search (智谱) web search provider (#1057) * e55b3b7a8d0b1ea1522da08fd46155ee4f58b794 feat(web): migrate launcher to modular web frontend/backend and improve management UX (#1275) * a25726e7981ba8b184b401c9f198b5525fb06a41 feat(wecom): add WeCom AI Bot integration and update documentation * 4e09c91dda6ae1f2239b94b07d6e54b7e2b179cd feat(wecom-aibot): add context management for stream tasks to improve agent cancellation * e894f8d39af59724e9d74b017b11ec417a6ef0f2 feat(wecom-aibot): add reasoning_channel_id to configuration and enhance message handling limits * a87e6b0551593a466c3b3a863b5f4a8ebf7959ba feat(wecom-aibot): enhance stream task management with StreamClosedAt and improved cleanup logic * e7d8975f1c3420733d1e34411c6f352c0e00b3d2 feat: Add SearXNG search provider support * aaf99d7a308bb18edb34a89b64cfbb8c75929483 feat: add /clear command to clear chat history (#1266) * d9b4af797d55fd743d4f14cca8dd0e5b02047314 feat: add .env file loading and provider env overrides * a4546ffb8f208f0b4b9f69262e20b3754c884279 feat: add Avian as a named LLM provider * 4b7e8d9cb956c01a1b3bcdd88997fbe80f39b334 feat: add Exa AI search provider * ec540312da9905f9f2ced6df268a8c3b19a333bd feat: add Kimi/Moonshot and Opencode provider support * 946af6b53db371a1dba5a09ae52ca3c034d65086 feat: add LiteLLM provider alias support (#930) * a66eac42c4997f3777fa62b8629c630e93b9cd20 feat: add Matrix channel support * 3d54a77c407404e2043fa3af568fef5321a21ad8 feat: add Media field to Message struct and implement serializeMessages for vision API support * 204038ec6022bfb362ef83821bce3192cbca4638 feat: add extended thinking support for Anthropic models (#1076) * a6f42748708d4c5a28981366feadaf63ee136285 feat: add message chunking in Telegram Send method * c3c293297df5f42f95162bd36b848d36c49f76d5 feat: add upload_tos toggle to release workflow (#1183) * 028605cfd09d78c3db1c9f9fae65538f442a7c34 feat: execute LLM tool calls in parallel for faster response (#1070) * 51e8479f996c48fdbce243bf1a13e2b08b19c804 feat: honor PICOCLAW_HOME env var for config, auth, and workspace paths * df1b53fdf9baff1460e0a9dda72e5c9c775d3eff feat: make summarization message threshold and token percent configurable (#854) (#1029) * 46201fb679021cca56580d44a66ae0e0bb262452 feat: upload release artifacts to Volcengine TOS (#1164) * 7df7e0495cd6225f51ac50c11fd74cb5a3bc5e1e fix deepseek-chat bug (#1066) * 2318232b71737ac100495ec86fdf0833fe379c4c fix(agent): ensure MCP cleanup on all Run() exit paths * 3902061db141a7fe1cb7cb68d12eaf476cb49039 fix(agent): invalidate system prompt cache for global/builtin skills (#845) * 0f6fadb445041aba56d04b764c6a3776b25427ff fix(agent): register MCP tools after server initialization * f046ba59e80e6f901067513913490af83affa117 fix(agent): respect global skills toggle for skill tools * ffa01986ce1513846f42d55bd8aab9d0bc3cd8fd fix(agent): scope MCP manager cleanup to successful initialization * aed7296c0d95ff88683cce0b6733510fd5895f3a fix(agent): tie MCP connections to agent lifecycle context * a7a4e88fff1af11d8a675588ab7ab7cae830d222 fix(agent): use fallback workspace path for MCP initialization * 8ebeefc59f6f43954b9f4fd57b7359176aa9f715 fix(agent,openai_compat): address review feedback on vision pipeline * cd955d730bbf0c9d16ab29de98ec469d1b9648f3 fix(ci): resolve linter and security check failures * 38263333edf231d16cf93ce534cb752a04c28137 fix(discord): prevent cross-guild message leakage in link expansion * e0616362fe65373906634f869fc4288ea82f411d fix(discord): prevent duplicate link expansion and add regex tests * fcedba1c9df3aa47b704145af864e00f074ddc33 fix(docker): add profiles to build commands * 1764181e6f40370c6fd8e37bfd6f5ecb48fdffb9 fix(docker): correct uv installation path * 1c9c32022ed5ca15c12b552db7336499be332016 fix(docker): ensure uv is accessible in system PATH * b9c2b3555a946f93c9c1941403b68a7afe04a29d fix(docker): override entrypoint in test script to avoid interactive mode * e91e7169587674c4f8d928e2675d68ec5642275e fix(docker): use service names instead of --profile flag for build * 4a87090fd9d95ebfe3597fb895fe3565f37c9871 fix(docs): update WeCom AI Bot task timeout duration in README * 81f6787dd59eedcc4061045b222880276df60afc fix(docs): update WeCom AI Bot timeout duration in README and improve streamTask comments * 5c599d2dacd2cbc471dc5d5af93fbc2df86041ad fix(exec): block kill command pattern in safety guard * fa1cb9cc74230182aac0ebfef9cb745cbb7079f7 fix(feishu): address PR #1000 review comments from @xiaket * 42eb6ea410569b7a003f240adcd55d519406445d fix(feishu): address review findings * 595de7814d617687923671684f8b670a86c7d758 fix(feishu): remove dead fetchBotOpenID stub and fix misleading comment * 0bee9d7bcf8839bedbd842913c342e65b2367c80 fix(feishu): resolve lint issues * 6aa1d02fff77912490e0d9a03508f6476571ee42 fix(feishu): 用 crypto/rand 选择随机表情并修正示例配置 * f2a71ca8247c66d789fda19a29a52f3da91ba292 fix(lint): format imports in agent_id_test * 6e16ac7f682a9f652e17912b01fd0be0440e86d8 fix(matrix): bound room cache and align temp media dir * 64b99b34bb212195c13acd7280533b93068a2c25 fix(matrix): improve group mention detection * fb2bfe4b3ce809a1f1afbddc5336eb6badf3a3d7 fix(matrix): satisfy golines in mention regex test * 757741476181b6ed2b39cf1626c472eb069fe631 fix(mcp): ensure proper environment variable override semantics * 246fdf3f33d48b7361f9623f1566a020c894a32c fix(mcp): guard against nil result from CallTool * d2b3fc1dd03abae11e1f2ab15258c8b31a5598a8 fix(mcp): include server name and cause in Close() errors * f1b798434d2f098d26b996a5f50995ffda9af1de fix(mcp): prevent race condition between CallTool and Close * cfc29a1383a3cdc26cdd2a74c162fc0cd7dec6c7 fix(mcp): prevent use-after-close race between CallTool and Close * 33058b534e50b6fe6507c1c2b5d53b1014893f09 fix(mcp): reject empty keys in loadEnvFile * 78aba700d57e832d6efaa461565cb38579606375 fix(mcp): resolve TOCTOU race condition and resource leak * a4265b3f163ef18cd664cffcdd5e18333fddc530 fix(mcp): resolve relative envFile paths against workspace directory * 77d26e5ce32adebf31eb773d1dcb9ebabf57ae65 fix(mcp): return aggregated error when all servers fail to connect * 16a3b96ddebe4b1d75db05a19c6f36f814823118 fix(mcp): validate workspace before resolving relative env_file * 1f0b85280a5d93d01be4c7b76e72577ccbda515b fix(memory): always reconcile line count in TruncateHistory * d55e5540af6de070d3b1b9750e825c3054c6a30f fix(memory): bound lock memory and increase scanner buffer * f9f726c0c1c58aeac51f7ea4cbc138720bd37c31 fix(memory): fsync appended message for consistent durability * e810331dd8d8875d440ffe2cff6d8f530a2b13b2 fix(memory): use SetHistory in migration for crash idempotency * 9c72317b9b497671ebe0de8e38993f638e5fa056 fix(memory): write meta before JSONL rewrite for crash safety * b3c3b02666bd188a7f0f62a7a086b23d1b52d634 fix(onboard): use AGENTS.md template instead of AGENT.md (#931) * a305c0a4790d39590592f529a883386b9db83316 fix(openai_compat): avoid predeclared identifier in preview * 4946a8b449a963cbe04c1719f88f07d95f692f29 fix(openai_compat): clarify HTML response errors * 9216cd14b5a7bc39b92eb94011cddb4386834f83 fix(openai_compat): handle html error bodies and reduce allocations * a4e5c391bd67357a52936e1e3081b97a01edffb8 fix(openai_compat): preserve reasoning_content in serializeMessages * d6e88da8ba22221a434c7d0d582acbf48320a53f fix(pkg):do regex precompile insteadd on the fly (#911) * b84adacc2f302aa68c3ccd88bc5815ff51904273 fix(routing): address review feedback on CJK estimation and observability * 09e68cb63bd2ee556adcc1f559dd0e8019b3af37 fix(routing): resolve golines, gosmopolitan and misspell lint failures * fb2b5940600c03349787a4147264f32133de5e92 fix(scripts): specify service name in docker compose build * 7a2fdc24dc202012db849722ba92df8238257b3e fix(skills): retry ClawHub requests on 429 * ab120af64906537409c297c9c56d1bf80492926e fix(skills): use --registry flag value as registry name * cadcdc0b4155d0b43916445e0c5d6fe164e4e053 fix(skills): use registry-backed search for skills discovery (#929) * d5370c9605c4f007373272ec628f41a34b681eae fix(tools): allow /dev/null redirection and add read/write sandbox split (#967) * 44a52c0cf646beee1522b85c67777df5fdba0386 fix(tools): close resp.Body on retry cancel and cache http.Client instances (#940) * e0d2be35c257097cb9c1ade8ee0768f45b90fb5e fix(tools): make exec tool timeout configurable via config * 02c1792015baf4ed0e0f23c7f78e4373fa316959 fix(tools): preserve MCP tool InputSchema via JSON marshal/unmarshal * 8640c8177ca544558fa6c89eeb76b72e084c7fd9 fix(wecom): correctly retain boundary message during dedupe map rotation * e9b48865734008f22284b19bdce7c6aadc9b2700 fix(wecom): fix context leak in Start() and data race in processedMsgs * edd339e05603d187db0e7bad65462b393aa3d660 fix(wecom): handle empty response by encrypting and returning a default response * 79b7fb7792fd8cce890c273a25b7c2a79735cb7b fix(wecom): improve error handling in sendViaResponseURL and remove task on failure * 619948f8ff59a30c4c8ef91bd3ece7d7bc051b80 fix(wecom): improve error message for response_url delivery failure * 8e06e2adbd08395f7cce100e164c314ec9a37a68 fix(wecom): initialize context in constructors to prevent nil panic in tests * 18d89937ad487bd467b64aa798e5ec4560adecb7 fix(wecom): remove message-dedupe data races in bot/app channels * 29e9b6b4b5c1d6055b4e1e695c83faf1324b383e fix(wecom): replace dedupe map rotation with circular queue * 2e0be9277660b33b4017b0c0f5e4f388ac54ac75 fix(wecom): resolve upstream rebase conflicts after channel refactor * 55c556a4c5cb9c57b2af54c4d4133563bc0b89a7 fix(wecom): update CanonicalID generation to use identity.BuildCanonicalID for consistency * 62f59f76e3aaea62e7e9066926db010366af1ca5 fix(wecom): use channel context instead of HTTP request context for async message processing * c7d4012fc9ab678168a7418d962fa7b8b9163ceb fix(wecom-aibot): correct variable name in JSON parsing in message callback handler * 7de4cc5ebde197bd89b3ba9e1ad772797ac8abfe fix: add HTTP status code check in BraveSearchProvider * e503c87c18e7e02bc9c3dbc13f43b279f0cca469 fix: add LiteLLM to env overrides and fix malformed .env test * 89bc7aaea51ff2bfa1d1a14a2781e2d9906d1467 fix: add generate dependency to test and vet Makefile targets * 2fc87985d2b43b5482d4be021d08e9911ce4c737 fix: add kimi-code migration alias and User-Agent test * 81aeaf1ca026420147381ba19c1c7309cc6b7ade fix: address Copilot review feedback on PR #932 * ef738f478741baeba5c8fe77d69a8b76a981a935 fix: address PR review feedback for MCP tools support * a89ba06cb8453a6d4f0e8f01f40334a725a6bfe2 fix: address review feedback from @mengzhuo * 968fff07b9254e3f8b402a92cdeb8f23b65f2786 fix: background task results silently dropped * 0eec640c3763a4e3691dfc940348f71da4e324a4 fix: correct MCP server install test in test-docker-mcp.sh * ac37d6b6264fb40941fe1b355509064a254dff4d fix: disable closing custom model dialog by clicking backdrop (#1180) * aef1e8e8c489f427558d2004b1aecae68808d77a fix: eliminate data races on shared tool instances (#1080) * b26337501cbe2ea871fd3ccc130c866681fcd157 fix: error check on state (#864) * df53f4411ac5f7f7b41d9ddbaa060a0ed014a30a fix: format long lines in telegram_test.go to satisfy golines linter * 943385105fc432ec7e09c75aedb16d77050bc788 fix: handle ignored io.ReadAll errors across codebase * 7f6d95c026703835cd72f5613a456b0a4b4eacc7 fix: handle zero values in cron schedule type assertions (#1147) * a2591e03a942ae244b50539d4b9d26da3a0b3d58 fix: improve MCP tool name collision safety and registry overwrite warning * c1a3876f7de9251412ddc71a42530482d80334b1 fix: improve error handling for non-JSON responses by checking content type and using a streaming JSON parser. * 71bdeb41c988f0360e9bceca209a02f8e6ecd5a4 fix: improve error handling in GitHub Copilot provider (#919) * 6eaa49f7ab1f488ba8b3df39539cb191339b0799 fix: improve openai compat HTML response handling * a9a307584b02d97503368f3902781a4370a4b585 fix: max payload size in web fetch * ee5b61884a3ba11edef4b6376ae8fb39d3b0db6b fix: migration ModelName, reasoning_content, shell regex, loop boundary * 3de4cb863babcf3077ea6c8a35a5ade31b00962f fix: pass original markdown to sendHTMLChunk for plain-text fallback * 9efdde25ad7fc63ccb869c4601c469491b6d31c7 fix: preserve reasoning_content in multi-turn conversation history * f07dbd1db2d88fd270bab07aea119e8861b5ba71 fix: remove redundant SplitMessage in Send() per review feedback * 1604582a411419812c1c9552081b588318443ff2 fix: resolve gci lint errors in IRC channel files * b8782729623e55ab09a985259fd46c5c7ee0d95a fix: resolve govet shadow and golines lint errors in wecom channels * 6ccb68c63e8daccec339f6ec02b7b87ecc8334b1 fix: resolve linter issues (gci import grouping, gofumpt, govet shadow) * 03d6ad420f573b4eff138c561ef79d564f3eeef1 fix: resolve merge conflicts in wecom error handling * 53cba73283e53e1bf6933cf01a42de3b696bc298 fix: resolve openai compat lint issues * ba4b7026754cac04fd00e92218ed5ed908051f25 fix: retryLLM return empty (#1264) * fc9f1ec921564c15922e76715cbddcfd0d710abb fix: return fetched content to LLM in web_fetch tool (#833) * 0e810a2ec4cd3cee813d3046c946ff11660996da fix: tighten HTML-expansion test to stay under chunk size * 0c97cb30d84dfeb6b273c64bf6fe15abeea7a57a fix: update provider count in migration test to include Avian * bd0018a5d78bfa9563391452b2843222e65821f7 fix: use queue-based re-splitting for HTML expansion validation * a521a4916221daced2533738ddf4d0e83ce59d3e fix:fix cmd example (#1166) * e0667304d1f57065cad8facbb53083ff218ac5a2 fixed conflicts * dea381c38567fc242df0f3fd8d64172134712f67 improve(agent): clarify MCP tool registration logging * 23bb0828b18eb343a99f9c94bdc3da648da76d3c mcp http server example * 1a922c96a8b3b66308b357b0204d9fe706cc65f3 merge: resolve conflict with main in loop.go * d257f1aaefd658fce771b10f5171644ea2c6b81a merge: resolve conflict with upstream/main in provider_test.go * 11017ac7ba6775d823883098ac6cf252f5e9edab merge: resolve conflicts with upstream/main * e433bb8b7f61714e0333f7ce8b78ac2b7c9810d9 merge: resolve conflicts with upstream/main * b88e590c6ce0040805c2e3045c30dfcae0da1ae9 moved fetch limit bytes in config file * 11dbc301f927ce7299df222996d5d83484647179 perf(agent): cache ListAgentIDs() result before MCP tool registration loop * 6892d006d680902b32e07743434101db4cafec92 perf(agent): reduce memory footprint by storing minimal MCP dependencies * b9ee9b33f50dd460d0bb56d212d15c0c9fe04b03 prevent audio as image url * 23f48d7c4e76c3b4bda281b5f2bc4bce3af364ee refactor(aibot): remove downloadAndDecryptImage function to streamline image handling * d4824a00b6756c0bb67be670014d3cfb091fc5ef refactor(config): remove WebhookHost and WebhookPort from WeComAIBotConfig * c3e029061b1d084394f23a3480430c24c5799b97 refactor(discord): self-review fixes for resolveDiscordRefs * c05742330dd7193eddd00b84d97ea226e0fafe83 refactor(docker): migrate to docker compose v2 syntax * 51ed54a41410479ba9114acce4ee4d7bb66504ed refactor(docker): switch to node:24-bookworm-slim base image * bf4445f1f333194c4b8381752f13fbef273efd9e refactor(docs): remove webhook_host and webhook_port from configuration examples * 6d894d6138cb89a8bc714d69b03c9a6a14cb03d7 refactor(memory): use fileutil.WriteFileAtomic and log corrupt lines * 5d73ee2d9a72c27233cbb27a305d128130228944 refactor(memory): use sync.Map for session locks and skip-scan in readMessages * 222d1a30864ab451221a54309747d73794fbb90c refactor(modernize): apply safe modernize fixes * 536e9ac9de6aadf97ea23fbe21f7c6126589a625 refactor(skills): reuse shared HTTP retry helper * aa2d6b39f523a0e606c38609d2195bd5ed7e918f refactor(tools): remove redundant kill -9 pattern * 20f8bb200b84a2350bc38387cad53816de281ef0 refactor(tools): use MCPManager interface in NewMCPTool constructor * 8f3d611a4c56f43be7d76ff65e8d7b82d8fe5e98 refactor(wecom): replace generateSignature with computeSignature and update related tests * 79bc06c0ba7caac36a872a5667185da7b5d8f92e refactor(wecom): simplify stream message structure by introducing WeComAIBotMsgItem and WeComAIBotMsgItemImage types * 880c402ab7025fd2a65bda487486c854c52647f5 refactor(wecom): streamline AES encryption/decryption and improve task management logic * e54b1d39a5bf1991f150ae9230631a37d3f3017c refactor: parse Kimi API hostname once in constructor instead of per-call * 434b03ed677578dfe2270262e8cfa0ebe77cda24 remove wrapper methods * f0ce26ff2bfdf0f3a05743ca43594d022689760d style(config): use snake_case for EnvFile JSON field name * 65e1434e1b2690c72c83ade2969e740766e6c2a3 style: fix gofmt formatting in ExecConfig struct * de0f15d548f7a62521531423083e38a58b12fb1a style: fix golines struct tag alignment in SearXNGConfig * 47533a00cd5ca796aeb1a43d1ed80f93fdaf4d5e style: format code with gofmt * 8bd1935efb7392f74dd76f6b1cf0436761053c51 telegram: lower MaxMessageLength to 4000 for HTML expansion margin * c10959b645dd70930e5791c5f10a8237cf443309 test(irc): add unit tests for IRC channel * 4e330b297c99a3f5c1e44869b84028b8069ca433 test(mcp): add manager behavior and lifecycle unit tests * 529622b7d3d49d068f332a3a1ecef7eee2848bf1 test(memory): add unit, concurrency, and benchmark tests * 1e2ab4a5e51b08536c76ba4b0783ad560b6971c6 test(wecom): add dedupe helper coverage and align constant usage * db17cdc86deeb37927ed39e11919dabfcca0a03c test(wecom): align dedupe rotation behavior and add helper tests --- Released by [GoReleaser](https://github.com/goreleaser/goreleaser).