ghost-exo

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

exo

exo

One front door for the exo workflow lifecycle. This skill is a router. It classifies the request into one of three intents, loads the shared substrate, then loads the matching intent recipe and follows it.
exo工作流生命周期的统一入口。该Skill是一个路由工具,它会将请求分类为三种意图之一,加载共享基础组件,然后加载匹配的意图方案并执行。

Prerequisites

前提条件

Exo is an agent workflow platform. Every intent drives it through an exo MCP server.
Exo是一个Agent工作流平台。每种意图都通过exo MCP服务器驱动。

Pick the connection

选择连接

Several exo connections coexist normally, one per workspace, sometimes several on one deployment. Enumerate the exo MCP servers this session has before doing anything else.
With exactly one, use it. With more than one, ask which through the structured question tool and stop until the user answers, because a wrong guess writes to the wrong workspace. Do not switch connections partway through an intent. Start over if the target changes.
Call
whoami
on the chosen server. It confirms the connection and returns the workspace ID. Report that ID so the user can see which workspace they are about to change. If no exo MCP tools are present or
whoami
fails, read
resources/bootstrap.md
and follow it, then call
whoami
again. Do not classify an intent until it succeeds.
scripts/exo-skill.py
reaches the same workspace over REST, and it has to reach the same one. It reads
EXO_API_URL
,
EXO_API_KEY
, and
EXO_WORKSPACE_ID
from the process environment, falling back to the profile named by
--profile
, which is the file
${XDG_CONFIG_HOME:-~/.config}/exo/<name>.env
. Pass
--profile
with the name of the MCP server you chose on every call, so the two cannot point at different workspaces.
通常会同时存在多个exo连接,每个工作区对应一个,有时一个部署上会有多个。在执行任何操作之前,先枚举本次会话可用的exo MCP服务器。
如果只有一个,直接使用它。如果有多个,通过结构化问题工具询问用户选择哪一个,等待用户答复后再继续,因为错误的选择会写入错误的工作区。在一个意图执行过程中不要切换连接。如果目标变更,请重新开始。
在选定的服务器上调用
whoami
。它会确认连接并返回工作区ID。告知用户该ID,以便他们了解即将修改的是哪个工作区。如果没有可用的exo MCP工具或
whoami
调用失败,请阅读
resources/bootstrap.md
并按照其中的步骤操作,然后再次调用
whoami
。只有调用成功后才能对意图进行分类。
scripts/exo-skill.py
通过REST连接到同一个工作区,且必须保持一致。它从进程环境中读取
EXO_API_URL
EXO_API_KEY
EXO_WORKSPACE_ID
,如果环境变量不存在,则回退到
--profile
指定的配置文件,该文件路径为
${XDG_CONFIG_HOME:-~/.config}/exo/<name>.env
。在每次调用时都要传入
--profile
参数并指定所选MCP服务器的名称,确保两者指向同一个工作区。

Always read first

务必先阅读

Read
resources/common.md
. It holds the shared substrate every intent uses: the run-walking read primitives, the DTO discovery discipline, the resource write primitives, the unprobeable nodes, and the note on why the improve intent reads the debug recipe inline rather than invoking it.
阅读
resources/common.md
。其中包含所有意图都使用的共享基础组件:运行遍历读取原语、DTO发现规则、资源写入原语、不可探测节点,以及关于improve意图为何内联读取debug方案而非调用它的说明。

Classify the intent

意图分类

If the request is aboutIntentRead
Why a specific run failed, what went wrong with a run_id, diagnosing one rundebug
intents/debug.md
Improving, iterating on, tightening, or speeding up an existing workflow over its recent runsimprove
intents/improve.md
Turning an idea into a new workflow, building, creating, or scaffolding a workflowbuild
intents/build.md
Pick exactly one. If the request is genuinely ambiguous between intents, ask the user which one in a single question rather than guessing.
如果请求涉及意图阅读文件
特定运行失败的原因、某个run_id出现的问题、诊断单个运行debug
intents/debug.md
基于近期运行改进、迭代、优化或加速现有工作流improve
intents/improve.md
将想法转化为新工作流、构建、创建或搭建工作流build
intents/build.md
仅选择一个意图。如果请求在多个意图之间确实存在歧义,请通过一个问题询问用户,不要猜测。

User interaction

用户交互

Put every question to the user through the harness's structured question tool, whatever it is called here. Free-text prose questions with bullet lists or "Q1/Q2/Q3" prompts are not allowed, even when the question feels open-ended. Bucket open areas into concrete options and let the user type a custom answer instead. Batch related questions into one call so the user answers a structured form rather than a thread of replies. Respect the current limits of the tool you have, and ask directly in prose only when no structured tool is available or the answer is inherently free-form, such as a name, a metric, or a path. This applies to intent disambiguation, the build interrogation in
intents/build.md
, the proposal and rerun gates in
intents/improve.md
, and any candidate-disambiguation prompt in
intents/debug.md
.
Require an explicit answer at every approval, production write, credential, and rerun gate. Never attach auto-resolution to those questions.
The boundaries between intents are intentional gates, not friction to remove. A build that ends in a first run does not auto-continue into improve, because the user owns when to cross from constructing to iterating. An improve pass that finds a failed run reads the debug walk inline rather than switching intents, because the diagnosis is a sub-procedure of the loop, not a separate request.
所有向用户提出的问题都要通过工具集的结构化问题工具发送,无论该工具在此处的名称是什么。不允许使用带有项目符号列表或“Q1/Q2/Q3”提示的自由文本问题,即使问题看起来是开放式的。将开放式问题转化为具体选项,同时允许用户输入自定义答案。将相关问题批量整合为一次调用,让用户填写结构化表单而非逐一回复。遵守当前工具的限制,只有在没有结构化工具可用或答案本身是自由格式(如名称、指标或路径)时,才直接用自由文本提问。这适用于意图消歧、
intents/build.md
中的构建问询、
intents/improve.md
中的提案和重运行验证门,以及
intents/debug.md
中的任何候选消歧提示。
在每次审批、生产写入、凭证和重运行验证门处,都需要用户明确答复。切勿为这些问题设置自动解析。
意图之间的边界是有意设置的验证门,而非需要消除的障碍。以首次运行结束的BUILD不会自动进入IMPROVE,因为何时从构建阶段过渡到迭代阶段由用户决定。发现失败运行的IMPROVE会内联读取debug流程而非切换意图,因为诊断是循环中的子流程,而非独立请求。

Paths

路径

All paths in the intent files are relative to this skill's root directory:
scripts/
for executables,
resources/
for shared docs and templates,
intents/
for the three recipes.
agents/
holds per-harness interface metadata that no recipe reads.
意图文件中的所有路径均相对于该Skill的根目录:
scripts/
用于存放可执行文件,
resources/
用于存放共享文档和模板,
intents/
用于存放三种方案。
agents/
存放的是工具集接口元数据,所有方案都不会读取该目录下的内容。