跳转至

ChatPyPI CLI 能力地图

这篇文档是当前 ChatPyPI CLI 的简明能力地图,用来校对哪些 Python 包生命周期、PyPI 登录态和 Trusted Publisher 流程已经有一等命令,哪些流程仍然只是 checkpoint / 规划入口。

可导入 Python 函数映射见 Python 接口树。模板创建行为见 ChatArch 模板与 Docs Flow。发布和 Trusted Publisher 实践见 发布与 Trusted Publisher Flow

顶层命令

chatpypi                  # Python 包生命周期与 PyPI 操作入口
├── --help                # 显示当前命令帮助
├── --version             # 输出当前包版本
├── --tree                # 输出带参数签名的真实已注册 CLI 树
├── --tree-brief          # 输出命令节点和描述,不含参数签名
├── pkg                   # 包模板、构建、校验、上传和探测
├── auth                  # 登录态、账号和人工 checkpoint 流程
├── profile               # 规划:本地 ChatPyPI profile 管理
├── config                # 规划:本地配置键值管理
├── project               # 读取当前登录账号的 PyPI project 视图
├── publisher             # 读取或配置 Trusted Publisher
├── token                 # 规划 / checkpoint:PyPI API token 管理
├── doctor                # 本地配置、session 和安全边界检查
├── docs                  # 输出文档链接和示例命令
├── init                  # 兼容快捷入口:创建 src-layout Python 包
├── build                 # 兼容快捷入口:构建 wheel / sdist
├── check                 # 兼容快捷入口:校验 dist
├── upload                # 兼容快捷入口:上传 dist
└── probe                 # 兼容快捷入口:检查 PyPI 包名是否可用

chatpypi --treechatpypi --tree-brief 由 ChatStyle 的 add_tree_option() 提供,并通过共享 render_click_tree() 回读注册树。默认树保留参数签名;简明树保留命令节点和描述,但省略参数签名。pkg init -t chatarch 生成的新包也包含这两个顶层选项。

包生命周期

chatpypi pkg              # 包生命周期主分组
├── init                  # 创建 default 或 chatarch 模板包
├── build                 # 构建 wheel / sdist;可先清理 dist
├── check                 # 调用 twine check 校验构建产物
├── upload                # 用 token env / password env 上传 dist
└── probe                 # 查询 PyPI 包名冲突

chatpypi init             # 兼容 `chatpypi pkg init`
chatpypi build            # 兼容 `chatpypi pkg build`
chatpypi check            # 兼容 `chatpypi pkg check`
chatpypi upload           # 兼容 `chatpypi pkg upload`
chatpypi probe            # 兼容 `chatpypi pkg probe`

pkg init -t chatarch 是当前模板更新的核心入口:它生成 README、MkDocs、CLI 树、能力地图、接口树、CI/Preview/Deploy workflow 和 ChatEnv provider。默认文档只保留结构化占位,不生成计划页或仓库级域名文件。

认证和 Session

chatpypi auth             # 登录态、账号和引导型操作
├── login                 # 用户名/密码/TOTP 登录,并写入 ChatEnv token profile
├── logout                # 清理本地 session token-store state
├── whoami                # 用 session 读回当前账号摘要
├── register              # 规划 / checkpoint:账号注册
├── verify-email          # 规划 / checkpoint:邮箱验证
├── setup-2fa             # 规划 / checkpoint:2FA 初始化
├── recovery-codes        # 规划 / checkpoint:恢复码处理
└── session               # token-backed PyPI session 管理
    ├── show              # 输出非敏感 session 摘要
    ├── export            # 规划 / checkpoint:导出 session
    ├── import            # 规划 / checkpoint:导入 session
    └── clear             # 清理 session token-store state

认证命令必须遵守安全边界:密码、TOTP secret、session runtime state、cookie 只通过 env/profile/private store 读取或写入,CLI 和文档都不能回显真实值。auth loginauth whoamiauth session show|clear 是当前已实现主路径;注册、邮箱验证、2FA 初始化和恢复码仍然是人工 checkpoint。

Project 和 Trusted Publisher

chatpypi project          # 当前登录账号的 PyPI project 视图
├── list                  # 已实现:读取项目列表
└── show                  # 规划:显示单个项目详情

chatpypi publisher        # Trusted Publisher 读取与写入
├── list                  # 已实现:读取账号级 publisher 状态
├── detail                # 已实现:读取项目级 publisher 状态
├── add-github            # 已实现:添加/幂等确认 active GitHub publisher
├── pending-list          # 已实现:读取 pending publishers
├── pending-add           # 已实现:添加 pending publisher 例外
└── pending-remove        # 已实现:清理 pending publisher

普通路径是已有 PyPI project 的 active Trusted Publisher:使用 publisher add-github 写入并读回确认。pending-* 只用于真正 pending 的例外流程或清理 stale pending,不是普通 Publisher 默认路径。

Profile、Config 和 Token 边界

chatpypi profile          # 规划:本地 ChatPyPI profile 管理
├── list                  # 规划:列出 profile
├── show                  # 规划:显示非敏感 profile 字段
├── use                   # 规划:切换 active profile
├── create                # 规划:创建 profile
└── delete                # 规划:删除 profile

chatpypi config           # 规划:本地配置键值管理
├── list                  # 规划:列出配置
├── get                   # 规划:读取配置
├── set                   # 规划:写入配置
└── unset                 # 规划:删除配置

chatpypi token            # 规划 / checkpoint:PyPI API token 管理
├── list                  # 规划:列出 token 摘要,不回显 token
├── create                # 规划:创建 token 并安全保存一次性 secret
└── revoke                # 规划:确认后撤销 token

这些命令是预留的一等入口,但不是已实现自动化教程。尤其是 token 创建 / 撤销涉及 PyPI 页面、一次性 secret 和权限确认,在实现和验证前只能写边界,不能写成“可执行操作”。

诊断和文档入口

chatpypi doctor           # 本地配置与 session 诊断
└── check                 # 已实现:检查配置、session 和安全边界

chatpypi docs             # 文档链接与示例
├── links                 # 输出核心文档链接
├── examples              # 输出常用示例命令
└── open                  # 输出指定 topic 的文档 URL

doctor check 用来做本地状态和 session 读回前置检查。docs 分组不执行远端写操作,只提供文档入口和示例命令,方便从 CLI 回到文档站。

实现合约

  • 每个已实现命令都要能追到 Python 函数或 service 层,不能把业务逻辑只堆在 Click 回调里。
  • 如果命令会写远端状态,文档必须说明凭据、权限、dry-run/checkpoint 或确认边界。
  • 未实现入口只写边界说明,不放可执行教程。
  • CLI 树新增命令时,README、接口树、测试和相关 Flow 页面要同步更新。