|
|
@@ -0,0 +1,59 @@
|
|
|
+# FmodeCode 任务执行制度(v1.0)
|
|
|
+
|
|
|
+> 2026-08-30 建立 · 触发:三任务静默失败/空转事故
|
|
|
+> 适用:所有数字生命通过 FmodeCode 执行的一切任务
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五条军规(启动前检查单,缺一不可)
|
|
|
+
|
|
|
+### 军规1 · 启动三要素验证(防止秒退)
|
|
|
+启动 FmodeCode 前必须验证:
|
|
|
+```bash
|
|
|
+which claude # PATH 含 /opt/data/npm-global/bin
|
|
|
+echo ${ANTHROPIC_AUTH_TOKEN:0:8} # 非 sk-8d0 开头的完整key
|
|
|
+cd <目标仓库> && git status # 仓库可达
|
|
|
+```
|
|
|
+任一失败 → 修复后再启动。**启动后 60 秒内必须回看进程输出**,出现 command not found / Not logged in 立即纠正。
|
|
|
+
|
|
|
+### 军规2 · 进度心跳(防止空转)
|
|
|
+- 启动命令必须带心跳:任务起止各写一行时间戳到 `~/.fmode-harness-agent/tmp/fcode-progress.log`
|
|
|
+- **每 15 分钟无产出=异常**:检查进程 CPU 时间是否在增长(`ps -o time= -p <pid>`)。
|
|
|
+ CPU 不涨 + 无文件变更 = 空转 → 杀掉重派
|
|
|
+- 任务书中必须写明:**预算时间 + 阶段落盘要求**(哪怕半成品也先落盘)
|
|
|
+
|
|
|
+### 军规3 · 产出验收(防止假完成)
|
|
|
+- 不信退出码,只信**落盘物**:任务书里列明的每个交付文件,完成后逐一 `ls` 验证存在
|
|
|
+- 模式污染检查:`git status --short` 若出现大量 M 文件(>20)且 diff 为 0 insertions → `core.fileMode false` + checkout
|
|
|
+- commit 后 `git log --stat` 核对变更文件与任务书清单一致
|
|
|
+
|
|
|
+### 军规4 · 僵尸进程晨检(防止资源泄漏)
|
|
|
+每日(或每次发任务前)扫描:
|
|
|
+```bash
|
|
|
+# 孤儿脚本/残留server/僵死chrome
|
|
|
+ps aux | grep -E "login-sms|http.server|chrome-headless" | grep -v grep
|
|
|
+# 存活>2小时且非当前任务相关 → 确认后 kill
|
|
|
+```
|
|
|
+后台 server 用完即杀,不留"以后可能还用"。
|
|
|
+
|
|
|
+### 军规5 · 串行调度 + 状态如实汇报
|
|
|
+- 同一时刻**最多 1 个 FmodeCode 重任务**(模型 API + 仓库 IO 都是瓶颈)
|
|
|
+- 排队队列写进 todo;派发汇报必须基于 `ps`/log 实测状态,**禁止把"已启动"说成"运行中"**
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 处置预案
|
|
|
+
|
|
|
+| 症状 | 动作 |
|
|
|
+|---|---|
|
|
|
+| 启动即退出 | 修 PATH/env,重试一次;再败→改用 delegate_task 子代理 |
|
|
|
+| 运行>15min 无产出 | 杀掉,检查任务书是否太大→拆小重派 |
|
|
|
+| 运行>预算 1.5 倍 | 强杀,保留已有落盘物,Orchestrator 接管收口 |
|
|
|
+| 仓库被污染(mode/乱 M) | core.fileMode false → checkout → 记录事故 |
|
|
|
+| 连续 2 次同任务失败 | 换模型(claude-haiku)或换执行器(子代理),并上报用户 |
|
|
|
+
|
|
|
+## 监控闭环(与 agent-log-s3 联动)
|
|
|
+
|
|
|
+- agent-log cron 每 6h 自动上报(待安装:报告节奏连续化)
|
|
|
+- fcode-progress.log 人工可读,用户随时可查
|
|
|
+- 每日晨检:僵尸进程扫描 + progress.log 异常行回顾
|