ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Graphify 配 Continue:用 Skill 与 SKILL.md 压缩 tokens 消耗的配置骨架

Graphify 配 Continue:用 Skill 与 SKILL.md 压缩 tokens 消耗的配置骨架 1. 长上下文代码问答为什么这么烧 tokens在 Continue 里问一个跨模块的代码问题比如「这个项目的鉴权链路是怎么走的」插件默认会把当前打开文件、最近编辑过的文件、检索到的片段一股脑塞进上下文。项目小的时候没感觉一旦仓库超过几万行单次请求的输入 tokens 很容易冲到几万甚至十几万。我试过在一个中型 Go 项目里问一句「订单状态机在哪些地方被改写」Continue 自动带上了十几个文件光输入就接近 8 万 tokens回答还没开始生成账单已经上去了。问题的根源不是模型不行而是 Continue 缺少「项目级结构感知」。它只能靠向量检索和文件相似度去猜哪些内容相关猜错的代价就是大量无关代码被塞进 prompt。Graphify 这类工具做的事情是把整个仓库预先解析成一张知识图谱函数、结构体、变量是节点调用、导入、继承是边。有了这张图AI 回答「谁调用了谁」「某个概念定义在哪」这类结构性问题时只需要读取图谱里的少量节点和边而不是把整个文件读进来。把 Graphify 和 Continue 结合核心不是让 Continue 去调用一个外部工具而是通过 Skill 机制把「先查图谱、再回答」这个工作流写进系统提示词。Continue 的 Skill 本质上是一份 SKILL.md放在.continue/skills/目录下插件启动时会把它注入到对话的系统上下文里。这样 AI 在收到结构性问题时会优先执行图谱查询命令拿到精简结果后再组织回答而不是盲目地把文件内容全量塞进上下文。适合谁看已经在用 Continue 做日常开发、仓库规模中等偏上、发现 tokens 消耗异常高的同学。如果你只是偶尔问几句语法问题这套配置的收益不明显但如果你每天要问十几个跨文件的结构性问题下面这套骨架能把单次请求的输入 tokens 压下来一大截。2. 前置准备TaoToken 与 Graphify 环境2.1 拿到可用的 API KeyContinue 需要一个模型后端来驱动对话和 Skill 执行。这里用 TaoToken 作为统一入口它兼容 Anthropic 和 OpenAI 两种协议Continue 里配置起来比较省事。先到控制台创建一把 API Key# 控制台地址创建 Key 用 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite创建完成后把 Key 复制出来后面写进 Continue 的 config 里。注意 Key 只显示一次丢了就重新建一把。2.2 安装 GraphifyGraphify 通过 pip 安装建议放在独立的虚拟环境里避免和项目依赖打架python -m venv ~/.graphify-env source ~/.graphify-env/bin/activate pip install graphifyy安装完成后验证一下命令是否可用graphify --version如果提示找不到命令说明虚拟环境的 bin 目录没进 PATH用绝对路径调用即可比如~/.graphify-env/bin/graphify。后面 SKILL.md 里我会用绝对路径避免 Continue 执行时找不到命令。2.3 确认 Continue 版本支持 SkillSkill 是 Continue 较新版本才有的能力。打开 VS Code在扩展面板里确认 Continue 已经更新到最新版。判断方法很简单在项目根目录下创建.continue/skills/文件夹重启窗口后如果 Continue 能识别到这个目录说明版本没问题。识别不了就升级插件。3. 可复制的配置骨架3.1 Continue 的 config 骨架Continue 的配置文件在~/.continue/config.jsonmacOS/Linux或%USERPROFILE%\.continue\config.jsonWindows。下面是一份精简骨架重点是 models 部分指向 TaoToken以及把 Skill 目录纳入上下文{ models: [ { title: TaoToken Claude, provider: anthropic, model: claude-sonnet-4-20250514, apiKey: 你的_TAOTOKEN_API_KEY, apiBase: https://taotoken.net/api } ], contextProviders: [ { name: code, params: {} }, { name: diff, params: {} } ], allowAnonymousTelemetry: false, experimental: { skills: true } }几个关键点说明一下。apiBase填https://taotoken.net/api不要带任何查询参数。experimental.skills打开后 Continue 才会去扫描.continue/skills/目录。contextProviders里保留code和diff就够了其他 provider 比如terminal、problems会额外增加上下文体积按需再加。3.2 SKILL.md 的目录结构Skill 的目录约定是固定的一个技能一个文件夹文件夹里放一份 SKILL.mdmkdir -p .continue/skills/graphify touch .continue/skills/graphify/SKILL.md目录名graphify就是技能名Continue 会用它来索引。SKILL.md 的头部需要一段 YAML front matter声明技能名称和描述描述写清楚「什么时候该用这个技能」AI 靠这段描述判断是否触发。3.3 SKILL.md 完整示例下面这份 SKILL.md 是压缩 tokens 的核心。它的设计思路是把「先查图谱、再回答」写成硬性工作流并且明确禁止 AI 在回答结构性问题时直接读取整个文件。--- name: graphify description: 项目知识图谱专家。当用户询问跨文件调用关系、模块依赖、函数定义位置、整体架构时优先使用本技能查询图谱避免全量读取源码文件。 --- # Graphify 知识图谱技能 ## 角色设定 你是一个精通 Graphify 的代码分析助手。你的目标不是教用户怎么用 Graphify 而是直接替用户执行图谱查询命令把结构化结果整理成自然语言回答。 当前工作目录就是用户的项目根目录。 ## 核心执行逻辑 收到用户问题后先判断问题类型 - 结构性问题谁调用了谁、某函数定义在哪、模块依赖关系、整体架构 → 执行图谱查询命令禁止直接读取源码文件。 - 业务逻辑问题某段代码为什么这么写、某个判断的业务含义 → 图谱查询定位到具体文件后只读取该文件的相关片段。 ## 可执行命令 ### 命令 A首次构建图谱 如果 graphify-out/graph.json 不存在先执行构建 bash ~/.graphify-env/bin/graphify . --budget 2000构建完成后提示用户查看graphify-out/GRAPH_REPORT.md。命令 B自然语言查询~/.graphify-env/bin/graphify query 用户原问题 --budget 2000--budget 2000限制返回的 token 预算这是压缩上下文的关键参数。 把命令输出整理成 Markdown 表格或列表回复用户不要直接贴原始日志。命令 C增量更新用户说「代码改了」或「更新图谱」时执行~/.graphify-env/bin/graphify . --update命令 D路径追踪~/.graphify-env/bin/graphify path 节点A 节点B用文字描述依赖路径每一步标注所在文件。重要约束禁止在回答中长篇解释 Graphify 原理除非用户主动问。禁止只告诉用户「请运行 xxx 命令」而不给出具体命令内容。必须把图谱输出的结构化数据转成自然语言和 Markdown 表格。回答结构性问题时禁止把整个源码文件读进上下文。这份 SKILL.md 里最值钱的是 --budget 2000 这个参数和「禁止全量读取源码」这条约束。前者从工具侧限制了返回体积后者从提示词侧堵住了 AI 偷懒的路径。 ## 4. 验证请求与 tokens 对比 ### 4.1 让 Skill 生效 创建完 SKILL.md 后重启 VS Code 窗口。然后在 Continue 的对话窗口里输入 text 请添加 skills .continue/skills/graphifyContinue 会扫描并加载这个技能。加载成功后你可以用下面的命令确认npx skills list --agent continue如果列表里出现了graphify说明技能已经挂载。有时候因为缓存原因没生效重启窗口再试一次即可。4.2 第一次构建图谱在项目根目录下直接在 Continue 对话里问一个结构性问题比如这个项目的整体架构是什么AI 应该会先执行图谱构建命令。构建过程视项目大小而定几万行的项目大概一到两分钟。构建完成后会在项目根目录生成graphify-out/文件夹里面有graph.json、graph.html和GRAPH_REPORT.md。4.3 tokens 用量对比验证压缩效果最直接的办法是看 Continue 对话窗口底部显示的 tokens 计数。做两组对照第一组关闭 Skill直接问「订单状态机在哪些地方被改写」。Continue 会走默认的向量检索把相关文件全量塞进上下文。记录输入 tokens。第二组启用 Skill问同样的问题。AI 会先执行graphify query拿到精简的节点和边列表再组织回答。记录输入 tokens。我在一个约 6 万行的 Go 项目里实测第一组输入 tokens 约 7.8 万第二组约 1.2 万降幅接近 85%。回答质量方面结构性问题调用链、依赖关系反而更准因为图谱的边是 AST 解析出来的比向量检索的相似度匹配可靠。业务逻辑问题两者差别不大但 tokens 消耗依然低很多。4.4 一个具体的查询示例假设你想知道AuthService和UserRepository之间的关系在 Continue 里输入AuthService 和 UserRepository 是怎么关联的Skill 触发后AI 执行~/.graphify-env/bin/graphify path AuthService UserRepository返回结果类似PATH FOUND (3 hops): AuthService --imports-- UserService --inherits-- BaseService --calls-- UserRepositoryAI 会把这条路径整理成文字并标注每个节点所在的文件。整个过程只消耗了图谱查询的少量 tokens没有读取任何源码文件。5. 本篇常见错排查5.1 Skill 不生效最常见的原因是 SKILL.md 的 front matter 格式不对。name和description必须用---包裹且description要写清楚触发场景。如果 description 写得太泛比如只写「代码分析」AI 可能不会主动触发。另外确认.continue/skills/目录在项目根目录下不是用户目录下。5.2 graphify 命令找不到Continue 执行 Skill 里的命令时用的是系统 PATH不会自动激活虚拟环境。所以 SKILL.md 里必须写绝对路径比如~/.graphify-env/bin/graphify。如果你把 Graphify 装在 conda 环境里路径类似/opt/anaconda3/envs/xxx/bin/graphify按实际路径改。5.3 图谱构建报错构建时如果提示缺少 API Key说明 Graphify 需要调用模型来做语义推理。在终端里设置环境变量export ANTHROPIC_API_KEY你的_TAOTOKEN_API_KEY export ANTHROPIC_BASE_URLhttps://taotoken.net/api然后重新执行构建命令。注意这两个变量要在执行 graphify 的同一个终端会话里设置。5.4 tokens 没降下来如果启用 Skill 后 tokens 依然很高检查两个地方。一是 SKILL.md 里的约束是否被 AI 遵守可以在对话里直接问「你刚才读取了哪些文件」如果 AI 说读了整个文件说明约束没生效把「禁止全量读取源码」这条写得更强硬一些。二是--budget参数是否生效默认值可能偏大手动改成 2000 或更低。5.5 图谱过期导致回答不准代码改动后图谱不会自动更新需要手动执行graphify . --update。如果发现 AI 回答的调用关系和实际代码对不上先更新图谱再问。可以在 SKILL.md 里加一条规则每次回答结构性问题前检查graph.json的修改时间如果超过一天就提示用户更新。6. 把 Skill 用顺手的几个建议Skill 这套机制的价值在于把重复的工作流固化下来。Graphify 只是其中一个例子同样的思路可以套到其他场景比如把项目的代码规范写成 Skill让 AI 每次生成代码前先读一遍或者把部署流程写成 Skill让 AI 按固定步骤执行。回到 tokens 压缩这件事核心逻辑是「让 AI 少读、精读」。图谱查询是少读--budget限制是精读。两者配合才能在不牺牲回答质量的前提下把开销压下来。如果你还在用默认配置硬扛长上下文不妨按上面的骨架搭一套跑一周看看账单变化。需要长期在编码场景里用这套配置的话可以了解一下 Coding Plan它针对高频编码请求做了额度优化https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite接入文档和 API Key 管理入口在这里https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite想先验证模型对话效果可以直接在网页端试https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite
返回列表