# LinuxAgent **Repository Path**: Sckaro/linux-agent ## Basic Information - **Project Name**: LinuxAgent - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AgentDemo 一个基于 Go 实现的 Linux 运维智能体最小可运行项目。 ## 当前能力 - 基于内存的会话管理 - Linux 命令风险分级 - 可切换的终端执行后端 - 统一工具执行层 - 持久 PTY 会话后端 - Agent 编排循环 - Mock 规划器 - 可选 OpenAI Responses API 规划器 - HTTP 接口:运行、确认、查询会话、查询日志、读取终端、终端中断 ## 目录 ```text cmd/server/main.go 服务入口 internal/agent Agent 编排与会话模型 internal/api HTTP 接口 internal/llm Mock/OpenAI 规划器 internal/storage 内存会话与审计日志 internal/toolexec 通用工具执行分发层 internal/toolimpl 具体工具实现 internal/terminalbackend PTY 终端执行层 internal/tools 风险控制 ``` ## 环境变量 - `PORT`:服务端口,默认 `8080` - `DEFAULT_WORKDIR`:命令默认工作目录 - `TERMINAL_BACKEND`:`persistent-pty` 或 `pty`,默认 `persistent-pty` - `LLM_PROVIDER`:`mock` 或 `openai` - `OPENAI_API_KEY`:使用 OpenAI 时必填 - `OPENAI_BASE_URL`:默认 `https://api.openai.com/v1` - `OPENAI_MODEL`:默认 `gpt-4.1-mini` ## 测试 ```bash env GOCACHE=/tmp/agentdemo-gocache go test ./... ``` ## 接口示例 ### 1. 发起任务 ```bash curl -X POST http://localhost:8080/agent/run \ -H "Content-Type: application/json" \ -d '{"user_input":"帮我检查磁盘空间"}' ``` ### 2. 确认命令 ```bash curl -X POST http://localhost:8080/agent/confirm \ -H "Content-Type: application/json" \ -d '{"session_id":"sess_xxx","approval_id":"approval_xxx","approved":true}' ``` ### 3. 查询会话 ```bash curl http://localhost:8080/agent/session/sess_xxx ``` ### 4. 查询日志 ```bash curl http://localhost:8080/agent/session/sess_xxx/logs ``` ### 5. 读取最近终端输出 ```bash curl "http://localhost:8080/agent/session/sess_xxx/terminal?max_chars=2000" ``` ### 6. 中断当前终端命令 ```bash curl -X POST http://localhost:8080/agent/session/sess_xxx/interrupt ``` ## 说明 当前项目支持两种终端后端: - `pty` - 每条命令一次 PTY 执行 - 实现简单,适合最小版本 - `persistent-pty` - 每个会话维护一个持久 bash 进程 - 支持跨命令保留 shell 上下文 - 更接近真实的“命令行窗口控制” 默认使用 `persistent-pty`,这也是当前更推荐的运行方式。