当使用claude code上下文卫生管理

当在主任务上下文中注入不相关的问题和答案时,会发生两件事:

Token预算缩小。每次Q&A交换消耗的空间本可以容纳文件内容、代码分析或实现计划。

信号降级。降级了Claude在会话剩余时间生成的每个响应。

这时就要灵活使用这三个命令:

  • /btw 在污染发生前预防它。用于每个不需要工具访问的中途问题。
  • /fork 隔离探索。当你需要全功能调查而不污染主会话时使用。
  • /rewind 在污染发生后移除它。用于航向纠正和上下文压缩。
  • 决策框架:使用哪个Claude Code命令

    当你在会话中间需要决定使用哪个工具时,使用这个流程图:

    快速参考:命令选择指南

    • 快速问题: 使用/btw——成本非常低,无上下文影响
    • 需要文件/工具访问: 使用/fork——中等成本,单独会话
    • 探索替代方案: 使用/fork——中等成本,单独会话
    • 错误方向: 使用/rewind——免费,移除污染
    • 膨胀的上下文: 使用/rewind summarization——免费,压缩历史
    • 小错误: 使用Esc + Esc——免费,回滚上次更改
    • 非破坏性检查: 使用/btw——成本非常低,无上下文影响

    高级Claude Code工作流模式

    这些模式结合三个命令,在现实开发场景中实现最大效果。

    监控-纠正循环

    最常见的高级模式结合了/btw用于监控和/rewind用于纠正。

    1. 开始复杂任务
    2. 定期使用/btw检查Claude的方法
    3. 如果方法错误,/rewind到错误发生前
    4. 用纠正后的指令重新提示
    5. 恢复/btw监控

    这个循环保持你的上下文窗口外科手术般干净。你从不与Claude争论,从不在内联解释错误,从不在上下文中累积失败的方法。结果是一个只包含任务描述和正确实现工作的上下文窗口。

    探索分支

    对于你想在提交前看到实际代码的架构决策:

    1. 在主会话中到达决策点
    2. Fork:claude -r "main-task" --fork-session
    3. 在fork中探索选项A
    4. 如果需要,再次fork原始会话用于选项B
    5. 跨fork比较结果
    6. 用获胜方法继续主会话

    这个模式在项目早期特别有价值,当你做出以后会很昂贵才能逆转的决策时。两三个forked会话的成本与重构糟糕架构选择的成本相比微不足道。

    上下文压缩管道

    对于跨越多个项目阶段的多小时会话:

    1. 完成项目的第1阶段
    2. 使用/rewind summarisation压缩第1阶段
    3. 保留第1阶段决策,以干净上下文开始第2阶段
    4. 对每个后续阶段重复

    这在原本会超过上下文窗口的工作中保持会话连续性,在整个过程中保持高信噪比。

    用于自动化的脚本化Fork

    将forking集成到开发脚本中以实现并行工作流:

    #!/bin/bash
    # 主会话继续时进行并行代码审查
    claude -r "$SESSION_ID" --fork-session \
      -p "审查到目前为止的更改。检查安全问题、性能问题和缺失的错误处理。将审查写入review.md"
    

    这创建了一个一次性的审查会话,检查主会话的工作而不影响它。

全部评论

相关推荐

03-25 20:11
暨南大学
没问八股,问了些项目相关的+ 如何提高项目并发性可用性+ 如何支持多个用户的群聊需求+ 根据项目和专业:国密和国外的算法区别是什么+ 项目会被中间人攻击吗,如何防止或者实施+ 平常会怎么使用AI Coding+ CPP如何管理内存,如何排查和处理内存泄露手撕说白了就是求一个有向无环图的拓扑排序,但是鼠鼠代码能力为零直接拉了坨大的来了个 $O(n^2)$ 解。```cpp#include <iostream>#include <map>#include <vector>using namespace std;int list[256];map<string, vector<string>> components = {{"A", {"B", "C"}},{"D", {"B", "C"}},{"E", {"F", "B"}},{"B", {"L", "F"}},{"L", {}},{"N", {}},{"F", {}},{"C", {"B"}},{"P", {"N"}},{"Q", {"P"}}};vector<string>  solution(map<string, vector<string>> components) {vector<string> res;while(1) {for(auto &item: components) {auto index = int(item.first[0]);if(list[index] != -1) continue;for(int i = 0; i < item.second.size(); i++) {auto index_ = item.second[i][0];if(list[int(index_)]==-1) goto end;}list[index] = 1;res.push_back(item.first);if (res.size()==components.size()) {return res;}end:}}}int main() {for(int i = 0; i < 256; i++) {list[i] = -1;}auto res = solution(components);for(auto i : res) {cout << i << " ";}}```
查看6道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务