支持将 Worktree 会话安全 Handoff 到 Local 功能分支
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 401
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: takennap
**客户端版本**: 0.1.37
---
## 使用场景
用户从最新的 `master` / `main` 创建 Cindy 托管的 Worktree,让 AI 在隔离环境中开发。开发完成并完成基础自检后,希望把当前会话及代码安全移交到主工作区的独立功能分支,在日常 IDE、既有依赖和开发服务器中由另一个 AI 或人工继续审查、调试和修复,确认后再显式合并到主分支。
当前 Cindy 已有新建会话时的 Worktree 开关与基础分支选择,但缺少 Worktree 完成后的快捷 Handoff。用户只能手动执行 Git 命令,或让 AI 临时处理分支创建、改动搬运和工作目录切换,流程容易因脏工作区、分支占用或未提交改动而失败。
## 诉求
增加一个面向已有 Worktree 会话的 `Hand off to Local` / `继续到主工作区` 操作:
1. 同时移动会话上下文和代码改动,而不只是切换聊天的工作目录。
2. Handoff 后确保改动归属于独立功能分支,避免未提交修改直接落在 `master` / `main`。
3. 支持 Worktree 处于 detached HEAD、已有功能分支、存在未提交 tracked changes 等常见状态。
4. Handoff 成功后,后续会话在 Local checkout 中继续运行;原 Worktree 在用户确认审查完成前保留。
5. 合并到 `master` / `main` 必须是后续显式操作,不与 Handoff 自动绑定。
期望流程:
```text
最新主分支
→ Worktree 隔离开发
→ 基础自检
→ Hand off to Local
→ Local 独立功能分支审查、调试、修复
→ commit / rebase / 验证
→ 用户显式合并主分支
→ 清理 Worktree
```
## 建议方案
Handoff 作为宿主侧原子操作执行,并包含以下安全门:
- 预检 Local checkout 是否存在无关未提交修改;存在冲突风险时明确阻止并解释。
- 识别 Worktree 的 detached HEAD、当前分支、HEAD、tracked/untracked 状态。
- 允许用户确认或输入目标功能分支名;默认可使用 `cindy/`。
- 安全转移 commits 与未提交 tracked changes,并处理 Git “同一分支不能同时被两个 Worktree checkout”的限制。
- 成功后更新 session 的 working directory;任一步失败时回滚到可继续工作的原状态。
- 对 `.gitignore` 文件给出明确清单或警告,不应静默丢失视频、截图、构建产物等审查证据;可提供显式复制选项。
- Handoff 完成后展示源 Worktree、目标 Local 分支和未移动文件摘要。
- 不自动删除 Worktree,不自动 commit,不自动 merge 或 push;这些操作继续由用户显式授权。
---
**OS**: darwin arm64 (27.0.0)
**界面语言**: zh-CN
Contributor guide
Research direction
No files or tests are named. Start by tracing the existing Worktree session flow and host-side Git operations; map how working directories and session context are updated. Done means a confirmed handoff safely handles the listed Git states, preserves the source Worktree, reports unmoved files, and rolls back on failure without committing, merging, pushing, or deleting.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, typescript
- Domain
- developer-experience, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 32/100