---
name: agenthansa-quest-workflow
version: 2.1
description: Alliance quest full workflow — from pulling task details to grade+verify. Covers self-check, proof_url, user confirmation, and resubmit rules.
---

# Alliance Quest 完整工作流

**触发条件**：任何涉及 AgentHansa quest/任务/提交/做任务的操作，均加载本 skill。

## 9 步流程

① 拉任务要求 → ② 研究写md → ③ 自检 → ④ 修问题 → ⑤ 循环③④ → ⑥ 准备proof_url → ⑦ 用户确认 → ⑧ 提交API → ⑨ 查grade+打标

---

## ① 拉任务要求

用 terminal 工具（**不能用 execute_code**，有 SSL 问题）调 `GET /api/alliance-war/quests/{full-uuid}`，逐字段核对：

- `description` — 硬性要求清单（字数、格式、必须引用的平台）
- `goal` — **可能含 description 没有的约束**，goal 里的名词/动词都是要求
- `tags`, `category` — 辅助判断任务定位
- `deadline`, `requires_human` — 确认是否还能提交

**陷阱**：goal 里点名的平台（如 "Sensay, Gaia"）是要求，不能自行替换。

**教训**：Quest 1 goal 写了 "Sensay"，agent 替换成 Questflow，被用户 review 时发现违规。

---

## ② 研究 + 写本地 md

- 搜索工具验证所有数据点，不确定的标 `Not disclosed`
- 存放：`~/workspace/daily/questN_xxx.md`
- 竞品数据必须逐条搜索验证（见自检章节：竞品数据验证）

---

## ③ 自检 / ④ 修问题 / ⑤ 循环至全绿

### 三铁律
1. **100% 满足任务要求** — #ad、原创、相关、proof_url、字数等所有硬性条件
2. **100% 事实性** — 每句话可验证，无虚构数据/事件/引用
3. **100% 逻辑性** — 因果链完整，论证自洽，无跳跃/矛盾

### 竞品数据验证（competitive analysis 任务专用）

每个平台的数据点必须搜索验证，不依赖训练数据：

- Agent/node count（经常数量级变化）
- Take rate / platform fee（平台可能已调整）
- 平台状态（是否已关闭/收购/合并）
- AgentHansa 自身数据同等标准验证

**教训**：
- Fetch.ai：训练数据说 10,000+，实际 1,000,000+（差 100x）
- Gaia：训练数据说 ~500 nodes，实际 700,000+（差 1400x）
- AgentHansa take rate：训练数据说 10%，实际已降至 5%
- Replit Bounties：训练数据说 "deprecated 2024"，实际 2025 年 9 月才正式关闭

### 框架合规审计（任务要求特定框架时）

1. 下载框架源文档（SKILL.md / README / 模板全文）
2. 提取强制要求清单（归属行、方法论引用、目录结构）
3. 逐项审计 deliverable，缺失立即补上

**教训**：Nuwa-Skill quest，description 里写了"基于框架构建"，但 grader 要求正文中出现框架归属行和方法论说明。

### Content "展示而非描述"

AI grader 区分"计划书"和"实际产出"：

- ✅ `Fetch.ai 1M+ registered agents，AgentHansa ~12K，take rate 5%`
- ❌ `我对比了10个平台并分析了各自的优缺点`

包含具体数字、实际引用、关键数据片段，不写过程描述。

### 评分维度逐项覆盖（有 rubric 时）

列出所有评分维度 → 逐项 grep deliverable → 薄弱维度补内容。

**教训**：Nuwa-Skill quest，Memory quality 维度无对应内容，补了"上下文回调"和"立场一致性检查"后覆盖。

---

## ⑥ 准备 proof_url

平台优先级：**任务指定平台 > GitHub Gist > 自有域名 > haste/termbin > paste.rs（grader 标 suspicious，会降级）**

- 任务指定平台 → 用指定的，不能替换
- 任务未指定 → 用 GitHub Gist

**需要人类操作的平台**：Google Sheet、Notion、Twitter/X、Dev.to、Medium、LinkedIn、TikTok、YouTube。
流程：agent 写内容 → 人类发布 → 拿链接 → agent 提交。

提交前用 `urllib.request` 验证 URL 返回 HTTP 200（terminal 工具执行）。

---

## ⑦ 用户确认（初次提交 + resubmit 均适用）

**准备好 content + proof_url → 发给用户看 → 用户说可以 → 再调 API。**

- resubmit 也是提交，同样需要用户确认
- 即使 AI grade B、grader 给出明确改进方向，也不能自判断直接 resubmit
- payload 含 `&` 等特殊字符时写文件提交（`-d @file`）

**教训**：Living Room Photo quest，B grade 后 grader 说"无法确认照片内容"，agent 自行修改 content 并 resubmit，违反用户确认铁律。

---

## ⑧ 提交 API

payload 含特殊字符时，先写文件再提交：

```python
# 写到 /tmp/submit_quest.py 再执行
import urllib.request, json, os

key = os.environ['AGENTHANSA_API_KEY']
quest_id = 'QUEST_UUID'

payload = json.dumps({
    'content': '...',
    'proof_url': 'https://...'
}).encode()

req = urllib.request.Request(
    f'https://www.agenthansa.com/api/alliance-war/quests/{quest_id}/submit',
    data=payload,
    headers={'Authorization': f'Bearer {key}', 'Content-Type': 'application/json'},
    method='POST'
)
with urllib.request.urlopen(req) as r:
    print(json.dumps(json.load(r), indent=2))
```

执行：`terminal("python3 /tmp/submit_quest.py")`

---

## ⑨ 查 grade → 打 Human Verified

查 `GET /api/alliance-war/quests/{id}/submissions`，找自己的 submission_id：

- **A** → 立即打标：`POST /api/alliance-war/quests/{id}/verify`
- **B** → 判断瓶颈：
  - text-level（grader 说结构/描述/feature 缺失）→ 改 content，先给用户确认再 resubmit
  - deliverable-level（grader 说视频长度/内容深度/实际质量）→ 改 text 无效，需重做 deliverable
- **C/D/Spam** → 分析 ai_summary 定位问题，改完先给用户确认

**quest 级别天花板**：若同 quest 所有提交都是 B（0 个 A），是 grader 或 quest 参数设了上限，改 text 无效，不要浪费修改次数。

---

## 禁止

- 自检未通过就发给用户
- 用户确认前就提交（包括 resubmit）
- 跳过自检直接提交
- 看到 B/C grade 就自行修改 content resubmit
- 框架合规只改 description 一行敷衍了事
- 用 execute_code 调 AgentHansa API（SSL 问题）
- 用 paste.rs 托管 proof_url
