Files

98 lines
2.6 KiB
Markdown
Raw Permalink Normal View History

2026-06-09 23:15:17 +08:00
---
tags: [task, BG_SESSIONS, ps, logs, kill, 会话管理]
create time: 2026-06-09 22:30
---
2026-06-08 23:08:57 +08:00
# Task 002: BG_SESSIONS — ps / logs / kill
2026-06-09 23:15:17 +08:00
## 概述
把 `ps` / `logs` / `kill` 做成真正有用的 session 管理命令。不在第一阶段补完 `attach` / `--bg`。
> [!info]
> 来源: [[claude-code-best/docs/features/stub-recovery-design-1-4]] 第 2 项
2026-06-08 23:08:57 +08:00
> 优先级: P1
> 工作量: 中等
> 状态: DONE
> 阶段: Phase 2A (MVP)
2026-06-09 23:15:17 +08:00
## 正文
### 目标
2026-06-08 23:08:57 +08:00
把 `ps` / `logs` / `kill` 做成真正有用的 session 管理命令。不在第一阶段补完 `attach` / `--bg`。
2026-06-09 23:15:17 +08:00
### 背景
2026-06-08 23:08:57 +08:00
- fast-path 已接好 (`src/entrypoints/cli.tsx:218`)
- session registry 已有真实实现 (`src/utils/concurrentSessions.ts`)
- `exit` 在 bg session 内已会 `tmux detach-client` (`src/commands/exit/exit.tsx:20`)
- CLI handler 仍全空 (`src/cli/bg.ts`)
- task summary 仍然是 stub (`src/utils/taskSummary.ts`)
2026-06-09 23:15:17 +08:00
### 实现方案
2026-06-08 23:08:57 +08:00
2026-06-09 23:15:17 +08:00
#### 修改文件
2026-06-08 23:08:57 +08:00
| 文件 | 改动 |
|------|------|
| `src/cli/bg.ts` | 实现 `ps` / `logs` / `kill` handler |
| `src/utils/concurrentSessions.ts` | 扩展以便后续 attach/--bg 使用 |
| `src/utils/taskSummary.ts` | 补充基础实现 |
2026-06-09 23:15:17 +08:00
#### 复用模块
2026-06-08 23:08:57 +08:00
- `src/utils/sessionStorage.ts` — session 存储
- `src/utils/udsClient.ts` — UDS 通信
2026-06-09 23:15:17 +08:00
#### ps 命令
2026-06-08 23:08:57 +08:00
- 从 registry 读取 live sessions
- 展示: pid, kind, sessionId, cwd, name, startedAt, bridgeSessionId
- 如果有 activity/status,一并展示
2026-06-09 23:15:17 +08:00
#### logs 命令
2026-06-08 23:08:57 +08:00
- 支持按 `sessionId` / `pid` / `name` 查找
- 优先复用本地 transcript/log 读取能力
- 如果 registry 里存在 `logPath`,支持 tail 文件
2026-06-09 23:15:17 +08:00
#### kill 命令
2026-06-08 23:08:57 +08:00
- 解析目标 session
- 发退出信号
- 清理 stale registry
2026-06-09 23:15:17 +08:00
### 验证步骤
2026-06-08 23:08:57 +08:00
- [ ] `ps` 能列出当前 live sessions
- [ ] `logs <sessionId|pid|name>` 能输出对应日志
- [ ] `kill <sessionId|pid|name>` 能结束目标 session 并清理 registry
- [ ] 无 live session 时各命令有明确提示
2026-06-09 23:15:17 +08:00
### Phase 2B (后续)
2026-06-08 23:08:57 +08:00
- [ ] 实现 `attach`
- [ ] 实现 `--bg`
- [ ] 实现 `taskSummary` 的中途状态更新
2026-06-09 23:15:17 +08:00
#### 为什么拆分
2026-06-08 23:08:57 +08:00
- 现有 registry 记录了 `pid / sessionId / name / logPath`
- 但没有可靠的 tmux attach target
- `attach` 和 `--bg` 需要补启动/附着元数据设计,不是简单补 handler
2026-06-09 23:15:17 +08:00
### 风险
2026-06-08 23:08:57 +08:00
- `attach` / `--bg` 第二阶段需要 tmux 元数据设计
- Windows 下 tmux 路径需要明确降级策略
2026-06-09 23:15:17 +08:00
### 依赖
2026-06-08 23:08:57 +08:00
- Task 001 (daemon 状态管理可复用模式,但非硬性依赖)
2026-06-09 23:15:17 +08:00
## 关联笔记
- [[claude-code-best/docs/features/stub-recovery-design-1-4]]
- [[claude-code-best/docs/task/task-001-daemon-status-stop]]