lc6464
6d04d15ce0
fix(tool-feedback): dedupe duplicate content and keep full explanations
2026-04-26 00:40:55 +08:00
lc6464
5cd10b594a
feat(pico): add support for tool_calls in chat messages
2026-04-25 23:43:10 +08:00
美電球
41f4d95597
Merge pull request #2657 from lc6464/fix-deepseek-v4-thinking-history
...
fix(reasoning): persist canonical history for DeepSeek and web chat
2026-04-25 15:08:48 +08:00
美電球
788f76f422
Merge pull request #2666 from afjcjsbx/fix/mcp-nil-arguments
...
fix(mcp): send empty object instead of null for tool
2026-04-25 11:38:48 +08:00
美電球
2f91cc0a80
Merge pull request #2660 from afjcjsbx/fix/tool-feedback-json-format
...
fix(tool-feedback): format tool args as JSON code blocks
2026-04-25 11:34:09 +08:00
afjcjsbx
9d8f0dc877
fix(mcp): send empty object instead of null for tool
2026-04-24 21:24:29 +02:00
Hoshina
9ca73b944f
fix(agent): preserve prompt hook and cache semantics
2026-04-25 01:25:17 +08:00
afjcjsbx
94a6b0c0f5
fix(tool-feedback): format tool args as JSON code blocks
2026-04-24 18:07:48 +02:00
lc6464
bb0f983708
fix(reasoning): persist canonical history for DeepSeek and web chat
2026-04-24 21:45:41 +08:00
Hoshina
48d8952591
feat(agent): migrate tool prompts to capability slots
2026-04-24 19:36:46 +08:00
Hoshina
2e65b1be83
feat(agent): add structured prompt layering
2026-04-24 18:14:28 +08:00
wenjie
cac4f21746
fix(tools): improve web search provider fallback ( #2629 )
...
- centralize web search provider readiness and resolution logic
- fall back when the configured provider is unavailable or invalid
- allow native-search-capable models to use built-in search without the client tool
- simplify the tools page and add direct access to web search settings
- add backend, agent, and integration tests for the new selection behavior
2026-04-23 15:39:16 +08:00
lxowalle
451db2f5d8
Feat(channels): unify animated tool feedback across chat channels and Pico ( #2622 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
* fix review blockers in pico token cache and tool feedback
fix(provider): preserve function thought signatures
fix(feishu): recover tool feedback after edit fallback
* * delete dead code
* fix(pico): clean up tool feedback progress state
* fix ci
* fix(web): preserve tool feedback line breaks in chat
* fix(channels): preserve tool feedback progress state
fix(pico): preserve context usage when finalizing tool feedback
chore: record branch review pass
fix: preserve tool feedback finalization state
fix(web): handle pico history update fallback
* fix ci
2026-04-23 10:35:50 +08:00
Mauro
68ceb54b36
Merge pull request #2535 from afjcjsbx/feat/mcp-channel-commands
...
feat(commands): add MCP slash commands and tool details
2026-04-22 14:54:28 +02:00
lxowalle
77b0c43392
refactor: support explicit provider field in model list entries ( #2609 )
...
* refactor: support explicit model list providers
* fix(web): preserve explicit model providers
* fix(web): preserve legacy provider prefixes on model updates
fix(models): normalize explicit provider-prefixed ids
fix(api): preserve legacy model updates across providers
fix(agent): preserve config identity for explicit provider refs
* fix ci
2026-04-22 11:28:47 +08:00
Mauro
3316ee6923
feat(web): download files on frontend ( #2563 )
...
* feat(web): download attachments in frontend
* fix: proxy pico media and force svg downloads
* feat(web): hide ephemeral media refs from persisted session history
2026-04-22 11:28:04 +08:00
afjcjsbx
5a13616b64
fix(mcp): surface MCP init failures to command handlers
2026-04-21 11:01:04 +02:00
afjcjsbx
276f5425f0
feat(commands): add MCP slash commands and tool details
2026-04-21 11:01:04 +02:00
Guoguo
6ca7311273
feat(agent): add context usage ring indicator and /context command ( #2537 )
...
Add a context window usage indicator to the web chat UI and a /context
slash command that works across all channels.
Backend:
- Add computeContextUsage() estimating history + system + tool tokens
- Attach ContextUsage to outbound messages via the pico WebSocket protocol
- Add /context command showing context stats as formatted text
- Add EstimateSystemTokens() on ContextBuilder for system prompt estimation
Frontend:
- Add ContextUsageRing component (SVG ring + hover/tap popover)
- Show usage percentage, token counts, and compression threshold
- Hover on desktop (150ms leave delay), tap on mobile
- "View Details" sends /context with 1s cooldown
- i18n support (en/zh) for popover labels
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-21 16:30:02 +08:00
sky5454
329e68e017
refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent ( #2585 )
...
* refactor(agent): introduce interfaces for MessageBus and ChannelManager
Phase 2 of loop.go refactor — dependency inversion using adapter pattern.
- Add interfaces.MessageBus and interfaces.ChannelManager interfaces
- Create adapters/messagebus.go wrapping *bus.MessageBus
- Create adapters/channelmanager.go wrapping *channels.Manager
- Update AgentLoop to use interfaces instead of concrete types
- Update registerSharedTools to accept interfaces.MessageBus
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor(agent): restructure pipeline and rename loop files
Pipeline refactoring:
- Split pipeline.go (1400 lines) into focused files:
- pipeline_setup.go (~115 lines): SetupTurn method
- pipeline_llm.go (~519 lines): CallLLM method
- pipeline_execute.go (~693 lines): ExecuteTools method
- pipeline_finalize.go (~78 lines): Finalize method
- Pipeline struct and NewPipeline remain in pipeline.go (~39 lines)
Agent file renaming:
- Rename loop_*.go to agent_*.go for consistent naming:
- loop.go -> agent.go, loop_message.go -> agent_message.go, etc.
- Merge turn.go + turn_exec.go into turn_state.go
- Rename loop_turn.go -> turn_coord.go
Documentation:
- Update docs/pipeline-restructuring-plan.md
- Add docs/agent-rename-plan.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix(agent): code format fixed
* refactor(agent): code test file added/renamed
* docs(agent): update agent refactor docs
* fix(agent): fix agent hardAbortX
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-21 10:55:50 +08:00
lxowalle
6421f146a9
Revert "Feat/channel tool feedback animation ( #2569 )" ( #2596 )
...
This reverts commit e556a816e4 .
2026-04-20 18:30:29 +08:00
lxowalle
e556a816e4
Feat/channel tool feedback animation ( #2569 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
2026-04-20 15:20:26 +08:00
sky5454
12d5421c26
refactor(agent): split loop.go into focused sub-packages
...
Break up the monolithic 4384-line loop.go into 12 focused files:
- loop.go: core AgentLoop struct and main Run loop
- loop_turn.go: turn execution logic (runTurn, askSideQuestion, etc.)
- loop_utils.go: pure utility functions (formatters, helpers)
- loop_init.go: constructor and tool registration
- loop_message.go: message handling (processMessage, routing)
- loop_command.go: command processing (/use, /btw, etc.)
- loop_mcp.go: MCP runtime management
- loop_event.go: event/hook system helpers
- loop_media.go: media resolution and artifact handling
- loop_outbound.go: response publishing
- loop_transcribe.go: audio transcription
- loop_steering.go: steering queue and continuation
- loop_inject.go: setter injection methods
No functional changes - pure code movement with updated imports.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-17 11:17:12 +08:00
Cytown
f5e779e22e
refactor: make agent loop support parallel and update docs
2026-04-16 14:43:15 +08:00
lxowalle
e22b4e1eee
feat(agent): support btw side questions ( #2532 )
2026-04-16 10:53:09 +08:00
美電球
ead2dc9699
Merge pull request #2524 from SiYue-ZO/feature/sogou-web-search-default
...
Add configurable Sogou-backed web search
2026-04-15 20:50:53 +08:00
wenjie
7bd11181a6
fix(agent): preserve reused tool call IDs across turns ( #2528 )
...
Scope tool result deduplication to each assistant tool-call block so providers
that reuse call IDs across separate turns do not lose valid tool results. Also
drop invalid empty tool call IDs and orphaned tool messages after validation.
2026-04-15 20:18:09 +08:00
afjcjsbx
e60a687387
fix lint
2026-04-14 22:35:02 +02:00
afjcjsbx
7824bc715f
add test
2026-04-14 22:31:30 +02:00
afjcjsbx
d3d639cb7d
fix lint
2026-04-14 22:21:33 +02:00
afjcjsbx
1245f2ddf6
fix(agent): recover after image-input-unsupported failures
2026-04-14 22:15:28 +02:00
SiYue-ZO
93977bf348
Add configurable Sogou-backed web search
2026-04-14 22:58:07 +08:00
lxowalle
0425cd4d77
refactor skills registries and add GitHub-backed skill discovery ( #2442 )
...
* refactor skills registries and add GitHub-backed skill discovery
* fix ci
* fix command error
* fix default skills install registry behavior
* fix github registry URL parsing and versioned skill links
* fix skills registry config compatibility and URL installs
* * fix lint
* fix deprecated github base url compatibility
* fix skills registry yaml and github default branch handling
* fix github skills registry fallback and install metadata
* fix cli skills install origin metadata
* fix clawhub registry env compatibility
* fix skills registry config merge compatibility
* fix skill install metadata consistency and onboard template copy
* fix yaml overrides for default skills registries
* fix install_skill registry metadata normalization
* fix github skill URL parsing for slash branch names
* fix skills registry install/search validation and github URLs
* fix github skill URL host validation
* fix install_skill validation for invalid registry archives
* fix redundant skills registry names in saved config
* fix github blob skill URL installs and metadata links
* fix github registry URL scheme validation
* fix v0 skills migration preserving github registry defaults
* fix github blob skill install directory resolution
* fix install_skill rollback on origin metadata write failure
* fix github skill URL validation and registry JSON merging
* fix github registry target resolution and metadata links
* fix install_skill force reinstall rollback
* fix skills config compatibility and legacy security overlays
* fix ci
2026-04-14 15:14:16 +08:00
daming大铭
df9124b824
Merge pull request #2249 from alexhoshina/refactor-inbound-context-routing-session
...
Refactor inbound context routing session
2026-04-14 12:45:34 +08:00
美電球
08283dde61
Merge pull request #2489 from afjcjsbx/fix/mcp-reload-discovery-tools
...
fix(agent): reinitialize MCP and discovery tools after reload
2026-04-14 11:54:47 +08:00
Hoshina
69ff6909e1
merge: integrate main seahorse context changes
2026-04-13 23:02:38 +08:00
Hoshina
c5c5ea22d6
fix(session): address review regressions
2026-04-13 22:51:44 +08:00
Hoshina
0c6ad33a9c
merge: integrate main into refactor-inbound-context-routing-session
2026-04-13 13:25:07 +08:00
Hoshina
0f23535165
fix(runtime): address session promotion and steering regressions
2026-04-13 12:35:27 +08:00
Liu Yuan
f7e768152e
feat(agent): /clear now clears seahorse DB in addition to JSONL
...
- Add Clear(ctx, sessionKey) to ContextManager interface
- Implement Clear for legacy (JSONL) and seahorse (DB + JSONL)
- Add Engine.ClearSession + Store.ClearConversation
- Fix FTS5 DELETE trigger syntax in schema (was using wrong
external-content FTS5 syntax; now uses standard DELETE FROM)
- Fix ClearSession to skip sessions never ingested (was creating
blank conversations record via GetOrCreateConversation)
- Simplify summary_parents DELETE into single OR statement
- Add TestStoreClearConversation unit test
2026-04-13 11:04:45 +08:00
afjcjsbx
815e43e3ef
fix(agent): reinitialize MCP and discovery tools after reload
2026-04-12 21:37:19 +02:00
lc6464
e9f55d776d
fix(review): address copilot backpressure and SSE parse feedback
2026-04-11 11:18:41 +08:00
lc6464
86917faa9b
fix(ci): resolve lint header casing and fallback test routing
2026-04-11 02:23:35 +08:00
lc6464
c8bac699fe
fix(pico): separate thought and normal messages
2026-04-10 20:23:12 +08:00
lc6464
bd88385923
fix(agent): gate pico interim publish for internal turns
2026-04-10 00:19:45 +08:00
lc6464
bd13092831
fix(review): align tool feedback reconstruction with runtime behavior
2026-04-09 23:52:02 +08:00
lc6464
9982ee29a8
fix(pico): avoid duplicate final websocket message
2026-04-09 22:59:36 +08:00
lc6464
2aeed8fb3a
fix(pico): stream assistant text between tool calls
2026-04-09 22:32:35 +08:00
lc6464
5b596ed2f0
fix(chat): keep tool summaries and assistant output together
2026-04-09 22:16:36 +08:00
美電球
3e3b6aed90
fix(tools): message tool no longer suppresses reply to originating chat ( #2180 )
...
When the message tool sent to a different chat (e.g., a group), the
agent's final response to the originating chat was incorrectly skipped
because HasSentInRound() was a simple bool that didn't distinguish
targets. Replace with HasSentTo(channel, chatID) that tracks all
send targets per round and only suppresses when the target matches.
Fixes cross-conversation message causing "Processing..." to hang.
2026-04-08 21:40:12 +08:00