
1. 为什么 Copilot Chat 聊得越多日报越难写如果你每天在 VS Code 里用 GitHub Copilot Chat 干活大概率经历过这个场景上午和它讨论了一版缓存方案中午让它帮忙改了个并发 Bug下午又拉着它对比了两种数据库索引设计。等到下班前打开日报系统脑子里只剩一句「今天写了点代码」。问题不在于你记性差而在于 Copilot Chat 的对话是会话级的——关掉窗口、切换工作区、重启 VS Code上下文就散了。它不会主动帮你把「今天和 AI 讨论过什么」沉淀成可追溯的记录。而日报、周报、述职、代码评审、项目交接恰恰都需要这些细节。LLS OAI 的项目级会话记录模式就是冲着这个痛点来的。它是一款 VS Code 扩展让 GitHub Copilot Chat 能够接入任意 OpenAI 兼容或 Anthropic 兼容的 API 提供方同时把每一次对话自动落盘到项目目录下的.LLSOAI/文件夹按日期归档。需要写日志时把当天的会话记录丢回给 AI让它生成结构化的「已完成 / 进行中 / 明日计划」一键复制粘贴即可。这篇文章面向三类人每天要交日报的开发者、需要做项目交接的团队、以及想把 AI 对话变成可检索知识库的工程师。下面我会给出settings.json与config.toml的可复制配置骨架、通过 TaoToken 统一 Key 接入的完整步骤以及生成日志后的验证动作。全程可跟做不需要你懂扩展源码。2. 前置准备TaoToken 统一 Key 与 API 通道LLS OAI 本身不绑定某一家模型厂商它需要一个 OpenAI 兼容或 Anthropic 兼容的 API 端点。这里用 TaoToken 作为统一通道好处是一个 Key 就能覆盖多家模型省去在多个平台之间来回切换、分别管理额度的麻烦。先拿到访问凭证。打开控制台页面https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite登录后在 API Keys 页面创建一个新 Key复制保存。这个 Key 就是后面配置里要填的apiKey。创建入口https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewriteAPI 的基础地址是https://taotoken.net/api注意这个地址后面不加任何查询参数。它兼容 OpenAI 的/v1/chat/completions路径也兼容 Anthropic 的/v1/messages路径具体用哪个取决于你在 LLS OAI 里选的提供方类型。如果你打算长期用 Copilot Chat 做编码和 Agent 任务可以顺手看一下 Coding Plan它更适合高频调用场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite接入文档在这里遇到路径或参数疑问可以对照https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意API Key 属于敏感凭证不要写进会提交到 Git 的配置文件里。下面我会把 Key 放在 VS Code 的用户级 settings 或环境变量中项目内的.LLSOAI/只存会话记录不存 Key。3. 可复制配置settings.json 与 config.toml 骨架LLS OAI 的配置分两层VS Code 侧的settings.json负责扩展行为是否自动保存、保存路径、提供方列表项目侧的config.toml负责项目级会话记录的归档策略。两者配合才能实现「全局统一管理 项目独立追溯」。3.1 VS Code settings.json 配置骨架按CtrlShiftPmacOS 是CmdShiftP打开命令面板输入Preferences: Open User Settings (JSON)在打开的settings.json里加入下面这段。注意把apiKey换成你自己的{ llsOai.providers: [ { name: taotoken, type: openai, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, models: [ gpt-4o, claude-3-5-sonnet, deepseek-chat ], defaultModel: gpt-4o } ], llsOai.chatHistory.autoSave: true, llsOai.chatHistory.globalPath: ~/.LLSOAI/, llsOai.chatHistory.projectAutoSave: true, llsOai.chatHistory.projectPath: .LLSOAI/, llsOai.chatHistory.archiveByDate: true, llsOai.chatHistory.compressThreshold: 20 }几个关键字段说明一下。type填openai表示走 OpenAI 兼容协议如果你要用 Anthropic 原生协议就改成anthropic此时baseUrl仍然是https://taotoken.net/api。compressThreshold是会话轮数阈值超过 20 轮会把历史归档成带时间戳的文件避免单个 JSON 无限膨胀。3.2 项目级 config.toml 配置骨架在项目根目录新建.LLSOAI/config.toml内容如下[project] name my-service record_mode project archive_by_date true date_format %Y-%m-%d [storage] root .LLSOAI session_file chat_{sessionId}.json archive_file chat-session-{timestamp}.json [log] auto_generate true template daily sections [已完成, 进行中, 明日计划] language zh-CN [privacy] upload_to_cloud false mask_secrets truerecord_mode project是核心开关它让会话记录落在项目目录而不是全局目录。mask_secrets true会在落盘前对疑似密钥、Token 的字符串做脱敏避免你把带凭证的对话原样存进仓库。sections定义了生成日志时的段落结构你可以按公司日报模板改成「今日产出 / 风险 / 需协调」。3.3 双写模式怎么选全局路径~/.LLSOAI/适合跨项目检索比如你想找「上个月在哪个项目里讨论过限流算法」。项目路径.LLSOAI/适合随代码一起交接新人 clone 下来就能看到历史技术决策。我的建议是两个都开全局做索引项目做归档。提示如果项目要提交到公开仓库记得把.LLSOAI/加进.gitignore或者只保留脱敏后的日志文件。会话原文可能包含内部接口名、表结构等敏感信息。4. 验证请求从对话落盘到一键生成日志配置写完不代表生效得跑一遍完整链路。下面按「产生对话 → 确认落盘 → 生成日志 → 验证结果」四步走。4.1 确认扩展已加载提供方打开命令面板执行LLS OAI: Manage Providers。正常情况下你应该能在列表里看到名为taotoken的提供方展开后能看到gpt-4o、claude-3-5-sonnet等模型。如果列表为空说明settings.json的 JSON 格式有问题VS Code 会在对应行标红检查一下是不是多了逗号或少了引号。4.2 发起一次真实对话并检查落盘在 Copilot Chat 里随便问一个技术问题比如「帮我写一个带过期时间的本地缓存工具类」。等它回复完打开项目根目录应该能看到.LLSOAI/ └── 2025-01-15/ └── chat_a1b2c3d4.json用编辑器打开这个 JSON里面应该包含你刚才的提问和模型回复字段大致是role、content、timestamp。如果目录没出现先确认当前 VS Code 打开的是项目根目录不是单个文件再检查projectAutoSave是否为true。4.3 一键生成工作日志新建一个 Copilot Chat 窗口把当天的会话 JSON 文件拖进去然后发送这段提示词请分析这些会话记录生成今天的工作日志。 格式要求 【已完成】列出今天实际完成的技术工作包含具体方案、对比过程和量化结果 【进行中】列出尚未收尾的任务和当前卡点 【明日计划】列出下一步要推进的事项 语言简洁专业不要空话。模型会读取 JSON 里的对话内容提取出你讨论过的方案、改过的代码、排查过的问题按段落输出。实测下来只要当天的对话足够具体生成的日志会带上「对比了 Redis 和 Memcached最终选 Redis接口响应从 320ms 降到 185ms」这种有数据支撑的句子比手写回忆准确得多。4.4 验证生成结果是否可用生成后别急着复制先做三个检查。第一看「已完成」里有没有把「只是讨论过、并没落地」的事项写成已完成有的话手动挪到「进行中」。第二看有没有把密钥、内网地址带出来虽然mask_secrets会处理大部分但模型复述时仍可能还原需要人工扫一眼。第三看量化数据是否和实际一致AI 有时会把「预计降低 40%」写成「降低了 40%」这种措辞差异在汇报里很致命。确认无误后复制粘贴到飞书文档、企业微信或公司日报系统即可。整个流程从打开会话记录到拿到可粘贴文本熟练后不超过两分钟。5. 本篇常见错排查配置和验证过程中下面几个问题出现频率最高我按现象、原因、解法列出来。现象一Copilot Chat 里选不到 taotoken 的模型。多半是baseUrl写成了https://taotoken.net/api/v1。正确写法是https://taotoken.net/api扩展会自动拼接/v1/chat/completions。多写一层/v1会导致 404。现象二对话正常但.LLSOAI/目录不生成。检查两点一是 VS Code 是否以「打开文件夹」方式加载项目单文件打开时没有项目根目录概念二是projectPath是否被写成了绝对路径建议保持相对路径.LLSOAI/。现象三生成的日志全是空话。这通常是因为当天的对话太零碎比如只问了「这个报错什么意思」而没有展开讨论。会话记录的信息密度决定了日志质量。建议在关键决策时多和 Copilot 来回几轮把方案对比、取舍理由说清楚落盘的内容才有价值。现象四JSON 文件越来越大打开卡顿。调小compressThreshold比如改成 10让归档更频繁。归档后的文件带时间戳检索时按日期定位即可。现象五报 401 或 403。大概率是 Key 失效或额度用尽。到控制台重新生成一个 Key替换settings.json里的apiKey字段保存后重启 VS Code 窗口。现象六日志里出现乱码或中文段落断裂。检查config.toml里的language是否为zh-CN同时确认文件保存编码是 UTF-8。部分 Windows 环境默认 GBK会导致中文写入异常。6. 把 AI 对话变成可追溯的工程资产配好这套东西之后最大的变化不是日报写得快了而是你和 Copilot 的每一次技术讨论都变成了可检索的资产。三个月后有人问「当初为什么没用消息队列而用了定时任务」你不需要回忆直接翻.LLSOAI/对应日期的会话记录当时的对比过程和结论都在里面。如果你还没配好 API 通道先去把 Key 建出来https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接入细节对照文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite想先在网页里验证模型通不通用模型对话页面发一条测试消息即可https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite长期用 Copilot Chat 做编码和 Agent 任务的话Coding Plan 的额度模型更适合高频场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite最后给一个我踩过的坑别等到下班前才想起来生成日志。会话记录虽然会自动落盘但如果你中途切换过工作区、或者当天开了多个 VS Code 窗口记录会分散在不同项目的.LLSOAI/里。养成习惯每天收尾前花一分钟确认当天目录下有文件再让 AI 生成比事后翻遍所有项目高效得多。