Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>You Are Here - IDE Selection to Your CLI AgentNew to Visual Studio Code? Get it now.
You Are Here - IDE Selection to Your CLI Agent

You Are Here - IDE Selection to Your CLI Agent

DBinK

|
7 installs
| (0) | Free
A VS Code extension that hands your IDE selection to your CLI Agent — file, cursor position and selection are written to a fixed path the Agent reads. No MCP server or client config needed.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
You Are Here logo

You Are Here

一个 VS Code 扩展,把你 IDE 里选中的代码交给终端里的 CLI Agent。

Stars Version Installs License Agent Skills

简体中文 | English

简介

AI 编程 Agent 能读项目里的任何文件,却不知道你当前打开的是哪一个。要手动补上这个信息,就需要提供文件路径和行号区间,或者把代码粘贴过去。

这个扩展把当前文件、光标位置和选区写到一个固定路径,Agent 可以直接读。推荐用法是内置的两个 skill,它们遵循 Agent Skills 格式,Codex、Cursor、Gemini CLI、opencode、GitHub Copilot、Cline、Windsurf、Zed 等约 70 个 Agent 都能用。CLI Agent 最需要它——它们看不到你的编辑器,而窗口内的 Agent 本来就能自己拿到选区。

快速开始

  1. 安装 VS Code 扩展——从 Visual Studio Marketplace 或 Open VSX 安装,开发阶段也可以从 VSIX 装(见开发)。

  2. 安装 skills

    npx skills add DBinK/youarehere -g
    

    -g 会装进检测到的每个受支持 Agent 的用户级 skills 目录;不加则装进当前项目。如果 skills 装不了,让 Agent 从 https://github.com/DBinK/youarehere 安装。

    扩展与 skills 用同一个版本号。装完首次启动会弹一个提示,点「立即更新」把 skills 对齐到这个版本即可;细节见版本提示。

  3. 让 Agent 读取选区

    在 VS Code 里选中代码,把 /here 和问题一起发给 Agent。以 Codex 为例:

    > /here 这个循环为什么跳过最后一个元素?
    
      读了 src/parser.ts:42-58。循环上界是 `i < len - 1`,
      所以最后一个元素永远访问不到。
    

    Agent 从 ~/.youarehere/ref.json 拿到位置,自己去读那几行。

内置 skill

Skill 调用方式 行为
here 仅 /here 读取选区处的代码,然后作答
youarehere 自动触发,或 /youarehere 完整状态,以及怎么读它

here 只在按名字调用时运行,用来让 Agent 直接看你选中的代码。

版本提示

扩展与 skills 用同一个版本号,两者捆绑使用,所以装入或更新扩展后首次启动会弹一次提示,让你把 skills 对齐到当前版本。判据是扩展目录的安装时间而不是版本号,重装同一个版本也会弹。

  • 立即更新:在终端里先跑 npx skills remove,清掉退场的旧技能名,再跑 npx skills add 装回当前版本
  • 复制命令:把同样的两行去掉 -y 放进剪贴板,装到哪些 Agent 由你确认
  • 取消(VS Code 自己补的关闭按钮)或直接关掉不算处理过,下次启动再问
  • 提示按编辑器的显示语言切换:vscode.env.language 以 zh 开头(简体 zh-cn 等)弹中文,其余弹英文;正文里带 CHANGELOG 链接

上下文文件

扩展把两个文件写进固定目录,权限都是 0600。

编辑器状态变化时两个文件都会重写:启动后、活动编辑器切换时、光标或选区变化时、当前文件保存或内容变更时、工作区文件夹变化时。

~/.youarehere/ref.json

最精简的接口,只有一个引用,够 Agent 定位:

{
  "ref": "/path/to/workspace/src/example.ts:10-16",
  "isDirty": false,
  "updatedAt": "2026-09-18T06:28:23.746Z",
  "extensionVersion": "0.3.0"
}

ref 是绝对路径。最后一个冒号后面,要么是行号区间(10-16),要么是单个行号(42,表示没有选中任何内容)。

~/.youarehere/context.json

完整状态。需要的信息比一个引用更多时读它,youarehere 用的就是这个。

{
  "schema": "youarehere/v1",
  "workspace": "/path/to/workspace",
  "file": "/path/to/workspace/src/example.ts",
  "relativeFile": "src/example.ts",
  "isDirty": false,
  "cursor": {
    "line": 17,
    "character": 1
  },
  "activeLineText": "}",
  "selection": {
    "startLine": 10,
    "startCharacter": 1,
    "endLine": 17,
    "endCharacter": 1
  },
  "updatedAt": "2026-09-18T06:28:23.746Z",
  "extensionVersion": "0.3.0"
}

行号和列号都是 1-based。

没有选中内容时,selection 是一个零宽区间:startLine == endLine 且 startCharacter == endCharacter。只有当没有活动的文本编辑器时(比如焦点在欢迎页或 webview 上)它才是 null。

区间和 VS Code 一样是左闭右开的:选区停在一行行首时 endCharacter 为 1,该行上没有任何内容被选中。上面 selection 的 end 落在第 17 行行首,所以实际选中到第 16 行为止,ref 读作 10-16,原因就在这里。

缓冲区有未保存的改动时 isDirty 为 true,此时磁盘上的文件可能和屏幕上看到的不一致。

两个文件都带 extensionVersion,记录写入它们的是哪个扩展版本。内置 skill 拿它和自己的 metadata.version 对比,不一致就先要求统一版本再继续读代码(字段缺失说明扩展太旧,要更新的是扩展;字段不相等则更新 skills);扩展自身不读 skill 的版本,只靠安装后那次提示提醒。

多窗口

状态文件只有一个固定路径,多个 VS Code 窗口同时开着会互相覆盖。最后改动编辑器状态的那个窗口生效,切换活动编辑器、移动光标或选区都算,只切换窗口焦点则不会更新文件。workspace 和读取方的工作目录不一致通常没问题,两者往往是父子目录或 worktree 的关系。只有指向两个不相干的项目时才需要核对。

环境要求

  • VS Code 正在运行,并且装了本扩展。
  • 读取方与 VS Code 运行在同一台机器上。

开发

所有源码都在 extension.js。构建扩展:

npm install
npm run package

这会生成 youarehere-<version>.vsix。本地安装:

code --install-extension youarehere-<version>.vsix --force

skills/ 目录不随 VSIX 打包,按快速开始里的方式从仓库安装。

发布

每个版本同时发到 Visual Studio Marketplace 和 Open VSX。两个命令都从环境变量读令牌,先导出。

export VSCE_PAT=<azure-devops-pat>   # 需要 Marketplace > Manage 权限
export OVSX_PAT=<open-vsx-token>

然后发布:

npm run publish:vsce
npm run publish:ovsx

两个命令都会从源码打包再上传。首次发布前,Marketplace 上的 DBinK publisher 和 Open VSX 上的 DBinK namespace 必须已存在。Open VSX 建 namespace 用 npx ovsx create-namespace DBinK -p "$OVSX_PAT"。发布工具需要 Node.js 22 或更高版本。

致谢

灵感来自 yuichisuzuki0601/active-context-mcp。

许可证

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft