AI使用笔记 13

OpenCode References 功能详解:让 AI 助手轻松看懂你的其他项目

OpenCode References 功能详解:让 AI 助手轻松看懂你的其他项目

你在用 OpenCode 写代码时,有没有遇到过这种情况:项目 A 需要参考项目 B 的设计规范,或者想让 AI 助手看懂公司内部的 SDK 实现?这时候,OpenCode 的 References 功能就派上用场了。

简单说,References 就是给 OpenCode 开一个"后门",让它能访问当前项目之外的目录。不管是本地的文档文件夹,还是远端的 Git 仓库,都能变成 AI 助手的参考资料。

怎么配置

配置很简单,在项目根目录的 opencode.jsonopencode.jsonc 里加个 references 字段就行。

引用本地目录

path 字段指定本地目录路径:

jsonc
{
  "references": {
    "docs": {
      "path": "../docs",
    },
  },
}

路径支持三种写法:

  • 相对路径:相对于配置文件所在位置,比如 ../docs
  • 绝对路径:比如 /home/user/docs
  • Home 目录相对路径:比如 ~/docs

如果只是简单引用,可以用字符串简写:

jsonc
{
  "references": {
    "docs": "../docs",
  },
}

引用 Git 仓库

repository 字段指定 Git 仓库。OpenCode 会把仓库克隆到本地缓存,然后像本地目录一样使用:

jsonc
{
  "references": {
    "effect": {
      "repository": "Effect-TS/effect",
      "branch": "main",
    },
  },
}

repository 字段很灵活,支持:

  • Git URL:https://github.com/user/repo.git
  • host/path 格式:github.com:user/repo
  • GitHub 简写:user/repo

branch 是可选的,不填就用仓库默认分支。

同样,简单场景可以简写:

jsonc
{
  "references": {
    "effect": "Effect-TS/effect",
  },
}

有一点要注意:Git 仓库是异步刷新的,新加的仓库可能需要等一会儿才能用。

高级玩法

给引用加说明

你可以给每个引用加个 description,告诉 AI 助手什么时候该用这个引用:

jsonc
{
  "references": {
    "design-system": {
      "path": "../design-system",
      "description": "Use when implementing UI components or design tokens",
    },
  },
}

加了描述的引用会进入 AI 助手的上下文,它能根据你的问题自动判断要不要参考这些资料。没加描述的引用也能用,只是 AI 不会主动推荐。

描述写得简短具体就行,尤其是有多个相似引用时,能区分开就好。

从自动补全中隐藏

有些内部实现细节,你可能不想在自动补全列表里看到,但又想让 AI 能访问。这时候加个 hidden: true

jsonc
{
  "references": {
    "internal": {
      "path": "../internal",
      "description": "Use for internal implementation details",
      "hidden": true,
    },
  },
}

hidden 只影响 TUI 的自动补全列表,AI 助手照样能看到这个引用。

在 TUI 里怎么用

配置好之后,在 OpenCode 的终端界面里,输入 @ 就能看到所有引用的自动补全:

  • @docs — 引用 docs 目录的根路径
  • @docs/ — 搜索 docs 目录下的文件

比如你想让 AI 对比某个实现,可以说:

Compare this implementation with @sdk/src/client.ts

即使你不手动 @,AI 助手也能自动访问那些有描述的引用。它会根据上下文判断是否需要查看这些资料。

权限机制

引用目录会自动通过 OpenCode 的外部目录权限边界,但不会获得额外权限。比如一个没有编辑权限的 agent,不会因为你把某个目录设为引用就突然能编辑那里的文件了。

配置字段速查

字段 本地目录 Git 仓库 说明
path 本地目录路径
repository Git URL 或 GitHub 简写
branch 可选,指定分支或 ref
description 说明何时使用该引用
hidden 从自动补全中隐藏

最后提醒一下:引用的别名不能包含 /、空白字符、反引号或逗号,起名字的时候注意避开就好。

感谢阅读,如果这篇文章对你有帮助,欢迎继续浏览同栏目内容。

返回 AI使用笔记