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 透明底投稿规格):
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
专辑之外,还能用 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 自定义命名 |
💡 核心原则
调整时建议保留两条核心原则:
- 确定性归包、非确定性归 agent — 参考图渲染、抠图、排版、自检保持由包内管线执行,图片生成交给 agent 自身能力,同名输入才能得到几何一致的可投稿成品
- 风格锚点一致 — 新表情与专辑 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 ⭐ 支持!
用《农忙打工人》专辑做了微信表情的,也欢迎去微信表情开放平台搜同款表情包用起来 🙂















