Back to home@jonnycafong

office-farmer-emoji

🧑‍🌾 agent 通用 skill / npm 包:把中国农村传统农具画成「搪瓷缸怀旧质感 + 打工人梗」的微信表情包(CLI / 编程 API / DSH 插件三种接入)

Stars
1
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 21, 2026

Introduction

🧑‍🌾 office-farmer-emoji

把中国农村传统农具画成「搪瓷缸怀旧质感 + 打工人社交梗」的微信表情包

锄禾 = 摸鱼 · 镰刀 = 又被割了 · 水桶 = 提桶跑路 · 簸箕 = 退退退!

📖 关于本项目

这是一个 agent 通用 skill / npm 包:内置《农忙打工人》专辑 16 张成品模板 + 任意新农具的两阶段制作流水线,产出 240×240 微信表情投稿规格成品。

  • agent 通用:CLI / 编程 API / DSH 插件三种接入方式,不绑定任何 agent 框架
  • 确定性管线:参考图渲染、抠图、楷体红字排版、规格自检全部由包完成——同名输入得到几何一致的可投稿成品
  • 投稿即用:240×240 透明底 PNG、单张 ≤500KB、四项规格自检全 PASS
  • ❌ 不是滤镜、照片重画或风格迁移——专注怀旧农具拟人表情这一件事

🖼️ 示例作品

《农忙打工人》专辑全套 16 张(240×240 透明底投稿规格):

锄头·锄禾=摸鱼镰刀·又被割了扁担·压力好大簸箕·退退退!
犁·深耕KPI钉耙·捞一把就走石磨·让我缓缓独轮车·带上我!
扫帚·扫走霉运水桶·提桶跑路风箱·打起精神蓑衣·风雨无阻
斗笠·勿扰隐身中铡刀·一刀两断连枷·连环暴击扬锨·扬眉吐气

专辑之外,还能用 craft 流水线制作任意新农具(目录内置 24 件结构图鉴,目录外自由描述):

node bin/cli.mjs craft --tool 背篓 --text 背着KPI

📋 目录

🚀 使用方法

方式一:CLI(任何有 shell 的 agent)

cd github
npm install                       # Node.js >= 18(sharp 依赖要求)

node bin/cli.mjs catalog                          # 24 件农具图鉴(结构描述+示例梗)
node bin/cli.mjs album --keyword 摸鱼             # 专辑成品(可 --gif --motion wiggle 出动图)
node bin/cli.mjs album --id tool_10 --caption 提桶跑路   # 换底部梗字
node bin/cli.mjs craft --tool 背篓 --text 背着KPI  # 新农具两阶段制作(见下节)

成功输出 JSON(stdout),错误输出 stderr 并以非零码退出,方便 agent 解析。

方式二:编程 API(Node 程序 / 自定义 agent 工具)

import { renderSticker, craftSticker } from 'office-farmer-emoji'

const { buffer, entry } = await renderSticker({ keyword: '摸鱼' })

const p1 = await craftSticker({ tool: '背篓', text: '背着KPI' }, { craftDir, outDir })
// …agent 生成白底图后…
const p2 = await craftSticker({ imagePath: 'gen.jpg', specPath: p1.specPath }, { craftDir, outDir })

方式三:DeepSeek Harness(DSH)插件

dsh plugin --profile web add /path/to/office-farmer-emoji/github
# 并在 $DSH_HOME/profiles/web/cordis.patch.yml 注册 office-farmer-emoji,然后 dsh web

注册后 agent 获得 generate_sticker / craft_sticker 两个工具(参数与 CLI 一一对应)。

🔄 两阶段流水线

制作一张新农具表情的完整分工:

用户:「帮我做一张石碾表情,配"慢慢碾"」
  │
  ├─ ① album --keyword 摸鱼                    ← 查看风格模板(可选)
  ├─ ② craft --tool 石碾 --text 慢慢碾 --structure '...'   ← 阶段一·备料
  │     → 结构参考图 + 风格锚点 + 图生图提示词 + 制作单 spec.json
  ├─ ③ agent 图生图(参考图×2 + 提示词)        ← 非确定性步骤,agent 执行
  │     → 白底农具图(纯白背景、无文字、无描边)
  └─ ④ craft --imagePath ... --specPath ...    ← 阶段二·成品化
        → 抠图 + 楷体红字白描边 + 240×240 透明底 + 规格自检全 PASS

🎛️ 可自由调整的部分

这套流水线应当被视为高质量起点,请按自己的需求调整:

参数说明
🪝 梗文字--text ≤10 字为佳;专辑成品可用 --caption 换字(同款楷体红字白描边)
🏷️ 含义词--meaning 微信投稿标签词 ≤4 字,不填自动取梗字前 4 字
🎬 动图动画--gif --motion bounce/wiggle/shake/blink,透明底 GIF,仅限专辑 16 件
🛠️ 目录外农具--structure '结构描述' 自由扩展任意农具(石碾、耙子、秧马……)
📦 输出目录--out <dir>(默认 ./workspace/memes),--slug 自定义命名

💡 核心原则

调整时建议保留两条核心原则:

  1. 确定性归包、非确定性归 agent — 参考图渲染、抠图、排版、自检保持由包内管线执行,图片生成交给 agent 自身能力,同名输入才能得到几何一致的可投稿成品
  2. 风格锚点一致 — 新表情与专辑 16 张成品放在一起看不出风格差异:奶白微暖底色、瓷红 #D8433B 点缀、掉瓷斑驳、黑豆眼极简表情、底部楷体红字白描边、绝无描边线框

📁 内容结构

github/                # npm 包本体(CLI + 编程 API + DSH 插件)
├── SKILL.md           # Agent 使用说明(两阶段流程 / 分工原则 / 命令参考)
├── bin/cli.mjs        # 通用 CLI(catalog / album / craft,JSON 输出)
├── lib/               # 专辑引擎 / 制作流水线 / 24 件农具目录 / 通用入口
├── assets/            # 16 张投稿成品 + 无文字素材 + 图生图风格锚点
├── scripts/ + test.mjs# 素材重建脚本 + 54 项冒烟测试
└── package.json       # Node.js >= 18,sharp + gifenc

📄 许可证

本项目基于 MIT License 开源。

如果这个项目对你有帮助,欢迎 Star ⭐ 支持!

用《农忙打工人》专辑做了微信表情的,也欢迎去微信表情开放平台搜同款表情包用起来 🙂