1. 为什么要在 VS Code 里把 Copilot 和 DolphinDB Skill 接起来
如果你平时用量化脚本、时序数据处理,大概率会遇到这种场景:脑子里想的是「建一张 VALUE+HASH 组合分区的 TSDB 表,再灌 20 条模拟行情」,手上却要翻文档确认createPartitionedTable的参数顺序、database函数的引擎写法。写一段几十行的 DolphinDB 脚本,查文档的时间比敲代码还长。
GitHub Copilot 本身能补全通用代码,但它对 DolphinDB 这种相对垂直的时序数据库语法并不熟,经常给你生成「看起来像 SQL 但跑不通」的东西。DolphinDB Skill 就是来解决这个问题的——它把 DolphinDB 的官方文档、最佳实践、脚本范式打包成一个 Agent Skill,让 Copilot 在聊天和补全时能调用这套知识。再配合 TaoToken 的统一 Key 通道,你就不用在不同 AI 服务之间来回切账号、换配置,一个 Key 走通模型调用。
这篇面向量化/数据分析开发者,给出settings.json与config.toml骨架、TaoToken 统一 Key 接入步骤,以及一次补全触发和 Skill 调用的验证动作。目标很直接:减少环境切换,把脚本编写效率提上来。
适合谁看:已经装了 VS Code、用过 Copilot、手上有 DolphinDB 环境(本地或测试集群都行)的人。如果你还没装 DolphinDB 扩展,后面会顺带说一句,但重点在 Skill 配置和 Key 接入。
2. 前置准备:DolphinDB Skill 与 TaoToken 通道
先把两件事分清楚。DolphinDB Skill 是「知识包」,负责让 AI 懂 DolphinDB;TaoToken 是「通道」,负责让你的 AI 请求走统一入口。两者不冲突,可以叠加。
2.1 装好三样东西
第一,VS Code 客户端,这个不用多说。第二,GitHub Copilot 扩展和 DolphinDB 扩展,都在扩展市场搜名字装即可。第三,DolphinDB Skill 本体,下载后解压到指定目录。
Skill 的目录层级必须严格,否则 Copilot 找不到。正确结构是这样:
skills/ └── dolphindb_skill/ ├── assets/ ├── ... └── SKILL.md注意SKILL.md必须在dolphindb_skill/这一层,不能多套一层文件夹。
2.2 项目级还是个人级
| 类型 | 推荐路径 | 兼容路径 | 生效范围 |
|---|---|---|---|
| 项目 Skill | .github/skills/ | .claude/skills/ | 仅当前项目,适合团队共享 |
| 个人 Skill | ~/.copilot/skills/ | ~/.claude/skills/ | 全局生效,所有项目可用 |
团队协作、要统一 Skill 版本,就放项目根目录的.github/skills/。个人日常开发、不想每个项目重复配,就放~/.copilot/skills/。我一般个人机用后者,团队仓库用前者。
2.3 TaoToken 统一 Key 的位置
TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。你需要先去控制台拿一个 Key,后面在config.toml里填。拿 Key 的入口在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。
注意:TaoToken 是统一模型调用通道,不是让你绕过任何本地环境。DolphinDB 本身还是跑在你自己的机器或集群上。
3. 可复制配置:settings.json 与 config.toml 骨架
这一节是全文最该照着抄的部分。分两块:VS Code 侧的settings.json,以及 TaoToken 通道侧的config.toml。
3.1 VS Code settings.json 骨架
打开命令面板(Ctrl+Shift+P),输入Preferences: Open User Settings (JSON),在打开的settings.json里加上 Copilot 相关配置。核心是启用 Agent Skills:
{ "github.copilot.chat.agentSkills.enabled": true, "github.copilot.chat.useAgentSkills": true, "github.copilot.enable": { "*": true, "dolphindb": true }, "files.associations": { "*.dos": "dolphindb" } }github.copilot.chat.agentSkills.enabled是总开关,useAgentSkills让聊天视图能识别/指令。files.associations把.dos脚本关联到 DolphinDB 语言模式,补全上下文更准。
如果你把 Skill 放在项目里,还可以加一条工作区级别的设置,指向项目 Skill 目录:
{ "github.copilot.chat.agentSkills.paths": [ "${workspaceFolder}/.github/skills" ] }3.2 TaoToken config.toml 骨架
TaoToken 通道用config.toml管理模型接入。放在你的配置目录下(比如~/.taotoken/config.toml),骨架如下:
[provider] name = "taotoken" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" [model] default = "claude-sonnet" fallback = "glm-4.7" timeout_seconds = 60 [chat] stream = true max_tokens = 4096 temperature = 0.2几个参数说明:base_url固定填https://taotoken.net/api,不要带 UTM 后缀;api_key从控制台复制;temperature写脚本建议压到 0.2 左右,减少胡编语法;fallback是主模型不可用时的兜底。
提示:
config.toml里的 Key 不要提交到 Git。项目里用.gitignore排除,或者用环境变量TAOTOKEN_API_KEY覆盖。
3.3 让 Copilot 走 TaoToken 通道
Copilot 默认走自己的服务,但你可以通过 VS Code 的模型配置把自定义 provider 接进来。在settings.json里补一段:
{ "github.copilot.chat.customProviders": [ { "name": "taotoken", "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "TAOTOKEN_API_KEY", "models": ["claude-sonnet", "glm-4.7"] } ] }然后在终端里导出环境变量:
export TAOTOKEN_API_KEY="sk-你的TaoTokenKey"Windows PowerShell 用:
$env:TAOTOKEN_API_KEY="sk-你的TaoTokenKey"这样 Copilot 聊天时就能选到 TaoToken 提供的模型,Skill 调用和模型请求走同一条通道,不用来回切账号。
4. 验证请求:补全触发与 Skill 调用
配置写完不算完,得验证两件事:补全能不能触发,Skill 能不能被/dolphindb调起来。
4.1 验证 Skill 是否加载
重启 VS Code,打开 Copilot 聊天视图,输入/,看下拉列表里有没有dolphindb。如果能看到/dolphindb指令,说明 Skill 目录层级和SKILL.md都没问题。
如果没出现,先检查目录:~/.copilot/skills/dolphindb_skill/SKILL.md是否存在。再检查settings.json里agentSkills.enabled是否为true。两个都对还不行,就重启一次窗口(Developer: Reload Window)。
4.2 验证补全触发
新建一个test.dos文件,输入下面这行,看 Copilot 是否给出补全建议:
login("admin", "123456")正常情况它会提示login的参数和用法。如果没反应,检查files.associations是否把.dos关联到了dolphindb,以及 Copilot 状态栏图标是不是正常(没有报错叹号)。
4.3 验证 Skill 调用:自然语言转脚本
在聊天视图输入:
/dolphindb 帮我写一个创建 TSDB 存储引擎分区表的脚本,采用 VALUE+HASH 组合分区,字段有 time, symbol, price,生成 20 条模拟数据,用标准 SQL 实现预期返回一段完整脚本,类似:
db = database("dfs://tsdb_demo", VALUE, 2024.01.01..2024.12.31, engine="TSDB") pt = db.createPartitionedTable( table(20:0, `time`symbol`price, [TIMESTAMP, SYMBOL, DOUBLE]), `tick, `time`symbol, partitionType=HASH, partitionScheme=[SYMBOL, 10] )拿到脚本后,直接在 DolphinDB 会话里跑一遍,确认能建表、能插入。这一步跑通,说明 Skill 的知识注入生效了。
4.4 验证概念讲解
再试一个纯知识类问题:
/dolphindb 解释一下 TSDB 和 OLAP 存储引擎的区别正常会返回一段带示例的对比说明。如果返回的是通用 SQL 解释、没提 DolphinDB 特性,说明 Skill 没被调用,回去查/dolphindb指令是否真的命中。
5. 本篇常见错排查
配置过程中最容易卡在几个点上,我按出现频率排一下。
5.1/dolphindb指令找不到
九成是目录层级错了。SKILL.md必须在dolphindb_skill/正下方,不能是dolphindb_skill/dolphindb_skill/SKILL.md。另外确认放的是~/.copilot/skills/而不是~/.copilot/skill/(少个 s)。
5.2 补全不触发
先看文件语言模式。右下角如果显示的是Plain Text,点一下改成DolphinDB。再确认github.copilot.enable里dolphindb是true。还有一种情况是网络请求超时,检查 TaoToken 的base_url有没有多写斜杠或 UTM 参数。
5.3 TaoToken 请求 401
api_key填错或过期。去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 重新生成一个,替换config.toml和环境变量。注意 Key 前后不要有空格。
5.4 模型返回乱码或截断
max_tokens太小。脚本类请求建议 4096 起步,复杂流计算脚本可以调到 8192。timeout_seconds也适当放宽到 90。
5.5 Skill 调用了但答案不对
可能是 Skill 版本旧了。DolphinDB 语法更新较快,去仓库拉最新版 Skill 覆盖。另外确认SKILL.md里的文档版本和你本地 DolphinDB 版本匹配。
6. 把通道和 Skill 用顺手的几个入口
配置跑通之后,日常用起来其实就三件事:拿 Key、调模型、写脚本。TaoToken 这边,模型对话入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,需要长期跑编码任务或 Agent 的可以看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。
如果你用的是 Claude Code 那套工作流,Anthropic 兼容入口在 https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claudecode-anthropic&utm_campaign=rewrite ,配置逻辑和本文的config.toml类似,把base_url指过去就行。
最后说个实际体会:Skill 配好之后,最省时间的不是让它从零写脚本,而是「改脚本」。你贴一段报错的 DolphinDB 代码,加/dolphindb问它哪里语法不对,它结合官方文档给的修正往往比通用模型准得多。这个用法建议你配完立刻试一次,比单纯生成新脚本更能感受到差别。