Title

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命令来解决这个问题:

  1. 把对话历史中不那么重要的部分压缩成摘要
  2. 释放上下文窗口空间,让对话可以继续

压缩的原理是:把已经完成的任务、已经解决的讨论替换成一段简短的总结,而不是逐字保留所有细节。

注意了:/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”),观察响应速度——如果使用了小模型,响应应该明显更快。

posted @ 2026-09-08 17:22  仓小小鼠  阅读(2)  评论(0)    收藏  举报