diff --git a/README.md b/README.md index 225b5821..f6bce2e9 100644 --- a/README.md +++ b/README.md @@ -312,7 +312,7 @@ Requirements / tips: ### Tool Orchestration & Extensions - **YAML recipes** in `tools/*.yaml` describe commands, arguments, prompts, and metadata. - **Directory hot-reload** – pointing `security.tools_dir` to a folder is usually enough; inline definitions in `config.yaml` remain supported for quick experiments. -- **Large-result pagination** – outputs beyond 200 KB are stored as artifacts retrievable through the `query_execution_result` tool with paging, filters, and regex search. +- **Large tool outputs** – outputs beyond `reduction_max_length_for_trunc` are summarized via Eino reduction with full content persisted under `tmp/reduction/`; use `read_file` on the path in ``. - **Result compression** – multi-megabyte logs can be summarized or losslessly compressed before persisting to keep SQLite lean. **Creating a custom tool (typical flow)** diff --git a/README_CN.md b/README_CN.md index a5f1f492..23c44296 100644 --- a/README_CN.md +++ b/README_CN.md @@ -310,7 +310,7 @@ go build -o cyberstrike-ai cmd/server/main.go ### 工具编排与扩展 - `tools/*.yaml` 定义命令、参数、提示词与元数据,可热加载。 - `security.tools_dir` 指向目录即可批量启用;仍支持在主配置里内联定义。 -- **大结果分页**:超过 200KB 的输出会保存为附件,可通过 `query_execution_result` 工具分页、过滤、正则检索。 +- **大工具输出**:超过 `reduction_max_length_for_trunc` 时由 Eino reduction 摘要,完整内容落盘至 `tmp/reduction/`;按 `` 中的路径用 `read_file` 读取。 - **结果压缩/摘要**:多兆字节日志可先压缩或生成摘要再写入 SQLite,减小档案体积。 **自定义工具的一般步骤** diff --git a/cmd/mcp-stdio/main.go b/cmd/mcp-stdio/main.go index 6404cdd5..2776ded9 100644 --- a/cmd/mcp-stdio/main.go +++ b/cmd/mcp-stdio/main.go @@ -5,7 +5,6 @@ import ( "cyberstrike-ai/internal/logger" "cyberstrike-ai/internal/mcp" "cyberstrike-ai/internal/security" - "cyberstrike-ai/internal/storage" "flag" "fmt" "os" @@ -33,23 +32,6 @@ func main() { // 创建安全工具执行器 executor := security.NewExecutor(&cfg.Security, mcpServer, log.Logger) - // 初始化结果存储(与 internal/app/app.go 同样的逻辑)。 - // stdio 模式下原本不初始化,导致 'exec' 等查询型工具报"结果存储未初始化"。 - resultStorageDir := "tmp" - if cfg.Agent.ResultStorageDir != "" { - resultStorageDir = cfg.Agent.ResultStorageDir - } - if err := os.MkdirAll(resultStorageDir, 0755); err != nil { - fmt.Fprintf(os.Stderr, "创建结果存储目录失败: %v\n", err) - os.Exit(1) - } - resultStorage, err := storage.NewFileResultStorage(resultStorageDir, log.Logger) - if err != nil { - fmt.Fprintf(os.Stderr, "初始化结果存储失败: %v\n", err) - os.Exit(1) - } - executor.SetResultStorage(resultStorage) - // 注册工具 executor.RegisterTools(mcpServer) @@ -61,4 +43,3 @@ func main() { os.Exit(1) } } -