SuperAPI AI 工具集

conversation-context-import

编程与开发

查看项目

更新于 10-16 04:45

技能介绍

用途

本技能用于导入对话上下文:读取保存在 .dev/contexts/ 目录中的过去对话上下文,用于继续开发或评审。当用户提出“读取上下文”“导入对话上下文”“读取 .dev 的上下文”等请求时使用。

主要能力

  • 获取当前 Git 分支名,并将其转换为可用作文件名的“已净化分支名”。
  • 根据 git worktree 的情况决定读取来源目录(主工作树或链接工作树)。
  • 检查目标目录中是否存在与当前分支同名的文件,以及其他文件。
  • 根据文件存在情况决定读取对象,必要时通过提问让用户选择。
  • 读取文件并向用户报告读取了哪些文件。

使用方式

1. 获取分支名

使用 Bash 工具执行:

git branch --show-current

分支名净化:将以下字符替换为 -:

/ \ : * ? " < > |

例如:dependabot/npm_and_yarn/feed-5.2.0 → dependabot-npm_and_yarn-feed-5.2.0

后续步骤中,净化后的分支名称为“已净化分支名”。

决定读取来源目录

根据 git worktree 的情况决定读取来源。使用 Bash 工具执行 git worktree list,判断当前工作树是主工作树(仓库本体的工作树)还是链接的工作树。若在 worktree 中作业,还需掌握主工作树的路径。

  • 在主工作树中作业时:读取来源目录为 .dev/contexts/。
  • 在 worktree 中作业时:确认主工作树与 worktree 本地的两处 .dev/contexts/ 中是否存在当前分支用文件({已净化分支名}.md),据此决定读取来源目录:
    • 两处都存在:提示两处的完整路径,使用 AskUserQuestion 工具让用户选择读取哪一处。以所选一侧的 .dev/contexts/ 作为读取来源目录。
    • 仅一处存在:以该处的 .dev/contexts/ 作为读取来源目录。
    • 两处都不存在:以主工作树的 .dev/contexts/ 作为读取来源目录。

后续步骤中,将决定好的路径称为“读取来源目录”。

2. 确认文件是否存在

确认读取来源目录内的文件。使用 Glob 工具搜索 {读取来源目录}/*.md,掌握以下情况:

  • 是否存在与当前分支同名的文件({读取来源目录}/{已净化分支名}.md)
  • 是否存在其他文件

3. 决定读取对象

根据文件存在情况分别处理:

  • 仅存在当前分支的文件:不提问,直接读取该文件。
  • 仅存在其他文件(没有当前分支的文件):不提问,读取全部文件。
  • 两者都存在:使用 AskUserQuestion 工具提供以下选项:
    • 仅读取当前分支的上下文:仅 {读取来源目录}/{已净化分支名}.md
    • 读取全部上下文:读取来源目录内的全部文件(列出文件名并提示)
  • 一个文件都不存在:报告在读取来源目录中未找到上下文文件并结束。

4. 读取与报告

使用 Read 工具读取目标文件。读取完成后,向用户报告读取了哪些文件:

已读取以下对话上下文:
- `{读取来源目录}/feature-a.md`
- `{读取来源目录}/feature-b.md`

适用场景

  • 在开发告一段落后,需要恢复之前的对话上下文以继续开发。
  • 需要基于过去保存的上下文进行代码评审。
  • 在 git worktree 环境中,需要区分主工作树与 worktree 本地的上下文文件。

限制

  • 依赖 .dev/contexts/ 目录及其中保存的上下文文件;若文件不存在则无法导入。
  • 分支名中的特定字符会被替换为 -,因此不同分支名净化后可能产生同名文件。
  • 在 worktree 中两处均存在同名文件时,需要用户手动选择读取来源。

相关技能

  • conversation-context-export:将当前对话上下文写入 .dev/contexts/ 的技能。用于在开发告一段落时保存上下文。