AGENTS.md
本文档记录了 AI 助手在本项目中执行的关键任务、系统集成工作以及完整的功能说明。
项目概述
Spark 是一个 CLI 工具,用于管理多个 Git 仓库。它提供以下核心功能:
- 多仓库更新 - 批量更新多个 Git 仓库到最新版本
- Mono-repo 创建 - 将多个仓库整合为一个带有子模块的 Mono 仓库
- 子模块同步 - 同步 Mono 仓库中的所有子模块
- Git 用户配置 - 配置仓库的 Git 用户信息
- AI Agent 配置管理 - 管理多种 AI Agent(Claude Code、Codex、Kimi、GLM)的配置文件
- 任务管理 - 任务分发、同步和 GitHub 仓库创建
- Gitcode 远程管理 - 为仓库添加 Gitcode 远程地址
技术栈
- 语言: Go 1.24+
- CLI 框架: Cobra + Viper
- 终端 UI: pterm + 自定义 TUI 组件
- 测试框架: Ginkgo + Gomega (BDD 风格)
- 构建系统: Makefile (跨平台支持)
项目结构
spark/
├── cmd/ # CLI 命令定义
│ ├── root.go # 根命令和全局配置
│ ├── agent.go # AI Agent 配置管理
│ ├── agent_profile.go # Agent Profile 管理
│ ├── task.go # 任务管理命令
│ └── git/ # Git 相关命令
│ ├── git.go # Git 父命令
│ ├── config.go # Git 用户配置
│ ├── update.go # 仓库更新命令
│ ├── create.go # mono-repo 创建命令
│ ├── sync.go # 子模块同步命令
│ └── gitcode.go # Gitcode 远程管理
├── internal/ # 内部业务逻辑
│ ├── agent/ # AI Agent 管理器
│ ├── config/ # 配置管理
│ ├── git/ # Git 操作封装
│ ├── mono/ # Mono-repo 操作
│ ├── task/ # 任务管理器
│ └── tui/ # 终端 UI 组件
├── docs/ # 文档
│ ├── usage/ # 使用说明文档
│ └── tasks/ # 任务相关文档
├── .vscode/ # VS Code 配置
├── Makefile # 构建脚本
└── main.go # 入口文件
自动化任务记录
1. BDD 测试集成 (2026-02-26)
- 任务: 为
internal包添加 BDD 风格的单元测试。 - 工具: 引入了
Ginkgo和Gomega框架。 - 覆盖范围:
internal/config和internal/git。 - 验证: 所有测试已通过
make test-bdd验证。
2. 跨平台 Makefile 构建 (2026-02-26)
- 任务: 创建支持 Windows, Linux, Mac 的构建系统。
- 功能:
- 自动 OS 检测。
- 交叉编译支持 (
build-linux,build-darwin)。 - 统一的清理和测试接口。
3. VS Code 环境标准化 (2026-02-26)
- 任务: 优化
.vscode目录配置。 - 成果:
tasks.json: 与 Makefile 深度绑定。launch.json: 提供标准化的调试模板。settings.json: 统一 Go 语言开发规范。
CLI 命令完整列表
全局选项
| 选项 | 说明 |
|---|---|
--config |
指定配置文件 (默认: $HOME/.spark.yaml) |
-p, --path |
指定要扫描的目录路径 (可多次使用) |
Git 仓库管理
spark git
Git 仓库管理命令的父命令,包含以下子命令:
spark git update # 更新多个仓库
spark git create # 创建 Mono 仓库
spark git sync # 同步子模块
spark git gitcode # 添加 Gitcode 远程
spark git config # 配置 Git 用户
spark git url # 获取仓库 URL
spark git batch-clone # 克隆用户/组织所有仓库
spark git update
扫描指定目录中的所有 Git 仓库并更新到最新版本。
spark git update -p /path/to/repos
spark git update -p ~/workspace -p ~/projects
详细文档: docs/usage/update.md
spark git create
创建一个 Mono 仓库,将所有找到的仓库作为子模块添加。
spark git create -p /path/to/repos -n my-mono-repo -o ./output
| 选项 | 说明 |
|---|---|
-n, --name |
Mono 仓库名称 (默认: mono-repo) |
-o, --output |
输出路径 (默认: 当前目录) |
详细文档: docs/usage/create.md
spark git sync
同步 Mono 仓库中的所有子模块到最新版本。
spark git sync /path/to/mono-repo
详细文档: docs/usage/sync.md
spark git gitcode
为 GitHub 仓库添加 Gitcode 作为远程地址。
spark git gitcode -p /path/to/repos
spark git gitcode -p ~/workspace --url https://custom.gitcode.url
详细文档: docs/usage/gitcode.md
spark git config
配置当前仓库的 Git 用户信息。
spark git config # 查看当前配置
spark git config --username foo --email bar # 设置用户信息
| 选项 | 说明 |
|---|---|
--username |
Git 用户名 (默认: 从配置文件读取) |
--email |
Git 邮箱 (默认: 从配置文件读取) |
配置优先级:
- 命令行参数 (
--username,--email) - 配置文件 (
~/.spark.yaml中的git.username和git.email)
spark git url
获取当前仓库的 Git 远程 URL。
spark git url # 当前目录
spark git url /path/to/repo
spark git clone-org
克隆 GitHub 组织的所有仓库到本地。
spark git clone-org variableway # 使用组织名
spark git clone-org https://github.com/variableway # 使用 URL
spark git clone-org variableway --ssh # 使用 SSH
spark git clone-org variableway -o ./repos # 指定输出目录
| 选项 | 说明 |
|---|---|
--ssh |
使用 SSH URL 而非 HTTPS |
--include |
只克隆匹配模式的仓库 (逗号分隔) |
--exclude |
排除匹配模式的仓库 (逗号分隔) |
--include-forks |
包含 fork 的仓库 |
-o, --output |
输出目录 (默认: 当前目录) |
spark git update-org-status
获取 GitHub 组织的所有仓库信息,按 star 数量排序,并更新到 README.md。
spark git update-org-status variableway # 更新本地 .github/README.md
spark git update-org-status variableway --update-dot-github # 更新 .github 仓库
spark git update-org-status https://github.com/variableway # 使用 URL
spark git update-org-status variableway --dry-run # 预览输出,不写入文件
spark git update-org-status variableway -o ./docs/README.md # 指定输出路径
spark git update-org-status variableway --section "Projects" # 指定 section 名称
spark git update-org-status variableway --skip-push # 跳过 git push
| 选项 | 说明 |
|---|---|
--dry-run |
预览内容,不写入文件 |
-o, --output |
本地模式输出路径 (默认: .github/README.md) |
--update-dot-github |
直接更新组织的 .github 仓库 |
--section |
要更新的 section 名称 (默认: “Project List”) |
--skip-push |
跳过 git commit 和 push |
特性:
- 默认更新本地
.github/README.md文件 - 使用
--update-dot-github直接更新组织的.github仓库 - 只更新指定的 section,保留其他所有内容不变
- 自动克隆、修改、提交并推送更改
脚本管理
spark script
管理和执行自定义脚本。
spark script list # 列出所有可用脚本
spark script run <script-name> # 执行指定脚本
spark script list
列出所有可用的脚本。
spark script list
脚本来源:
~/.spark.yaml中的spark.scripts配置- 当前目录下
scripts/文件夹中的脚本文件
spark script run
执行指定名称的脚本。
spark script run hello # 执行 hello 脚本
spark script run deploy prod # 执行 deploy 脚本,传入参数 prod
spark script run copy-template my-feature # 复制模板文件
配置文件示例 (~/.spark.yaml):
spark:
scripts_dir: "scripts" # 脚本目录,默认为 scripts/
scripts:
- name: hello
content: |
#!/bin/bash
echo "Hello, World!"
- name: deploy
content: |
#!/bin/bash
echo "Deploying to $1 environment..."
支持的脚本类型:
- Shell:
.sh,.bash,.zsh - Python:
.py - Ruby:
.rb - Perl:
.pl - PowerShell:
.ps1 - Batch:
.bat,.cmd
跨平台支持: Mac、Linux、Windows
AI Agent 管理
spark agent
管理多种 AI Agent 的配置文件。
支持的 Agent:
- claude-code - Claude Code CLI
- codex - OpenAI Codex
- kimi - Kimi CLI
- glm - GLM (智谱 AI)
spark agent list # 列出所有支持的 Agent
spark agent view claude-code # 查看配置
spark agent edit kimi # 编辑配置
spark agent edit claude-code --tui # TUI 模式选择配置文件
# Profile 配置模板管理
spark agent profile list # 列出所有配置模板
spark agent profile add my-glm --type glm # 创建一个 GLM 模板
spark agent profile edit my-glm # 编辑模板配置
spark agent use my-glm # 将模板应用到当前项目
spark agent current # 查看当前项目使用的模板
详细文档: docs/usage/agent.md
任务管理
spark task
任务管理和特性实现命令。
# 初始化任务目录结构
spark task init # 创建 tasks/ 目录结构
# 列出所有任务和特性
spark task list # 列出任务目录和特性文件
# 创建新特性
spark task create my-feature # 创建 tasks/features/my-feature.md
spark task create my-feature --content "Custom description"
# 删除特性
spark task delete my-feature # 删除特性文件
spark task delete my-feature --force # 强制删除不提示
# 实现特性(使用 kimi CLI)
spark task impl my-feature # 执行特性实现
# 分发和同步任务
spark task dispatch my-task --dest ./workspace
spark task sync my-task --work-path ./workspace
| 子命令 | 说明 |
|---|---|
init |
初始化任务目录结构 |
list |
列出所有任务和特性 |
create |
创建新特性文件(文件名空格自动转换为 -) |
delete |
删除特性文件 |
impl |
实现特性(使用 kimi CLI) |
dispatch |
分发任务到新目录 |
sync |
同步任务回任务目录 |
特性文件创建说明:
- 文件名中的空格和下划线会自动转换为
- --content参数的内容会写入## 描述section- 如果存在
example-feature.md,会将其作为模板
任务目录结构:
tasks/
├── example-feature.md # 示例特性模板
├── features/ # 特性文件目录
├── config/ # 配置任务目录
├── analysis/ # 分析任务目录
├── mindstorm/ # 头脑风暴目录
├── planning/ # 规划任务目录
└── prd/ # PRD 文档目录
支持 --tui 标志启用交互式终端 UI。
详细文档: docs/usage/task.md
Spark Skills
个人 Skill 集合仓库,包含多个 AI Agent Skill,用于增强 spark-cli 的功能。
仓库地址: variableway/spark-cli 中的 spark-skills/ 目录
已包含 Skills
| Skill | 描述 | 路径 |
|---|---|---|
github-task-workflow |
GitHub 任务工作流管理 | spark-skills/github-task-workflow/ |
spark-task-init |
spark task 初始化 | spark-skills/spark-task-init-skill/ |
使用方式
# 安装 skills 到各 Agent
cd spark-skills
./install.sh kimi
./install.sh claude-code
# 项目级一键配置
bash spark-skills/setup-project.sh
Skill 目录结构
spark-skills/
├── github-task-workflow/ # GitHub 任务工作流 Skill
├── spark-task-init-skill/ # Task 初始化 Skill
├── install.sh # 安装脚本
└── README.md # 说明文档
详细文档: spark-skills/README.md
构建与测试
构建命令
make build # 为当前系统编译 (Windows 生成 .exe)
make build-linux # 交叉编译 Linux 版
make build-darwin # 交叉编译 macOS 版
make clean # 清理构建产物
测试命令
make test # 运行所有单元测试
make test-bdd # 以 BDD 风格运行测试
make lint # 运行静态检查 (go vet)
配置文件
配置文件位于 ~/.spark.yaml,支持以下配置项:
repo-path:
- /path/to/repos
- /another/path
task-dir: /path/to/tasks
github-owner: your-username
work-dir: ./workspace
git:
username: your-name # 默认 Git 用户名
email: your@email.com # 默认 Git 邮箱
助手指令参考
本项目旨在保持高内聚、低耦合的 Go 代码风格。在进行后续开发时,请务必:
代码风格
- 遵循 Go 标准代码规范
- 不添加注释(除非明确要求)
- 使用现有的库和工具模式
测试要求
- 新功能必须添加 BDD 风格测试
- 测试文件以
_test.go结尾 - 使用 Ginkgo/Gomega 框架
构建一致性
- 优先更新
Makefile以保持构建一致性 - 确保
.vscode配置的通用性 - 提交前运行
make lint和make test
- 优先更新
文档更新
- 新增命令时更新
docs/usage/目录 - 保持 AGENTS.md 与功能同步
- 新增命令时更新