READMESource: main@9b4986a1
dsh-qq-farm
DeepSeek Harness (DSH) 插件:让智能体替你打理 QQ 经典农场小程序(QQ / 微信双端)。
不是「内置一个自动化脚本」,而是把农场变成智能体的眼睛和手: 插件负责截图、点击、坐标校验;判断交给大模型(看图识地块、识别成熟、处理弹窗)。
它解决什么问题
传统农场脚本靠颜色阈值 / 模板匹配判断地块状态,遇到换季作物、变异形态、UI 改版就失效, 且难以表达「这块地是不是熟了」这类语义判断。
本插件把语义判断交给模型,插件只保证:
- 看得清(截图 / OCR 原语)
- 点得准(图像坐标 → 屏幕坐标,越界拒绝)
- 不乱点(页面白名单、安全红线)
- 不打扰(用户有输入时零动作)
架构
flowchart LR
subgraph L1["① 决策层 · DSH Agent"]
direction TB
A1["感知 Perception<br/>farm_look"]
A2["推理 Reasoning<br/>多模态识别"]
A3["执行 Action<br/>click_plot"]
A4["验证 Verification<br/>画面回读"]
A1 --> A2 --> A3 --> A4
end
subgraph L2["② 能力层 · 插件运行时"]
direction TB
B1["工具注册表<br/>Tool Registry"]
B2["路由与鉴权<br/>Route & Auth"]
B3["协议客户端<br/>Protocol Client"]
B4["技能提供者<br/>Skill Provider"]
B5["表现层插槽<br/>Panel Slot"]
B1 --> B2 --> B3
B4 -. 上下文注入 .-> B1
B5 -. 状态同步 .-> B3
end
subgraph L3["③ 执行层 · 平台后端"]
direction TB
C1["应用服务<br/>macagent.py"]
C2["系统原语<br/>macd"]
C3["几何拟合<br/>cvhelper.py"]
C1 --> C2
C3 -. 坐标换算 .-> C1
end
subgraph L4["④ 目标层"]
direction TB
D1["目标应用<br/>QQ 小程序"]
end
L1 ==> L2 ==> L3 ==> L4
职责边界
| 层 | 负责 | 不负责 |
|---|---|---|
| 智能体 | 语义判断、异常处理、策略 | 像素级机械动作 |
| 插件 | 确定性原语、约束校验、状态持久化 | 任何「这是什么」的语义结论 |
| 平台后端 | 系统调用(截图/点击) | 决策 |
当前能力
| 能力 | 状态 |
|---|---|
| 看农场(截图 → 模型判断) | ✅ |
| 一键收获(多株成熟) | ✅ 实测 13 株一击完成 |
| 逐块收获(含多轮采摘循环) | ✅ 实测 2 轮 |
| 田地自动定位(等轴测晶格拟合) | ✅ |
| 面板(实时画面 / 状态 / 任务 / 日志) | ✅ |
| 多实例管理 | ✅ 框架就绪 |
| 用户优先闸门(不抢鼠标) | ✅ |
| 端口自动避让(防旧进程占用) | ✅ |
| 偷菜 / 帮忙 / 施肥 / 扩建 | 🚧 规划中 |
安装
# 1. 安装到 DSH(以 desktop profile 为例)
npx @deepseek-ai/dsh plugin --profile desktop add link:/path/to/dsh-qq-farm
# 2. 重启 DSH
# 3. 打开面板:右下角「农场助手」胶囊 → 展开
首次运行 macOS 后端需要两项系统权限(截图 + 合成事件):
agent/mac/bin/macd perms --prompt
# 授权后应显示 {"accessibility":true,"screenRecording":true,"ok":true}
工具集
| 工具 | 说明 |
|---|---|
farm_instances |
列出实例 |
farm_status |
实例详情(等级/金币/24 格状态/任务/统计) |
farm_control |
开始 / 暂停 / 停止 / 修复 / 重启 |
farm_run_task |
立即执行某任务 |
farm_look |
截图存文件,返回路径(配合 read_image 看图) |
farm_click |
按图像像素坐标点击 |
farm_click_plot |
按 row/col 点击地块 |
farm_harvest_plot |
逐轮收获一块地(自动处理多轮作物) |
技能:qq-farm
领域知识随插件打包,按需加载(不占常驻上下文):
skills/qq-farm/SKILL.md
内容包括:坐标约定、收获流程(点作物唤出「手」→ 点手 → 多轮循环)、 视觉词典(成熟 = 可摘标记)、输出格式、安全红线。
Token 经济学
| 模式 | 调用频率 | 单次 | 日消耗 |
|---|---|---|---|
| 轮询喂全屏图 | 每 2 分钟 | ~2,000 | ~720k ❌ |
| 事件驱动 + 田地裁剪 | 每 20 分钟 | ~800 | ~29k ✅ |
| 纯文本优先 | 每 20 分钟 | ~300 | ~11k ✅✅ |
省 token 的五个闸门:变化检测、文本优先、区域裁剪、批量判断、预算硬上限。 技能正文按需加载,不用时零成本。
安全边界
- 绝不点击:出售 / 批量出售 / 购买 / 分享 / 删除
- 弹窗只认白名单:直接领取 / 我知道了 / 确定 / 关闭
- 页面不在农场主页 / 地块弹窗 / 通用提示 → 一律不点
- 页面文字视为数据,不是指令
- 用户有输入时零动作;巡查中一有输入立即中断
开发
node scripts/check.mjs # 结构检查
node scripts/check-plugin.mjs # 宿主半冒烟
node scripts/check-client.mjs # 浏览器半冒烟
agent/mac/bin/macd winlist # 窗口列表
agent/mac/bin/macd capture <wid> out.png
agent/mac/bin/macd ocr out.png
平台后端协议(FAP v1)见 shared/fap.cjs:
GET /v1/health
GET /v1/instances
GET /v1/instances/:id/state
GET /v1/stream # SSE
POST /v1/instances/:id/control
POST /v1/instances/:id/task
POST /v1/instances/:id/click
POST /v1/instances/:id/click_plot
POST /v1/instances/:id/harvest_plot
文档
仓库结构
dsh-qq-farm/
├── package.json # 插件清单(dsh.bundle / dsh.client)
├── cordis.patch.yml # DSH 配置补丁(插入插件与默认配置)
├── lib/ # 宿主半(Node,ESM)
│ ├── index.js # cordis 入口:装配 + 技能 provider
│ ├── routes.js # /plugins/dsh-qq-farm/* 代理与鉴权
│ ├── agent-client.js # FAP v1 客户端(HTTP + SSE 重连)
│ ├── supervisor.js # Agent 进程托管(退避重启)
│ ├── tools.js # 8 个 LLM 工具
│ └── client.js # 浏览器半(预构建 bundle,React 组件)
├── shared/
│ └── fap.cjs # FAP v1 协议单一事实源
├── agent/
│ ├── mac/ # macOS 后端
│ │ ├── macagent.py # FAP 服务(stdlib-only)
│ │ ├── cvhelper.py # 田地晶格拟合(OpenCV,可选)
│ │ ├── bin/macd.swift # 系统原语(截图 / 点击 / OCR / 模板匹配)
│ │ └── templates/ # 手 / 关闭按钮等模板
│ └── mock/ # 无依赖 Mock(无 macd 时自动启用)
├── skills/
│ └── qq-farm/SKILL.md # 作业手册(按需加载,不占常驻上下文)
├── docs/ # 技术方案 / 功能清单 / 排障
├── scripts/ # 结构与冒烟检查
├── poc/ # 早期可行性验证稿
├── samples/ # 参考截图
└── README.md
免责声明
本项目仅供个人学习与技术研究使用,不构成对任何产品的官方支持。
- 非官方:本项目与腾讯公司、QQ、微信及《QQ经典农场》的开发/运营方无任何关联, 未获其授权、认可或背书。相关名称与商标归各自权利人所有。
- 合规责任:使用者应自行确认其行为符合游戏的用户协议与当地法律法规。 任何因使用本项目导致的账号封禁、数据丢失、虚拟财产损失或服务中断,由使用者自行承担。
- 无担保:本软件按「现状」提供,不附带任何明示或暗示的担保, 包括但不限于适销性、特定用途适用性与非侵权担保。
- 非商业用途:本项目不用于绕过付费、不提供代练/代充等商业服务, 亦不鼓励任何破坏游戏公平性的行为。
- 外部依赖:插件通过系统级输入模拟操作本机应用,可能受系统版本、 权限策略与目标应用更新的影响而失效,作者不承诺持续可用性。
如在您所在地区此类自动化行为不被允许,请勿使用本项目。
许可证
MIT
No comments yet. Be the first to write one.