2026-04-23 学习日志
今日主题
- MCP 生态管理工具
- iTerm2 Hotkey Window 跨 Space 行为
- Superpowers 工作流:specs 与 plans 的语义分层
- iTerm2 标签页目录继承
- Claude Code Skill 参数解析与提交流程
新增认知
MCP 生态管理工具
- MCP server 管理工具已成熟:add-mcp(npx,零安装,支持13+工具)、mcpm(brew,功能最全)、AI Orbiter(Web UI,专解多工具配置碎片化)。
- Claude Code 的 MCP 配置在 ~/.claude.json(全局)或 .mcp.json(项目级),不在 settings.json 里;Codex 的 MCP 配置在 codex-settings.toml 的 [mcp_servers.*] 块。两种格式不同是跨工具管理的核心障碍。
- AI Orbiter 用 SQLite 作单一数据源,自动同步写入不同格式的配置文件(JSON/TOML),是目前唯一真正解决多 AI 工具 MCP 配置统一问题的方案。
- Claude Code 的 skills 管理没有独立 CLI,只能通过文件系统(~/.claude/skills/)或会话内 / + Tab 交互式使用,这和 MCP 有独立工具生态形成对比。
iTerm2 Hotkey Window 跨 Space 行为
- hotkey window 偶发性跳到其他 Space,根本原因是 macOS 把窗口绑定到了最后一次使用的 Space,触发 hotkey 时系统先切换 Space 再显示窗口。
- 原生全屏窗口(Native Full Screen)强绑定 Space,若 hotkey profile 在全屏状态下会必然触发 space switch;改用非原生全屏可规避。
- 开启 Floating Window(Profiles → Keys → Configure Hotkey Window → Floating Window)可让窗口以浮动层形式出现在当前 Space,不触发 macOS 的 space 切换逻辑。
- 推荐配置组合:Floating Window 开启 + Space 设为 All Spaces + Screen 设为 Screen with Cursor + Dock Assign To None,目前社区成功率最高。
Superpowers 工作流:specs 与 plans 的语义分层
- specs/ 是设计文档('做什么+为什么'),内容是背景、目标、方案思路,讨论性语言,不规定具体步骤;对应 brainstorming 阶段的产出。
- plans/ 是实施计划('怎么做'),内容是 checkbox 任务清单 + 受影响文件列表,可直接驱动 Agent 执行;对应 writing-plans 阶段的产出,被 executing-plans / subagent-driven-development 消费。
- 两者构成流水线:需求 → brainstorming → specs/xxx-design.md → writing-plans → plans/xxx.md → executing-plans → 实际代码 → verification + code-review。设计和执行在文件层面严格分离。
iTerm2 标签页目录继承
- iTerm2 新 Tab 不继承 Window 的 Profile 设置(如起始目录、Shell),因为每个 Tab 实际上独立创建新会话,Profile 的 Working Directory 配置决定了新标签的行为。
- 解决方式是 Preferences → Profiles → General → Working Directory 设为 Reuse previous session's directory,让新标签复用当前标签的工作目录,而非使用 Profile 的默认目录。
Claude Code Skill 参数解析与提交流程
- 用户输入 '/skill-name args' 按第一个空格切割为 commandName 和 args,args 是空格后的全部原始字符串,不做语义拆分。
- 参数替换有 5 级优先级:命名参数() > 索引参数() > 简写() > 全量() > 兜底追加(ARGUMENTS: xxx)。兜底机制保证即使 SKILL.md 没有任何占位符,参数也不会丢失。
- 最终提交给 LLM API 的消息由 4 部分组成:用户可见的 loading 消息、isMeta=true 的 SKILL.md 全文(含参数替换后内容)、附件消息、权限声明。SKILL.md 内容对用户不可见但对模型可见。
- arguments frontmatter 支持命名参数声明(如 'arguments: foo bar'),这使 / 能精准替换到 SKILL.md 的指定位置,比末尾追加更可控,是推荐的做法。
- Skill 有两条触发路径:用户手动输入 '/' 前缀和模型通过 SkillTool 工具调用,两者最终汇合到同一个 getPromptForCommand → substituteArguments 流程。