野生 CLI 是野生Club 的命令行工具,命令名是 ys。网页只负责账号和 Token;项目内容留在你的本地工作区,用 ys push 同步。

如果你是把任务交给 AI 助手,先让它阅读 AI Skill 文档,再阅读本页。AI 应该优先使用 CLI,而不是直接手写 curl。

安装

正式版发布后:

npm install -g yeshengcli

内测期可使用本仓库里的 CLI 构建:

npm run build --prefix packages/cli
node packages/cli/dist/index.js --help

也可以用 npx 直接查看帮助:

npx yeshengcli --help

登录

先在 账号中心 生成 API Token,然后:

ys login --key ysk_xxxxxxxxxxxxxxxx

配置会写入 ~/.yesheng/config.json

本地开发时可以指定 API:

ys login --key ysk_xxxxxxxxxxxxxxxx --api-base http://localhost:3000/api/v1

初始化项目

ys init --program ml2026 --slug my-cat-feeder --name 猫喂食器

当前目录会生成:

yesheng.config.yaml
README.md
images/
logs/

yesheng.config.yaml 格式

yesheng.config.yaml 是项目目录的配置文件,必须放在执行 ys push 的当前目录。它使用 YAML 格式,字段名和网站项目模型保持一致:

project_id: project_xxx
program_id: ml2026
slug: my-cat-feeder
name: 猫喂食器
tagline: AI 帮我记得喂猫
tags:
  - Hardware
demo_urls:
  - https://demo.example.com
header_image: ./images/cover.png
visibility: public
project_status: in_progress

字段要求:

字段 类型 是否必填 说明
project_id string 必填 云端项目 ID,由 ys init 创建后写入,不要手改成 slug。
program_id string 必填 活动 ID,例如 ml2026arcadem5stack
slug string 必填 项目 URL 标识,只能用小写字母、数字和连字符,创建后不要随意改。
name string 必填 项目名称。
tagline string 可选 一句话介绍,留空用 ''
tags string[] 可选 标签数组;没有标签写 []
demo_urls string[] 可选 演示链接数组;没有链接写 []
header_image string 可选 头图路径或已上传的 cloud:// file id;本地图片建议写 ./images/cover.png
visibility public / private 可选 第一次带开发日志的 ys push 后按这里发布;不写或写错会按 private 处理。
project_status in_progress / completed 可选 你声明的项目状态。in_progress 表示进行中;completed 表示你认为这个版本已完成。标记 completed 时必须已有 README 和至少 1 篇开发日志,否则 ys push 会失败并提示缺什么。

AI 修改这个文件时,只应该改项目展示字段,例如 nametaglinetagsdemo_urlsheader_imagevisibilityproject_status。不要凭空改 project_idprogram_idslug

平台会根据材料自动计算系统阶段:有 README 但没有日志是“已上传说明”;有日志且 project_status: in_progress 是“记录中”;有 README、有日志且 project_status: completed 才是“已完成”。

公开规则很简单:ys init 创建出来的云端项目先是私有的;当你第一次用 ys push 成功上传至少一篇开发日志,并且配置里是 visibility: public,项目就会进入公开项目列表。其他同学可以用网页、ys project listys project show --logs 看到你的项目、README 和日志。它不一定会上首页精选,但已经是大家可以互相看见的进行中项目。

写日志

ys log new --title 初始化项目

日志文件在 logs/ 下,文件名类似 0001_1717932000.md

---
sequence: 1
created_at: 1717932000
synced: false
title: 初始化项目
---

这里写下今天的进展。

sequence 是项目内自增数字;同步后日志会变成 synced: true,后续不会再次上传。

同步

ys push

CLI 会:

  1. 扫描 README.mdyesheng.config.yaml 和未同步日志。
  2. 上传本地图片并替换为 cloud:// file id。
  3. 覆盖更新 README 和项目资料。
  4. 只追加新日志。
  5. 成功后回填日志 synced: true

图片规则:单张最大 5MB;允许 png / jpg / jpeg / webp / gif;默认不接受 svg。

快发日志

ys log "今天把 WiFi 连接跑通了"

这条命令不会创建本地文件,会直接提交到云端并由服务端分配下一位 sequence

查询项目

ys program list
ys program current
ys program use ml2026
ys program select
ys docs
ys docs submit
ys docs arcade
ys docs arcade submit
ys docs --url
ys project list
ys project list --all
ys project list --program arcade --limit 20 --offset 20
ys project list --json
ys project show my-cat-feeder
ys project show my-cat-feeder --logs
ys project show my-cat-feeder --json
ys project show my-cat-feeder --download

ys program use <id> 会写入 ~/.yesheng/config.jsoncurrent_program_idys program select 在交互终端中支持上下键选择。ys docs 默认输出当前 program 的文档 URL 清单,包含站内 docs 和 program 配置里的外部文档链接;--url 只输出 URL,方便管道传给 AI 工具抓取;--json 输出结构化数据。ys project list 默认按当前 program 过滤;--all 查看全站,--program <id> 临时指定活动,--limit / --offset 做分页。ys project show 默认输出项目摘要和最近日志标题。--logs 展开显示日志 Markdown 正文;--json 输出完整 JSON,适合脚本、AI 或其他工具消费。--download 会在当前目录生成 project_<id>_export.json,包含项目公开信息和所有公开日志。

给 AI 的 CLI 使用约束

  • 在包含 yesheng.config.yaml 的项目目录运行 ys push
  • 不要把 API Token 写进 README.md、日志、配置样例或代码仓库。
  • 不要修改 synced: true 的旧日志;要补充内容就创建新日志。
  • 图片放进 images/,用 Markdown 相对路径引用,再交给 ys push 上传。
  • 如果 ys push 报日志 sequence 已存在,创建下一篇新日志,不要复用旧 sequence。
  • 如果需要读取活动规则,运行 ys docs --url,再打开返回的文档链接。

完整的 AI 提示模板见 AI Skill 文档