# tide_1 **Repository Path**: gitlyl/tide_1 ## Basic Information - **Project Name**: tide_1 - **Description**: 自动化Agent私有小龙虾,头条搬砖专业小龙虾开箱即用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-05 - **Last Updated**: 2026-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TIDE - 技术内容自动化Agent流水线 技术文章跨平台自动采集 → AI重写 → 人工审核 → 队列发布 → 多平台分发 → 机器人通知/控制 --- ## 系统要求 | 依赖 | 版本 | 说明 | |------|------|------| | **Go** | 1.21+ | 必需 | | **GCC / C 编译器** | 任意 | 仅使用 `mattn/go-sqlite3`(CGO)时需要;使用纯 Go SQLite(默认)可跳过 | | **Docker** | 任意 | 可选,容器化部署时使用 | > **注意**:本项目默认使用 `glebarez/sqlite`(纯 Go 实现,无需 GCC/CGO),可在任意平台零依赖直接编译。 --- ## 快速开始(本地开发) ### 1. 环境准备 #### 安装 Go 从 [https://go.dev/dl/](https://go.dev/dl/) 下载并安装 Go 1.21+。 验证安装: ```bash go version # 应输出: go version go1.21.x ... ``` #### 配置 GOPATH 和 GOOS(Windows 用户注意) > **重要**:若你的 Go 环境中 `GOOS` 被设置为 `linux`(交叉编译场景),在 Windows 本地构建时必须显式指定为 `windows`。 ```powershell # 检查当前环境 go env GOOS GOARCH CGO_ENABLED # 若 GOOS 不是 windows,临时覆盖(PowerShell) $env:GOOS = "windows" $env:CGO_ENABLED = "0" ``` ### 2. 克隆并安装依赖 ```bash git clone cd tide go mod download ``` ### 3. 启动服务 ```powershell # Windows(PowerShell / CMD) $env:GOOS = "windows" $env:CGO_ENABLED = "0" go run ./cmd/tide-all/ ``` ```bash # Linux / macOS CGO_ENABLED=0 go run ./cmd/tide-all/ ``` 服务启动后,终端会打印默认管理员用户名和密码,然后访问: ``` http://localhost:8080 ``` **首次使用步骤:** 1. 使用终端打印的 `admin` 账号和密码登录 2. 进入 **Settings** → 点击 **"初始化默认配置"** 3. 编辑 AI模型 / 机器人 / 发布平台 配置(API Key / Webhook 等) 4. 启用对应开关 → 重启服务即生效 --- ## 编译构建 ```powershell # Windows(无需 GCC,纯 Go 静态编译) $env:GOOS = "windows"; $env:CGO_ENABLED = "0" go build -o tide.exe ./cmd/tide-all/ .\tide.exe ``` ```bash # Linux / macOS CGO_ENABLED=0 go build -o tide ./cmd/tide-all/ ./tide ``` ```bash # Windows → Linux 交叉编译(在 Windows 上编译 Linux 二进制) $env:GOOS = "linux"; $env:GOARCH = "amd64"; $env:CGO_ENABLED = "0" go build -o tide-linux ./cmd/tide-all/ ``` > 编译产物 `tide`(或 `tide.exe`)包含全部功能(Dashboard + Agent + 调度 + 机器人),生产环境只需这一个二进制。 --- ## 运行测试 ```powershell # Windows:全量测试 $env:GOOS = "windows"; $env:CGO_ENABLED = "0" go test ./... ``` ```bash # Linux / macOS:全量测试 CGO_ENABLED=0 go test ./... ``` **预期输出(所有包均通过):** ``` ok tide/internal/ai 0.17s ok tide/internal/pipeline 0.37s ok tide/internal/publisher 4.86s ok tide/internal/skill 0.24s ok tide/internal/storage 1.10s ok tide/pkg/adk 0.81s ``` ```bash # 带详细输出运行核心存储层测试 CGO_ENABLED=0 go test ./internal/storage/ -v # 静态代码检查 go vet ./... ``` --- ## Docker 部署 ### 方式一:docker-compose(推荐) ```bash # 构建并启动(SQLite 模式,数据持久化到 Docker Volume) docker-compose up -d # 查看日志 docker-compose logs -f tide # 停止 docker-compose down ``` ### 方式二:手动 Docker 构建 ```bash # 构建镜像 docker build -t tide:latest . # 运行(SQLite) docker run -d \ --name tide \ -p 8080:8080 \ -v tide-data:/app/data \ tide:latest # 运行(MySQL) docker run -d \ --name tide \ -p 8080:8080 \ -e TIDE_DB_DRIVER=mysql \ -e "TIDE_DB_DSN=root:pwd@tcp(mysql-host:3306)/tide?charset=utf8mb4&parseTime=True&loc=Local" \ tide:latest ``` ### 方式三:MySQL 模式 编辑 `docker-compose.yml`,取消 MySQL 相关注释,注释掉 SQLite 部分的 `tide` 服务,然后: ```bash docker-compose up -d ``` --- ## 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `TIDE_DB_DRIVER` | `sqlite` | 数据库类型:`sqlite` / `mysql` | | `TIDE_DB_DSN` | `tide.db` | 数据库连接串 | | `TIDE_PORT` | `8080` | Dashboard 端口 | | `TIDE_SCHEDULE_ENABLED` | `false` | 定时调度开关(爬取/重写/发布) | --- ## 启动方式 ### 生产部署(All-in-One) ```bash # 源码运行 CGO_ENABLED=0 go run ./cmd/tide-all/ # 或编译后运行 CGO_ENABLED=0 go build -o tide ./cmd/tide-all/ && ./tide ``` `tide-all` 包含全部功能:Dashboard Web UI + AI Agent + 机器人长连接 + 定时调度 + 审核 + 发布队列。 **生产环境只需部署这一个二进制。** ### 开发辅助工具(可选) | 命令 | 编译 | 用途 | |------|------|------| | `go run ./cmd/dashboard/` | `go build -o tide-dashboard ./cmd/dashboard/` | 仅 Dashboard(不启动 Agent/机器人) | | `go run ./cmd/demo/` | `go build -o tide-demo ./cmd/demo/` | 一次性全链路演示(需 DeepSeek Key) | | `go run ./cmd/mock_demo/` | `go build -o tide-mock ./cmd/mock_demo/` | 一次性 Mock 全链路演示(无需 Key) | | `go run ./cmd/skill_demo/` | `go build -o tide-skill ./cmd/skill_demo/` | 单独测试机器人通知 | > 所有 `go run` / `go build` 命令在 Windows 上执行时,请确保 `$env:GOOS="windows"` 和 `$env:CGO_ENABLED="0"`。 --- ## 核心工作流 ``` 采集(Crawl) → AI重写(Rewrite) → 人工审核(Review) → 发布队列(PublishJob) → 平台发布(Publish) ``` - **审核**:重写完成后进入"待审核",管理员在 Dashboard 通过/拒绝 - **发布队列**:审核通过后创建 PublishJob,支持定时调度、失败重试(最多 3 次) - **真实发布**:已对接微信公众号(草稿→群发)、头条号 API;未配置时自动 Mock --- ## 机器人对话控制 在群里 @机器人 发命令: - `/status` - Agent 状态 - `/stats` - 实时数据统计 - `/crawl [hn|medium]` - 触发爬取 - `/publish` - 触发发布 - `/skills` - 查看技能列表 - `/help` - 帮助 支持平台: - **飞书**(Webhook + WebSocket 长连接) - **钉钉**(Webhook + 加签) - **企业微信**(Webhook) --- ## 数据库切换 ```bash # 默认 SQLite(零配置) go run ./cmd/tide-all/ # 切换 MySQL set TIDE_DB_DRIVER=mysql set TIDE_DB_DSN=root:pwd@tcp(127.0.0.1:3306)/tide?charset=utf8mb4&parseTime=True&loc=Local go run ./cmd/tide-all/ ``` --- ## 项目结构 ``` tide/ ├── cmd/ │ ├── tide-all/ # All-in-One 统一入口(推荐) │ ├── dashboard/ # 仅 Dashboard │ ├── tide/ # Agent 主服务 │ ├── demo/ # 全链路演示 │ ├── mock_demo/ # Mock 演示 │ └── skill_demo/ # 机器人技能演示 ├── internal/ │ ├── ai/ # AI 模型层(多厂商路由+failover) │ ├── agent/ # Agent 层(Scout/Rewriter/Editor) │ ├── bootstrap/ # 启动引导(配置加载/触发器/调度器) │ ├── crawler/ # 爬虫层(HackerNews/Medium) │ ├── dashboard/ # Web Dashboard(Gin + 内嵌前端) │ ├── publisher/ # 发布器(微信公众号/头条号) │ ├── skill/ # 机器人技能(飞书/钉钉/企微) │ ├── storage/ # 数据层(GORM + SQLite/MySQL) │ └── taskstatus/ # 任务进度上报 ├── Dockerfile # 多阶段构建 ├── docker-compose.yml # 一键部署 └── go.mod ``` --- ## 已支持平台 ### AI 厂商 | 厂商 | 状态 | 说明 | |------|------|------| | DeepSeek | ✅ 可用 | Dashboard 配置 API Key | | 智谱 GLM | ✅ 可用 | Dashboard 配置 | | MiniMax | ✅ 可用 | Dashboard 配置 | | Mock | ✅ 内置 | 无需 Key,用于测试 | ### 爬取源 | 源 | 状态 | |----|------| | HackerNews | ✅ 可用 | | Medium | ✅ 可用 | ### 发布平台 | 平台 | 状态 | 说明 | |------|------|------| | 微信公众号 | ✅ 可用 | 草稿→群发 API,需 AppID + AppSecret | | 头条号 | ✅ 可用 | Open API,需 AccessToken | | 未配置平台 | ✅ Mock | 自动降级为模拟发布 | --- ## 成本估算 DeepSeek API: ~¥1/百万 token - 日产 50 篇 ≈ 25 万 token/天 ≈ ¥0.25/天 ≈ **¥7.5/月** # 启动服务(默认) powershell -ExecutionPolicy Bypass -File dev.ps1 # 其他命令 powershell -ExecutionPolicy Bypass -File dev.ps1 build # 编译 tide.exe powershell -ExecutionPolicy Bypass -File dev.ps1 test # 全量测试 powershell -ExecutionPolicy Bypass -File dev.ps1 test-v # storage 详细测试 powershell -ExecutionPolicy Bypass -File dev.ps1 vet # 静态检查 powershell -ExecutionPolicy Bypass -File dev.ps1 tidy # go mod tidy powershell -ExecutionPolicy Bypass -File dev.ps1 env # 查看 Go 环境 powershell -ExecutionPolicy Bypass -File dev.ps1 fix-env # 修复 GOOS/CGO_ENABLED