refactor: replace persistent subagents with ephemeral spawn tool (#280)

* refactor: replace persistent subagents with ephemeral spawn tool (#subagent)

- Drop subagents table, remove all persistent subagent infrastructure
- Add 'subagent' session type with parent_session_id on bot_sessions
- Rewrite subagent tool as single 'spawn' tool with parallel execution
- Create system_subagent.md prompt, add _subagent.md include for chat
- Limit subagent tools to file, exec, web_search, web_fetch only
- Merge subagent token usage into parent chat session in reporting
- Remove frontend subagent management page, update chat UI for spawn
- Fix UTF-8 truncation in session title, fix query not passed to agent

* refactor: remove history message page
This commit is contained in:
Acbox Liu
2026-03-22 19:03:28 +08:00
committed by GitHub
parent b88ca96064
commit b3a39ad93d
56 changed files with 716 additions and 4880 deletions
-4
View File
@@ -17,7 +17,6 @@ import (
"github.com/memohai/memoh/internal/schedule"
"github.com/memohai/memoh/internal/searchproviders"
"github.com/memohai/memoh/internal/settings"
"github.com/memohai/memoh/internal/subagent"
)
// MemberRoleResolver resolves a user's role within a bot.
@@ -45,7 +44,6 @@ func (a *BotMemberRoleAdapter) GetMemberRole(ctx context.Context, botID, channel
type Handler struct {
registry *Registry
roleResolver MemberRoleResolver
subagentService *subagent.Service
scheduleService *schedule.Service
settingsService *settings.Service
mcpConnService *mcp.ConnectionService
@@ -69,7 +67,6 @@ type Handler struct {
func NewHandler(
log *slog.Logger,
roleResolver MemberRoleResolver,
subagentService *subagent.Service,
scheduleService *schedule.Service,
settingsService *settings.Service,
mcpConnService *mcp.ConnectionService,
@@ -90,7 +87,6 @@ func NewHandler(
}
h := &Handler{
roleResolver: roleResolver,
subagentService: subagentService,
scheduleService: scheduleService,
settingsService: settingsService,
mcpConnService: mcpConnService,