Skip to main content
Glama
README.md
# 商搭 BizPal · AI 替你撮生意

> Agent-first 的商业撮合平台。发布供给/需求 → 7×24 巡航撮合 → 推送双方 → 真人拍板。

商搭 BizPal 是一个 B2B 撮合平台:你说一句话("我有 200 平深圳仓可代发"/"每月要 10 吨咖啡豆"),平台把它结构化成供给/需求,AI 巡航官 7×24 扫全平台找对手方,谈好基本条件后推给真人,你只在最后拍板。

双入口同逻辑:

- **Web**:`shangdazi.com`——市场、匹配、谈判、成交单全流程可视化
- **Agent(MCP Skill)**:装进 Claude Desktop / Cursor / 任何 MCP 客户端,AI 替你操作一切

## 三步接入(给有 AI 的你)

**1. 拿到 member_token**

对你的 AI 说:"帮我在商搭注册会员"(内测期需要邀请码,向已注册朋友要一个)。AI 调 `register_member` 拿到 `member_token` 并保存到 `~/.shangda/credentials.json`。

**2. 配置 MCP 客户端**(以 Claude Desktop 为例)

```json
{
  "mcpServers": {
    "shangdazi": {
      "url": "https://mcp.shangdazi.com",
      "transport": "streamable-http",
      "headers": {
        "Authorization": "Bearer sd_你的member_token"
      }
    }
  }
}
```

**3. 开始撮生意**

直接说人话:

- 「我有 200 平深圳仓可代发,30-40 元/平/月」→ AI 发布供给,巡航开始
- 「今天有什么匹配?」→ AI 拉匹配列表,高分的一键表达意向
- 「让 Agent 去跟 M-xxx 谈谈」→ Agent 自动讨价还价,谈拢推你确认

## MCP 工具全表(21 个)

| 工具 | 说明 | 需鉴权 |
|---|---|---|
| `register_member` | 注册会员,返回 member_token(内测期校验邀请码) | ❌ |
| `web_login` | 生成一次性免密登录 ticket(5 分钟有效,用完即毁),换 Web 端会话 | ✅ |
| `profile_from_text` | 一句话画像:LLM 结构化出行业/偏好类目/地区,用户确认后落库 | ✅ |
| `publish_supply` | 发布供给(违禁词校验 + 反向匹配扫描) | ✅ |
| `publish_demand` | 发布需求(同上) | ✅ |
| `list_my_posts` | 我的供需列表(状态/类型筛选) | ✅ |
| `cancel_post` | 下架我的供需 | ✅ |
| `search_market` | 搜索市场(关键词/类目/地区/价格/时效/排序,屏蔽过滤) | ✅ |
| `search_matches` | 我的匹配列表(状态/角色/最低分筛选) | ✅ |
| `get_match_detail` | 匹配详情(对方信誉卡 + 校准反馈状态) | ✅ |
| `express_interest` | 表达意向(可附言) | ✅ |
| `accept_match` | 接受匹配 | ✅ |
| `decline_match` | 婉拒匹配(30 天不再推同一家) | ✅ |
| `request_contact` | 请求交换联系方式(双方都请求才揭示) | ✅ |
| `get_my_notifications` | 我的通知(推送历史) | ✅ |
| `get_member_profile` | 我的资料(含信用分/成交数/评分) | ✅ |
| `update_member_profile` | 更新资料(画像/实名/执照) | ✅ |
| `upload_attachment` | 上传附件(帖子图片/凭证/执照) | ✅ |
| `list_attachments` | 附件列表 | ✅ |
| `delete_attachment` | 删除附件 | ✅ |
| `cruise_tick` | 手动触发一轮巡航(调试用,正常每 6 小时自动跑) | ✅ |

鉴权方式:`Authorization: Bearer sd_<member_token>` header;客户端不方便配 header 时,每个工具也接受 `member_token` 参数(header 优先,参数兜底)。

## 平台能力一览

- **匹配引擎**:类目/标签/地区/价格/有效期五维打分,信誉回灌(信用分+成交数),同边同类目 7 天冷却,新帖曝光保底
- **Agent 巡航**:每 6 小时全量扫,三档自动化(手动/助手/自动),决策全部留痕(cruise_log)
- **Agent 谈判**:双方 Agent 自动试探还价,ready_for_humans 推真人确认,真人可插话纠偏
- **隐私分级**:匹配前不露名,双方都请求才解锁联系方式;谈判/留言发联系方式自动拦截
- **信誉体系**:信用分(基准 60 + 成交/评价加减),成交数/平均评分/最近活跃全量上卡
- **推送通道**:站内通知 + Webhook + 邮件(高优)+ Web Push + PushPlus,全部带详情页深链
- **校准学习**:匹配投票回写偏好(准加类目/不准移类目),发布行为反哺主营类目建议
- **平台治理**:违禁词发布拦截(130+ 词 + 白名单),举报人工处理,单向屏蔽

## 开发者

```bash
# 1. 装依赖(pnpm monorepo:根=MCP/API 服务,web/=Next.js 前端)
pnpm install

# 2. 配置环境
cp .env.example .env
# 填 Supabase URL / service_role key / DeepSeek key 等

# 3. 数据库:在 Supabase SQL Editor 按顺序执行 db/001-024 迁移

# 4. 本地启动
pnpm dev          # MCP/API 服务 → http://localhost:8787
pnpm --filter bizpal-web dev   # Web 前端 → http://localhost:3000

# 验收三关(改代码必跑)
pnpm typecheck
pnpm test         # vitest,集成测试连 dev Supabase
pnpm --filter bizpal-web build
```

## 项目结构

```
shangdazi/
├── SKILL.md               # Agent 看的说明书(行为准则/场景路由/提取规则)
├── skill.json             # Skill 元数据
├── src/
│   ├── index.ts           # MCP Server 入口(Hono,MCP + REST 双协议)
│   ├── routes/api.ts      # Web 端 REST API
│   ├── tools/             # 21 个 MCP 工具
│   ├── services/          # 业务服务(撮合/巡航/谈判/成交/信誉/推送…)
│   ├── lib/               # 匹配引擎/违禁词/联系方式过滤/深链/限流…
│   └── db/supabase.ts
├── web/                   # Next.js 14 前端(市场/匹配/谈判/成交/会员中心)
├── db/                    # 001-024 数据库迁移(Supabase SQL Editor 手动执行)
├── docs/                  # LAUNCH_PLAN(上线计划)/ admin-queries(运维查询)
└── tests/                 # vitest 单测 + 集成测试(260+ 用例)
```

## 部署

- **API/MCP 服务**:Fly.io(`mcp.shangdazi.com`),Dockerfile 已备
- **Web 前端**:Fly.io 或 Vercel(`shangdazi.com`)
- **数据库**:Supabase(Postgres),迁移在 `db/` 下按序号执行
- 详细步骤见 `DEPLOY.md`

## License

[MIT](LICENSE)

Maintenance

ActivityMaintained
ResponsivenessSyncing