跳转至

ChatTea 文档

ChatTea 是 ChatArch 的 Gitea 管理 CLI/API 包。它负责下载安装到启动本地 Gitea,也提供 token 配置、仓库创建、仓库查看、clone、迁移,以及 Gitea app.ini 的查看和小范围编辑。0.2.1 起,ChatTea 配置接入 ChatEnv,正式 Env 只保留长期、常用、跨命令共享的配置。

站点入口:https://arch.gh.wzhecnu.cn/ChatTea/

按场景选择文档

场景 文档
从空机器启动本地 Gitea 从零开始 Quick Start
仓库、Issue、Project、PR、Release 协作 Repo Collaboration Quick Start
Runner、Actions run/job/log/artifact Actions / Flow Quick Start
完整 CLI 树、截图和 route 映射 CLI 实战指南
当前接口树与 Python 函数映射 接口树

CLI

chattea --help
chattea server --help
chattea server config --help
chattea repo --help

命令树:

完整对齐目标见 cli-alignment.md

chattea
├── set-token
├── api
├── auth
│   ├── login
│   ├── status
│   └── token
├── token
│   ├── create
│   ├── list
│   ├── delete
│   └── bootstrap
├── server
│   ├── install
│   ├── init
│   ├── bootstrap
│   ├── serve
│   ├── start
│   ├── stop
│   ├── restart
│   ├── status
│   ├── logs
│   ├── version
│   ├── health
│   └── config
│       ├── path
│       ├── show
│       ├── get
│       └── set
├── repo
│   ├── list
│   ├── view
│   ├── create
│   ├── clone
│   └── migrate
├── issue
│   ├── list
│   ├── view
│   ├── create
│   ├── edit
│   ├── close
│   ├── reopen
│   ├── delete
│   ├── comment
│   ├── label
│   └── assign
├── label
│   ├── list
│   ├── view
│   ├── create
│   ├── edit
│   └── delete
├── milestone
│   ├── list
│   ├── view
│   ├── create
│   ├── edit
│   ├── close
│   └── delete
├── pr
│   ├── list
│   ├── view
│   ├── create
│   ├── edit
│   ├── close
│   ├── reopen
│   ├── merge
│   ├── diff
│   ├── patch
│   ├── commits
│   ├── files
│   ├── comment
│   └── review
├── release
│   ├── list
│   ├── view
│   ├── latest
│   ├── by-tag
│   ├── create
│   ├── edit
│   ├── delete
│   └── asset
├── runner
│   ├── token
│   ├── list
│   ├── view
│   ├── edit
│   ├── delete
│   └── setup
├── run
│   ├── list
│   ├── view
│   ├── jobs
│   ├── logs
│   ├── rerun
│   ├── rerun-failed
│   └── delete
├── job
│   ├── view
│   ├── logs
│   └── rerun
├── artifact
│   ├── list
│   ├── view
│   ├── download
│   └── delete
└── project
    ├── list
    ├── view
    ├── create
    ├── edit
    ├── delete
    ├── column
    ├── card
    └── issue

server bootstrap performs the first local install/init/admin/token/credential workflow. token bootstrap creates a Gitea access token through BasicAuth and then configures ChatTea/Git credentials. issue, label, milestone, pr, and release cover repo-level collaboration. runner, run, job, and artifact cover the first Gitea Actions/Flow surface: runner registration/lifecycle, PR-triggered runs, jobs, logs, and artifacts. project issue is a compatibility alias for project card. New docs and automation should use project card.

See CLI Guide for the complete CLI tree, Gitea Web screenshots, and end-to-end examples.

See Repo Collaboration Quick Start for a local end-to-end repo collaboration smoke flow with terminal screenshots.

See Actions / Flow Quick Start for the runner registration, PR-triggered run, job, and logs smoke flow.

新机器配置清单

在一台新机器上,先确认 Python 环境、ChatEnv、ChatTea 和 Gitea runtime 目录都准备好。推荐先用普通用户安装和运行,ChatTea 默认使用 user systemd,不需要 root 级系统服务。

1. 安装 ChatTea

从 PyPI 安装稳定版:

python -m pip install -U ChatTea

从源码调试或参与开发:

git clone https://github.com/ChatArch/ChatTea.git
cd ChatTea
python -m pip install -e ".[dev,docs]"

确认 CLI 可用:

chattea --version
chattea --help

2. 初始化 ChatEnv profile

ChatTea 的长期配置走 ChatEnv。新机器先创建 active profile,再查看默认值:

python -m chatenv.cli init -t chattea -I
python -m chatenv.cli cat -t chattea
python -m chatenv.cli test -t chattea -I

最少需要设置 Gitea 网站/API 地址:

python -m chatenv.cli set CHATTEA_BASE_URL=http://127.0.0.1:3000

如果数据目录不想放在默认 $CHATARCH_HOME/chattea,再设置高级路径:

python -m chatenv.cli set CHATTEA_HOME=/srv/chattea
python -m chatenv.cli set CHATTEA_WORK_PATH=/srv/gitea
python -m chatenv.cli set CHATTEA_CONFIG=/srv/gitea/custom/conf/app.ini

3. 初始化 Gitea app.ini

listen addrHTTP portDOMAINROOT_URL 都属于 Gitea app.ini,不属于 ChatEnv。新机器按访问场景选择一组参数。

本机访问:

chattea server install
chattea server init --base-url http://127.0.0.1:3000 --listen-addr 127.0.0.1 --http-port 3000

局域网访问:

chattea server install
chattea server init --base-url http://172.25.52.106:3000 --listen-addr 0.0.0.0 --http-port 3000

反向代理访问:

chattea server install
chattea server init --base-url https://git.example.com --listen-addr 127.0.0.1 --http-port 3000

初始化后可以检查生成的配置:

chattea server config path
chattea server config show
chattea server config get --section server --key ROOT_URL

从零创建一个本地 Gitea 服务

1. 安装 ChatTea 开发环境

git clone https://github.com/ChatArch/ChatTea.git
cd ChatTea
pip install -e ".[dev,docs]"
python -m pytest -q

安装后确认 CLI 和 ChatEnv provider 可用:

chattea --help
python -m chatenv.cli init -t chattea -I
python -m chatenv.cli cat -t chattea
python -m chatenv.cli test -t chattea

2. 配置长期 Env

ChatTea 的 Env 只放长期共享配置。最常用的是 Gitea 网站/API 入口和 API token:

python -m chatenv.cli set CHATTEA_BASE_URL=http://127.0.0.1:3000
chattea set-token --base-url http://127.0.0.1:3000 --token "$GITEA_TOKEN"

如果需要改目录或使用已有 Gitea binary,可以设置高级路径字段:

python -m chatenv.cli set CHATTEA_HOME=/srv/chattea
python -m chatenv.cli set CHATTEA_BINARY=/usr/local/bin/gitea
python -m chatenv.cli set CHATTEA_WORK_PATH=/srv/gitea
python -m chatenv.cli set CHATTEA_CONFIG=/srv/gitea/custom/conf/app.ini

3. 一步启动本地 Gitea

从空机器开始,优先使用 server bootstrap,它会串起安装、初始化 app.ini、创建初始 admin、生成 token、写入 ChatTea/ChatEnv 凭据和健康检查:

export GITEA_ADMIN_PASSWORD='***'
chattea server bootstrap \
  --base-url http://127.0.0.1:3000 \
  --admin-user gitea_admin \
  --admin-email admin@example.com \
  --admin-password-env GITEA_ADMIN_PASSWORD \
  -I
chattea server health

server bootstrap 适合 first-run happy path。需要只改底层 Gitea app.ini 时,再使用 server initserver config set

listen addressHTTP port 是 Gitea app.ini 的内容,不是 ChatEnv。需要改变监听 IP/端口时,作为初始化参数传给 CLI:

本机访问:

chattea server init \
  --base-url http://127.0.0.1:3000 \
  --listen-addr 127.0.0.1 \
  --http-port 3000

局域网访问:

chattea server init \
  --base-url http://172.25.52.106:3000 \
  --listen-addr 0.0.0.0 \
  --http-port 3000

反向代理访问:

chattea server init \
  --base-url https://git.example.com \
  --listen-addr 127.0.0.1 \
  --http-port 3000

这些参数会落到 Gitea app.ini

[server]
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/

4. 启动和检查服务

server bootstrap 已经可以完成首次启动和健康检查。后续运行维护使用 user systemd:

chattea server start
chattea server status
chattea server logs --lines 100
chattea server health

开发调试时也可以前台启动:

chattea server serve

停止或重启:

chattea server stop
chattea server restart

systemd unit 名固定为 chattea-gitea.service。它是内部实现细节,不作为 Env 暴露。

自启动和运行维护

ChatTea 使用 user systemd 管理 Gitea。chattea server start 会写入 user unit、执行 systemctl --user daemon-reload,并 enable --now 固定的 chattea-gitea.service

首次启用:

chattea server start
chattea server status
chattea server health

查看日志:

chattea server logs --lines 100
chattea server logs --follow

如果希望用户退出登录后服务仍保持运行,机器需要启用 user lingering:

loginctl enable-linger "$USER"

有些系统需要管理员权限才能启用 lingering;如果这条命令失败,请让管理员执行或确认机器的 user systemd 策略。启用后可以重启机器,再检查:

systemctl --user status chattea-gitea.service
chattea server health

如果只是临时调试,不需要自启动,可以不用 server start,直接前台运行:

chattea server serve

更新和升级

更新分成三类:更新 ChatTea 包、更新 Gitea binary、更新 Gitea app.ini。不要把三者混在一起。

更新 ChatTea 包

从 PyPI 更新:

python -m pip install -U ChatTea
chattea --version
python -m chatenv.cli test -t chattea -I

从源码分支更新:

git pull
python -m pip install -e ".[dev,docs]"
python -m pytest -q
chattea --version

更新 Gitea binary

更新 Gitea 本体时,先停止服务,再覆盖 binary,最后启动并健康检查:

chattea server stop
chattea server install --force
chattea server start
chattea server version
chattea server health

如果 Gitea 新版本需要数据库迁移,Gitea 通常会在启动时处理;更新前仍建议备份 CHATTEA_WORK_PATH,尤其是 data/gitea.dbdata/gitea-repositories/

更新 Gitea app.ini

小范围修改用 server config set,例如改端口:

chattea server config set --section server --key HTTP_PORT --value 3001
chattea server restart
chattea server config get --section server --key HTTP_PORT

不要随便用 chattea server init --force 覆盖已有 app.ini--force 会重新生成配置和安全密钥,只适合明确要重建本地测试实例的场景。生产或长期使用的实例应该优先备份并用 server config set 修改单项配置。

查看和修改 Gitea app.ini

Gitea 背后的服务配置在 app.ini,这和 ChatEnv 是两套东西。ChatEnv 负责 ChatTea 的长期参数,server config 负责查看或小范围编辑 Gitea app.ini。

查看 app.ini 路径:

chattea server config path

查看 app.ini 内容,默认会 mask SECRET_KEYINTERNAL_TOKENJWT_SECRET 等敏感值:

chattea server config show

读取单个配置:

chattea server config get --section server --key HTTP_PORT

修改单个配置:

chattea server config set --section server --key HTTP_PORT --value 3001
chattea server restart

server config set 是编辑 Gitea app.ini,不是写 ChatEnv。

创建和使用仓库

chattea repo create --owner gitea_admin --name demo
chattea repo list
chattea repo view gitea_admin/demo
chattea repo clone gitea_admin/demo

迁移已有 Git 仓库:

chattea repo migrate \
  --clone-url https://github.com/ChatArch/ChatTea.git \
  --owner gitea_admin \
  --name ChatTea

缺少可恢复参数时,相关命令会走 ChatStyle 交互;-i 强制交互,-I 禁止交互并快速失败。

ChatEnv 字段逐项说明

CHATTEA_BASE_URL

这是用户、浏览器和 ChatTea API 访问 Gitea 的完整地址。常见值是 http://127.0.0.1:3000http://172.25.52.106:3000https://git.example.com

它会用于 ChatTea API client 的默认 URL,也会在 server init 默认值中用于 Gitea ROOT_URL。Gitea DOMAIN 会从这个 URL 的 host 解析出来。

决定:保留。它是服务身份和 API 入口,是长期共享配置。

CHATTEA_TOKEN

这是 Gitea API token,用于需要认证的仓库命令,例如 repo listrepo createrepo viewrepo migrate

它是敏感字段。chatenv cat -t chattea 默认应该 mask 展示;只有用户显式 --no-mask 时才可能明文输出。

决定:保留。这是访问 Gitea API 的必要认证配置。

CHATTEA_HOME

这是 ChatTea 管理本地 Gitea 的根目录。默认值来自 ChatEnv 的 CHATARCH_HOME,通常是 $CHATARCH_HOME/chattea

默认的 Gitea binary、work path 和 app.ini 都会从这个目录派生。用户如果要把整个本地管理目录放到别的磁盘,改这个变量最自然。

决定:保留。这是路径总控配置,但属于高级配置。

CHATTEA_BINARY

这是 Gitea 二进制文件路径。默认是 $CHATTEA_HOME/bin/gitea

如果用户已经通过系统包管理器安装了 Gitea,或者要指定自己下载的 binary,可以改这个变量。server serve/start/version/init 都会用到它。

决定:保留。这是部署工具的真实可定制项。

CHATTEA_WORK_PATH

这是 Gitea 的工作目录。Gitea 的仓库数据、SQLite 数据库、session、log 和 custom/ 目录都在这里。

默认是 $CHATTEA_HOME/gitea。用户如果要把仓库和数据库放到更大的磁盘或持久化目录,应该改这个变量。

决定:保留。这是服务数据位置,必须可配置。

CHATTEA_CONFIG

这是 Gitea app.ini 配置文件路径,不是旧的 ChatTea JSON 配置文件。默认是 $CHATTEA_WORK_PATH/custom/conf/app.ini

高级用户可能已经有自己的 app.ini,或者希望把配置文件放到固定位置。普通用户一般不用改;要看内容用 chattea server config show

决定:保留,但属于高级配置。文档必须明确它写的是 Gitea app.ini 路径。

不作为正式 Env 的旧字段和参数

CHATTEA_URL

旧版本用它表示 Gitea API base URL。现在它和 CHATTEA_BASE_URL 语义重复,而且名字不够清楚。

新版本只做兼容读取:如果旧环境里存在 CHATTEA_URLload_config() 可以 fallback 使用。但 chatenv cat -t chattea 不再展示它,set-token 也不再写它。

决定:不保留为正式 Env。

CHATTEA_GITEA_*

旧草案里出现过 CHATTEA_GITEA_BASE_URLCHATTEA_GITEA_BINARYCHATTEA_GITEA_WORK_PATHCHATTEA_GITEA_CONFIG 等字段。

因为包名已经是 ChatTea,语义就是 Gitea 管理工具,Env 再加一层 GITEA 会显得绕。新版本优先用短名,旧字段只做兼容读取。

决定:不保留为正式 Env。

CHATTEA_GITEA_LISTEN_ADDR / CHATTEA_GITEA_HTTP_PORT

监听地址和端口会写进 Gitea app.iniHTTP_ADDRHTTP_PORT

它们是初始化/服务配置参数,不是 ChatEnv 需要长期识别的全局变量。需要设置时使用 chattea server init --listen-addr ... --http-port ...,需要查看/修改时使用 chattea server config

决定:不保留为正式 Env。

CHATTEA_GITEA_DOMAIN

Gitea app.ini 里确实有 DOMAIN,但用户不应该同时维护 BASE_URLDOMAIN

ChatTea 会从 CHATTEA_BASE_URLserver init --base-url 解析 host,并自动写入 DOMAIN。这样可以避免 URL 和 domain 不一致。

决定:不保留。

CHATTEA_GITEA_SERVICE_NAME

这是 user systemd unit 名,例如 chattea-gitea.service。它只是本机服务管理的内部名字。

普通用户基本不会改,也几乎不会冲突。未来如果要多实例,应该设计 instance/profile,而不是提前暴露 service name。

决定:不保留。内部固定使用 chattea-gitea.service

CHATTEA_GITEA_VERSION

Gitea 版本是 chattea server install --version 的一次性输入。

它不应该作为长期 Env,否则用户会误以为修改 Env 就能自动升级或降级本地 binary。

决定:不保留。

Python API

CLI 只是一层薄封装。需要在 Python 中复用时,优先直接调用裸函数或 client:

from chattea.commands.server import install_gitea, init_gitea_server, start_gitea_service
from chattea.commands.server import get_gitea_config_value, set_gitea_config_value
from chattea.commands.repo import create_repository, clone_repository
from chattea.api import GiteaClient

binary = install_gitea("1.26.4")
config = init_gitea_server(base_url="http://127.0.0.1:3000", listen_addr="127.0.0.1", http_port=3000)
start_gitea_service()

port = get_gitea_config_value("server", "HTTP_PORT")
set_gitea_config_value("server", "HTTP_PORT", "3001")

client = GiteaClient(url="http://127.0.0.1:3000", token="...")
repo = create_repository(name="demo", owner="gitea_admin")
clone = clone_repository("gitea_admin/demo")

更多接口树见:interface-tree.md

本地预览

pip install -e ".[docs]"
mkdocs serve

英文版见:index.en.md