crabmate 0.4.0

Rust AI agent: OpenAI-compatible chat/completions, function calling, HTTP serve, ops CLI
Documentation
[
ToolSpec {
            name: "go_build",
            description: "在工作区根运行 `go build`(须存在 go.mod)。可选 package(默认 ./...)、output(-o 相对路径)、verbose。路径禁止 .. 与绝对路径。\n\n【go build 常用模式】单个文件:`go build -o <output> <file>`;构建整个项目:`go build ./...`;交叉编译:`GOOS=linux GOARCH=amd64 go build`。",
            category: ToolCategory::Development,
            parameters: tool_params::params_go_build,
            runner: runner_go_build,
            summary: ToolSummaryKind::Static("go build"),
        },
        ToolSpec {
            name: "go_test",
            description: "在工作区根运行 `go test`(须 go.mod)。可选 package、run(-run)、verbose、short、count、timeout。\n\n【go test 常用模式】运行所有测试:`go test ./...`;运行匹配用例:`go test -run TestName ./...`;显示详细输出:`go test -v ./...`;运行 benchmark:`go test -bench=. ./...`。",
            category: ToolCategory::Development,
            parameters: tool_params::params_go_test,
            runner: runner_go_test,
            summary: ToolSummaryKind::Static("go test"),
        },
        ToolSpec {
            name: "go_vet",
            description: "在工作区根运行 `go vet`(须 go.mod)。可选 package,默认 ./...。",
            category: ToolCategory::Development,
            parameters: tool_params::params_go_vet,
            runner: runner_go_vet,
            summary: ToolSummaryKind::Static("go vet"),
        },
        ToolSpec {
            name: "go_mod_tidy",
            description: "在工作区根运行 `go mod tidy`(须 go.mod)。**写盘**:仅当 confirm=true 时执行;可选 verbose。",
            category: ToolCategory::Development,
            parameters: tool_params::params_go_mod_tidy,
            runner: runner_go_mod_tidy,
            summary: ToolSummaryKind::Static("go mod tidy"),
        },
        ToolSpec {
            name: "go_fmt_check",
            description: "在工作区根运行 `gofmt -l`(须 go.mod):列出格式不一致的 .go 文件,不改写。可选 paths(默认 [\".\"])。",
            category: ToolCategory::Development,
            parameters: tool_params::params_go_fmt_check,
            runner: runner_go_fmt_check,
            summary: ToolSummaryKind::Static("gofmt -l (format check)"),
        },
]