/butler — 史记 Wiki 管家永续 Loop

SkillDocs & knowledge

Lets your agent run an endless autonomous loop that creates, improves, and publishes pages on a history wiki.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /butler — 史记 Wiki 管家永续 Loop skill

About this capability

Starts a persistent loop for the shiji-kb (Records of the Grand Historian) Wiki butler. Each round executes one atomic action (W1 pick task → W2 execute → W3/W4 evaluate → bookkeeping), then immediately proceeds to the next round without per-round user confirmation. Supports parallel multi-instance

What this skill tells your AI

The instructions your AI receives, as published by baojie/shiji-kb in .claude/skills/butler/SKILL.md and read by ahel’s review.

授权声明

此 skill 明确授权以下操作,覆盖 CLAUDE.md 的通用限制

  • ✅ 自动循环执行多轮,无需用户逐轮确认
  • ✅ 每 23 轮自动执行 git commit + git push(通过 /wiki skill)
  • ✅ 自动 git add <明确路径>(单个文件,不得用 -A/.

启动参数

参数说明示例
--instance <名>命名实例(太史令/列传家/注疏者/索隐者/刊行者)--instance 注疏者
--focus <类型>专注任务类型(all/create/enrich/housekeeping/publish)--focus enrich

无参数启动 = 太史令模式(all,领取任意任务)。

多实例并发示例

/butler --focus enrich --instance 注疏者      # agent A
/butler --focus create --instance 列传家      # agent B(同时启动)

启动流程

1. 读取项目规范
   cat skills/SKILL_W0_Butler总则.md    ← 每次启动必读,了解不变量
   cat wiki/logs/butler/round_counter.txt
   cat wiki/logs/butler/queue.md
   cat wiki/logs/butler/housekeeping_queue.md

2. ⚠️ 启动强制检查(在做任何工作前):
   # 重复实例检测(有 --instance 时必须检查)
   python3 wiki/scripts/butler/claim_round.py --check-only --instance <实例名>
   若输出 DUPLICATE → 立即停止,勿启动

   grep '"reflect-w5"' wiki/logs/butler/actions.jsonl | tail -1   ← 读 round 字段
   cat wiki/logs/butler/round_counter.txt                         ← 当前 round
   若 (当前 round - 上次 W5 round) > 50 → 立即执行 W5 反思,再进入工作循环
   若未超 50 → 直接进入工作循环

3. 进入永续 loop(详见 W0 §六)
   → 领锁 → 选任务 → 注册页面 → 执行 → 评估 → 记账 → 释放锁 → 暂存 → 周期任务 → 立即下一轮

4. 每轮结束前输出一行摘要:
   [R<轮次>][实例] <动作类型> | <页面名> | accept/fail | <一句描述>

每轮锁操作规范

# 步骤3a:领取轮次锁(每轮开始时必须调用)
ROUND=$(python3 wiki/scripts/butler/claim_round.py --instance <实例名>)

# 步骤3b:候选确定后注册目标页面
python3 wiki/scripts/butler/lock_manager.py set-page --round $ROUND --page <页面名>

# 步骤3c:写入前检测冲突
python3 wiki/scripts/butler/lock_manager.py check-page --page <页面名> --round $ROUND
# exit 1 = 冲突,跳过此页,换下一个候选

# 步骤3d:写入(add_page.py / edit_page.py)+ 记账
python3 wiki/scripts/butler/record_action.py \
    --round $ROUND --action <类型> --page <页面名> --status accept \
    --instance <实例名> --note "<描述>" --reflect "<观察>"

# 步骤3e:释放锁(每轮末尾必须调用,即使 fail/skip)
python3 wiki/scripts/butler/release_round.py $ROUND

周期任务(W5/publish)用 increment_round + --skip-lock-check

ROUND=$(python3 wiki/scripts/butler/increment_round.py)
# ... 执行 W5 或 /wiki ...
python3 wiki/scripts/butler/record_action.py --round $ROUND --action publish \
    --page wiki --status accept --skip-lock-check --note "R...→... × N页"

暂停条件

只有以下情况才停止循环(详见 W0 §六"暂停条件"):

  • 用户明确说"停止"/"pause"
  • W5 反思提案需要 review
  • 连续 5 轮全部 fail
  • 上下文窗口将满

每轮输出格式

每轮结束输出一行,格式(有实例名时带方括号标注):

[R10813][注疏者] enrich-biography | 韩信 | accept | 补全战役年表,散文2节
[R10814][列传家] create-page      | 苏武 | accept | 从匈奴列传创建人物页
[R10815][索隐者] fix-links        | 鸿门宴 | accept | 链接化曹无伤/项庄 2处

每 23 轮额外输出:

[R10823][刊行者] /wiki 发布 → commit abc1234 · R10801→10823 wiki更新 × 23页

工作目录

/home/baojie/work/knowledge/shiji-kb

所有路径均相对于此目录。

相关 Skill

可用工具 Skill(执行动作时可调用)

Skill触发方式用途
/map PAGE [时代]页面 type=place 且 frontmatter 有 coords,需配谭图自动裁切《中国历史地图集》;调用时必须加 --write(自动写 frontmatter + 记 revision),否则 Special:Recent 不可见
/quote PAGE需要补全 ## 史记引文扫描实体标注文件,找实体级引用(非裸字符匹配),精确到年表行
/enrich PAGE [目标档]需要升级页面质量档位诊断质量缺口(节/散文/引文/图),执行补充操作并验证

Butler 何时调用这些 Skill

  • add-war-map:改为调用 map_page.py PAGE --write(若页面有 coords),否则走原有手动流程
  • enrich-biography / premium-upgrade:先调用 /quote PAGE 收集引文候选,再写散文;或直接调用 /enrich PAGE featured/premium
  • fetch-image 已确认无 Wikimedia 图,页面 type=place:调用 map_page.py PAGE --write 作为替代配图方案

Signals

GitHub stars
3k
Forks
425
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
butler
Source
github.com/baojie/shiji-kb