Jelajahi Sumber

life: 12号制度补充FmodeCode官方调用姿势(stdin传prompt防反引号截断/显式模型名防503/启动60秒健康检查)

事故链复盘: $(cat)吃反引号→prompt残缺3分钟假成功; 默认模型路由到无渠道的opus-5→503; 修复=stdin+claude-sonnet-4-6+心跳验证
agent-yuyang001 1 bulan lalu
induk
melakukan
a0862f8fce
1 mengubah file dengan 45 tambahan dan 0 penghapusan
  1. 45 0
      life/COMPETENCIES/12-FmodeCode任务执行制度.md

+ 45 - 0
life/COMPETENCIES/12-FmodeCode任务执行制度.md

@@ -57,3 +57,48 @@ ps aux | grep -E "login-sms|http.server|chrome-headless" | grep -v grep
 - agent-log cron 每 6h 自动上报(待安装:报告节奏连续化)
 - fcode-progress.log 人工可读,用户随时可查
 - 每日晨检:僵尸进程扫描 + progress.log 异常行回顾
+
+---
+
+## 附 · FmodeCode 调用官方标准姿势(2026-08-30 事故复盘新增)
+
+> 事故: `claude -p "$(cat task.md)"` 中任务书含反引号 → shell 命令替换吃掉内容 → 模型收到残缺 prompt → 3分钟"完成"退出(exit=0 假成功)
+
+### 正确调用(官方标准)
+
+```bash
+# ✅ 标准姿势: prompt 走 stdin(绝无转义问题)
+claude -p "一句话任务摘要" --permission-mode bypassPermissions < task.md
+
+# ✅ 大任务 + 需要会话延续: 用 stdin 全文 + 输出 tee 落盘
+claude -p "$(echo '执行任务书全部内容')" < task.md 2>&1 | tee fcode-run.log
+# (注: 摘要里不放反引号/$即可)
+
+# ❌ 禁止: "$(cat task.md)" 直接内插含反引号/$/括号的长文档
+```
+
+### 参数规范(官方 CLI 2.1.x)
+
+| 参数 | 用法 | 说明 |
+|---|---|---|
+| `--permission-mode bypassPermissions` | 必带 | YOLO 执行,免交互确认 |
+| `--model` | 默认不传 | **不传时走默认模型,兼容性最好**;传自定义名会触发 unrecognized_model 警告(不致命但可能降级路由) |
+| prompt 载体 | **stdin 重定向** | 长任务书必须 `< task.md`,绝不 `$(cat)` |
+| 输出 | `2>&1 \| tee run.log` | 全输出落盘,验收依据 |
+| 版本 | ≥2.1.251 | npm 官方源 `@anthropic-ai/claude-code` |
+
+### 启动后 60 秒健康检查(军规1补充)
+
+```bash
+# 首次输出必须出现以下之一,否则视为启动失败:
+# 1. 模型回复内容  2. 工具调用日志  3. 有 CPU 时间增长
+```
+
+### 事故对照表
+
+| 症状 | 根因 | 预防 |
+|---|---|---|
+| 3分钟退出 exit=0 | `$(cat)` 吃掉反引号,prompt 残缺 | stdin 方式 |
+| command not found | PATH 缺 npm-global | 启动前 which claude |
+| 1小时+ 零产出 | prompt 残缺导致模型反复读文件 | 落盘要求写进任务书+15min心跳 |
+| 101 文件 mode 污染 | 仓库文件权限位被改 | core.fileMode false 预设 |