> ## Documentation Index
> Fetch the complete documentation index at: https://starforge.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# sf update

> Update sf to the latest version

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf update
```

原地升级 `sf`，用当初装它的那个安装器。安装方式是**检测出来的，不是假设的**——
在 uv tool 环境里跑 `pip install --upgrade` 会写进一批 uv 的 receipt 不认识的包，
那比什么都不做更糟。

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf update --check    # 只报告，不改动
sf update --pre      # 把预发布版本也考虑进来
```

## 各种安装方式下的行为

| 安装方式                               | `sf update`                                                                                 |
| ---------------------------------- | ------------------------------------------------------------------------------------------- |
| `uv tool install`                  | 升级。推荐的安装方式                                                                                  |
| `pipx install`                     | 升级                                                                                          |
| `pip` 装进你自己的 virtualenv            | 升级；路径上有 uv 就用 uv                                                                            |
| `pip` 装进项目的 `.venv`（旁边有 `uv.lock`） | **拒绝。** 就地升级会让 lock 文件描述一个已经不存在的版本。改用 `uv lock --upgrade-package starforge-core && uv sync` |
| `pip` 装进系统 Python                  | **拒绝。** 在那里升级可能影响系统上的其他工具。改用 `uv tool install starforge-core` 重装                            |
| 源码检出                               | **拒绝。** 用 `git pull`                                                                        |

拒绝时它会告诉你哪条命令可行，所以 `sf update` 不会让你卡住。这也正是推荐
`uv tool install` 的理由：它是升级路上没有任何阻碍的那种安装。

<Info>
  让 CLI 和服务端保持接近。`sf version` 会打印两者的版本，以及服务端所讲的 JobSpec 方言；
  方言不一致的 CLI 根本没法提交，并且会明确告诉你。
</Info>

## `sf update`

Update sf to the latest version

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf update [options]
```

| 选项        | 说明                                                         |
| --------- | ---------------------------------------------------------- |
| `--check` | Only report whether a newer version exists; change nothing |
| `--pre`   | Consider pre-releases as well                              |
