chore(技能): 浏览器起法收敛为「会话后台任务」+ 关窗即停手;补索引与自测清理

- browser-harness/SKILL.md:§1 起法整段重写为「只允许这一种 —— 本会话的后台任务」(字面命令/
  为什么只许这一种/守卫语义/已知代价/起不来对照表);§3 补一条排障 —— 认进程命令行与它自己的日志,
  ⛔ 别信 pid 父链;**「删掉脚本」≠「停掉进程」**(依据 2026-10-10 实测:孤儿守卫在脚本已删后仍把浏览器拉回)
- browser-harness/agent-workspace/bh_chrome_keepalive.py:守卫语义分两档 —— Chrome 正常关窗(rc=0) ⇒ 停手退出;
  异常退出(rc≠0) ⇒ 重拉(依据:用户手关被无条件拉回,连关三次弹三次)
- session-mechanism/scripts/selftest.py:删掉重复定义的 `t_check_cooldown_no_pileup`(两段逐字相同);自测 PASS 109 / FAIL 0
- session-mechanism/references/humanizer-en/SKILL.md:与顶层 `humanizer` 技能同名冲突 ⇒ 去掉本包这份的注册
  (`user-invocable: false` + `disable-model-invocation: true`),6 个文件正文一字未动
- session-mechanism/references/01-文档索引.md:补登 `04-决策方法论.md`/`dsh-decision-method/`/`作业规矩/`/`humanizer-en/`
This commit is contained in:
admin committed 2026-10-10 23:25:36 +08:00
1 parent a04b2c08e8
commit fd9c902bcc
5 files changed
+112 -65

No files matched your search

@@ -32,6 +32,12 @@
| 只想要速查 | `99-速查清单.md` | — |
| **问「这是什么、为什么这样」** | `architecture.md` | — |
| **要把一个话题讲清楚(文字 → 图 → 互动页 三级递进)** | `karpathy-output-ladder/SKILL.md`(**随包子技能**) | — |
| **判断「要不要做/怎么做/能不能先凑合」** | `04-决策方法论.md`(判据正文)+ `dsh-decision-method/`(U/A/X 三份素材库) | — |
| **写语气/去 AI 味** | `作业规矩/04-去AI味与说话方式.md`(**会话场景加固版**,含交付前清单与质量评分)+ `humanizer-en/SKILL.md`(**英文硬核版**:55 模式/5 语气档/0–100 打分) | — |
| **作业总规矩/工作区纪律/多棒接力** | `作业规矩/00-作业总规矩(原 agent-operating-rules).md` + `作业规矩/02-工作区纪律.md` + `作业规矩/03-多棒接力编排.md` | — |
> 📌 **上表三行 2026-10-10 补齐**:`04-决策方法论.md`、`dsh-decision-method/`、`作业规矩/`、`humanizer-en/` 原先只被正文引用、没进本表
> ⇒ 换会话时会被当成孤儿(本包 §二 规则 1 要求「新增文档必须在这张表里登记」)。
> 📌 **`karpathy-output-ladder/` 是随包子技能**(2026-10-07 按用户令从全局 skills 移入本包 `references/`,内容逐字未改)。
> ⚠️ **它的"用法"尚未接线**(用户原话「**后续再看如何使用**」)⇒ 现在只做到"**找得到**":
@@ -1,7 +1,8 @@
---
name: humanizer
description: Detects 55 AI writing patterns and rewrites text in five voice profiles so it reads like a specific human wrote it, with an optional 0-100 AI-tell score. Use when text sounds AI-generated or like a chatbot, when preparing a blog post, README, or LinkedIn post for publication, when auditing prose for AI tells, or when editing a Markdown file in place. Triggers on phrases like "humanize this", "make this sound less AI", "make this sound human", "remove AI tells", "does this read like ChatGPT", and "rewrite so it does not sound AI-generated". Pure Markdown, zero dependencies, no network calls.
user-invocable: true
user-invocable: false
disable-model-invocation: true
argument-hint: '"your text" [--mode detect|rewrite|edit] [--voice casual|professional|technical|warm|blunt] [--file path/to/file.md] [--aggressive] [--iterate N] [--score] [--purpose essay|email|marketing|technical|general] [--openings N] [--ignore-code] [--ignore-quotes]'
allowed-tools:
- Read
-33
View File
@@ -901,39 +901,6 @@ def t_check_cooldown_no_pileup():
("闸⑥ 排在闸⑤ 之后(先精确后兜底)", ok_order)]
@case("🔴🔴 闸⑥ 同类检查冷却期:两种情况 × 每类最多一条 ⇒ 不堆积(用户「不该有任何堆积」)")
def t_check_cooldown_no_pileup():
"""🔴 2026-10-05 立(用户口径逐字:「只有两种情况会创建 定时任务创建会话,不应该又任何堆积」)。
⛔ **病根**(实测,见 `references/pitfalls.md` P0-69):排期名带递增棒次(`第%d棒`)
⇒ 闸⑤「同名去抖」**永不命中** ⇒ 同一种情况可被反复建 ⇒ 自测区 2 小时堆 11 条。
🔴 **判据必须能「改前报红」**(P0-13 同族):
· 删掉闸⑥ 那段 ⇒ ②③④ 全红;
· 把 `_stamp.update(...)` 改回整体覆盖 ⇒ ③ 红(另一类的冷却记忆被抹);
· 把 `CHECK_COOLDOWN_S` 改成 0 ⇒ ① 红。
"""
import inspect as _ins
m = imp()
src = _ins.getsource(m.maybe_spawn_check_agent)
cd = getattr(m, "CHECK_COOLDOWN_S", None)
# ① 冷却常量在位且是「真窗口」(⛔ 0 / None 等于没冷却)
ok_const = isinstance(cd, (int, float)) and cd >= 600
# ② 闸⑥ 在:按 reason 记冷却键(⛔ 只认带引号的字符串拼装,别认注释里的裸串)
ok_key = ('"last_" + reason' in src) or ("'last_' + reason" in src)
# ③ 合并写:⛔ 不许整体覆盖 stamp(覆盖 ⇒ 另一类的 last_* 被抹 ⇒ 闸⑥ 对另一情况失效)
ok_merge = "_stamp.update(" in src
# ④ 顺序:闸⑥ 必须在闸⑤(同名去抖)**之后**(⛔ 顺序颠倒 ⇒ 语义变成"先拦粗的")
p5 = src.find("active_schedule_exists(name)")
p6 = src.find('"last_" + reason')
if p6 < 0:
p6 = src.find("'last_' + reason")
ok_order = p5 >= 0 and p6 >= 0 and p5 < p6
return [("冷却窗口 CHECK_COOLDOWN_S 在位且 ≥10 分钟(实测=%s)" % cd, ok_const),
("闸⑥ 按 reason 记冷却键(同名去抖失效时的兜底)", ok_key),
("stamp 合并写(⛔ 整体覆盖会抹掉另一类的冷却记忆)", ok_merge),
("闸⑥ 排在闸⑤ 之后(先精确后兜底)", ok_order)]
@case("检查会话的 prompt:**引用的命令必须真存在**(⛔ 引用不存在的命令 ⇒ 静默当成功)")
def t_check_prompt_cmds_exist():
"""🔴🔴 2026-10-03 实测坐实:`CHECK_PROMPT` 让检查会话用