AI芯片说
会话
通过/session 实现查找上下文对话的功能
每个会话有独立的空间
通过该命令可以查看会话列表
数据存在~/.local/share/opencode/
这个目录下有几个重要的子目录和文件:
auth.json:API Key等认证信息log/:运行日志(出问题的时候看这里)project/:项目级别的数据opencode.db:核心数据库文件,所有会话、消息都存在这里
penCode使用SQLite数据库来存储会话数据。这意味着什么?意味着你的会话数据是结构化的,不是一堆乱七八糟的日志文件。每个会话、每条消息、每个工具调用都有对应的数据表:
SessionTable:会话基本信息
MessageTable:消息记录
PartTable:消息的组成部分(文本、文件、工具调用等)
TodoTable:任务跟踪
这种设计的好处是:你可以查询、筛选、甚至手动修复会话数据。
/new /clear 开始一个新会话(清空当前对话)
/sessions /resume, /continue 列出并切换会话
/compact /summarize 压缩当前会话的上下文
/export — 把对话导出为Markdown
/share — 生成会话的分享链接
/undo — 撤销上一条消息及文件改动
@
通过@符号精准控制上下文
用/compact管理上下文窗口
目标:学会在对话太长时压缩上下文,避免超出模型限制。
每个AI模型都有上下文窗口限制(比如128K tokens)。当你的对话越来越长,上下文迟早会塞满。
OpenCode提供了/compact命令来解决这个问题:
- 把对话历史中不那么重要的部分压缩成摘要
- 释放上下文窗口空间,让对话可以继续
压缩的原理是:把已经完成的任务、已经解决的讨论替换成一段简短的总结,而不是逐字保留所有细节。
注意了:
/compact是不可逆的。压缩之后,被压缩掉的那些详细对话就无法恢复了。所以在执行/compact之前,先用/export把对话导出备份是个好习惯。
会话分叉——基于已有会话创建新分支
目标:学会从现有会话“分叉”出一个新会话,保留上下文但不互相干扰。
这是OpenCode一个很酷但很多人不知道的功能。
你可以在TUI中通过CLI 命令创建会话分叉:
什么时候用这个功能?
- 你有一个很长的会话,想尝试不同的解决方案,但不想丢失原来的对话
- 你想基于之前的分析结果,开启一个全新的任务
- 团队协作时,你想基于某个会话的上下文继续工作,但不影响原会话
配置优先级
![[ce7f6c89bc3a4449ba5433c3c66878cb.jpeg]]
{
"$schema": "https://opencode.ai/config.json",
"provider": {
// 在这里定义你的模型提供商
},
"model": {
// 在这里设置默认模型
},
"small_model": {
// 在这里设置轻量模型(用于快速任务)
}
}
三个核心字段各司其职:
$schema :指向JSON Schema定义地址。加上这行之后,你在编辑器里编辑配置文件时会有自动补全和语法校验,能帮你省掉80%的配置排错时间。
provider :定义模型提供商。每个provider就是一个“模型来源”——可以是OpenAI、Anthropic、Ollama、vLLM,或者任何兼容OpenAI API的服务。
model :设置默认使用的模型。格式是provider_id/model_id。
small_model :设置轻量模型。OpenCode在一些简单任务(比如代码补全、快速问答)中会优先用这个模型,省Token也省时间。
运行验证:这一步不需要跑代码。你只需要在编辑器中打开配置文件,看看$schema那行有没有触发自动补全——如果编辑器提示了字段信息,说明Schema生效了。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-4b": {
"name": "qwen3:4b"
}
}
}
},
"model": "ollama/qwen3-4b"
}
逐行解释一下:
"ollama":这是provider的ID,你可以随便起名,但要保证唯一
"npm": "@ai-sdk/openai-compatible":指定用哪个SDK适配器。Ollama兼容OpenAI API,所以用这个
"options.baseURL": "http://localhost:11434/v1":Ollama默认的服务地址
"models":定义这个provider下有哪些模型可用
"model":设置默认模型,格式是provider_id/model_id
多module
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "本地Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-4b": { "name": "qwen3:4b" },
"deepseek-coder": { "name": "deepseek-coder:6.7b" }
}
},
"openai": {
"npm": "@ai-sdk/openai",
"name": "OpenAI",
"options": {
"baseURL": "https://api.openai.com/v1"
},
"models": {
"gpt-4o": { "name": "gpt-4o" },
"gpt-4-turbo": { "name": "gpt-4-turbo" }
}
}
},
"model": "ollama/qwen3-4b"
}
配置完之后,你可以在TUI中随时切换模型:
- 输入
/models查看所有可用模型 - 用方向键选择,按回车切换
- 或者在CLI中指定:
opencode run --model openai/gpt-4o -p "你的请求"
第五步:定制模型推理参数(Temperature、Max Tokens等)
目标:为不同模型设置不同的推理参数,控制生成行为的“性格”。
不同任务需要不同的参数设置:
代码补全、bug修复:需要确定性强的输出 → 低Temperature(0.1-0.3)
代码重构、架构设计:需要一定的灵活性 → 中等Temperature(0.5-0.7)
创意生成、 brainstorming:需要多样性 → 高Temperature(0.8-1.0)
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "本地Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-4b": {
"name": "qwen3:4b",
"parameters": {
"temperature": 0.3,
"maxTokens": 4096,
"topP": 0.9
}
},
"deepseek-coder": {
"name": "deepseek-coder:6.7b",
"parameters": {
"temperature": 0.1,
"maxTokens": 8192
}
}
}
}
},
"model": "ollama/qwen3-4b"
}
temperature |
控制随机性。越低越确定,越高越创意 | 代码任务0.1-0.3,创意任务0.7-1.0 |
maxTokens |
最大生成长度 | 根据模型上下文窗口设定 |
topP |
累积概率采样阈值 | 0.8-0.95 |
保存配置后,用opencode run发送一个请求,观察生成的代码风格是否符合你的预期——temperature越低,输出越保守、越可预测。
设置轻量模型(Small Model)
置一个轻量模型用于快速任务,节省时间和Token。
OpenCode在执行一些简单任务时(比如格式化代码、简单问答、文件重命名),不需要动用大模型。这时候配置一个small_model就能显著提升响应速度。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "本地Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-4b": { "name": "qwen3:4b" },
"tinyllama": { "name": "tinyllama:1.1b" }
}
}
},
"model": "ollama/qwen3-4b",
"small_model": "ollama/tinyllama"
}
配置了small_model之后,OpenCode会自动判断任务复杂度——简单任务走小模型,复杂任务走主模型。你不需要手动切换,它自己会决定。
运行验证:在TUI中执行一个简单任务(比如“帮我格式化这段JSON”),观察响应速度——如果使用了小模型,响应应该明显更快。

浙公网安备 33010602011771号