feat(ctx): ContextPolicy tool 上下文策略(§13.8)

- SDK ToolDef 加 ContextPolicy string(默认 none / 可设 prune)
- StageAfterToolcall 后检查工具 ContextPolicy=prune → RelevanceContext.Prune
- 所有现有测试通过
This commit is contained in:
JianFeeeee
2026-09-10 15:41:23 +08:00
parent 5608abdf5a
commit 772a494223
2 changed files with 7 additions and 0 deletions

View File

@ -305,6 +305,12 @@ func (a *Agent) process(input string, stageCtx *sdk.StageContext) (response stri
result = r
}
}
// ContextPolicy: prune 工具调用后执行上下文裁剪§13.8
if def := a.stageHost.ToolDef(tc.Name); def != nil && def.ContextPolicy == "prune" {
if a.context != nil {
a.context.Prune(result, 20, a.docStore)
}
}
msgContent := ""
if contentOnce {

View File

@ -106,6 +106,7 @@ type ToolDef struct {
Parameters map[string]interface{} `json:"parameters"`
NoMemory bool `json:"no_memory,omitempty"` // 此工具输出不参与记忆计算,但原文保留
Cleaner func(string) string `json:"-"` // 计算层过滤函数,不改原文;仅在向量化/jieba/蒸馏时调用
ContextPolicy string `json:"context_policy,omitempty"` // 工具上下文策略:"none"(默认) / "prune"
}
// IOInjector provides methods for injecting input and interrupts into the agent pipeline.