结对编程

wescode 的 AI 结对编程模式让你拥有一个随时在线的编程伙伴——理解项目上下文、提供实时建议、帮助理清思路。

功能概览

能力说明
实时协作在编码过程中即时获得建议和反馈
代码建议基于上下文的智能代码补全和重构建议
思路引导帮助分析问题、设计方案、理清实现思路
上下文保持跨文件、跨对话保持项目理解
效率技巧加速日常编码任务的实用技巧

实时协作

启动结对编程

在 Chat 面板中开始对话即进入结对编程模式。wescode 会自动感知:

协作模式

模式触发方式适用场景
对话式Chat 面板输入讨论设计、分析问题
行内命令Ctrl+K对选中代码执行操作
Ghost Write光标停留 >800ms自动补全代码
Selection Action选中文字对选中内容执行单步操作

实时对话示例

用户:我现在要实现一个限流中间件,你觉得用什么方案?

AI:根据你的项目结构(Gin + Redis),推荐以下方案:

  方案 A:令牌桶(Token Bucket)
  - 适合平滑限流,允许短时间突发
  - Redis 实现简单,分布式友好
  - 推荐场景:API 网关级限流

  方案 B:滑动窗口(Sliding Window)
  - 精确计数,无突发
  - 实现略复杂但更精确
  - 推荐场景:按用户/IP 精确计费

  考虑到你的项目使用了 Redis 且需要分布式部署,
  推荐方案 A(令牌桶)。要我开始实现吗?

用户:用方案 A,每个用户每分钟 100 次

AI:好的,我来实现。需要创建以下文件:
  1. internal/middleware/ratelimit.go — 限流中间件
  2. internal/ratelimit/token_bucket.go — 令牌桶实现
  3. internal/ratelimit/token_bucket_test.go — 测试
  开始编写...

代码建议

智能补全

wescode 的 Ghost Write 功能在你编码时提供上下文感知的补全:

重构建议

当 wescode 检测到可以改进的代码时,会主动提供建议:

AI 建议:检测到重复模式

  当前代码中 handler/user.go 和 handler/order.go
  有相似的错误处理逻辑(6 处)。

  建议提取为通用中间件:

  func ErrorHandler() gin.HandlerFunc {
      return func(c *gin.Context) {
          c.Next()
          if len(c.Errors) > 0 {
              err := c.Errors.Last()
              // 统一错误响应...
          }
      }
  }

  是否应用此重构?

代码审查

在你完成一段代码后,可以请求即时审查:

用户:帮我 review 刚写的代码

AI:代码审查结果:

  ✓ 逻辑正确
  ✓ 错误处理完整
  ⚠ 建议改进:
    1. 第 45 行:context.Background() 应该使用请求的 ctx
       → 使用 c.Request.Context() 确保可取消
    2. 第 62 行:Redis key 没有设置过期时间
       → 添加 TTL 防止数据累积
    3. 第 78 行:缺少并发安全考虑
       → Rate limiter 的 counter 操作应该是原子的

思路引导

问题分析

面对复杂问题时,AI 会引导你系统性地分析:

用户:用户反馈登录偶尔很慢,不知道从哪查起

AI:我来帮你系统分析:

  1. 先确认"慢"的定义
     → 正常响应时间是多少?慢的时候是多少?
     → 是所有用户都慢还是部分用户?

  2. 排查方向(从外到内)
     ① 网络层:DNS 解析、TLS 握手、网络延迟
     ② 应用层:handler 入口到 response 的耗时
     ③ 数据层:数据库查询、Redis 连接
     ④ 外部依赖:第三方认证服务、短信服务

  3. 快速定位
     → 看看有没有加请求耗时日志?
     → 如果没有,建议先加 middleware 记录每个请求的耗时

  先从哪个方向开始?

设计讨论

在开始实现新功能前,和 AI 讨论设计方案:

用户:我需要实现一个通知系统,支持邮件、短信和站内信

AI:好的,我们先理清几个关键设计决策:

  Q1: 通知是同步发送还是异步?
  → 推荐异步(消息队列),避免阻塞主流程

  Q2: 需要支持通知模板吗?
  → 建议支持,方便运营人员修改文案

  Q3: 用户能否配置通知偏好?
  → 建议支持,让用户选择接收渠道

  基于以上考虑,推荐架构:

  ┌─────────┐    ┌────────┐    ┌──────────┐
  │ 业务层   │ →  │ 消息队列 │ →  │ 通知 Worker│
  └─────────┘    └────────┘    └────┬─────┘
                                     │
                               ┌─────┼─────┐
                               ▼     ▼     ▼
                             邮件   短信   站内信

  需要细化哪部分?

代码走查

请 AI 解释复杂的代码逻辑:

用户:@internal/scheduler/cron.go 解释这个调度器的工作原理

AI:这个 cron 调度器的核心逻辑:

  1. 初始化阶段
     - 从数据库加载所有定时任务
     - 解析 cron 表达式,计算下次执行时间
     - 按执行时间排序放入优先级队列

  2. 主循环
     - 每秒检查队列头部任务是否到期
     - 到期任务取出并异步执行
     - 执行完后重新计算下次时间并放回队列

  3. 关键设计
     - 使用 sync.Mutex 保护队列的并发访问
     - 任务执行有 3 分钟超时(hardInterrupt)
     - 失败任务会重试 3 次,每次间隔翻倍

  ⚠ 潜在问题:第 89 行 time.Sleep(1s) 可能导致
  任务最多延迟 1 秒执行。如果精度要求高,建议
  改用 time.Timer 精确等待。

上下文保持

跨文件上下文

wescode 通过以下机制保持对项目的理解:

上下文引用

使用 @ 符号引用文件或符号,帮助 AI 获取更精准的上下文:

用户:@internal/service/order.go @internal/model/order.go
      在 CreateOrder 里加上库存检查

记忆系统

wescode 的记忆分为七个层次:

层说明持久性
environment宿主环境信息(OS、语言版本等)自动感知
consensus团队共识(接入 SSO 后生效)跨会话
about_me个人偏好跨会话
agent_memoryAgent 角色记忆跨会话
session会话记忆当前会话
working工作缓存临时

AI 会自动记住你的编码偏好,例如:


效率技巧

快捷操作

操作快捷方式说明
打开 ChatCtrl+L侧边栏对话
行内命令Ctrl+K对选中代码操作
快速修复/fix修复当前错误
解释代码选中 + 右键 → 解释解释选中代码
生成测试/test为当前函数生成测试

高效提问模板

# 实现新功能
"实现 [功能描述],参考 @[类似文件] 的模式"

# 修复问题
"@[出错文件] 第 [N] 行报错 [错误信息],帮我修复"

# 重构代码
"把 @[文件] 的 [函数名] 重构为 [目标模式]"

# 学习代码
"解释 @[文件] 中 [函数名] 的实现原理"

多轮协作示例

用户:我要给订单系统加个取消功能
AI:好的,我们需要考虑...(设计讨论)

用户:就按你说的方案来
AI:开始实现...(生成代码)

用户:跑测试看看
AI:运行 go test...(执行并分析结果)

用户:有个 case 失败了
AI:分析失败原因...(调试修复)

用户:好了,帮我写 commit
AI:生成 commit message...(提交辅助)

注意事项