卷土重来g 2026-03-19 22:27 采纳率: 0%
浏览 8

想做 VSCode 里的 AI 编码哨兵,怎么稳定拿到 Copilot Chat 的每轮对话?

大家好呀~最近在折腾一个小工具,想请教下社区里的朋友们!
我想做的是个 VS Code 里的copilot “哨兵模式”:用户可以先定好项目约束,比如 “别碰数据库”“别改 backend”“别重命名某些函数”,也能从历史对话或者 Markdown 里自动提取硬约束、软约束。然后在 AI 编程的时候,系统会持续收着 AI 的回复,每攒够 10 轮 assistant 输出,就自动检查一次:用之前的 stable state / 约束看看最近 10 轮有没有 drift,同时也从这 10 轮里提一提候选约束。要是发现 AI 违反了已有约束(比如开始改数据库、碰 protected files),就弹个 warning 提醒用户。
现在卡壳的地方是:试了一圈发现,VS Code 扩展 API 好像没直接开放 “读取另一个扩展聊天内容” 的能力,Copilot Chat 也看起来没有能让第三方扩展稳定读会话的标准接口,所以很难做到 “无感自动抓 Copilot 每一轮问答”。
想问问大家几个问题:
现在 VS Code 生态里,有没有更正规的方式能拿到 AI chat 的 turn ?
有没有朋友做过类似的 “Copilot / AI chat observer /guard/monitor”?
如果实在拿不到 Copilot 会话流,大家觉得更现实的路线是啥?是做 document/selection adapter、自己搞个 chat participant,还是干脆让用户显式导入会话?
要是做 “每 10 轮自动检查” 这种策略,大家会建议在 extension 侧做 turn buffer,还是在本地 proxy/backend 侧做 session buffer ?

目前AI给我的建议是:1. Continue:开源的 AI 编码助手,它有完整的对话监听、约束注入机制
2. Windsurf:基于 VS Code 的 AI 编辑器,它的会话保存格式非常规范,可以参考
3. GitHub Copilot Chat Extension:虽然不开源,但可以通过调试看它的会话存储位置
我现在不想做黑盒劫持,也不想搞太 hack 的方案,主要想找个尽量稳、能长期维护的接入方式。如果有朋友做过类似方向,或者知道 VS Code/Copilot 这块有没有我没发现的 API、扩展点、替代方案,麻烦拍醒我!

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-03-19 22:28
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你好!你的想法非常有创意,尤其是在 AI 编码辅助工具日益普及的今天,对 AI 生成内容进行约束检查和行为监控是非常有价值的方向。你提到的核心问题是:如何稳定地获取 GitHub Copilot Chat 的每轮对话内容,这是实现“哨兵模式”的关键前提。

    下面我将从几个方面详细分析,并给出可行的解决方案、技术路径建议以及代码参考(如果有的话)。


    一、当前 VS Code 生态中是否支持监听 Copilot Chat 的对话?

    1. 现状总结

    • VS Code 官方 API 没有直接提供访问 Copilot Chat 对话内容的能力
    • GitHub Copilot 是由 Microsoft 提供的 AI 编码助手,其扩展本身是闭源的,不对外暴露聊天会话数据。
    • 一些开发者尝试通过调试方式逆向工程获取会话数据,但这属于“黑盒”操作,不稳定且可能违反使用条款。

    二、有没有更正规的方式能拿到 AI chat 的 turn?

    2. 可行的替代方案

    | 方案 | 说明 | 优缺点 | |------|------|--------| | 1. 使用开源 AI 编码助手(如 Codex, Ollama, OpenAI) | 如果你愿意用其他 AI 引擎,可以自己控制对话流。 | ✅ 可控性强,但需自行部署模型 | | 2. 使用 Windsurf 或类似工具 | WindSurf 是一个基于 VS Code 的 AI 编辑器,会保存完整的会话历史。 | ✅ 会话格式规范,可作为参考 | | 3. 与 Copilot 建立自定义通信接口 | 例如通过本地代理或 Webhook 来捕获请求和响应。 | ❌ 需要破解协议,风险高 | | 4. 用户手动导入会话 | 允许用户通过 Markdown 或 JSON 文件上传会话记录。 | ✅ 稳定可靠,但需要用户配合 |


    三、有没有人做过类似的 “Copilot / AI chat observer/guard/monitor”?

    3. 社区实践与参考案例

    目前没有公开的、成熟的 Copilot 监控工具,但有一些相关项目或思路可以借鉴:

    • GitHub Copilot Chat Extension(非开源):可以通过调试查看其会话存储位置(如 ~/.vscode-insiders~/.config/Code - OSS)。
    • Open Source AI Assistant Projects:如 CodexOSS Copilot 等,它们提供了完整的对话监听机制。
    • VS Code 扩展开发社区:一些开发者尝试通过 Hook 或注入方式获取 AI 输出,但这些方法不稳定,不推荐用于生产环境。

    四、如果实在拿不到 Copilot 会话流,现实路线是什么?

    4. 推荐的现实路线

    ✅ 推荐路线一:使用开源 AI 编码助手 + 自己控制对话流

    • 优点:完全可控,适合做约束检查、会话缓存、日志记录等。
    • 步骤
      1. 选择一个开源 AI 编码助手(如 Ollama、Codex)。
      2. 在 VS Code 中创建一个扩展,封装该 AI 的 API 调用。
      3. 实现对话缓存机制(每 10 轮自动检查)。
      4. 加入约束系统,自动检测 AI 是否违反规则。

    ✅ 推荐路线二:用户显式导入会话

    • 优点:无需侵入 Copilot,兼容性好,易于维护。
    • 步骤
      1. 提供一个界面让用户导入 Copilot 的会话记录(Markdown、JSON 等格式)。
      2. 在扩展中解析并缓存这些对话。
      3. 实现每 10 轮检查机制。

    ❌ 不推荐路线:黑盒劫持或逆向工程

    • 原因:容易被 Copilot 的安全机制封禁,长期不可靠,且可能违反服务条款。

    五、关于 “每 10 轮自动检查” 的策略

    5. 建议在哪个侧做 session buffer?

    | 位置 | 说明 | 推荐程度 | |------|------|----------| | Extension 侧(前端) | 可以实时监听 AI 输出,但受限于 VS Code 的 API。 | ⚠️ 有一定限制,需依赖事件触发 | | Local Proxy / Backend 侧 | 更灵活,可以完全控制会话流,适合长期维护。 | ✅ 强烈推荐 |

    建议:如果你希望长期稳定运行,建议采用 本地 Proxy 或 Backend 侧 来做 session buffer,这样你可以完全掌控会话流、约束检查逻辑和日志记录。


    六、代码示例(基于开源 AI)

    假设你使用的是 Ollama 的 API(开源 AI),以下是一个简单的会话缓冲和约束检查的伪代码示例:

    # 会话缓冲器(模拟)
    class SessionBuffer:
        def __init__(self):
            self.buffer = []
    
        def add_turn(self, user_input, ai_response):
            self.buffer.append({
                "user": user_input,
                "ai": ai_response
            })
            if len(self.buffer) >= 10:
                self.check_constraints()
                self.buffer = []  # 清空缓冲
    
        def check_constraints(self):
            # 这里加入你的约束检查逻辑
            for turn in self.buffer:
                if "database" in turn["ai"]:
                    print("⚠️ Warning: AI is modifying the database!")
                if "protected_file" in turn["ai"]:
                    print("⚠️ Warning: AI is touching protected files!")
    
    # 示例调用
    buffer = SessionBuffer()
    buffer.add_turn("Write a function to query the database", "def query_database(): ...")
    buffer.add_turn("Update the database with new data", "def update_database(): ...")
    

    七、总结与建议

    重点总结

    • 当前 VS Code 生态中无法直接获取 Copilot 的对话流,建议采用开源 AI 编码助手用户手动导入会话
    • 推荐路线:使用开源 AI + 自定义扩展 + 后端 session buffer。
    • 约束检查策略:每 10 轮自动检查,建议在后端实现。
    • 避免黑盒劫持,确保长期可维护性和合规性。

    如果你愿意进一步探讨具体的技术实现细节,比如如何构建 AI 交互逻辑、如何设计约束系统,或者如何与 VS Code 扩展 API 集成,我可以继续为你提供更详细的指导。欢迎随时交流!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月19日