SuperAPI AI 工具集

project-session-manager

编程与开发

查看项目

更新于 10-15 15:45

技能介绍

用途

Project Session Manager(PSM)是一个 worktree 优先的开发环境管理器,用于在 Claude Code 中为 issue、PR 和功能开发自动创建隔离的开发环境。它结合 git worktree 与 tmux 会话,支持在多个任务、项目和仓库之间并行工作。

psm 是此规范技能入口点的兼容别名。规范斜杠命令为 /oh-my-claudecode:project-session-manager(别名:/oh-my-claudecode:psm)。

主要能力

PSM 提供以下命令:

  • review <ref>:创建 PR 审查会话,例如 /psm review omc#123
  • fix <ref>:创建 issue 修复会话,例如 /psm fix omc#42
  • feature <proj> <name>:功能开发,例如 /psm feature omc add-webhooks
  • list [project]:列出活动会话
  • attach <session>:附加到会话,例如 /psm attach omc:pr-123
  • kill <session>:终止会话
  • cleanup:清理已合并/已关闭的会话
  • status:显示当前会话信息

项目引用支持多种格式:别名(omc#123,需 ~/.psm/projects.json)、完整格式(owner/repo#123)、URL(https://github.com/owner/repo/pull/123)、当前目录(#123)。

PSM 支持多个 issue 追踪提供方:GitHub(默认,需 gh CLI)和 Jira(需 jira CLI)。Jira 仅识别显式配置为 jira_project 的 PROJ-123 格式,以避免误判。注意 Jira 不支持 review 命令(无 PR 概念),应使用 fix。

使用方式

快速开始(worktree 优先):使用 omc teleport 在添加 tmux/会话编排之前创建隔离的 issue/PR/功能 worktree:

omc teleport #123          # 为 issue/PR 创建 worktree
omc teleport my-feature    # 为功能创建 worktree
omc teleport list          # 列出 worktrees

配置项目别名(~/.psm/projects.json):

{
  "aliases": {
    "omc": {
      "repo": "Yeachan-Heo/oh-my-claudecode",
      "local": "~/Workspace/oh-my-claudecode",
      "default_base": "main"
    }
  },
  "defaults": {
    "worktree_root": "~/.psm/worktrees",
    "cleanup_after_days": 14
  }
}

Jira 配置需添加 jira_project 和 provider: "jira",repo 字段仍为克隆 git 仓库所必需。非 GitHub 仓库可使用 clone_url。

Jira CLI 安装:

# macOS
brew install ankitpokhrel/jira-cli/jira-cli

# Linux
# See: https://github.com/ankitpokhrel/jira-cli#installation

# 配置(交互式)
jira init

目录结构:

~/.psm/
├── projects.json       # 项目别名
├── sessions.json       # 活动会话注册表
└── worktrees/          # worktree 存储
    └── <project>/
        └── <type>-<id>/

会话命名:公开会话 ID 使用冒号形式(如 omc:pr-123),用于 psm attach/kill。由于 tmux 保留 : 和 . 用于其 session:window.pane 目标语法并会静默重写,实际 tmux 会话名使用安全形式,将这些字符替换为 _(issue #3528)。PSM 在每个 tmux 边界将公开 ID 转换为 tmux 安全名。

适用场景

  • 需要为 PR 审查、issue 修复或功能开发创建隔离环境
  • 需要跨多个任务、项目、仓库并行工作
  • 希望自动启动 Claude Code 并传入任务上下文
  • 需要自动清理已合并 PR 和已关闭 issue 的会话

限制

  • 依赖 git(需 worktree 支持 v2.5+)和 jq
  • tmux 为可选但推荐;无 tmux 时会警告并跳过会话创建
  • GitHub 工作流需 gh CLI;Jira 工作流需 jira CLI
  • Jira 不支持 review 命令
  • 启动 Claude Code 时使用 --dangerously-skip-permissions 以避免信任目录提示和工具审批提示阻塞会话(issue #2508)
  • 启动后等待 PSM_CLAUDE_STARTUP_DELAY(默认 5 秒)再投递任务

Teleport 命令

omc teleport 提供轻量替代方案,仅创建 git worktree 而不管理 tmux 会话。选项包括 --worktree(默认 true)、--path <path>(默认 ~/Workspace/omc-worktrees/)、--base <branch>(默认 main)、--json。

PSM 与 Teleport 对比:PSM 支持 git worktree、tmux 会话、Claude Code 启动、会话注册表、自动清理、项目别名;Teleport 仅支持 git worktree(使用当前仓库)。完整管理会话用 PSM,快速创建 worktree 用 teleport。

初始化

首次运行时创建默认配置:

mkdir -p ~/.psm/worktrees ~/.psm/logs

if [[ ! -f ~/.psm/projects.json ]]; then
  cat > ~/.psm/projects.json << 'EOF'
{
  "aliases": {
    "omc": {
      "repo": "Yeachan-Heo/oh-my-claudecode",
      "local": "~/Workspace/oh-my-claudecode",
      "default_base": "main"
    }
  },
  "defaults": {
    "worktree_root": "~/.psm/worktrees",
    "cleanup_after_days": 14,
    "auto_cleanup_merged": true
  }
}
EOF
fi

if [[ ! -f ~/.psm/sessions.json ]]; then
  echo '{"version":1,"sessions":{},"stats":{"total_created":0,"total_cleaned":0}}' > ~/.psm/sessions.json
fi