Xubin Ren
dbdb43faff
feat: channel plugin architecture with decoupled configs
...
- Add plugin discovery via Python entry_points (group: nanobot.channels)
- Move 11 channel Config classes from schema.py into their own channel modules
- ChannelsConfig now only keeps send_progress + send_tool_hints (extra=allow)
- Each built-in channel parses dict->Pydantic in __init__, zero internal changes
- All channels implement default_config() for onboard auto-population
- nanobot onboard injects defaults for all discovered channels (built-in + plugins)
- Add nanobot plugins list CLI command
- Add Channel Plugin Guide (docs/CHANNEL_PLUGIN_GUIDE.md)
- Fully backward compatible: existing config.json and sessions work as-is
- 340 tests pass, zero regressions
2026-03-14 16:13:38 +08:00
Xubin Ren
ca5047b602
feat(web): multi-provider web search + Jina Reader fetch
2026-03-13 05:44:16 +00:00
Xubin Ren
20b4fb3bff
fix: langsmith callback 防覆盖 + 加 optional dep
2026-03-13 04:54:22 +00:00
Xubin Ren
da325e4532
Merge branch 'main' into pr-1920
2026-03-13 04:20:14 +00:00
Xubin Ren
4b50a7b6c0
Merge branch 'main' into pr-1916
2026-03-13 03:57:09 +00:00
Xubin Ren
6d3a0ab6c9
fix(memory): validate save_memory payload and raw-archive on repeated failure
...
- Require both history_entry and memory_update, reject null/empty values
- Fallback to tool_choice=auto when provider rejects forced function call
- After 3 consecutive consolidation failures, raw-archive messages to
HISTORY.md without LLM summarization to prevent context window overflow
2026-03-13 03:53:50 +00:00
Xubin Ren
60c29702cc
Merge branch 'main' into pr-1810
...
# Conflicts:
# nanobot/agent/memory.py
# tests/test_memory_consolidation_types.py
2026-03-13 03:29:16 +00:00
Xubin Ren
62a2e71748
Merge PR #1958 : fix(restart): use -m nanobot for Windows compatibility
...
fix(restart): use -m nanobot for Windows compatibility
2026-03-13 11:19:57 +08:00
Xubin Ren
4f77b9385c
fix(memory): fallback to tool_choice=auto when provider rejects forced function call
...
Some providers (e.g. Dashscope in thinking mode) reject object-style
tool_choice with "does not support being set to required or object".
Retry once with tool_choice="auto" instead of failing silently.
Made-with: Cursor
2026-03-13 03:18:08 +00:00
chengyongru
6ad30f12f5
fix(restart): use -m nanobot for Windows compatibility
...
On Windows, sys.argv[0] may be just "nanobot" without full path when
running from PATH. os.execv() doesn't search PATH, causing restart to
fail with "No such file or directory".
Fix by using `python -m nanobot` instead of relying on sys.argv[0].
Fixes #1937
2026-03-13 11:01:01 +08:00
Xubin Ren
ba045f56d8
Merge PR #1941 : fix(qq): restore plain text replies for legacy clients
...
fix(qq): restore plain text replies for legacy clients
2026-03-13 10:57:58 +08:00
chengyongru
127ac39063
fix: catch BaseException in MCP connection to handle CancelledError
2026-03-13 10:23:15 +08:00
Frank
a09245e919
fix(qq): restore plain text replies for legacy clients
2026-03-12 12:48:25 -07:00
Re-bin
774452795b
fix(memory): use explicit function name in tool_choice for DashScope compatibility
2026-03-12 16:09:24 +00:00
Re-bin
3fa62e7fda
fix: remove duplicate dim/arrow prefix in interactive progress line
2026-03-12 15:38:39 +00:00
Re-bin
48c74a11d4
Merge remote-tracking branch 'origin/main' into pr-1930
2026-03-12 15:28:57 +00:00
Re-bin
3467a7faa6
fix: improve local provider auto-selection and update docs for VolcEngine/BytePlus
2026-03-12 15:22:15 +00:00
Jiajun Xie
ec6e099393
feat(ci): add GitHub Actions workflow for test directory
...
- nanobot/channels/matrix.py: Add keyword-only parameters restrict_to_workspace/workspace to MatrixChannel.__init__ and assign them to _restrict_to_workspace/_workspace with proper type conversion and path resolution
- tests/test_commands.py: Add _strip_ansi() function to remove ANSI escape codes, use regex assertions for --workspace/--config parameters to allow 1 or 2 dashes
2026-03-12 21:54:22 +08:00
chengdu121
d51ec7f0e8
fix: preserve interactive CLI formatting for async subagent output
2026-03-12 19:15:04 +08:00
gaoyiman
556cb3e83d
feat: add support for Ollama local models in ProvidersConfig
2026-03-12 14:58:03 +08:00
gaoyiman
8865b6848c
Merge branch 'main' into feat-volcengine-tuning
2026-03-12 14:56:05 +08:00
HuangMinlong
9e9051229e
Integrate Langsmith for conversation tracking
...
Added support for Langsmith API key to enable conversation viewing.
2026-03-12 14:34:32 +08:00
Re-bin
64888b4b09
Simplify reply context extraction, fix slash commands broken by reply injection, attach reply media regardless of caption
2026-03-12 06:16:57 +00:00
Re-bin
869149ef1e
Merge branch 'main' into pr-1900
2026-03-12 06:06:26 +00:00
Re-bin
6141b95037
fix: feishu bot mention detection — user_id can be None, not just empty string
2026-03-12 06:00:39 +00:00
Re-bin
bd1ce8f144
Simplify feishu group_policy: default to mention, clean up mention detection
2026-03-12 04:45:57 +00:00
Re-bin
94e9b06086
Merge branch 'main' into pr-1768
2026-03-12 04:38:49 +00:00
Re-bin
64aeeceed0
Add /restart command: restart the bot process from any channel
2026-03-12 04:33:51 +00:00
Re-bin
231b02963d
Merge branch 'main' into pr-1751
...
Made-with: Cursor
# Conflicts:
# nanobot/agent/loop.py
2026-03-12 03:53:59 +00:00
Re-bin
0a0017ff45
fix: raise tool result history limit to 16k and force save_memory in consolidation
2026-03-12 03:08:53 +00:00
Re-bin
35260ca157
fix: raise persisted tool result limit to 16k
2026-03-12 02:50:28 +00:00
John Doe
3f799531cc
Add media download functionality
2026-03-12 06:43:59 +07:00
John Doe
1eedee0c40
add reply context extraction for Telegram messages
2026-03-12 06:23:02 +07:00
Re-bin
0d94211a93
enhance: improve filesystem & shell tools with pagination, fallback matching, and smarter output
2026-03-11 16:20:11 +00:00
Re-bin
9d0db072a3
fix: guard quoted home paths in shell tool
2026-03-11 15:43:04 +00:00
Re-bin
85609c99b3
Merge remote-tracking branch 'origin/main' into pr-1827
2026-03-11 15:32:52 +00:00
Re-bin
9fc74bde9a
Merge remote-tracking branch 'origin/main' into pr-1874
2026-03-11 15:26:39 +00:00
Re-bin
254cfd48ba
refactor: auto-discover channels via pkgutil, eliminate hardcoded registry
2026-03-11 14:23:19 +00:00
Re-bin
c72c2ce7e2
refactor: move generation settings to provider level, eliminate parameter passthrough
2026-03-11 09:47:04 +00:00
Re-bin
a180e84536
Merge remote-tracking branch 'origin/main' into pr-1868
2026-03-11 09:10:29 +00:00
Re-bin
4478838424
fix(pr-1863): complete Ollama provider routing and README docs
2026-03-11 08:42:12 +00:00
Re-bin
a6f37f61e8
Merge remote-tracking branch 'origin/main' into pr-1863
2026-03-11 08:22:02 +00:00
Re-bin
7ceddcded6
fix(wecom): await async disconnect, add SDK attribution in README
2026-03-11 08:04:14 +00:00
Re-bin
d0b4f0d70d
feat(wecom): add WeCom channel with SDK pinned to GitHub tag v0.1.2
2026-03-11 07:57:12 +00:00
WhalerO
6ef7ab53d0
refactor: centralize tool call serialization in ToolCallRequest
2026-03-11 15:32:43 +08:00
WhalerO
ed82f95f0c
fix: preserve provider-specific tool call metadata for Gemini
2026-03-11 15:32:26 +08:00
Re-bin
eb6310c438
merge origin/main into pr-1327
...
Made-with: Cursor
2026-03-11 07:30:38 +00:00
ethanclaw
12104c8d46
fix(memory): pass temperature, max_tokens and reasoning_effort to memory consolidation
...
Fix issue #1823 : Memory consolidation does not inherit agent temperature
and maxTokens configuration.
The agent's configured generation parameters were not being passed through
to the memory consolidation call, causing it to fall back to default values.
This resulted in the consolidation response being truncated before the
save_memory tool call was emitted.
- Pass temperature, max_tokens, reasoning_effort from AgentLoop to
MemoryConsolidator and then to MemoryStore.consolidate()
- Forward these parameters to the provider.chat_with_retry() call
Fixes #1823
2026-03-11 14:22:33 +08:00
Jerome Sonnet (letzdoo)
dee4f27dce
feat: add Ollama as a local LLM provider
...
Add native Ollama support so local models (e.g. nemotron-3-nano) can be
used without an API key. Adds ProviderSpec with ollama_chat LiteLLM
prefix, ProvidersConfig field, and skips API key validation for local
providers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:13:14 +04:00
Re-bin
76c6063141
chore: normalize helpers.py file mode
2026-03-11 03:50:54 +00:00