📦 Catl Harness Pro
v0.2.0向CATL Harness GitHub仓库提交结构化的知识工程pull requests,遵循分支、提交、PR和敏感内容规则。
运行时依赖
安装命令
点击复制技能文档
CATL Harness PR 提交 本技能教 OpenClaw 代理(龙虾)如何向 Dr-xiaoming/catl_harness_repo 提交 pull request —— CATL 知识工程Harness 仓库。将其视为一个版本化的知识库,而不是代码库:每个 PR 都是一个故意的、可源的知识增量。 仓库信息 URL:https://github.com/Dr-xiaoming/catl_harness_repo 所有者:佘金明(Dr-xiaoming)—— BlueFocus 宁德时代项目组 产研组 FDE 可见性:私有 —— 并非每个龙虾的环境都自带访问权,缺 token/SSH 就得先解决认证 本地克隆路径(约定):~/.openclaw/workspace/repos/catl_harness_repo 伴侣:飞书 Wiki「宁德时代·客户档案」(见 catl-wiki 技能)。飞书是协作权威副本,GitHub 是版本/diff/审阅可追溯副本。两边都要同步时:先飞书定稿,再 PR 到 GitHub。 硬规则(先读,违反任何 = 停止) 每次开始修改前,必须先同步远程 main 到本地。不管上次修改离现在多近。见下方 "Phase B: 同步"。 永不直推 main。所有改动走 feature 分支 + PR,即使是 typo。 PR 必须有来源。每个知识增量必须能回溯到一次会议、一份纪要、一次客户沟通、一份外部资料、或一份内部讨论。 不泄露甲方未公开内容。即使 repo 是私有的,PR 描述/commit/diff 也不要直接复述甲方原话。遇到敏感资料写成"源自客户访谈纪要(内部,2026-XX-XX)"即可。 不把蓝标判断写进客户的嘴里。蓝标内部分析放 internal-analysis/ 或 frontmatter 标签:[bluefocus-pov],不要混入 layer1-client-cognition/。 大改动先开 issue。新增 layer、调目录结构、删节点 → 先开 issue @Dr-xiaoming 确认方向。 执行阶段(按顺序执行,不要跳过) Phase A — 环境预检(每个新环境只需跑一次,但每次对话开头要验证) 龙虾接到"向 harness 仓库提 PR"任务时,第一个动作是跑这个门禁。任一项失败,停下来向用户报告缺什么,不要硬往下走。 bash ~/.openclaw/workspace/skills/public/catl-harness-pr/scripts/preflight.sh 或手动版: # A1. git 是否存在 command -v git >/dev/null || { echo " git 未安装,请先 brew install git 或 apt install git"; exit 1; } git --version # A2. git 身份是否设过 name=$(git config --global user.name) email=$(git config --global user.email) [ -n "$name" ] && [ -n "$email" ] || { echo " git 身份未设,请先:" echo " git config --global user.name \"Your Name\"" echo " git config --global user.email \"you@example.com\"" exit 1 } echo " git 身份:$name <$email>" # A3. GitHub 认证 —— 三条路径按优先级探测 if command -v gh >/dev/null && gh auth status >/dev/null 2>&1; then AUTH_ROUTE="gh" elif git ls-remote https://github.com/Dr-xiaoming/catl_harness_repo.git HEAD >/dev/null 2>&1; then AUTH_ROUTE="https+credential" # ~/.netrc 或 credential helper 已配 elif ssh -T git@github.com 2>&1 | grep -q "successfully authenticated"; then AUTH_ROUTE="ssh" else AUTH_ROUTE="none" fi echo "auth route:$AUTH_ROUTE" [ "$AUTH_ROUTE" = "none" ] && { echo " 没有可用的 GitHub 认证。见 references/auth-setup.md。" echo " 告诉用户选一条:" echo " (1) 装 gh 并 gh auth login" echo " (2) 生成 PAT (repo 权限) 写入 ~/.netrc" echo " (3) 配 SSH key 并加到 GitHub 账号" exit 1 } 凭证缺失时的硬规则: 不要让子代理代写 token。token 一律让用户在终端自己粘进 ~/.netrc 或用 gh auth login。 不要把 token 回显到聊天、commit、PR 描述、子代理 task 描述。 如果用户环境是 ~/.openclaw/.env 体系(金明的机器),可以告诉他检查 grep GITHUB_ ~/.openclaw/.env;但不要自己往 .env 里写新 token。 Phase B — 仓库同步(每次修改前都要跑,不是只跑一次) 这一步就是"每次修改前同步远程"的硬性要求。 REPO=~/.openclaw/workspace/repos/catl_harness_repo # B1. Clone 如果缺失 —— 容错:如果目录存在但不是 git 仓库,报错不覆盖 if [ ! -d "$REPO/.git" ]; then if [ -d "$REPO" ] && [ -n "$(ls -A "$REPO")" ]; then echo " $REPO 已存在但不是 git 仓库,不敢覆盖。人工确认后再处理。" exit 1 fi mkdir -p "$(dirname "$REPO")" git clone https://github.com/Dr-xiaoming/catl_harness_repo.git "$REPO" fi cd "$REPO" # B2. 检查本地残留 —— 未提交改动、unpushed 分支都要先处理 if ! git diff --quiet || ! git diff --cached --quiet; then echo " 本地有未提交改动:" git status --short echo " 决策树:" echo " - 是本次任务的延续 → git stash 暂存,干完再 pop" echo " - 是上次任务忘提交的 → 停下来,先确认这些改动该不该提 / 该去哪个分支" echo " - 是废弃草稿 → git restore . 丢弃(确认再做)" exit 1 fi current=$(git branch --show-current) if [ "$current" != "main" ]; then echo " 当前在分支 $current,不是 main" # 检查是否有 unpushed 提交 if [ -n "$(git log @{u}.. 2>/dev/null)" ]; then echo " $current 有未推送的提交,先评估是否要推送或丢弃,再继续。" git log --oneline @{u}.. exit 1 fi fi # B3. 强制从远程同步 main —— 这一步就是「每次修改前同步远程」 git fetch origin --prune git checkout main git pull --ff-only origin main || { echo " main 不能 fast-forward,可能本地有 diverged 状态,人工处理。" exit 1 } echo " main 已同步到 $(git rev-parse --short HEAD)" 关键理解:Phase B 不是 Phase A 的延续,而是每次开工前都跑一遍的独立门禁。即使 10 分钟前刚跑过,也要重跑——别的协作者可能刚刚合了 PR。 Phase C —— 在 feature 分支上进行修改 # C1. 从最新的 main 切新分支(分支名见 references/branch-naming.md) git checkout -b layer1/client-cognition-update-20260507 # C2. 进行实际修改 —— 只改 markdown,除非明确要求 # (edit files here) # C3. 本地 review git status git diff --stat git diff | head -200 # 眼过一遍实际内容 # C4. 如果看到 .DS_Store / IDE 文件 / 个人笔记 / 原始 chat 记录 —— 立刻清 # git restore --staged 或把它加进 .gitignore Phase D —— 提交 git add # 不要 git add .,容易带脏文件 git commit -m "layer1(client-cognition): 补充 Q2 神行品牌叙事差异化要点 - 来源: 2026-05-06 虞旸定稿 draft-v2 + 5/3 客户访谈 - 影响范围: layer1/客户认知底座.md 第 3 节 - 审阅人: @Dr-xiaoming" 提交信息规则完整版见 references/commit-style.md。必须带「来源 / 影响范围 / 审阅人」三段。 Phase E —— 推送和打开 PR