Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>智能体资源管理器New to Visual Studio Code? Get it now.
智能体资源管理器

智能体资源管理器

adaex

|
2 installs
| (0) | Free
在 VS Code 里一处管理本机所有 Claude Code 会话,hook 上报四态状态 + 历史会话恢复
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Agents Explorer — Agent Sessions

在 VS Code 活动栏一处全局观察本机所有 claude CLI 会话,通过 Claude Code hook 写状态文件点亮四态徽标 + 标注来源。

是什么 / 不是什么

核心诉求:机器上任何地方跑的 claude(别的 VS Code 窗口、macOS 自带终端、iTerm 里的 cc-*)散落各处看不全、原生终端又看不出状态。本扩展把它们全部汇到一处列表,一眼看出哪个在跑、哪个在等我、哪个跑完了,以及它来自哪个终端。

VS Code 原生 Terminal 接口图标/颜色创建后不可改(vscode.d.ts 全 readonly),要动态显示状态必须自建 TreeView——这是本扩展存在的理由。

做:活动栏全局会话列表(活跃 + 历史两视图)+ 四态图标 + 来源标注 + New Session 开裸终端 + 点击 claude --resume 恢复历史会话 + 选中终端左侧行高亮联动 + waiting 提醒 + 防休眠。

刻意砍掉:项目化分组、multi-root、模型切换 UI、codex 端到端;跟随终端 tab 顺序(VS Code API 做不到,见 AGENTS.md);远程会话跨窗口点击(本窗口无 Terminal 对象)。New Session 只开裸终端,你自己敲 cc-glm——扩展不维护网关清单。

四态

状态 图标 含义
idle 灰空心圈 新建未活动
working 转圈 正在跑
waiting 黄色警告 在等你输入/授权
done 绿勾 跑完了

状态只来自 hook 写的状态文件,从不解析终端输出。

工作原理(全局文件真源,无 HTTP server)

  1. 激活时把 agents-explorer-hook.sh + agents-explorer-hook.py 写到 globalStorage,并全局 append 到 ~/.claude/settings.json 各事件(与 Orca 等已有 hook 并存,带备份、幂等)
  2. 任何终端里跑 claude → Claude Code 触发全局 hook → .sh 把 stdin payload 管道喂给 .py
  3. .py 解析 payload 的 session_id / cwd / 事件名 + 读环境变量 $TERM_PROGRAM(来源)/ $SSH_CONNECTION(远程)→ 原子写 globalStorage/sessions/<session_id>.json
  4. 扩展 fs.watch 该目录 → 防抖重扫所有会话文件 → 映射四态 + 归一化来源 → TreeView 刷新

为什么是文件不是 server:globalStorage 是扩展级共享目录,多个 VS Code 窗口读同一份真源、列表天然一致;文件系统跨窗口/跨进程,没有 HTTP 端口的多实例冲突。hook 写盘任何失败一律 exit 0,绝不阻塞 claude。

会话消失:hook 报 SessionEnd,或超 6h 未更新 → 扫描时删文件、移出列表。

开发 / 调试

npm install
npm run compile     # 或 F5 自动 watch 编译

按 F5 启动扩展开发宿主 → 活动栏「智能体资源管理器」图标 →「活跃会话」/「历史会话」两视图 → 顶栏 + 新建会话。

注意:首次激活会真写 ~/.claude/settings.json(带 .agents-explorer-backup-<ts> 备份)。若该文件含注释(非纯 JSON),扩展会拒绝自动安装并提示,不破坏文件。

验证

不用真跑 claude:往 globalStorage/sessions/ 丢一个 <uuid>.json,列表即刻出现一行:

DIR="$HOME/Library/Application Support/Code/User/globalStorage/adaex.vscode-agents-explorer/sessions"
mkdir -p "$DIR"
# 变黄(等待)——字段见 src/hook/sessionFile.ts
printf '%s' '{"sessionId":"demo-1","event":"PermissionRequest","cwd":"/tmp","termProgram":"Apple_Terminal","isRemote":false,"transcriptPath":"","title":"","ts":0,"shellPid":0}' > "$DIR/demo-1.json"
# 改 event 为 Stop → 变绿;删掉文件 → 行消失

端到端:在任意终端(含本扩展外的)敲 cc-glm 发 "1+1" → 列表出现该会话 idle→working→done + 来源标注;触发一次权限 → waiting(黄)。

事件→四态映射

照搬本机 Orca relay.js 的 claude 映射(src/hook/stateMap.ts):

  • working ← UserPromptSubmit / PreToolUse / PostToolUse / PostToolUseFailure / PreCompact / SubagentStart
  • waiting ← PermissionRequest / Notification
  • done ← Stop / StopFailure / SubagentStop / TeammateIdle
  • idle ← SessionStart(会话开始/恢复/清空,就绪未活动)
  • SessionEnd → 删除会话(不是一种状态)

hook API 会演进,确切事件名以当前 Claude Code 版本为准。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft