# AgentRuntime **Repository Path**: blootish/agent-runtime ## Basic Information - **Project Name**: AgentRuntime - **Description**: 让业务聚焦在业务,runtime提供agent运行的一切 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-01 - **Last Updated**: 2026-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AgentRuntime MVP 这是根据仓库现有文档直接落地的第一版可运行 MVP,不再停留在产品草稿。 当前交付的闭环是: - 用 YAML DSL 描述一个 Agent - Runtime 作为常驻 HTTP daemon 启动 - 自动加载 `agents/` 下的 agent 文件,并定时热重载 - 通过 `/v1/chat/completions` 提供最小 OpenAI 兼容接口 - 通过 CLI 向 daemon 发送消息 - 会话历史按 YAML 存到磁盘 - 运行事件按 JSONL 记录到磁盘 - 内置 `read_file`、`shell`、`fetch_url` 三个极简工具 - 默认 `mock` provider 可直接演示,也支持切换到 OpenAI 兼容接口 ## 目录 - `cmd/agentruntime`: 启动 daemon、CLI、状态查询 - `internal/app`: MVP 运行时实现 - `agents/`: Agent DSL 文件 - `configs/runtime.example.yaml`: 运行时配置 - `runtime-data/`: 运行后的会话和日志输出目录 ## 设计取舍 这版故意不做: - 管理台 - 多租户权限 - 中断恢复状态机 - 真正的 MCP 服务注册 - 复杂 workflow 编排 先证明文档里最关键的一条主线: > 用户提交一个 Agent DSL,Runtime 持续加载它,并通过统一入口跑起来,同时留下状态和日志。 ## 快速开始 ### 1. 启动 daemon ```bash go run ./cmd/agentruntime daemon --config configs/runtime.example.yaml ``` 默认监听 `127.0.0.1:8099`。 ### 2. 查看状态 ```bash go run ./cmd/agentruntime status --config configs/runtime.example.yaml ``` ### 3. 用 CLI 交互 ```bash go run ./cmd/agentruntime run --config configs/runtime.example.yaml --agent demo ``` 或者一次性发送: ```bash go run ./cmd/agentruntime run --config configs/runtime.example.yaml --agent demo --prompt "介绍一下这个 MVP" ``` 离线演示工具调用: ```bash go run ./cmd/agentruntime run --config configs/runtime.example.yaml --agent demo --prompt "tool: read_file ./README.md" ``` ### 4. 直接走 HTTP ```bash curl -s http://127.0.0.1:8099/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{ "agent": "demo", "session_id": "demo-session", "messages": [ {"role": "user", "content": "介绍一下这个运行时"} ] }' ``` ## 会话与日志 运行后会生成: - `runtime-data/sessions/*.yaml`: 用户会话 - `runtime-data/logs/runtime.jsonl`: 运行事件 会话文件示例: ```yaml id: session-123 agent: demo updated_at: "2026-06-26T12:00:00+08:00" conversation: - role: user content: 介绍一下这个运行时 created_at: "2026-06-26T12:00:00+08:00" - role: assistant content: mock[mock-mini] 已收到请求:介绍一下这个运行时 created_at: "2026-06-26T12:00:00+08:00" ``` ## 切换到真实模型 把 `configs/runtime.example.yaml` 里的 provider 改成: ```yaml provider: type: openai model: gpt-4.1-mini base_url: https://api.openai.com/v1 api_key_env: OPENAI_API_KEY ``` 然后在启动前设置环境变量: ```bash export OPENAI_API_KEY=... ``` ## Agent DSL 示例 ```yaml name: demo description: 一个用于验证 AgentRuntime MVP 的极简 agent tools: - read_file - shell instruction: | 默认直接回答。 如果需要读取文件或执行命令,输出一段 JSON: {"type":"tool_call","tool":"read_file","input":"./README.md"} ``` ## 已知边界 - OpenAI 兼容接口目前只覆盖最小 `chat.completions` 子集 - 工具调用使用文本 JSON 协议,不是原生 function calling - 自动热重载使用轮询,不依赖文件监听器 - `mock` provider 主要用于闭环验证,不演示真实推理质量 - `mock` provider 可用 `tool: ` 触发一次工具调用,方便本地验证