开始使用

错误码大全

One CLI 所有错误码的 code / context / remediation 参考。本文件由 internal/platform/errors/codes.go 自动生成,请勿手工编辑。

约 6 分钟3 天前更新在 GitHub 编辑

import { Callout } from "fumadocs-ui/components/callout";

这是什么

每个 one 命令出错时都会发出一个结构化错误信封:

{
  "schema": "one-cli/error/v1",
  "error": {
    "code": "TEMPLATE_NOT_FOUND",
    "message": "...",
    "context": { "available_templates": ["nestjs-api", "go-api", "..."] },
    "remediation": [
      {
        "action": "use-different-template",
        "hint": "用注册表里的模板",
        "command": "one add nestjs-api --name api"
      }
    ]
  }
}

字段含义:

  • error.code —— 稳定、可路由的标识符;agent 按 code 分支,不要按 message 文本分支
  • error.context —— 错误现场的关键数据;常常已经包含恢复需要的信息(例如 available_templates 已经在错误里,agent 不用再调一次 one templates)
  • error.remediation —— 恢复动作列表,每条带 action / hint / 可选 command;agent 挑一条执行后重试

下面按命令域分组列出所有 code。

Agent skill 安装

内置 one-cli skill 的目标选择与用户级目录安装错误。

SKILLS_INSTALL_FAILED

The bundled one-cli skill could not be installed into the selected agents.

Remediation:

  • inspect-skill-install — Check the target agent and directory permissions. Completed targets are listed in context.installed_to; retrying is safe.运行:one skills install --help

通用 / 生命周期

命令本身的失败、用户取消、内部序列化错误。

ONE_CLI_ERROR

Generic CLI failure with no specific code.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

OUTPUT_MARSHAL_FAILED

Internal: failed to marshal a result payload to JSON. Should never fire in practice.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

PROMPT_CANCELLED

User cancelled an interactive prompt (Ctrl+C / ESC).

没有默认 remediation。具体恢复方式请看错误的 context 字段。

UNKNOWN_COMMAND

First positional argument did not match any known subcommand.

Remediation:

  • show-help — 查看可用命令运行:one --help

工作区 / 项目

工作区识别、命名规则、目标目录冲突等。

EXISTING_TARGET_NOT_EMPTY

Target directory exists and is non-empty; create only writes into empty / new directories.

Remediation:

  • use-different-dir — 换一个空的目标目录
  • remove-target — 手动删除已存在的目录后重试

INVALID_NAME

Project / subproject name fails the ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ pattern.

Remediation:

  • use-valid-name — 用 kebab-case;空格替换为 -

INVALID_WORKSPACE_ROOTS

one.manifest.json#workspace.roots is malformed.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

NODE_VERSION_UNSUPPORTED

Local Node version is below the supported minimum.

Remediation:

  • upgrade-node — 升级到 Node.js 18+

NOT_ONE_PROJECT

Current directory is not a One workspace (one.manifest.json is missing).

Remediation:

  • create-workspace — 当前目录缺少 one.manifest.json;请先创建工作区,或 cd 到已有工作区运行:one create <dir>

PROJECT_NAME_REQUIRED

Non-interactive create called without a workspace directory.

Remediation:

  • provide-name — 把工作区目录作为位置参数运行:one create <workspace-directory>

TARGET_EXISTS

Subproject directory already exists.

Remediation:

  • use-different-name — 换一个 --name

Manifest

one.manifest.json 的格式 / 缺失 / 内容问题。

MANIFEST_INVALID

one.manifest.json is malformed.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

MANIFEST_MISSING_OR_EMPTY

Workspace has no manifest, or the manifest declares no projects.

Remediation:

  • add-project — 新增一个项目运行:one add <template-id> --name <project-name>

模板 / 注册表

模板注册表的拉取、解析、查找。

NO_TEMPLATES

Registry is empty.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

REGISTRY_FETCH_FAILED

Failed to download the template registry.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

REGISTRY_INVALID

Registry JSON is malformed.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

REGISTRY_NOT_FOUND

Registry path does not exist.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

SUBPROJECT_NAME_REQUIRED

Non-interactive add called without --name.

Remediation:

  • provide-name — 传入 --name运行:one add <template-id> --name <subproject-name>

TEMPLATE_NOT_FOUND

Requested template ID is not in the registry.

Remediation:

  • list-templates — 查看所有可用模板 ID运行:one templates -o json

TEMPLATE_REQUIRED

Non-interactive add called without a template ID.

Remediation:

  • specify-template — 把 template ID 作为位置参数运行:one add <template-id> --name <subproject-name>

Workspace 后置同步

manifest 写入后某个 per-domain 后端 sync 失败 / 回滚(由 create / add 抛出)。

STATUS_FIX_FAILED

Workspace 后置同步失败:写入 manifest 后某个后端 sync 回滚或失败。

Remediation:

  • retry — 重试触发该错误的命令

Profile / CI / 本地开发

Profile 解析、CI 产物生成和本地开发过程中的问题。

CI_DISABLE_CONFIRMATION_REQUIRED

A non-interactive CI disable requires explicit --yes confirmation.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

CI_NOT_ENABLED

The selected project does not have a generated CI workflow.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

CI_PROVIDER_UNKNOWN

The requested CI provider is not implemented by this build.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

CI_RENDER_FAILED

The selected CI provider returned an error while rendering the workflow.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

LOCAL_ORCH_PORT_CONFLICT

Two projects requested the same dev port and the dev runner could not auto-allocate a free one.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

RELEASE_FLOW_MISMATCH

The release-flow backend's expected toolchain or repo state does not match the workspace.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

Env — 输入校验

one env 命令的入参校验、覆写冲突等(与 Infisical 后端无关)。

ENV_BACKEND_INVALID

env switch 的 不合法,必须是 dotenv 或 infisical。

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_BACKEND_UNCHANGED

工作区已经在使用目标 backend,无需切换。

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_INVALID_ENV_NAME

Environment name fails ^[a-zA-Z0-9][a-zA-Z0-9-_]*$ (e.g. dev, staging, prod).

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_INVALID_KEY

Variable name fails POSIX env-var pattern (uppercase + underscore + digits, must not start with digit).

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_KEY_NOT_FOUND

Requested env var key does not exist at the given Infisical path/environment.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_MIGRATE_CONFLICT

目标 backend 已有同名 key 但值不一致;为防止误覆盖,默认拒绝。

Remediation:

  • overwrite — 确认要覆盖,加 --overwrite 重跑运行:one env switch infisical --overwrite (destructive)
  • skip-sync — 或只切 manifest,不做数据迁移运行:one env switch infisical --no-sync

ENV_MIGRATE_PARTIAL

部分 key 同步失败;manifest 已切换,但未完成的 key 仍只在原 backend。

Remediation:

  • retry — 检查报错原因(网络 / 权限),修复后再跑同步:one env switch infisical(manifest 已切,等价 sync-only)

ENV_PROFILE_NOT_FOUND

manifest.environments[] was requested by a backend but is missing or empty.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_PULL_CONFLICT

Existing on-disk .env differs from the values pulled from Infisical.

Remediation:

  • force-overwrite — 覆盖本地 .env(destructive)运行:one env pull --env <env> --force (destructive)

ENV_SET_KEY_REQUIRED

env set called without .

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_SET_OVERWRITE_REQUIRED

Variable already exists with a different value.

Remediation:

  • confirm-overwrite — 加 --yes 确认覆盖

ENV_SET_VALUE_REQUIRED

Non-interactive env set called without .

没有默认 remediation。具体恢复方式请看错误的 context 字段。

ENV_UNKNOWN_ENVIRONMENT

请求的环境名不在 manifest.environments.names 列表中。

Remediation:

  • use-existing-env — 查看 one.manifest.json#environments.names 中已声明的环境,或改用 --env 指定其中一个
  • create-via-set — 在 dotenv 后端,用 set 隐式创建:one env set --env
  • register-env — 在 Infisical 后端,先在 UI 创建环境,再把名称加入 one.manifest.json#environments.names

Infisical 后端

与 Infisical API 交互过程中的认证、权限、网络问题。

INFISICAL_API_ERROR

Infisical API returned an unexpected error. See error.context for details.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

INFISICAL_AUTH_FAILED

The Infisical session was rejected or expired.

Remediation:

  • login — 运行:one login

INFISICAL_AUTH_MISSING

No active Infisical browser session.

Remediation:

  • login — 运行:one login

INFISICAL_FOLDER_NOT_FOUND

The requested Infisical folder does not exist in the requested environment.

Remediation:

  • check-env-name — 确认 --env 名是否拼对(dev / staging / prod 等)
  • create-folder — 在该 folder 下写入第一个环境变量值时会自动创建运行:one env set --env <env> -p <name|path> KEY value
  • verify-path — 或在 Infisical UI 里确认 folder 是否存在

INFISICAL_NETWORK_ERROR

Network error reaching the Infisical API. Check siteUrl + connectivity.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

INFISICAL_NOT_CONFIGURED

The workspace has no Infisical project binding.

Remediation:

  • select-project — 在 Dashboard 工作区设置中选择 Infisical 项目运行:one serve

INFISICAL_PROJECT_CREATE_FORBIDDEN

当前账号没有创建项目权限,请选择一个已有且有权访问的项目。

没有默认 remediation。具体恢复方式请看错误的 context 字段。

INFISICAL_PROJECT_NAME_TAKEN

Infisical 项目名已被占用;auto-bind 会自动加随机后缀重试,但重试次数耗尽后会冒泡此错误。

Remediation:

  • use-explicit-name — 在 one.manifest.json#domains.env.config.projectName 写一个不冲突的项目名后重试 env 命令

INFISICAL_PROJECT_NOT_FOUND

Infisical project id does not exist or the current account has no access to it.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

未分组

以下错误码未匹配任何分组前缀,请补充 tools/gen-error-codes/main.go 的 groups 表。

BACKEND_ID_UNKNOWN

one.manifest.json refers to a backend id that this build does not recognise.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

BACKEND_INTERFACE_MISMATCH

Internal: the dispatched backend failed its capability assertion. Build-side bug; should never reach end users.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

BACKEND_INVOKE_FAILED

Backend's Invoke method returned an error.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

BACKEND_NOT_ENABLED

A domain command was invoked in a workspace where that domain is not configured.

Remediation:

  • configure-domain — 在 one.manifest.json 的 domains 块中配置该域(domains.env.kind / projects[].domains.container 等),或选用声明它的模板再 one add

BACKEND_VERB_NOT_SUPPORTED

The active backend in this domain does not implement the requested verb (e.g. one env pull against the dotenv backend).

Remediation:

  • switch-backend — 切换到支持该 verb 的同 domain backend(例如 env 域改用 infisical)

DEPENDENCIES_NOT_INSTALLED

Node dependencies required for local development are not installed.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

DOMAIN_INVALID

Domain name is not one of the recognised domains (container / deploy / dev / ci / env).

没有默认 remediation。具体恢复方式请看错误的 context 字段。

DOMAIN_NOT_PER_SUBPROJECT

This domain operates at workspace scope; -p / --project is not allowed.

Remediation:

  • drop-flag — 去掉 -p / --project 重试

DOMAIN_NOT_REGISTERED

Domain is recognised but this build has no backend implementation for it.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

DOMAIN_REQUIRED

A domain (container / deploy / dev / ci / env) is required but its section is missing in one.manifest.json.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

HOOKS_CONFIG_CONFLICT

Existing Git hooks or hk configuration conflict with One's generated setup.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

MISE_CONFIG_CONFLICT

A managed mise configuration was modified or changed during generation.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

MISE_INSTALL_FAILED

One could not download, migrate, verify, or prepare its managed mise runtime.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

MISE_NOT_FOUND

The explicitly selected mise executable is unavailable.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

MISE_VERSION_UNSUPPORTED

The installed mise version is unsupported or could not be read.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

PATCH_CONFLICT

Two configuration fragments contributed conflicting patches to the same backend target.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

PREFERENCES_FILE_INVALID

The local preferences file could not be read or parsed.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

PREFERENCES_INVALID

The requested preference value is not supported.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

PRESET_FLAG_CONFLICT

Preset id and explicit flag declared conflicting values for the same field.

Remediation:

  • drop-conflicting-flag — 去掉与 --preset 冲突的显式 flag(preset 已经表达了该选择)

PRESET_INVALID

Preset id failed v1 grammar (bad version / segment shape / unknown code).

Remediation:

  • regen-preset — 用 one serve 打开 dashboard 重新挑组合得到新的 preset id(dashboard 页面将在后续版本上线)
  • check-syntax — v1 形如 1.bgok.fnav.ei —— 前缀为版本号,段以 . 分隔,每段首字符是 f/b/l/e kind

RUNTIME_INVALID

The selected execution runtime is not builtin or mise.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

RUNTIME_TASK_NOT_FOUND

The project does not provide the requested runtime task.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

RUN_COMMAND_NOT_FOUND

one run could not locate the requested executable on PATH.

Remediation:

  • check-spelling — 确认命令名拼写正确
  • use-package-runner — 对于 npm script,使用包管理器调用运行:one run -- npm run <script>

RUN_DOTENV_MISSING

one run could not find a .env file for the resolved subproject.

Remediation:

  • pull-secrets — 先把 Infisical 环境变量拉到项目 .env运行:one env pull
  • specify-subproject — 或显式指定项目(按 manifest 里的 name 或相对路径)运行:one run <name|path> -- <cmd>

RUN_USAGE_INVALID

one run arguments do not match one run [project] -- <cmd> [args...].

Remediation:

  • use-run-separator — 用 -- 分隔 One CLI 参数和子进程命令运行:one run [project] -- <cmd> [args...]

SERVE_BIND_FORBIDDEN

one serve 拒绝绑定到非 loopback 地址(本地接口可操作敏感凭据,仅 127.0.0.1 / localhost 才安全)。

Remediation:

  • use-loopback — 改用 127.0.0.1(默认)运行:one serve --host 127.0.0.1

SERVE_MANIFEST_CONFLICT

one.manifest.json changed after the Dashboard draft was opened; the stale draft was not written.

Remediation:

  • reload-manifest — 重新加载 Workspace 配置,确认磁盘上的新修改后再应用草稿

SERVE_PAYLOAD_INVALID

POST/PUT 请求体不是合法 JSON 或缺少必要字段。

没有默认 remediation。具体恢复方式请看错误的 context 字段。

SERVE_PORT_BUSY

one serve 无法绑定请求的端口(被占用或权限不足)。

Remediation:

  • use-random-port — 改用随机端口(让内核分配空闲端口)运行:one serve --port 0
  • pick-different-port — 或显式换一个空闲端口运行:one serve --port 17900

SERVE_REPOSITORY_READ_ONLY

Dashboard only writes explicitly allowlisted Project fields and env Backend switches through their revision-checked endpoints; this legacy route is not writable.

没有默认 remediation。具体恢复方式请看错误的 context 字段。

SUBPROJECT_NOT_FOUND

-p / --project named a project that does not exist in manifest.projects.

Remediation:

  • list-projects — 查看现有项目运行:cat one.manifest.json

WORKSPACE_NESTED_FORBIDDEN

Refusing to create a workspace inside an existing workspace; nesting one workspace inside another corrupts both manifests.

Remediation:

  • use-add — 在现有工作区里加项目,应该用 one add运行:one add <template> --name <subproject-name>
  • create-elsewhere — 或换到工作区外的目录再 one create