360 Secure SkillHub
360 安全技能中心

debugging

提供系统化根因调试流程:复现错误、阅读报错、优先检查持久状态、隔离范围、追问根因、修复并验证,并检查同类问题是否复现;还包含 Noodle 基础设施诊断、卡住时的做法与反模式提醒。

poteto
热度 0.00
最近更新 2026-10-19 06:44:34
分类:开发依赖:代码执行 / 读写文件应用场景:调试排错 / DevOps

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add poteto/noodle/debugging
Metadata
name
debugging
description
Systematic root-cause debugging methodology. Use for any technical problem — errors, failures, unexpected behavior, or when stuck. Triggers: "debug", "fix this", "what's wrong", "investigate".

Debugging

Read [[principles/fix-root-causes]] before starting. Every debugging session follows that principle: trace to root cause, never paper over symptoms.

Process

  1. Reproduce. Get the exact error. Run the failing command, read the full output. If you can't reproduce, you can't verify your fix.

  2. Read the error. The error message, stack trace, and line numbers are data. Read all of it before forming hypotheses. Most bugs tell you exactly where they are.

  3. Suspect state before code. Before debugging code, check persistent state — especially on restart bugs or environment drift. See [[principles/fix-root-causes]].

    • Noodle state: .noodle/orders.json (stale items?), .noodle/sessions/ (orphaned?), .noodle.toml (valid?)
    • Environment: tmux sessions (tmux ls), lock files, cached artifacts
    • Config: .noodle.toml validation (noodle start reports diagnostics), skill frontmatter parse errors
    • Persistent files: brain/ notes, plan files, todos — check for corruption or stale references
  4. Isolate. Narrow the scope. Which file? Which function? Which line? Use binary search: comment out half, see if it still fails, repeat.

  5. Find root cause. The first "fix" that comes to mind is usually a symptom fix. Ask "why?" until you hit the actual cause:

    • Test fails → mock is wrong → interface changed → type doesn't match runtime shape → fix the type
    • Build fails → import error → circular dependency → restructure the modules
    • Runtime crash → undefined value → missing null check → data source returns null on empty → handle empty case at the source
  6. Fix and verify. Fix the root cause, not the symptom. Then verify: run the test, run the build, exercise the feature path. "It compiles" is not verification.

  7. Check for the pattern. If the bug existed in one place, grep for the same pattern elsewhere. Fix all instances, or make it structurally impossible.

Noodle-Specific Diagnostics

When debugging Noodle infrastructure failures:

Symptom Check first
Cook won't start tmux ls, .noodle/orders.json validity, skill resolver paths
Orders stuck .noodle/orders.json for stale items, .noodle.toml adapter config
Missing skill .noodle.toml [skills] paths, .agents/skills/<name>/SKILL.md exists
Stale mise .noodle/mise.json generated_at timestamp, backlog sync script
Session orphaned .noodle/sessions/<id>/meta.json status, tmux ls for zombie sessions

When Stuck

  • Instrument, don't guess. Add logging at key points to see actual values. Read actual state ([[principles/prove-it-works]]).
  • Diff what changed. git diff, git log, git bisect. Most bugs are recent.
  • Simplify. Strip the failing case to minimum reproduction. Remove everything unrelated.
  • Change one thing at a time. Multiple changes at once make it impossible to know what fixed (or broke) it.
  • Check assumptions. The bug is often in the part you're sure is correct. Verify everything.

Anti-Patterns

  • Bypass flags (--no-verify, --force, SKIP_CHECK=true) silence symptoms without fixing causes.
  • Retry loops hide intermittent bugs behind probability.
  • Shotgun debugging — changing three things to "see if it helps" — obscures causality.
  • Adding guards (if (x !== undefined)) without asking why x is undefined.

After Fixing

If this bug could recur or affected your understanding, capture the lesson. Write a brain note, update a skill, or add a todo. The system should get smarter from every bug. See [[principles/encode-lessons-in-structure]].