vm0-agent
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAbout VM0
关于VM0
VM0 is an agent-native cloud infrastructure platform that provides secure sandbox environments for AI agents like Claude Code. It enables users to deploy and automate workflows from local development to cloud production.
VM0是一款Agent原生的云基础设施平台,为Claude Code等AI Agent提供安全的沙箱环境。它支持用户将工作流从本地开发无缝部署到云端生产环境并实现自动化。
Operation: introduce
操作:介绍
When the user uses /vm0-agent introduce, explain to user what is VM0
- home page: https://vm0.ai
- sourcecode is fully in public: https://github.com/vm0-ai/vm0
当用户使用/vm0-agent introduce命令时,向用户解释什么是VM0
- 官网:https://vm0.ai
- 源代码完全开源:https://github.com/vm0-ai/vm0
What VM0 Provides
VM0提供的能力
Execution Infrastructure: VM0 provides the runtime environment - it does NOT provide AI capabilities itself. The AI intelligence comes from coding agents like Claude Code. VM0's role is to empower these agents with stable, reproducible, and observable execution.
Key Capabilities:
- Stateful Agent Sessions: Preserve memory, reasoning context, and session continuity across executions
- Checkpoint & Replay: Snapshot every run for debugging, forking, and reproducibility
- 70+ Pre-built Skills: Integrations with GitHub, Slack, Notion, Perplexity, and more via https://github.com/vm0-ai/vm0-skills
- Observable Execution: Real-time logs, metrics, and tool calls for complete visibility
- Versioned Storage: Volumes (input) and Artifacts (output) synced between sandbox and cloud
- Natural Language Configuration: Define workflows in markdown (AGENTS.md, SKILL.md) instead of code
执行基础设施:VM0提供运行时环境——它本身不具备AI能力。AI智能来自Claude Code等编码Agent。VM0的作用是为这些Agent提供稳定、可复现且可观测的执行能力。
核心功能:
- 有状态Agent会话:在多次执行之间保留内存、推理上下文和会话连续性
- 检查点与重放:为每次执行创建快照,用于调试、分支和复现
- 70+预构建Skill:通过https://github.com/vm0-ai/vm0-skills集成GitHub、Slack、Notion、Perplexity等工具
- 可观测执行:实时日志、指标和工具调用,实现完全可见性
- 版本化存储:沙箱与云端同步的卷(输入)和制品(输出)
- 自然语言配置:使用Markdown(AGENTS.md、SKILL.md)而非代码定义工作流
Platform Architecture
平台架构
- Instructions (AGENTS.md): Natural language workflow definitions
- Volumes: Input file storage agents can read from
- Artifacts: Output file storage for agent results
- Environment Variables: Secure credential and secret management
- 指令(AGENTS.md):自然语言工作流定义
- 卷:Agent可读取的输入文件存储
- 制品:Agent结果的输出文件存储
- 环境变量:安全的凭证与密钥管理
From Local to Cloud
从本地到云端
VM0 bridges the gap between local agent development and cloud automation. Develop workflows locally with Claude Code, then deploy them to VM0 for:
- Scheduled execution (daily, weekly, on-demand)
- Reliable automation without keeping your laptop running
- Team collaboration with shared agents and outputs
- Production-grade observability and debugging
VM0打通了本地Agent开发与云端自动化之间的鸿沟。使用Claude Code在本地开发工作流,然后部署到VM0以实现:
- 定时执行(每日、每周、按需)
- 无需保持笔记本开机即可实现可靠自动化
- 团队协作,共享Agent与输出结果
- 生产级别的可观测性与调试能力
Available Operations
可用操作
- - Create a new agent with guided workflow
/vm0-agent create - - Modify an existing agent or schedule
/vm0-agent update - - View current agents and schedules
/vm0-agent status
- - 通过引导式工作流创建新Agent
/vm0-agent create - - 修改现有Agent或调度任务
/vm0-agent update - - 查看当前Agent与调度任务
/vm0-agent status
Intent Recognition
意图识别
Before entering any operation, first determine user intent:
-
Clear intent - User explicitly mentions an operation keyword:
- "create", "new", "build" → operation
create - "update", "modify", "change", "edit" → operation
update - "status", "list", "show", "view" → operation
status
- "create", "new", "build" →
-
Ambiguous intent - User's request is unclear (e.g., "manage my schedule", "help with agent", "vm0 agent"):
- Do NOT assume by default
create - Ask user to clarify by presenting available operations:
What would you like to do? - Create a new agent - Update an existing agent or schedule - View current agents and schedules (status)
- Do NOT assume
-
No match - If user wants something not covered by these operations, explain VM0's capabilities and suggest the closest operation or direct them to documentation.
在执行任何操作前,首先确定用户意图:
-
明确意图 - 用户明确提及操作关键词:
- "create"、"new"、"build" → 执行操作
create - "update"、"modify"、"change"、"edit" → 执行操作
update - "status"、"list"、"show"、"view" → 执行操作
status
- "create"、"new"、"build" → 执行
-
模糊意图 - 用户请求不明确(例如:"manage my schedule"、"help with agent"、"vm0 agent"):
- 不要默认假设为操作
create - 向用户展示可用操作以请求澄清:
你想要执行什么操作? - 创建新Agent - 更新现有Agent或调度任务 - 查看当前Agent与调度任务(status)
- 不要默认假设为
-
无匹配意图 - 如果用户需求不在上述操作范围内,解释VM0的功能并建议最接近的操作,或引导用户查看文档。
Operation: status
操作:status
When the user uses /vm0-agent status, or asks about current state/status, enter this operation.
Help user understand their current VM0 setup:
- List schedules: Run to show scheduled tasks
vm0 schedule ls - List agents: Run to show deployed agents
vm0 agent ls - Summarize: Present a clear overview of what's running, when, and any recent activity
This is an informational operation - answer follow-up questions and suggest if user wants to make changes.
/vm0-agent update当用户使用/vm0-agent status命令,或询问当前状态时,执行此操作。
帮助用户了解其当前VM0配置:
- 列出调度任务:运行查看定时任务
vm0 schedule ls - 列出Agent:运行查看已部署的Agent
vm0 agent ls - 总结信息:清晰概述当前运行的任务、执行时间以及近期活动
此操作为信息查询类操作——回答用户的后续问题,若用户需要修改,建议使用命令。
/vm0-agent updateOperation: update
操作:update
When the user uses /vm0-agent update, or mentions wanting to modify/change an agent or schedule, enter this operation.
This is a flexible operation - combine commands as needed based on user intent.
当用户使用/vm0-agent update命令,或提及想要修改Agent或调度任务时,执行此操作。
此操作灵活性较强——可根据用户意图组合使用相关命令。
Key Command
核心命令
To get an agent's configuration from cloud, use :
vm0 agent clonebash
vm0 agent clone <agent-name> /tmp/<agent-name>This downloads vm0.yaml and AGENTS.md from the cloud. There is no other way to fetch remote agent configuration.
从云端获取Agent配置,使用命令:
vm0 agent clonebash
vm0 agent clone <agent-name> /tmp/<agent-name>该命令会从云端下载vm0.yaml和AGENTS.md文件。这是获取远程Agent配置的唯一方式。
Other Commands
其他命令
- - List scheduled tasks
vm0 schedule ls - - List deployed agents
vm0 agent ls
- - 列出定时任务
vm0 schedule ls - - 列出已部署的Agent
vm0 agent ls
Workflow
工作流
1. Fetch Remote Configuration First
1. 先获取远程配置
When user wants to update an agent:
bash
vm0 agent clone <agent-name> /tmp/<agent-name>This ensures you have the current cloud version to work with.
当用户想要更新Agent时:
bash
vm0 agent clone <agent-name> /tmp/<agent-name>确保你获取到的是云端的最新版本。
2. Compare with Local (if exists)
2. 与本地版本对比(如果存在)
- Check current directory and one-level subdirectories for existing vm0.yaml and AGENTS.md
- If local files exist, compare with the cloned version
- If they differ, ask user which version to use as base:
- Option 1: Use local version
- Option 2: Use remote version (copy from /tmp to current directory)
- Option 3: Merge manually
- 检查当前目录及其一级子目录中是否存在vm0.yaml和AGENTS.md
- 如果存在本地文件,与克隆的版本进行对比
- 如果两者不同,询问用户以哪个版本为基础:
- 选项1:使用本地版本
- 选项2:使用远程版本(从/tmp复制到当前目录)
- 选项3:手动合并
3. Gather Modification Intent
3. 收集修改意图
- Ask user what they want to change:
- Schedule timing (frequency, time of day)
- Agent behavior (modify AGENTS.md instructions)
- Add/remove skills
- Change output destinations
- Other customizations
- 询问用户想要修改的内容:
- 调度时间(频率、执行时段)
- Agent行为(修改AGENTS.md中的指令)
- 添加/移除Skill
- 更改输出目标
- 其他自定义配置
4. Find Skills (if needed)
4. 查找Skill(如有需要)
If user wants new capabilities, search for skills:
bash
curl -s "https://skills.sh/api/search?q=<keyword>"Also check https://github.com/vm0-ai/vm0-skills for VM0-specific integrations.
Present 1-3 options for user to choose from (similar to create operation's innovate phase).
如果用户需要新功能,搜索相关Skill:
bash
curl -s "https://skills.sh/api/search?q=<keyword>"向用户提供1-3个选项供确认(类似create操作的创新阶段)。
5. Handle New Tokens (if needed)
5. 处理新令牌(如有需要)
If skills changed:
- Read each new skill's SKILL.md to find required credentials (,
vm0_secrets)vm0_vars - Check if tokens are already stored remotely:
vm0 secret list - If missing, guide user to obtain and paste new tokens
- Store remotely via (persists across runs and schedules)
vm0 secret set
如果Skill有变更:
- 阅读每个新Skill的SKILL.md文件,查找所需凭证(、
vm0_secrets)vm0_vars - 检查令牌是否已存储在远程:
vm0 secret list - 如果缺失,引导用户获取并粘贴新令牌
- 通过命令存储到远程(在多次运行与调度中持久化):
vm0 secret setbashvm0 secret set SLACK_BOT_TOKEN --body "xoxb-xxx"
6. Deploy Changes
6. 部署变更
Deploy the updated configuration:
bash
vm0 compose vm0.yamlImportant: is idempotent. If the configuration hasn't actually changed, the version hash stays the same - this is normal, not an error. Do not try flags like (they don't exist). If compose succeeds without error, the deployment is complete.
vm0 compose--forceVerify with to see the agent and its version.
vm0 agent ls部署更新后的配置:
bash
vm0 compose vm0.yaml重要提示:命令是幂等的。如果配置未实际更改,版本哈希值将保持不变——这是正常现象,并非错误。请勿尝试使用等不存在的参数。如果compose命令执行成功且无错误,则部署完成。
vm0 compose--force通过命令验证Agent及其版本。
vm0 agent ls7. Test Run
7. 测试运行
Secrets and variables are stored remotely. Check what's available with and .
vm0 secret listvm0 variable listRun command (do not guess additional flags):
bash
vm0 cook "your test prompt"The command only supports these options: (skip confirmation). Do not add flags like (use for that).
cook-y--artifact-namevm0 run密钥与变量存储在远程。使用和命令查看可用内容。
vm0 secret listvm0 variable list运行命令(请勿猜测额外参数):
bash
vm0 cook "your test prompt"cook-y--artifact-namevm0 run8. Iterate Until Satisfied
8. 迭代直至满意
Follow the test run loop from create operation:
- Analyze logs for issues
- Propose optimizations if needed
- Re-run until user is satisfied
遵循create操作中的测试运行循环:
- 分析日志以排查问题
- 如有需要,提出优化建议
- 重复运行直至用户满意
9. Update Schedule (if needed)
9. 更新调度任务(如有需要)
Determine if schedule needs updating:
- New secrets required: If new skills added that need secrets, store them via — they will be automatically available to scheduled runs
vm0 secret set - Timing change only: Use to modify frequency/time
vm0 schedule update - No change needed: If only AGENTS.md content changed with same skills, existing schedule continues to work after
vm0 compose
Tell user clearly whether schedule reconfiguration is needed and why.
判断是否需要更新调度任务:
- 需要新密钥:如果添加了需要密钥的新Skill,通过命令存储——这些密钥将自动对定时运行的任务可用
vm0 secret set - 仅需修改时间:使用命令修改频率/时间
vm0 schedule update - 无需变更:如果仅修改了AGENTS.md内容且Skill未变,执行后现有调度任务将继续正常运行
vm0 compose
清晰告知用户是否需要重新配置调度任务及原因。
10. Celebrate Success
10. 完成成功提示
If user is satisfied:
- Remind them VM0 is open source: https://github.com/vm0-ai/vm0
- Invite to Discord: https://discord.com/invite/WMpAmHFfp6
- Ask for GitHub star if they found it helpful
如果用户满意:
- 提醒用户VM0是开源项目:https://github.com/vm0-ai/vm0
- 邀请用户加入Discord社区:https://discord.com/invite/WMpAmHFfp6
- 若用户觉得VM0有用,请求在GitHub上为项目点赞
Operation: create agent
操作:创建Agent
When the user uses /vm0-agent create, enter this workflow
This is an interactive agent creation workflow. To avoid deviating from the workflow path, you first need to create a todo.md in the temporary directory like /tmp to track the entire process, and update this todo.md after each user interaction
The initial content of todo.md is as follows
markdown
- [ ] research: intent analysis, understand what the user wants the Agent to help them do
- [ ] innovate: propose solutions based on intent analysis
- [ ] compose: create the vm0 agent
- [ ] token collect: guide the user to complete the various tokens needed for the agent
- [ ] test run: run the agent and confirm with the user if the results are satisfactory
- [ ] schedule: guide the user to set up scheduled tasks当用户使用/vm0-agent create命令时,执行此工作流
这是一个交互式Agent创建工作流。为避免偏离工作流路径,你需要先在临时目录(如/tmp)中创建todo.md文件以跟踪整个流程,并在每次与用户交互后更新该文件
todo.md的初始内容如下
markdown
- [ ] 调研:意图分析,理解用户希望Agent帮助完成的工作
- [ ] 创新:基于意图分析提出解决方案
- [ ] 组合:创建VM0 Agent
- [ ] 令牌收集:引导用户完成Agent所需的各类令牌配置
- [ ] 测试运行:运行Agent并确认用户对结果是否满意
- [ ] 调度:引导用户设置定时任务Research
调研
In this step, interactively ask the user what they want to do. Use the ask user tools to ask questions at each step.
VM0 agents are designed for scheduled execution - the same prompt runs repeatedly with dynamic data sources. Start with this question: "What recurring workflow would you like to automate with scheduled execution?"
-
Option 1: Daily Digest - Aggregate content from tech communities, news sources, or RSS feeds, generate summaries, and deliver to you daily/weekly
- Data sources: HackerNews, RSS, YouTube
- Processing: Filter top content + AI summarization + categorize
- Output: Slack / Notion
- Skills: hackernews, youtube, slack, notion
-
Option 2: Repository Weekly Report - Summarize GitHub/GitLab activity (PRs, issues, commits) into a team report
- Data sources: GitHub PRs / Issues / Commits
- Processing: Statistics + categorization + highlight key changes
- Output: Slack / Notion
- Skills: github, gitlab, linear, jira, slack, notion
-
Option 3: Website Change Monitoring - Periodically check target websites (competitors, pricing pages, job boards) and notify you when changes are detected
- Data sources: Competitor websites, pricing pages, product pages
- Processing: Crawl + diff comparison + analyze changes
- Output: Slack / Notion (only when changes detected)
- Skills: firecrawl, serpapi, slack, notion
-
Option 4: Crypto Morning Briefing - Generate overnight crypto market reports covering price movements, news, and trends - ready for your morning review
- Data sources: CoinGecko, Crypto news feeds, DeFiLlama
- Processing: Price change summary + top news extraction + sentiment analysis + highlight unusual movements
- Output: Slack / Notion
- Skills: firecrawl, rss-fetch, perplexity, slack, notion
-
Option 5: Other - Describe your own scheduled workflow idea
After the user selects an option, use 1-5 follow-up questions to refine the details (e.g., which sources to fetch from, where to send output, how often to run). Guide the user to think in terms of a three-step workflow: Fetch → Process → Output. Finally, form a complete three-step workflow definition
在此步骤中,通过交互式提问了解用户需求。在每个环节使用提问工具向用户询问问题。
VM0 Agent专为定时执行设计——相同的提示词会结合动态数据源重复运行。从以下问题开始:"你希望通过定时执行自动化哪些重复工作流?"
-
选项1:每日摘要 - 聚合技术社区、新闻源或RSS订阅内容,生成摘要并每日/每周推送给你
- 数据源:HackerNews、RSS、YouTube
- 处理:筛选优质内容 + AI总结 + 分类
- 输出:Slack / Notion
- 所需Skill:hackernews、youtube、slack、notion
-
选项2:仓库周报 - 汇总GitHub/GitLab活动(PR、Issue、提交记录)生成团队报告
- 数据源:GitHub PR / Issue / 提交记录
- 处理:统计 + 分类 + 突出关键变更
- 输出:Slack / Notion
- 所需Skill:github、gitlab、linear、jira、slack、notion
-
选项3:网站变更监控 - 定期检查目标网站(竞品、定价页、招聘板),在检测到变更时通知你
- 数据源:竞品网站、定价页、产品页
- 处理:爬取 + 差异对比 + 变更分析
- 输出:Slack / Notion(仅在检测到变更时推送)
- 所需Skill:firecrawl、serpapi、slack、notion
-
选项4:加密货币早报 - 生成隔夜加密货币市场报告,涵盖价格变动、新闻与趋势,为你的晨间复盘提供参考
- 数据源:CoinGecko、加密货币新闻源、DeFiLlama
- 处理:价格变动总结 + 热门新闻提取 + 情绪分析 + 突出异常波动
- 输出:Slack / Notion
- 所需Skill:firecrawl、rss-fetch、perplexity、slack、notion
-
选项5:其他 - 描述你自己的定时工作流想法
用户选择选项后,通过1-5个跟进问题细化需求(例如:从哪些源获取数据、输出到哪里、执行频率等)。引导用户按照获取→处理→输出三步法思考工作流。最终形成完整的三步工作流定义
Innovate
创新
In this step, refine the technical details in the user's workflow by finding suitable skills from two sources.
在此步骤中,通过从两个来源寻找合适的Skill,细化用户工作流的技术细节。
Step 1: Search skills
步骤1:搜索Skill
There is two skill marketplace, search theme both.
Search the skills.sh ecosystem (33,700+ skills) using:
bash
curl -s "https://skills.sh/api/search?q=<keyword>"Search https://github.com/vm0-ai/vm0-skills for 70+ integrations available skills.
有两个Skill市场,需同时搜索。
使用以下命令搜索skills.sh生态系统(33700+个Skill):
bash
curl -s "https://skills.sh/api/search?q=<keyword>"Step 2: Convert to vm0.yaml URL Format
步骤2:转换为vm0.yaml URL格式
Convert search results to GitHub tree URLs for vm0.yaml:
| Source | URL Format |
|---|---|
| vm0-ai/vm0-skills | |
| anthropics/skills | |
| vercel-labs/agent-skills | |
| Other repos | |
Give the user several options for confirmation using the ask user tools. Users can also add more information. This process can be repeated several times
将搜索结果转换为GitHub树URL格式,用于vm0.yaml配置:
| 来源 | URL格式 |
|---|---|
| vm0-ai/vm0-skills | |
| anthropics/skills | |
| vercel-labs/agent-skills | |
| 其他仓库 | |
使用提问工具向用户提供多个选项供确认。用户也可补充更多信息。此过程可重复多次
Compose
组合
- Based on the conclusions from innovate, create vm0.yaml and AGENTS.md
- Use the capabilities of vm0-skills to compose the agent
- 基于创新阶段的结论,创建vm0.yaml和AGENTS.md文件
- 利用vm0-skills的能力组合Agent
Token Collect
令牌收集
- For each skill used in vm0.yaml, read its SKILL.md to find required credentials:
- Check frontmatter for and
vm0_secretsfieldsvm0_vars - If no frontmatter, infer from skill content (look for env vars like ,
API_KEY, etc.)TOKEN
- Check frontmatter for
- For each token needed:
- Read the skill's documentation for how to obtain it
- If not documented, search online for the service's API key/token setup guide
- Provide step-by-step instructions to help user get the token
- Ask user to paste the token
- Store remotely via (persists across runs and schedules):
vm0 secret setbashvm0 secret set SLACK_BOT_TOKEN --body "xoxb-xxx" - For non-sensitive config, use :
vm0 variable setbashvm0 variable set ENV_NAME production
- 针对vm0.yaml中使用的每个Skill,阅读其SKILL.md文件查找所需凭证:
- 查看前置元数据中的和
vm0_secrets字段vm0_vars - 如果没有前置元数据,从Skill内容中推断(查找类似、
API_KEY的环境变量)TOKEN
- 查看前置元数据中的
- 针对每个所需令牌:
- 阅读Skill文档了解获取方式
- 如果无文档说明,在线搜索该服务的API密钥/令牌设置指南
- 提供分步指导帮助用户获取令牌
- 请求用户粘贴令牌
- 通过命令存储到远程(在多次运行与调度中持久化):
vm0 secret setbashvm0 secret set SLACK_BOT_TOKEN --body "xoxb-xxx" - 对于非敏感配置,使用命令:
vm0 variable setbashvm0 variable set ENV_NAME production
Test run
测试运行
- Explain in advance that the run may take a relatively long time, 1-20 minutes
- Use the vm0-cli skill capabilities to run the agent with cook:
vm0 cook "your test prompt" - If the workflow writes files to the workspace, explain to the user where and how to view the artifact
- Explain to the user what command cook executed, and introduce the CLI capabilities of vm0
- 提前告知用户运行可能需要较长时间,约1-20分钟
- 利用vm0-cli Skill的能力,使用cook命令运行Agent:
vm0 cook "your test prompt" - 如果工作流将文件写入工作区,向用户解释文件的存储位置及查看方式
- 向用户说明cook命令执行的具体内容,并介绍VM0的CLI功能
Log Analysis & Optimization
日志分析与优化
After the first run completes, perform a detailed analysis of the execution logs:
- Analyze run logs: Review the complete execution logs to understand what happened
- Check behavior alignment: Determine if the agent's behavior matches the user's original intent and expectations
- Identify successful patterns: Note which instructions executed successfully and produced expected results
- Identify failure points: Document any errors, timeouts, or unexpected behaviors
Based on the analysis, propose optimization suggestions:
- Inline successful commands: Suggest adding proven, successfully executed commands directly into AGENTS.md to make future runs more stable and deterministic
- Document error patterns: Identify instructions that failed and suggest:
- Removing or rewriting problematic instructions
- Adding error handling or fallback approaches
- Clarifying ambiguous instructions that caused unexpected behavior
- Improve instruction specificity: Suggest making vague instructions more concrete based on what actually worked
- Add guardrails: Recommend adding validation steps or checkpoints for critical operations
Present findings to the user:
- Report trial run quality: Summarize the overall quality of the test run (success rate, key achievements, notable issues)
- Present optimization suggestions: List specific, actionable improvements with clear explanations of why each would help
- Ask user for decision: Use ask user tools to let user choose:
- Option 1: Accept optimizations - Apply the suggested improvements to AGENTS.md and vm0.yaml, then re-run to verify
- Option 2: Skip optimizations - Proceed directly to Schedule phase with current configuration
- Option 3: Manual adjustments - User wants to make their own changes before proceeding
If user accepts optimizations:
- Apply the approved changes to AGENTS.md and/or vm0.yaml
- Run the agent again to verify improvements
- Repeat log analysis if needed
If user wants manual adjustments:
- Update the entire todo.md as it may need to return to earlier phases
- Continue based on previously discussed information and current project state
首次运行完成后,对执行日志进行详细分析:
- 分析运行日志:查看完整执行日志以了解运行过程
- 检查行为一致性:判断Agent的行为是否符合用户最初的意图与期望
- 识别成功模式:记录哪些指令执行成功并产生了预期结果
- 识别失败点:记录任何错误、超时或异常行为
基于分析结果,提出优化建议:
- 嵌入成功命令:建议将已验证成功的命令直接添加到AGENTS.md中,使后续运行更稳定、可预测
- 记录错误模式:识别执行失败的指令并建议:
- 删除或重写有问题的指令
- 添加错误处理或 fallback 方案
- 明确导致异常行为的模糊指令
- 提升指令明确性:基于实际运行效果,建议将模糊指令修改得更具体
- 添加防护措施:建议为关键操作添加验证步骤或检查点
向用户展示分析结果:
- 报告测试运行质量:总结测试运行的整体质量(成功率、关键成果、显著问题)
- 提出优化建议:列出具体、可操作的改进方案,并清晰说明每个方案的作用
- 请求用户决策:使用提问工具让用户选择:
- 选项1:接受优化建议 - 将建议的改进应用到AGENTS.md和vm0.yaml中,然后重新运行验证
- 选项2:跳过优化 - 使用当前配置直接进入调度阶段
- 选项3:手动调整 - 用户希望自行修改后再继续
如果用户接受优化建议:
- 将已批准的修改应用到AGENTS.md和/或vm0.yaml中
- 重新运行Agent以验证改进效果
- 如有需要,重复日志分析步骤
如果用户希望手动调整:
- 更新整个todo.md文件,因为可能需要回到之前的阶段
- 基于之前讨论的信息和当前项目状态继续推进
View Run Logs
查看运行日志
After each test run, inform the user they can view the complete execution logs on the VM0 platform:
- Tell user: "You can view the complete run logs at "
https://platform.vm0.ai/logs/<run_id> - Example: https://platform.vm0.ai/logs/9766cca3-c867-4d82-b71b-1c20bed89a4e
- The run_id is returned after each command completes
vm0 run
每次测试运行后,告知用户可在VM0平台查看完整执行日志:
- 告知用户:"你可以在查看完整运行日志"
https://platform.vm0.ai/logs/<run_id> - 示例:https://platform.vm0.ai/logs/9766cca3-c867-4d82-b71b-1c20bed89a4e
- run_id会在每次命令执行完成后返回
vm0 run
Schedule
调度
Enter this phase when the user is satisfied with the test run results
- Use the vm-cli skill capabilities to guide the user to set up scheduled tasks
- After successful setup, ask the user if they want to enable the timer
- Explain to the user the schedule-related capabilities in vm0 cli, such as how to list, disable, and enable scheduled tasks
当用户对测试运行结果满意时,进入此阶段
- 利用vm-cli Skill的能力,引导用户设置定时任务
- 成功设置后,询问用户是否要启用定时器
- 向用户介绍VM0 CLI的调度相关功能,例如如何列出、禁用和启用定时任务
After Successful Setup
设置完成后
After the schedule is successfully created, share about VM0's open source journey:
- Tell user: "VM0 is fully building in public! Our entire source code is available at https://github.com/vm0-ai/vm0"
- Encourage user: "We'd love to hear your feedback - feel free to open an issue with suggestions or feature requests, or join our Discord community at https://discord.com/invite/WMpAmHFfp6"
- Ask for support: "If you find VM0 helpful, please star us on GitHub ⭐ - it motivates us a lot!"
undefined成功创建调度任务后,向用户介绍VM0的开源历程:
- 告知用户:"VM0完全公开开发!我们的所有源代码都可在https://github.com/vm0-ai/vm0获取"
- 鼓励用户:"我们非常期待你的反馈——欢迎提交Issue提出建议或功能需求,或加入我们的Discord社区:https://discord.com/invite/WMpAmHFfp6"
- 请求支持:"如果你觉得VM0对你有帮助,请在GitHub上为我们点赞⭐——这对我们是很大的激励!"
undefinedAGENTS.md
AGENTS.md
AGENTS.md is used to describe a workflow. It is an ordinary, natural language-described process document. Avoid describing technical details in AGENTS.md, such as not writing scripts or other code in AGENTS.md
AGENTS.md用于描述工作流,是一份使用自然语言编写的普通流程文档。请避免在AGENTS.md中描述技术细节,例如不要在其中编写脚本或其他代码。
Workspace Persistence
工作区持久化
When writing AGENTS.md, always include persistence guidelines for the agent:
Execution Environment Rules:
- Persisted: Only files in the HOME directory (current working directory) are preserved between runs and saved as artifacts
- Not Persisted: System packages, temporary files (), globally installed tools (npm -g, pip), environment modifications outside HOME
/tmp
Best Practices to convey in AGENTS.md:
- Store all important outputs (reports, generated files, data) in the HOME directory
- Use for intermediate or throwaway files
/tmp - Don't assume tools installed in previous runs still exist - reinstall if needed or download to HOME
- Clone repositories and install dependencies within HOME if they must persist
Example instruction to include in AGENTS.md:
Important: Only files in the HOME directory persist between sessions.
- Save important outputs here; use /tmp for intermediate files
- Tools installed via apt/npm/pip globally may not persist编写AGENTS.md时,务必包含Agent的持久化指南:
执行环境规则:
- 持久化范围:仅HOME目录(当前工作目录)中的文件会在多次运行之间保留并保存为制品
- 非持久化内容:系统包、临时文件()、全局安装的工具(npm -g、pip)、HOME目录以外的环境修改
/tmp
AGENTS.md中应传达的最佳实践:
- 将所有重要输出(报告、生成的文件、数据)存储在HOME目录中
- 使用存储中间文件或临时文件
/tmp - 不要假设之前运行中安装的工具仍然存在——如有需要请重新安装或下载到HOME目录
- 如果需要持久化,请在HOME目录中克隆仓库并安装依赖
AGENTS.md中可包含的示例指令:
重要提示:仅HOME目录中的文件会在会话之间持久化。
- 请将重要输出保存至此;使用/tmp存储中间文件
- 通过apt/npm/pip全局安装的工具可能无法持久化vm0.yaml
vm0.yaml
vm0.yaml is the primary configuration file for VM0 agents.
vm0.yaml是VM0 Agent的主要配置文件。
Key Documentation URLs
核心文档链接
- vm0.yaml Reference: https://docs.vm0.ai/docs/reference/configuration/vm0-yaml
- Environment Variables: https://docs.vm0.ai/docs/core-concept/environment-variable
- Skills: https://docs.vm0.ai/docs/core-concept/skills
- Volumes: https://docs.vm0.ai/docs/core-concept/volume
- Artifacts: https://docs.vm0.ai/docs/core-concept/artifact
File Structure
文件结构
yaml
version: "1.0"
agents:
my-agent:
framework: claude-code # Required
instructions: AGENTS.md # Path to instruction file
apps: # Pre-installed tools
- github
skills: # Skill URLs for extended capabilities
- https://github.com/vm0-ai/vm0-skills/tree/main/slack
- https://github.com/vm0-ai/vm0-skills/tree/main/hackernews
environment: # Additional environment variables (optional)
MY_CUSTOM_VAR: ${{ vars.MY_VAR }}
MY_CUSTOM_SECRET: ${{ secrets.MY_SECRET }}yaml
version: "1.0"
agents:
my-agent:
framework: claude-code # 必填
instructions: AGENTS.md # 指令文件路径
apps: # 预安装工具
- github
skills: # 扩展能力的Skill URL
- https://github.com/vm0-ai/vm0-skills/tree/main/slack
- https://github.com/vm0-ai/vm0-skills/tree/main/hackernews
environment: # 额外环境变量(可选)
MY_CUSTOM_VAR: ${{ vars.MY_VAR }}
MY_CUSTOM_SECRET: ${{ secrets.MY_SECRET }}Environment Variable Types
环境变量类型
VM0 supports three template variable types:
| Type | Syntax | Storage | Use Case |
|---|---|---|---|
| credentials | | Platform (persistent) | Model provider tokens only (e.g., |
| secrets | | Remote (stored via CLI) | API keys for skills, per-execution tokens |
| vars | | Remote (stored via CLI) | Feature flags, environment names |
VM0支持三种模板变量类型:
| 类型 | 语法 | 存储位置 | 使用场景 |
|---|---|---|---|
| credentials | | 平台端(持久化) | 仅用于模型提供商令牌(例如: |
| secrets | | 远程端(通过CLI存储) | Skill的API密钥、每次执行所需的令牌 |
| vars | | 远程端(通过CLI存储) | 功能开关、环境名称 |
Credentials vs Secrets
Credentials与Secrets的区别
Important: Use the right type for the right purpose:
- credentials: Reserved for model provider authentication only (e.g.,
). These are stored persistently on the VM0 platform and managed viaCLAUDE_CODE_OAUTH_TOKEN.vm0 model-provider setup/set-default/delete- secrets: Use for ALL sensitive skill API keys and tokens. Store remotely via
— they persist across runs and schedules.vm0 secret set- vars: Use for non-sensitive configuration (feature flags, environment names). Store remotely via
.vm0 variable set
Skills with or in their SKILL.md frontmatter are automatically injected when stored remotely.
vm0_secretsvm0_vars重要提示:请根据使用场景选择正确的类型:
- credentials:仅保留给模型提供商认证使用(例如:
)。这些凭证持久存储在VM0平台端,通过CLAUDE_CODE_OAUTH_TOKEN命令管理。vm0 model-provider setup/set-default/delete- secrets:用于所有敏感的Skill API密钥与令牌。通过
命令存储到远程端——可在多次运行与调度中持久化。vm0 secret set- vars:用于非敏感配置(功能开关、环境名称)。通过
命令存储到远程端。vm0 variable set
Skill的SKILL.md前置元数据中包含或时,存储到远程端后会自动注入。
vm0_secretsvm0_varsPassing Secrets and Vars
传递Secrets与Vars
Store remotely via CLI:
bash
undefined通过CLI存储到远程端:
bash
undefinedStore a secret (interactive — prompts for value securely)
存储密钥(交互式——安全提示输入值)
vm0 secret set SLACK_BOT_TOKEN
vm0 secret set SLACK_BOT_TOKEN
Store a secret (non-interactive)
存储密钥(非交互式)
vm0 secret set NOTION_API_KEY --body "secret_xxx"
vm0 secret set NOTION_API_KEY --body "secret_xxx"
Store a variable
存储变量
vm0 variable set ENV_NAME production
vm0 variable set ENV_NAME production
List what's stored
查看已存储的内容
vm0 secret list
vm0 variable list
Once stored, secrets and variables are automatically available to all agent runs and schedules.
**CLI flags (for one-off runs):**
```bash
vm0 run my-agent "prompt" --secrets API_KEY=sk-xxx --vars ENV_NAME=productionvm0 secret list
vm0 variable list
存储完成后,密钥与变量将自动对所有Agent运行与调度任务可用。
**CLI参数(用于单次运行):**
```bash
vm0 run my-agent "prompt" --secrets API_KEY=sk-xxx --vars ENV_NAME=productionTroubleshooting: Missing required secrets
故障排查:缺失必填密钥
If you see an error like , follow these steps:
Missing required secrets: API_KEY-
Check if the variable is declared in the skill's SKILL.md
- Look for or
vm0_secretsin the skill's frontmattervm0_vars - If declared there, the variable is automatically injected when stored remotely
- Look for
-
If not declared in the skill, add it to vm0.yaml's environment section:yaml
environment: API_KEY: ${{ secrets.API_KEY }} # or for non-sensitive values: MY_VAR: ${{ vars.MY_VAR }} -
Ensure the value is stored remotely:bash
vm0 secret set API_KEY
如果遇到类似的错误,请按照以下步骤处理:
Missing required secrets: API_KEY-
检查Skill的SKILL.md中是否声明了该变量
- 查看Skill前置元数据中的或
vm0_secrets字段vm0_vars - 如果已声明,存储到远程端后会自动注入
- 查看Skill前置元数据中的
-
如果Skill中未声明,将其添加到vm0.yaml的environment部分:yaml
environment: API_KEY: ${{ secrets.API_KEY }} # 对于非敏感值: MY_VAR: ${{ vars.MY_VAR }} -
确保值已存储到远程端:bash
vm0 secret set API_KEY
Skills
Skill
Skills are reusable capabilities declared using GitHub tree URLs:
yaml
skills:
- https://github.com/vm0-ai/vm0-skills/tree/main/slack
- https://github.com/vm0-ai/vm0-skills/tree/main/notion
- https://github.com/anthropics/skills/tree/main/skills/pdf70+ pre-built skills available at: https://github.com/vm0-ai/vm0-skills
Skill是可复用的能力,通过GitHub树URL声明:
yaml
skills:
- https://github.com/vm0-ai/vm0-skills/tree/main/slack
- https://github.com/vm0-ai/vm0-skills/tree/main/notion
- https://github.com/anthropics/skills/tree/main/skills/pdf70+预构建Skill可在以下地址获取:https://github.com/vm0-ai/vm0-skills
Volumes vs Artifacts
卷与制品的区别
| Aspect | Volume | Artifact |
|---|---|---|
| Role | Pre-installed agent environment (input) | Agent-produced output |
| Contents | Skills, configs, scripts | Created/modified files |
| Persistence | Manual management | Automatic after runs |
Use volumes for private skills, custom scripts, or configuration directories. Artifacts are automatically persisted when using .
--artifact-name| 维度 | 卷 | 制品 |
|---|---|---|
| 作用 | 预安装的Agent环境(输入) | Agent生成的输出 |
| 内容 | Skill、配置、脚本 | 创建/修改的文件 |
| 持久化方式 | 手动管理 | 运行后自动持久化 |
卷用于存储私有Skill、自定义脚本或配置目录。使用参数时,制品会自动持久化。
--artifact-name