提示优化工具

preflight是一款用于优化Claude Code提示的工具,通过24种工具自动检查模糊指令,减少错误修复循环,提高工作效率。

  • by preflight-dev
  • TypeScript
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 TerminalGravity/preflight

使用说明

✈️ 预检

停止在模糊的提示下焚烧代币。

用于Claude Code的24工具MCP服务器,可以在错误的指令花费2-3倍之前捕捉到模糊的指令→修复周期——加上整个会话历史的语义搜索、跨服务合同感知和12个类别记分卡。

快速开始 · 运作原理 · 工具参考 · 配置 · 评分


v3.2.0的新增功能

  • 统一 preflight_check 入口点 --一个工具,可以对每个提示进行分类,并自动链接正确的检查
  • 智能分诊分类 --通过决策树路由提示(琐碎→ 模糊的→ 多步骤→ 交叉服务)
  • 校正模式学习 --记住过去的错误,并在重复之前警告你
  • 交叉服务合同 --在相关项目中提取类型、接口、路由和模式
  • .preflight/ 配置目录 --用于分流规则和阈值的团队可共享YAML配置
  • 趋势和比较记分卡 --每周/每月趋势线、跨项目比较、雷达图、PDF导出
  • 成本估计员 --估算修正带来的代币支出和浪费

问题

我们在分析后构建了这个 9个月真实的Claude代码使用 --在生产Next.js/Prisma/Supabase应用程序中生成512个会话、32000多个事件、3200+个提示、1642个提交和258个子代理。调查结果很残酷:

  • 41%的提示少于50个字符 --比如 fix the tests, commit this, remove them
  • 每个模糊的提示都会触发一个 wrong→修复周期成本为2-3x代币
  • ~33K字符/天 从重复的上下文粘贴中复制
  • 记录了124次更正 --克劳德误入歧途,不得不被拉回的地方
  • 94个上下文压缩 从上下文窗口吹过的无限会话范围
  • 预计 30%至40%的代币被浪费 关于可避免的反复

模式总是一样的:模糊提示→ 克劳德猜测→ 错误输出→ 你说对了→ 重复。那是你的钱在蒸发。

解决方案

在Claude Code中作为MCP服务器运行的5类24个工具:

类别 工具 功能
✈️ 预制芯 1 统一入口点——对每个提示进行分类,自动链接正确的检查
🎯 迅速的纪律 12 捕捉模糊提示,加强结构,防止浪费
🔍 时间线情报 4 LanceDB在数月的会话历史中进行矢量搜索
📊 分析和报告 4 记分卡、成本估算、会话统计、模式检测
✅ 验证与卫生 3 类型检查、测试、审计和合同搜索

之前/之后

❌  "fix the auth bug"
     → Claude guesses which auth bug, edits wrong file
     → You correct it, 3 more rounds
     → 12,000 tokens burned

✅  preflight intercepts → clarify_intent fires
     → "Which auth bug? I see 3 open issues:
        1. JWT expiry not refreshing (src/auth/jwt.ts)
        2. OAuth callback 404 (src/auth/oauth.ts)
        3. Session cookie SameSite (src/middleware/session.ts)
        Pick one and I'll scope the fix."
     → 4,000 tokens, done right the first time

快速开始

选项A:npx(最快--无需安装)

claude mcp add preflight -- npx -y preflight-dev-serve

对于环境变量:

claude mcp add preflight \
  -e CLAUDE_PROJECT_DIR=/path/to/your/project \
  -- npx -y preflight-dev-serve

选项B:手动克隆和配置

git clone https://github.com/TerminalGravity/preflight.git
cd preflight && npm install

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "preflight": {
      "command": "npx",
      "args": ["tsx", "/path/to/preflight/src/index.ts"],
      "env": {
        "CLAUDE_PROJECT_DIR": "/path/to/your/project"
      }
    }
  }
}

重新启动克劳德代码。这些工具会自动激活。

选项C:npm(全局)

npm install -g preflight-dev
claude mcp add preflight -- preflight-dev-serve

注: preflight-dev 运行交互式安装向导。 preflight-dev-serve 启动MCP服务器——这就是您在Claude Code配置中想要的。


运作原理

分类决策树

在任何工作开始之前,每个提示都会经过一个分类引擎。这是来自的实际决策树 src/lib/triage.ts:

flowchart TD
    A[Prompt Arrives] --> B{Skip keyword?}
    B -->|Yes| T1[✅ TRIVIAL]
    B -->|No| C{Multi-step indicators?}
    C -->|Yes| MS[🔶 MULTI-STEP]
    C -->|No| D{Cross-service keywords?}
    D -->|Yes| CS[🔗 CROSS-SERVICE]
    D -->|No| E{always_check keyword?}
    E -->|Yes| AM1[⚠️ AMBIGUOUS]
    E -->|No| F{"< 20 chars + common cmd?"}
    F -->|Yes| T2[✅ TRIVIAL]
    F -->|No| G{"< 50 chars, no file refs?"}
    G -->|Yes| AM2[⚠️ AMBIGUOUS]
    G -->|No| H{Vague pronouns or verbs?}
    H -->|Yes| AM3[⚠️ AMBIGUOUS]
    H -->|No| CL[✅ CLEAR]

    style T1 fill:#2d6a4f,color:#fff
    style T2 fill:#2d6a4f,color:#fff
    style CL fill:#2d6a4f,color:#fff
    style AM1 fill:#e9c46a,color:#000
    style AM2 fill:#e9c46a,color:#000
    style AM3 fill:#e9c46a,color:#000
    style CS fill:#457b9d,color:#fff
    style MS fill:#e76f51,color:#fff

每个级别都会触发不同的工具链:

级别 触发内容 示例提示
琐碎的 没什么——通过 commit
清除 仅用于文件验证 fix null check in src/auth/jwt.ts line 42
模糊的 明确意图+git状态+工作区优先级 fix the auth bug
交叉服务 澄清+搜索相关项目+合同 add tiered rewards
多步骤 澄清+范围+顺序+检查点 refactor auth to OAuth2 and update all consumers

另外, 校正模式匹配 可以提高任何分流水平。如果你的提示与之前记录的更正中的2+个关键字匹配,它至少会被提升到 ambiguous --即使它以其他方式通过。

数据流

flowchart LR
    A[User Prompt] --> B[Triage Engine]
    B --> C[Tool Chain]
    C --> D[Response]

    B -.-> E[".preflight/\nconfig.yml\ntriage.yml"]
    B -.-> F["Patterns\nLog"]
    C -.-> G["LanceDB\n(per-project)"]
    C -.-> H["Contracts\n(per-project)"]
    G -.-> I["~/.claude/projects/\n(session JSONL)"]

    style A fill:#264653,color:#fff
    style B fill:#2a9d8f,color:#fff
    style C fill:#e9c46a,color:#000
    style D fill:#e76f51,color:#fff

会话数据结构

Claude Code将会话数据存储为JSONL文件:

~/.claude/projects/<encoded-path>/
├── <session-uuid>.jsonl              # Main session
├── <session-uuid>/
│   └── subagents/
│       └── <sub-uuid>.jsonl          # Sub-agent sessions

每一行JSONL都是一个事件。这 会话解析器 提取物 8事件类型:

事件类型 来源 它捕获了什么
prompt user messages 开发人员键入了什么
assistant assistant 消息 克劳德的短信回复
tool_call assistant tool_use块 工具调用(读、写、Bash等)
sub_agent_spawn Task/dispatch_agent tool_use 当Claude委托给子代理时
correction user 助手后的消息 通过否定模式检测到(否、错误、实际上、撤消…)
compaction system messages 上下文已压缩(会话命中令牌限制)
error tool_result is_error 操作失败
commit git日志集成 会话期间提交

LanceDB架构

事件存储在每个项目中 LanceDB 具有用于语义搜索的向量嵌入的数据库:

~/.preflight/projects/<sha256-12-char>/
├── timeline.lance/       # LanceDB vector database
├── contracts.json        # Extracted API contracts
└── meta.json             # Project metadata

Table: events
├── id: string            (UUID)
├── content: string       (event text)
├── content_preview: string (first 200 chars)
├── vector: float32[384]  (Xenova/all-MiniLM-L6-v2) or float32[1536] (OpenAI)
├── type: string          (event type from above)
├── timestamp: string     (ISO 8601)
├── session_id: string    (session UUID)
├── project: string       (decoded project path)
├── project_name: string  (short name)
├── branch: string        (git branch at time of event)
├── source_file: string   (path to JSONL file)
├── source_line: number   (line number in JSONL)
└── metadata: string      (JSON — model, tool name, etc.)

项目注册处 ~/.preflight/projects/index.json 将绝对路径映射到它们的SHA-256哈希值。

合同提取

这 合同提取器 扫描您的项目以查找API曲面:

模式 它发现了什么
export interface/type/enum TypeScript类型定义
export function GET/POST/… Next.js API路线
router.get/post/… 快递路线处理人员
model Foo { … } Prisma模型和枚举
OpenAPI/Swagger规范 路由和模式组件
.preflight/contracts/*.yml 手动合同定义

合同按项目存储,并在跨服务分流期间跨相关项目搜索。


启动项目

跑 onboard_project 为项目的历史建立索引。事情是这样的:

  1. 发现会话 --在中查找JSONL文件 ~/.claude/projects/<encoded-path>/,包括子代理会话
  2. 解析事件 --从每个会话文件中提取8种事件类型(流文件>10MB)
  3. 提取合同 --扫描源以查找类型、接口、枚举、路由、Prisma模型、OpenAPI模式
  4. 加载手动合同 --合并任何 .preflight/contracts/*.yml 定义(手动赢得名称冲突)
  5. 生成嵌入 --本地 Xenova/全迷你LM-L6-v2 默认情况下(首次运行时下载约90MB模型,约50个事件/秒)或OpenAI,如果 OPENAI_API_KEY 已设置(约200个事件/秒)
  6. LanceDB的商店 --按项目数据库 ~/.preflight/projects/<sha256-12>/timeline.lance/
  7. 更新注册表 --将项目记录在 ~/.preflight/projects/index.json

除非你选择OpenAI嵌入,否则没有数据离开你的机器。

入职后,您将获得:

  • 🔎 语义搜索 --“我上个月是如何设置身份验证中间件的?”实际上是有效的
  • 📊 时间线视图 --按时间顺序查看会话中发生了什么
  • 🔄 实时扫描 --在新会话发生时为其建立索引
  • 🔗 跨服务搜索 --跨相关项目查询

工具参考

✈️ 预制芯

工具 它做什么
preflight_check 主要切入点。 将你的提示(琐碎→ 多步骤),自动链接正确的检查,与已知的校正模式进行匹配。接受 force_level 以(权力)否决 skip, light, full.

🎯 迅速的纪律

工具 它做什么
scope_work 在编码开始之前创建结构化执行计划
clarify_intent 收集项目上下文(git状态、工作区文档、歧义信号)以消除模糊提示的歧义
enrich_agent_task 使用文件路径、模式和跨服务上下文丰富子代理任务
sharpen_followup 将“fix it”/“do the other”解析为实际的文件目标
token_audit 检测废物模式,将您的会话分级为A-F
sequence_tasks 按依赖关系、位置和风险对任务进行排序
checkpoint 压缩前保存游戏——提交+恢复笔记
check_session_health 监控未提交的文件、提交后的时间、周转次数
log_correction 跟踪更正并识别重复出现的错误模式
check_patterns 根据学习到的纠正模式检查提示——警告已知的陷阱
session_handoff 为新会话生成切换简报
what_changed 总结自上次检查点以来的差异

🔍 时间线情报

工具 它做什么
onboard_project 将项目的会话历史+合同编入每个项目的LanceDB
search_history 带范围的语义搜索:当前项目、相关项目或所有索引项目
timeline 按时间顺序查看各届会议的事件
scan_sessions 实时扫描活动会话数据

📊 分析和报告

工具 它做什么
generate_scorecard 12类报告卡——会话、趋势(周/月)或跨项目比较。雷达图SVG、PDF或markdown。
estimate_cost 代币使用、美元成本、更正造成的浪费、飞行前节省
session_stats 轻量级会话分析——无需嵌入
prompt_score 特异性、范围、可操作性、完成情况的游戏化A-F分级

✅ 验证与卫生

工具 它做什么
verify_completion 在声明完成之前运行类型检查+测试+构建
audit_workspace 查找过时/缺失的工作区文档与git活动
search_contracts 在当前和相关项目中搜索API合同、类型和架构

用法示例

安装预检后,您将键入Claude Code的真实提示。工具通过以下方式自动点火 preflight_check,或者你可以直接给他们打电话。

在浪费令牌之前抓住一个模糊的提示

> fix the auth bug

preflight_check intercepts → clarify_intent fires:
  "I found 3 auth-related recent changes:
   1. JWT refresh logic in src/auth/jwt.ts (modified 2h ago)
   2. OAuth callback route in src/routes/oauth.ts (3 open TODOs)
   3. Session middleware in src/middleware/auth.ts (failing test)
   Which one? Or describe the symptoms."

开始前确定多步骤任务的范围

> refactor the database layer to use Drizzle instead of Prisma

preflight_check triages as MULTI-STEP → scope_work + sequence_tasks fire:
  Phase 1: Install drizzle-orm, create schema (src/db/schema.ts)
  Phase 2: Migrate queries in src/services/ (12 files)
  Phase 3: Update tests (8 files reference prisma mocks)
  Phase 4: Remove prisma dependencies, delete prisma/ dir
  Estimated: 4 checkpoints, ~45 min

搜索您的会话历史记录

> use search_history to find how I set up the rate limiter

Searches LanceDB across your indexed sessions:
  Found 3 relevant events (similarity > 0.82):
  - Session abc123 (Jan 15): Added express-rate-limit to src/middleware/
  - Session def456 (Jan 16): Configured per-route limits in src/routes/api.ts
  - Session ghi789 (Feb 2): Fixed rate limit bypass via X-Forwarded-For

对你的提示习惯进行评分

> use prompt_score on "update the thing"

  Grade: D
  - Specificity: 1/5 — no file paths, no identifiers
  - Scope: 1/5 — "the thing" is completely ambiguous
  - Actionability: 2/5 — "update" is vague (refactor? fix? add feature?)
  - Done-condition: 0/5 — no way to know when it's done
  Suggestion: "Update the price formatter in src/utils/currency.ts
  to handle JPY (zero-decimal currency)"

工作中检查会话健康状况

> use check_session_health

  ⚠️ 47 uncommitted files (last commit: 38 min ago)
  ⚠️ 23 turns since last checkpoint
  💡 Consider running `checkpoint` before context compaction hits

获取成本估算

> use estimate_cost

  This session: ~$2.40 (148K tokens)
  Waste from corrections: ~$0.85 (3 wrong→fix cycles)
  Preflight savings: ~$1.20 (4 vague prompts caught early)
  Net: saving roughly 35% vs unchecked prompting

12分类记分卡

generate_scorecard 在12个类别中评估你的快速纪律。每个指标都衡量了你与Claude Code互动的具体方式:

# 类别 衡量标准 评分方式
1 计划 你开始会议时有计划吗?前3个提示包含文件引用和>100个字符的会话百分比
2 澄清 你的提示是否具体? %的用户提示包含文件路径或特定标识符
3 授权 子代理任务是否定义明确? %的子代理生成具有>200个字符描述的子代理
4 随访特异性 是否有后续参考文件? %的后续提示(助理响应后)包含文件引用或≥50个字符
5 代币效率 每个文件有多少次工具调用? 工具调用与被触摸的唯一文件的比率(理想值:5-10次调用/文件)
6 测序 你是保持专注还是切换上下文? 主题切换率——提示在不同目录区域之间跳转的频率
7 压实管理 你在压实之前承诺了吗? 10条消息内提交的压缩事件的百分比
8 会话生命周期 你经常承诺吗? 健康提交频率的会话百分比(每15-30分钟一次)
9 错误恢复 你从错误中恢复的速度有多快? 纠正率(邮件百分比)+恢复速度(2条以内)
10 工作场所卫生 您是否维护工作区文档? 基准75+奖励用于会话引用 .claude/ 或 CLAUDE.md
11 跨会话连续性 新会话是否阅读上下文? 前3个工具调用读取项目上下文文档的会话百分比
12 验证 你在最后测试吗? 在最后10%的事件中运行测试/build/lint的会话百分比

报告类型

类型 你得到了什么
记分卡 12类单周期快照、雷达图、最佳/最差亮点
趋势 每周或每月趋势线、每个类别的变动、前3个改进领域、最佳/最差提示
比较的 并行跨多个项目,跨项目模式检测

三大支持 PDF导出 (需要剧作家)和 历史基线 它追踪你的滚动平均值随时间的变化。


跨服务意识

Preflight了解微服务共享合约。当您的提示提到相关项目中的关键字时,分类升级为 cross-service 并在这些项目中搜索相关上下文。

设置

选项1: .preflight/config.yml (推荐-承诺回购)

# my-api/.preflight/config.yml
related_projects:
  - path: /Users/jack/Developer/auth-service
    alias: auth-service
  - path: /Users/jack/Developer/notifications
    alias: notifications
  - path: /Users/jack/Developer/shared-types
    alias: shared-types

选项2:环境变量 (每个用户)

PREFLIGHT_RELATED=/path/to/auth-service,/path/to/notifications

运作原理

  1. 您键入: "add rewards tier validation"
  2. 分类检测 rewards 火柴 always_check 关键词→ ambiguous
  3. 跨服务关键字(auth, notification)不匹配,但如果你输入了 "add rewards with auth check" → cross-service
  4. Preflight搜索相关项目的LanceDB索引和合同注册表
  5. 从这些项目返回相关类型、接口和路由
  6. 你会得到这样的上下文:“身份验证服务具有 interface AuthToken { userId, tier, permissions } 和 POST /api/validate-tier"

这可以防止常见的故障模式:在一个服务中更改共享类型并忘记消费者。


配置参考

.preflight/config.yml

将此放入您的项目根目录中。每个字段都是可选的——默认值是合理的。

# Profile controls overall verbosity
# "minimal" — only flag ambiguous+, skip clarification detail
# "standard" — default behavior
# "full" — maximum detail on every non-trivial prompt
profile: standard                          # type: "minimal" | "standard" | "full"

# Related projects for cross-service awareness
related_projects:                          # type: RelatedProject[]
  - path: /absolute/path/to/service        #   path: string (absolute)
    alias: service-name                    #   alias: string (used in output + triage matching)

# Behavioral thresholds
thresholds:
  session_stale_minutes: 30                # type: number — warn if no activity for this long
  max_tool_calls_before_checkpoint: 100    # type: number — suggest checkpoint after N tool calls
  correction_pattern_threshold: 3          # type: number — min corrections to form a pattern

# Embedding configuration
embeddings:
  provider: local                          # type: "local" | "openai"
  openai_api_key: sk-...                   # type: string — only needed if provider is "openai"

.preflight/triage.yml

控制分流分类引擎。

# Keywords that control routing
rules:
  # Prompts containing these → always at least AMBIGUOUS
  always_check:                            # type: string[] — default: [rewards, permissions, migration, schema]
    - rewards
    - permissions
    - migration
    - schema

  # Prompts containing these → TRIVIAL (pass through)
  skip:                                    # type: string[] — default: [commit, format, lint]
    - commit
    - format
    - lint

  # Prompts containing these → CROSS-SERVICE
  cross_service_keywords:                  # type: string[] — default: [auth, notification, event, webhook]
    - auth
    - notification
    - event
    - webhook

# How aggressively to classify
# "relaxed" — more prompts pass as clear
# "standard" — balanced
# "strict" — more prompts flagged as ambiguous
strictness: standard                       # type: "relaxed" | "standard" | "strict"

.preflight/contracts/*.yml

补充自动提取的手动合同定义:

# .preflight/contracts/api.yml
- name: RewardsTier
  kind: interface
  description: Reward tier levels and their perks
  fields:
    - name: tier
      type: string
      required: true
    - name: multiplier
      type: number
      required: true
    - name: perks
      type: string[]

环境变量

变量 描述 默认值
CLAUDE_PROJECT_DIR 要监视的项目根 必需
OPENAI_API_KEY 用于嵌入的OpenAI密钥 使用本地Xenova
PREFLIGHT_RELATED 逗号分隔的相关项目路径 无
EMBEDDING_PROVIDER local 或 openai local
PROMPT_DISCIPLINE_PROFILE minimal, standard,或 full standard

环境变量为 后备方案 — .preflight/ config在存在时优先。

💡 即用型示例: 复制 examples/.preflight/ 在项目根目录中添加一个带有详细注释的工作启动器配置。


嵌入提供者

提供商 设置 速度 尺寸 质量 隐私
当地(Xenova) 零配置 ~50个事件/秒 384 良好 100%本地
开放人工智能 设置 OPENAI_API_KEY 约200个事件/秒 1536 优秀 API调用

首次运行本地嵌入下载 Xenova/全迷你LM-L6-v2 型号(~90MB)。之后,一切都离线运行。


建筑

flowchart TB
    CC[Claude Code] <-->|MCP Protocol| PS[preflight server]
    
    PS --> PC[✈️ Preflight Core]
    PS --> DT[🎯 Discipline Tools]
    PS --> TL[🔍 Timeline Tools]
    PS --> AN[📊 Analysis Tools]
    PS --> VR[✅ Verify Tools]

    PC --> TE[Triage Engine]
    DT --> PL[Pattern Learning]
    TL --> LDB[(LanceDB\nper-project)]
    AN --> SCE[Scorecard Engine]

    TE -.-> CFG[".preflight/\nconfig.yml\ntriage.yml\ncontracts/"]
    LDB --> SP[Session Parser]
    SP --> JSONL["~/.claude/projects/\n(session JSONL files)"]

    style CC fill:#264653,color:#fff
    style PS fill:#2a9d8f,color:#fff
    style PC fill:#e76f51,color:#fff
    style DT fill:#e9c46a,color:#000
    style TL fill:#457b9d,color:#fff
    style AN fill:#6a4c93,color:#fff
    style VR fill:#2d6a4f,color:#fff
    style LDB fill:#1d3557,color:#fff

按项目数据布局

~/.preflight/
├── config.json                           # Global config (embedding provider, indexed projects)
└── projects/
    ├── index.json                        # Registry: path → { hash, onboarded_at }
    ├── a1b2c3d4e5f6/                     # SHA-256(project_path)[:12]
    │   ├── timeline.lance/               # LanceDB vector database
    │   ├── contracts.json                # Extracted API contracts
    │   ├── meta.json                     # Event count, onboard timestamp
    │   └── baseline.json                 # Historical scorecard averages
    └── f6e5d4c3b2a1/
        └── ...                           # Another project

故障排除

“找不到模块'vectordb'”或LanceDB导入错误

LanceDB使用本机二进制文件。如果您看到模块解析错误:

# Clean install with native deps rebuilt
rm -rf node_modules package-lock.json
npm install

# If still failing, check your Node version (20+ required)
node --version

在苹果Silicon Mac上,确保你运行的是原生arm64节点,而不是Rosetta。与核对 node -e "console.log(process.arch)" (应打印 arm64).

首次运行速度较慢(约90MB型号下载)

本地嵌入提供商(Xenova/全迷你LM-L6-v2)首次使用时下载约90MB的型号。这是一次性成本——后续运行使用缓存模型。如果下载挂在公司代理后面,请切换到OpenAI嵌入:

export OPENAI_API_KEY=sk-...
export EMBEDDING_PROVIDER=openai

“OpenAI嵌入提供程序需要OpenAI API密钥”

你设置 EMBEDDING_PROVIDER=openai (或 embeddings.provider: openai 在 .preflight/config.yml)但没有提供钥匙。要么:

  • 集 OPENAI_API_KEY 在您的环境中,或
  • 切换回本地: export EMBEDDING_PROVIDER=local

Claude代码中未显示工具

  1. 确保MCP服务器已注册。跑 claude mcp list --你应该看看 preflight.
  2. 如果缺失,请重新添加:
    claude mcp add preflight -- npx tsx /path/to/preflight/src/index.ts
    
  3. 添加后重新启动Claude Code。

CLAUDE_PROJECT_DIR 未设置

一些工具(入职培训、会话搜索、合同)需要了解您的项目根。如果返回空结果:

claude mcp add preflight \
  -e CLAUDE_PROJECT_DIR=/path/to/your/project \
  -- npx tsx /path/to/preflight/src/index.ts

或者全局设置: export CLAUDE_PROJECT_DIR=/path/to/your/project

.preflight/config.yml 解析错误

如果你看到 warning - failed to parse .preflight/config.yml,你的YAML格式不正确。常见问题:

  • 标签而不是空格(YAML需要空格)
  • 带有特殊字符的值周围缺少引号
  • 下方压痕不正确 related_projects

验证方式: npx yaml-lint .preflight/config.yml 或粘贴到 yamllint.com.

入职期间未找到会话数据

onboard_project 在中查找JSONL文件 ~/.claude/projects/<encoded-path>/.如果什么也没找到:

  • 确保您在项目中实际使用了Claude Code(至少一次会话)
  • 检查一下 CLAUDE_PROJECT_DIR 与Claude Code打开的确切路径匹配
  • 路径编码是URL样式-- /Users/jack/my-app 成为 %2FUsers%2Fjack%2Fmy-app

Ollama嵌入连接被拒绝

如果使用Ollama作为您的嵌入提供商并收到连接错误:

# Make sure Ollama is running
ollama serve

# Pull the embedding model
ollama pull all-minilm

# Verify it works
curl http://localhost:11434/api/embed -d '{"model":"all-minilm","input":"test"}'

贡献

这个项目很年轻,有很多事情要做。查看 问题 --有几个被标记 good first issue.

PR欢迎。没有CLA,就没有官僚主义。如果它使工具变得更好,它就会被合并。

发展

git clone https://github.com/TerminalGravity/preflight.git
cd preflight
npm install
npm run build
npm test

项目结构

src/
├── index.ts                 # MCP server entry point
├── lib/
│   ├── triage.ts            # Prompt classification engine
│   ├── session-parser.ts    # JSONL session file parser
│   ├── timeline-db.ts       # LanceDB operations
│   ├── contracts.ts         # Contract extraction & search
│   ├── patterns.ts          # Correction pattern learning
│   ├── config.ts            # .preflight/ config loading
│   ├── embeddings.ts        # Embedding provider abstraction
│   ├── state.ts             # Persistent state (logs, patterns)
│   ├── git.ts               # Git operations
│   └── files.ts             # File discovery
└── tools/
    ├── preflight-check.ts   # Unified entry point
    ├── generate-scorecard.ts # 12-category scoring + trends
    └── ...                  # One file per tool

许可证

麻省理工学院——随心所欲。