背景
当前内置 tool 只有 stello_create_session 和 activate_skill。LLM Agent 在实际使用中经常需要搜索和访问外部 API,但直接使用 fetch/curl 等本地工具在 SaaS 多租户场景下不安全(SSRF、cookie 泄漏、网络环境暴露)。
方案
新增两个内置 tool,通过 Provider 接口注入实现,走服务端代理模式。
新增内置 tool
stello_web_search — 搜索引擎查询,返回结构化结果列表
stello_web_fetch — 无状态 HTTP 请求代理,每次请求独立
新增 Provider 接口(注入点)
interface SearchProvider {
search(query: string, options?: { limit?: number }): Promise<{
results: Array<{ title: string; url: string; snippet: string }>
}>
}
interface HttpProvider {
fetch(request: { url: string; method?: string; headers?: Record<string, string>; body?: string }): Promise<{
status: number; headers: Record<string, string>; body: string
}>
}
核心约束
- 无状态:HttpProvider 禁止保留 cookies / session / redirect chain,每次请求完全独立,多用户场景下防止状态泄漏
- 按需注入:Provider 未注入时对应 tool 不出现在 LLM 可用工具列表中(同
activate_skill 在无 skills 时的行为)
- 响应处理:HTML 提取正文(去 script/style/nav)、JSON 直传、截断超长响应、拒绝二进制内容
- 注入位置:
StelloAgentConfig 层,与 LLMAdapter 同级
实现路径
- 定义
SearchProvider 和 HttpProvider 接口
- 扩展
createBuiltinToolEntries 接收可选 providers
- 实现 tool 定义和 execute 逻辑(含响应处理)
StelloAgentConfig 新增 providers 注入点
- 可选:提供本地开发用的默认实现(node fetch wrapper)
关联
背景
当前内置 tool 只有
stello_create_session和activate_skill。LLM Agent 在实际使用中经常需要搜索和访问外部 API,但直接使用 fetch/curl 等本地工具在 SaaS 多租户场景下不安全(SSRF、cookie 泄漏、网络环境暴露)。方案
新增两个内置 tool,通过 Provider 接口注入实现,走服务端代理模式。
新增内置 tool
stello_web_search— 搜索引擎查询,返回结构化结果列表stello_web_fetch— 无状态 HTTP 请求代理,每次请求独立新增 Provider 接口(注入点)
核心约束
activate_skill在无 skills 时的行为)StelloAgentConfig层,与LLMAdapter同级实现路径
SearchProvider和HttpProvider接口createBuiltinToolEntries接收可选 providersStelloAgentConfig新增 providers 注入点关联