面向 Linux 运维场景的本地优先(local-first)智能代理系统。
osagent 将自然语言意图、策略治理、命令执行和多主机编排拆分为独立组件,支持 TUI、HTTP API 和桌面客户端三种入口,重点解决以下问题:
- 运维操作的可解释执行(preview -> policy -> execute)
- 危险命令的分级防护(deny / needs_approval / dry-run 强制)
- 多主机批量执行与任务化流程(global-agent / guardian-agent)
- 可扩展工具注册表(YAML capability)
- 自然语言到运维动作:
/intent、/intent/preview、SSE 流式输出 - 直接命令治理执行:
/command/preview、/command/execute - 策略引擎(OPA + Rego):热更新、风险等级、审批和并发控制
- 执行引擎(Go):本地/SSH 执行、连接池、host-pinned worker
- 任务编排:
- Global Agent:按工作流计划 -> 运行 -> 审批 -> 完成
- Guardian Agent:周期健康巡检和守护计划
- 多入口:
- Bubble Tea TUI(
cmd/tui) - FastAPI 服务(
services/core) - Tauri + React 桌面客户端(
apps/client)
- Bubble Tea TUI(
[TUI / Client / curl]
|
v
osagent-core (FastAPI, Python)
| |
| policy eval | exec request
v v
osagent-policy (Go) osagent-exec (Go)
Rego/OPA Local/SSH command execution
组件职责:
osagent-core:意图解析、工具匹配、编排、会话、流式输出、任务 APIosagent-policy:策略决策(allow/deny/needs_approval/...)+ 审计标签osagent-exec:执行命令并返回 host 级结果tools/*.yaml:能力定义、参数、治理元数据、CLI 渲染模板policies/*.rego:审批、黑名单、并发模式、dry-run 规则
.
├── cmd/
│ ├── exec/ # Go 执行服务
│ ├── policy/ # Go 策略服务
│ └── tui/ # Go TUI 客户端
├── services/core/ # Python FastAPI 编排服务
├── tools/ # YAML 工具注册表(16 个能力)
├── policies/ # Rego 策略
├── apps/client/ # Tauri + React 桌面客户端
├── scripts/
│ ├── dev-up.sh # 启动 policy/exec/core
│ ├── dev-down.sh # 停止服务并清理
│ ├── local-first-test.sh # 本地链路验证
│ └── test-streaming.sh # SSE/流式测试
├── docs/demo/materials_bundle/# demo 与证据采集脚本
└── proto/ # 协议定义
- Go
>= 1.26 - Python
>= 3.11 curl- 可选:
jq - 如需 LLM 意图质量:Moonshot/Kimi API Key
在仓库根目录执行:
./scripts/dev-up.sh该脚本会:
- 编译
osagent-policy/osagent-exec/osagent-tui - 启动服务并监听:
/tmp/osagent-policy.sock/tmp/osagent-exec.sockhttp://127.0.0.1:18080
- 日志输出到
/tmp/osagent-logs/
curl -sS http://127.0.0.1:18080/health期望返回:{"status":"ok","version":"0.1.0"}。
方式 A:环境变量(启动前设置)
export KIMI_API_KEY=your_key
export KIMI_BASE_URL=https://api.moonshot.cn/v1
export KIMI_MODEL=kimi-k2.5方式 B:运行时 API
curl -sS -X POST http://127.0.0.1:18080/config/llm \
-H 'Content-Type: application/json' \
-d '{"api_key":"your_key","base_url":"https://api.moonshot.cn/v1","model":"kimi-k2.5"}'/tmp/osagent-tui常用输入范式:
cmd:在默认主机执行命令@host cmd:在指定主机执行> 自然语言:进入 copilot draft 流程:dry on|off:切换 dry-run:mode console|copilot:auto manual|assisted|guided_auto
./scripts/dev-down.shapps/client 是 Tauri + React 客户端,包含终端、多标签、SFTP、拓扑、IDE、插件、全局 Agent 面板等能力。
开发运行:
cd apps/client
npm install
npm run tauri dev仅前端调试:
cd apps/client
npm run dev建议依赖:
- Node.js
>= 20 - Rust stable(Tauri 2)
基础地址:http://127.0.0.1:18080
- 基础与配置
GET /healthPOST /config/apikeyPOST /config/llm
- 意图与执行
POST /intentPOST /intent/previewPOST /intent/streamPOST /intent/preview/streamPOST /executePOST /command/previewPOST /command/execute
- 会话与运行时视图
POST /session/startGET /session/{session_id}GET /session/{session_id}/messagesGET /sessionsGET /sessions/{session_id}/turnsGET /nodesGET /providersGET /resource-sessions
- 任务编排
POST /global-agent/planPOST /global-agent/tasks/{task_id}/runPOST /global-agent/tasks/{task_id}/approveGET /global-agent/tasksGET /global-agent/tasks/{task_id}GET /global-agent/tasks/{task_id}/events
- Guardian
POST /guardian-agent/plansPOST /guardian-agent/plans/{plan_id}/startPOST /guardian-agent/plans/{plan_id}/stopGET /guardian-agent/plansGET /guardian-agent/plans/{plan_id}GET /guardian-agent/plans/{plan_id}/events
- 工具注册表
GET /toolsGET /tools/{capability}
当前内置 16 个 capability:
check_service_statuscleanup_service_cachedeploy_servicehealth_checkquery_disk_usagequery_dns_lookupquery_environment_profilequery_firewall_statusquery_memory_usagequery_package_infoquery_portsquery_process_listquery_routesquery_service_logsrestart_servicerollback_service
治理元数据由每个 YAML 中的 governance 字段定义(风险级别、审批需求、执行模式、标签)。
策略引擎位于 policies/*.rego,核心机制:
- 黑名单拒绝:高危目标直接 deny
- 审批门禁:L2 默认审批,多主机 destructive 自动加强
- 并发控制:高风险任务强制顺序执行
- dry-run 强制:生产环境或 destructive 多主机场景自动要求
典型流程:
- core 根据 intent/argv 生成 capability + 参数
- 向 policy 发起评估
- 根据 policy 决策执行/拒绝/等待审批
- exec 按 host 返回结构化结果
后端链路冒烟:
./scripts/local-first-test.sh流式接口验证:
./scripts/test-streaming.shGo 测试:
go test ./...前端测试:
cd apps/client
npm test重点配置参考:
services/core/CONFIG.mddocs/demo/materials_bundle/config/osagent-demo.env.example
常用变量:
KIMI_API_KEYKIMI_BASE_URLKIMI_MODELKIMI_MAX_CONCURRENTOSAGENT_PLAN_MAX_CONCURRENTOSAGENT_EXEC_MAX_CONCURRENTOSAGENT_INTENT_DEDUPE_ENABLEDOSAGENT_INTENT_DEDUPE_WAIT_SECONDS
osagent-core当前启动逻辑固定从~/dev/ttyd/tools加载工具目录。- TUI 中
--core-socket参数目前未实际参与 HTTP 请求路由,core 默认仍走127.0.0.1:18080。 - 客户端中嵌入式 TUI 引导命令存在本地路径假设(见
apps/client/src/osagent/EmbeddedTuiTerminal.tsx)。 - 策略和工具模板可扩展,但生产落地前建议补全审计、发布流程和回滚保护测试。
ADR/:架构决策记录INTEGRATION_TEST_REPORT.md:集成测试结果LOCAL_AGENT_BENCHMARK_REQUIREMENTS.md:本地 agent 行为基准docs/demo/materials_bundle/:Demo 复现与证据采集