1pet 是一款基于 Python 的终端宠物,使用 typer 和 rich 库构建。
- 基于用户名 + 种子 + 重抽次数生成稳定宠物
- 直接运行
1pet启动交互式伙伴 Shell - 启动后显示状态概览、LLM 在线状态、建议操作和
1-4数字快捷入口 - 在伙伴模式中执行关键操作后自动刷新概览
- 18 种物种、5 种稀有度等级,以及闪光变种
- 终端中的 ASCII 待机动画
- RPG 风格属性:
混乱(CHAOS)、毒舌(SNARK)、调试(DEBUGGING)、智慧(WISDOM)、耐心(PATIENT) - 命令:
孵化(hatch)、状态(status)、喂食(feed)、玩耍(play)、对话(talk)、观看(watch)、换装(dress)、重命名(rename) - 可选的 OpenAI 兼容 LLM 模式用于
对话(talk) - 每日
签到(checkin)连续奖励 反应(react)命令用于 git 提交互动- 宠物闲置时的被动状态衰减
- 数据持久化存储在
~/.1pet/pet.json - 中文语言支持(自动检测系统语言)
# 安装
pip install -e .
# 直接运行(自动孵化宠物)
1pet
# 或指定命令运行
1pet status
1pet hatch在伙伴 Shell 中:
status
feed snack
play chaos
talk
talk 你为什么一直盯着我看
checkin
react .
rename 小黄
watch
exit直接输入 1pet 后,启动页会显示:
- 当前宠物状态和最近记忆
- LLM 是否在线
- 建议下一步操作
1-4快捷操作编号,可直接输入数字执行- 执行快捷操作或常用命令后自动刷新概览
1pet # 启动交互式伙伴 Shell(无参数时)
1pet buddy # 启动交互式伙伴 Shell
1pet hatch # 孵化新宠物
1pet hatch --reroll # 重新孵化当前宠物
1pet status # 显示宠物状态
1pet feed [食物] # 喂食宠物
1pet play [活动] # 与宠物玩耍
1pet talk [消息] # 与宠物对话
1pet llm-status # 查看 LLM 配置状态
1pet checkin # 每日签到
1pet react [仓库路径] # 对 git 提交作出反应
1pet watch # 观看待机动画
1pet watch --cycles 10 # 观看指定次数动画
1pet dress [配件] # 更换宠物配件
1pet rename [新名字] # 给宠物取新名字可选配件:none(无)、cap(帽子)、crown(皇冠)、leaf(叶子)、headphones(耳机)
1pet dress crown # 戴上皇冠
1pet dress none # 取下配件1pet 使用 OpenAI 兼容的 POST /chat/completions 接口。支持 OpenAI、Groq、Together AI 或本地模型。
现在直接运行 1pet 也会自动尝试加载本地 LLM 配置,不需要再单独走 run-1pet-llm.ps1。
支持的本地配置文件:
- 当前目录或父目录中的
1pet-llm.local.ps1 - 当前目录或父目录中的
1pet-llm.local.env ONEPET_HOME/llm.env~/.1pet/llm.env
优先级规则:
- 你当前 shell 里已经显式设置的环境变量优先,不会被本地文件覆盖
- 离当前工作目录更近的本地文件优先
推荐做法一:继续使用 PowerShell 文件
$env:ONEPET_LLM_ENABLED = "1"
$env:ONEPET_LLM_API_KEY = "sk-..."
$env:ONEPET_LLM_MODEL = "gpt-4o-mini"把上面内容放进项目根目录的 1pet-llm.local.ps1,之后直接运行:
1pet
1pet talk "你好,小家伙!"推荐做法二:使用更通用的 .env 风格文件
ONEPET_LLM_ENABLED=1
ONEPET_LLM_API_KEY=sk-...
ONEPET_LLM_MODEL=gpt-4o-mini
ONEPET_LLM_BASE_URL=https://api.openai.com/v1
ONEPET_LLM_TIMEOUT=20把它保存为 1pet-llm.local.env 或 ~/.1pet/llm.env 即可。
| 环境变量 | 必需 | 说明 | 默认值 |
|---|---|---|---|
ONEPET_LLM_ENABLED |
✅ | 设为 1 启用 |
- |
ONEPET_LLM_API_KEY |
✅ | API 密钥 | - |
ONEPET_LLM_MODEL |
✅ | 模型名称 | - |
ONEPET_LLM_BASE_URL |
❌ | API 地址 | https://api.openai.com/v1 |
ONEPET_LLM_TIMEOUT |
❌ | 超时时间(秒) | 20 |
$env:ONEPET_LLM_ENABLED = "1"
$env:ONEPET_LLM_API_KEY = "sk-..."
$env:ONEPET_LLM_MODEL = "gpt-4o-mini"$env:ONEPET_LLM_ENABLED = "1"
$env:ONEPET_LLM_API_KEY = "gsk_..."
$env:ONEPET_LLM_MODEL = "llama-3.1-8b-instant"
$env:ONEPET_LLM_BASE_URL = "https://api.groq.com/openai/v1"$env:ONEPET_LLM_ENABLED = "1"
$env:ONEPET_LLM_API_KEY = "not-needed"
$env:ONEPET_LLM_MODEL = "qwen2.5:14b"
$env:ONEPET_LLM_BASE_URL = "http://localhost:11434/v1"1pet llm-status
1pet talk "你好,小家伙!"- 首次孵化会根据当前操作系统用户名生成宠物
- 直接运行
1pet会启动交互式 Shell,并在需要时自动孵化宠物 --reroll会保留原始种子但推进重抽计数器- 配件是装饰性的
talk在配置了 LLM 时会使用 LLM 模式,否则使用内置对话checkin使用本地日期并记录连续签到react读取 git 仓库的最新提交,避免重复奖励相同提交- 宠物的状态会随着闲置时间被动变化,即使你不进行任何操作,
status也可能发生变化 - 数据存储位置:Windows 上默认在
%LOCALAPPDATA%\.1pet,可通过ONEPET_HOME环境变量覆盖 - 如需重置状态,删除
~/.1pet/pet.json
1pet 支持中文和英文,会根据系统语言自动切换界面语言。
如需强制指定语言,可设置:
$env:LANG = "zh_CN" # 强制中文
$env:LANG = "en_US" # 强制英文