19 KiB
assistant
面向国内商家的 AI 获客助手,当前优先完成平台链路学习与复用,并按功能模块逐层扩展当前账号网页版可见入口。后台新增“学习 → 链路复用”:选择已学搜索/详情版本,召回锁定摘要,换新关键词执行并核对正文、有限评论和来源,全程不调用业务分析模型。
真实小红书以新词“装修顺序”完成独立搜索到详情/首层评论的组合探索:搜索3条、正文1条、评论6条,5批、去重1条、范围截断。旧八步定位失败与首个七步部分结果保留;补录长正文评论范围后冻结新的七步候选,完整复验通过。这是当前可见结果范围内的单样本探索,正式基线、任务后反馈、双端和发布仍待验收。
装修初筛、商家条件、需求/咨询意向和人工核对已有实现与历史保留,当前暂停扩展,后置到操作复用闭环之后;后台业务验证不代表桌面端已经完成。当前状态与证据见开发进度,唯一后续顺序见整体方案第14节。
首版桌面端同时适配 Windows 和 macOS,两端按同一业务范围开发和验收。
产品设想是让商家配置商品与目标客户条件,由软件搜索或浏览图文/视频,结合主页和评论识别需求,整理线索,并按配置关注、私信、评论或回复指定评论;也可按用户问题检索信息并返回来源。
后台“学习 → 平台路径”(/#/platform-paths)维护功能层级与证据状态;初始33个模板不等于全站总量,当前18项有可核对观察。发布者主页导航通过,评论者主页最终复验在官方安全验证处暂停;菜单/标签/回复与消息窗口仍待补学。入口可见不等于动作或固化通过,动态内容取样,业务分类继续后置。
当前文档
- 开发进度:记录实际开发、修复、工程验证及提交状态;普通解释与使用问答不记录。
- AI 获客助手方案图解:独立离线 HTML,包含架构、获客、学习发布、任务与检索、AI 额度、任务恢复、登录会话与实施阶段;支持节点查看、路径演示、明暗主题及 SVG、PNG 导出。
- AI 获客助手整体方案:设计决定、优化方向和实施顺序的当前依据,第 14 节维护近期规划;调整时同步现有方案与图解。
- 学习端实施方案:首条小红书范围、分工、六步学习、任务后官方消息观察和开始学习前的待补项。
- 本机协作学习入口:Codex 受限控制操作、浏览器工具、登录检测与人工质量记录。
- AI 获客助手初步讨论方案:业务场景、学习固化链路、AI 分工、端形态、收费思路及首版验证范围。
当前研发主线已收回“链路学习 → 固化 → 轻量召回 → 变参执行”。装修初筛、咨询判断和人工核对保留为后置业务验证,不再继续扩展。维护后台的业务验证不代表桌面端已经完成;本阶段不依赖业务模型识别每篇内容。
当前路线
- 当前按功能模块逐层盘点小红书网页版入口,把可复用操作分别固化,再按平台/任务类型路由;桌面阶段采用 Electron,同时面向 Windows 和 macOS。
- 已确定学习与桌面共用 Playwright 固定执行、同一版本合同及结果核对,不另建 browser-use
Agent.run路径;Midscene 仍是后续可选辅助。学习后台以 A2A learning 的适用模块为基础裁剪适配,桌面壳另行提取验证。 - 学习端按页面类型和入口来源记录层级、下级控件及返回路径,分别完成观察取证、候选生成、固定校验和变参试跑;运行异常回流维护端修订。
- 首期由开发者与本地 Codex 协作学习:维护者在平台页面登录,Codex 观察、编写参数化实现、提交候选并依据校验和试跑结果修订;后台管理证据与版本。后台内置自主学习 Agent 后续按需求建设。
- 学习后台使用独立 PostgreSQL,检索库准备
pg_search与pgvector;商家桌面端仍按 SQLite 规划。平台账号在官方页面自行登录,每个账号复用专用浏览器资料目录。 browser_use测试工程的 Electron 桌面壳、产品认证和管理后台作为候选复用基础;云端可沿用其 FastAPI 骨架,本地 SQLite、获客执行与商业模块按当前方案适配或新增,范围见整体方案第 4.4 节。- 模型由我们在运营后台按文本判断、复杂复核、视觉操作等用途配置,不绑定具体型号。
- 第一条学习链路选定小红书「搜索笔记 → 详情 → 评论读取」,先用本机演示页跑通学习与验证,再在维护者自行登录的平台页面上适配。
- 新小红书任务默认“有界网页操作(原生通信)”,也可明确选旧模式作对照。新模式只允许已观察唯一搜索输入/回车、固定官网标准笔记链接和普通区域有界读取;15 秒动作窗口内,当前主框架发起的第一方 HTTPS
xhr/fetch POST自然通信(包括安全通信)可正常进行。它不是网络沙箱,也不承诺服务端绝无副作用;不直接请求接口、运行任意 JavaScript 或添加指纹伪装。旧模式(legacy)的四类精确请求策略原样保留。 - 当前浏览器执行为 Playwright,尚未接入 browser-use。平台提醒的识别、暂停与人工恢复需按真实页面补齐;任何浏览器框架都不作为不会被识别或限制账号的保证。
- 学习探索记录与正式运行模式验证分开:已实现运行前基线、观察窗口、人工追加反馈和候选质量状态;晚到异常保留原记录并将同版本置为待复核。当前只评价维护环境,平台自动提醒识别、真实平台表现与商家发布仍待验证。
项目状态
当前包含方案文档、学习后台前后端和独立的 Playwright 浏览器工作进程。支持可见页面登录检测、人工确认、七类有界动作、动态目标匹配、有界容器目标定位、集合等待、有界分批读取与业务 ID 去重、显式文字/媒体内容、步骤阶段耗时、明确空态合同及不可变候选;逐批截图绑定摘要,失败保留实际证据。小红书图文及有限首层评论已通过两组正式模式执行;真实平台空态、登录失效、回复层级及更多范围仍待补样本。已有任务后人工观察机制及明确复查待办,尚未接入后台 AI 自主探索。
当前服务是本机维护工具;Electron 商家端、macOS 实机验收、能力正式发布、AI 网关和商业计量尚未完成。文档中的价格、额度和成本示例不是最终产品承诺。
本项目使用现有 assistant 目录维护,不另建同名项目,也不直接引入完整 A2A 工程作为运行依赖。
学习后台的具体迁入范围见 模块来源与边界。原 A2A 项目保持只读;本项目未复制原运行数据或账号。
本机启动
需要已启动的 Docker Desktop、Node.js 22.12+、pnpm 和 Python 3.12+。在项目根目录执行:
pnpm install
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r apps/server/requirements.txt
pnpm db:up
pnpm exec playwright install chromium
pnpm dev
macOS 创建虚拟环境使用 python3 -m venv .venv,安装依赖使用 .venv/bin/python -m pip install -r apps/server/requirements.txt,其余命令相同。
打开 学习工作台,空数据库首次启动时自动初始化维护者账号 admin,初始密码 123456。已有账号时跳过初始化,后续重启不会覆盖账号或密码。密码以 scrypt 摘要保存。API 默认端口为 8810。可将 .env.example 复制为 .env 调整本机配置;使用已安装的 Edge 时设置 ASSISTANT_BROWSER_CHANNEL=msedge。
内容初筛 使用已学习的四步搜索读取候选和已确认会话,按装修规则初筛,最多保留 3 篇。当前只保存地区条件,未作地域过滤;保留相关同行案例作为评论来源,不据标题确认业主身份或采购意图。
打开一条有保留笔记的初筛记录,选择同站的七步详情候选或有界定位八步修订候选,可逐篇点击“读取正文与评论”。使用详情学习任务已确认的会话,未就绪时前往该学习会话处理;当前不自动打开或切换浏览器。八步候选还会显示目标进入视口时的滚动次数、逐次位移与停止原因,目标已可操作时可为零次。每篇独立保存正文、首层评论、来源核对、验证与截图;正文已读但评论失败时保留部分结果,不把未读到评论等同于确认无评论。旧文字候选仍要求文字;新内容候选明确区分文字、媒体和混合内容,媒体保留实际批次截图并标记未解释,不做 OCR。新回放另保存步骤与阶段耗时,旧记录缺失不补零。总预算到期会关闭本次浏览器并保留已完成证据,重新运行前须重开并确认会话。
整页滚动页面可另学显式 viewport 模式,目标仍限定在已观察的普通容器内,预算、对象和来源核对保持不变。维护入口可按本任务真实步骤编号冻结修订版本,不修改旧步骤或候选;新组合须独立检查和回放,不能继承旧成功。字段和边界见 本机学习入口。真实平台适配进展见进度文档。
最新文字/图片评论八步候选在两篇真实装修笔记上探索通过,各取得正文和 6 条首层评论,其中一篇包含纯图片评论。当前检查复用原核验语义并限定到已观察目标,每步后的完整取证保留;本机工作进程耗时约 46/49 秒。该版本仍为维护实验候选,未正式发布,模型和需求质量尚未验收;历史失败、样本范围及分阶段测试见 开发进度。
平台登录在工作台打开的浏览器中直接完成。打开/刷新时先检测可见页面的登录状态:已登录时无需重复扫码,未登录或需验证时由维护者在官方窗口处理;状态不确定时允许人工核对。当前账号身份仍需确认,页面检测不代替身份认证。固定资料目录用于后续复用。学习账本保存到 PostgreSQL,浏览器资料与证据文件保存在 .runtime/learning/,均不提交 Git。
装修需求分析
在内容初筛顶部打开“商家需求”,输入任务文字,核对逐字段原文依据和缺项后确认条件,再点击“用于本次初筛”。本轮只支持小红书装修服务寻找业主,使用第一个搜索词;服务地区可保留未知,不默认全国。确认版本单独追加保存,初筛和阅读继承条件引用,仍需已有候选及已确认会话。
在已取得可用正文并通过来源核对的阅读详情中,点击“分析本次已读内容”。这会分析该条已保存的文字,不重新打开或操作平台。正文与每条首层评论分别给出明确需求、疑似需求、普通讨论或信息不足,并保留逐字依据、来源、缺失信息、模型配置和请求记录。纯图片/视频标为信息不足、内容未解释;需求信号不等于已确认客户。失败阅读不能分析,有正文的有效部分阅读会保留范围说明。
新版另列当前角色信号、多选表达、业务相关性及根据商家条件派生的初步匹配和建议。“自身要装修”可同时“提问、求建议”;服务方也可有自身需求,短句“哪里”不确认角色。阅读默认沿用关联条件,旧阅读可选择已确认条件追加新分析;条件摘要参与结果复用,旧分析仍可查看。地区或上下文不足会提示补充信息。建议未执行。
新分析合同为 renovation-demand-v4 / demand-result-v3。评论通过服务端生成的 context_refs:["note"] 引用同次阅读的笔记,笔记没有背景引用,正文只向模型提供一次;总范围仍为21个来源、16,000字。新增独立 consultation(有/无/信息不足),本条逐字依据与笔记背景依据分开保存,不能引用其他评论或继承作者的身份、需求、项目地区和预算。程序派生“保留待核实”等展示结果,不据咨询意向提升业务匹配或触发联系;这也不是独立线索库。新旧提示和结果版本隔离复用,不重写旧分析。
人工核对:打开一条完成的分析,在“人工核对”区域按“核对此条”,对照原文选择判断正确、需要修正、暂不能确定或当前文字不可核对。demand-result-v3 使用六轴 analysis-review-v2,增加独立咨询意向和笔记背景依据;demand-result-v2 仍按原五轴 analysis-review-v1 保存,更早结构只读。修正时填写标签、说明和本条原文依据;评论确认有咨询意向时另附所关联笔记的逐字背景依据,再显式保存。无法确定时直接写原因,不必猜身份。每次修订另存,旧模型与人工版本保留,未保存的预填不算核对;纯媒体不作文字判断。一致率仅统计已判定样本的最新版本,不是模型真实准确率或召回率;核对不调用模型、重新读取平台或触发联系动作。
查看已有结果时,在分析历史中点击“查看分析”,会直接打开“分析详情”侧栏,首先显示分类、原文和依据;关闭后可再次打开同一条记录。模型配置、用量与请求记录在侧栏下方折叠区中。查看历史只打开已有结果,不调用模型;人工核对与纠错另行显式追加保存,原模型结果保留。
服务端模型使用 .env.example 的 ASSISTANT_MODEL_* 配置:供应商、接口、型号、主/备用 Key、思考模式、超时和输出上限。真实 Key 只填被忽略的 .env,不使用 VITE_ 前缀或提交仓库,修改后重启本机服务。当前以 deepseek-flash、关闭思考为基线;型号可换,主备只切 Key,不自动升级模型。每请求最多 30 秒、合计最多 60 秒;最多 21 个来源和 16,000 字,超限拒绝,不自动截断。
前端只显示安全配置状态,“已配置”不等于已验证连通。相同阅读、配置和分析版本复用已完成结果,失败不会自动重试;新失败记录单独保留。Token 仅汇总已返回用量,失败/超时的未知消耗不计入汇总,费用显示未知,尚未接商家扣费。调用、工程回归与真实内容试用的具体状态见 开发进度。
学习数据库
pnpm db:up 创建本项目的独立容器、数据卷和本机连接配置,端口默认为 127.0.0.1:55432。使用固定版本的 paradedb/paradedb:0.26.1-pg17,包含 PostgreSQL 17、pg_search 0.26.1 与 pgvector 0.8.6。随机数据库密码和连接串仅写入被 Git 忽略的 .env,与后台登录密码分别管理。
assistant_learning:维护者、任务、观察、候选、验证、阅读和独立需求分析记录;默认 schema 为assistant_learning。assistant_retrieval:独立能力知识检索底座,业务索引与模型 embedding 尚未接入。assistant_learning_test:隔离工程测试,每轮使用新建的随机 schema。
已有 SQLite 原型数据时,先停止本项目后台,执行 pnpm db:migrate-sqlite,再启动后台。迁移只向空 PostgreSQL 命名空间复制,同一事务核对行数;原 .runtime/learning/learning.sqlite 及一致备份均保留,不覆盖已存在的 PostgreSQL 数据。未配置 ASSISTANT_DATABASE_URL 时仍可用 SQLite 做离线开发;它不是当前 Docker 学习环境的存储方式。
schema 10 为学习任务增加可空 execution_profile;旧任务保留空值且 API 省略字段,不追溯补成新模式。候选清单保存声明合同,实际会话、验证、初筛和阅读各自保存已核验回显;缺字段显示未记录,不用任务选项替代实际执行证据。
pnpm db:status 查看容器,pnpm db:stop 停止本项目容器并保留数据卷。普通重启不重建数据库。
检查
pnpm check
pnpm build
pnpm test:server
pnpm test:learning
pnpm test:discovery
pnpm test:reading
pnpm test:reading-seek
pnpm test:reading-media
pnpm test:demand-analysis
pnpm test:business-workbench
pnpm test:analysis-review
pnpm test:control
pnpm test:session
pnpm test:platform-policy
pnpm db:check
node tools/learning/test-browser-worker.mjs
node scripts/test-migrate-learning.mjs
test:learning 使用隔离的测试库/随机 schema、真实浏览器与本机演示页,覆盖参数化对象、结构化读取、试跑/质量界面、晚到异常、证据回看及重启持久化,不访问真实平台账号。未配置测试 DSN 时回退到临时 SQLite,绝不借用开发库。Windows 默认使用本机 Edge,其他系统默认使用已安装的 Playwright Chromium;可用 ASSISTANT_TEST_BROWSER_CHANNEL 覆盖。单端通过不会被记作 Windows/macOS 均通过。
db:check 实际验证中文 BM25、平台过滤、搜索索引计划与固定样本向量排序,测试数据在专用测试库中创建后清理。样本向量不能代表模型 embedding、召回率或完整混合检索已完成。
test:discovery 使用独立服务、随机测试 schema 与合成页面,验证装修规则、来源/标题不足时不选、界面理由、历史、失败记录及重启保存。test:reading 在独立页面验证初筛到单篇阅读、对象绑定、部分结果、历史及重启;test:reading-seek 独立验证八步候选录制、结果重排后的滚动定位及有界失败;test:reading-media 验证显式文字/媒体/混合内容、媒体截断、原文字合同、步骤耗时、截图及历史。以上脚本均不访问真实账号。test-migrate-learning.mjs 仅使用测试 DSN 和随机 schema 验证迁移,包括旧 SQLite 没有质量观察/内容初筛/阅读表的兼容、新记录复制及失败整体回滚;不会向开发库导入测试数据。
test:demand-analysis 使用随机测试 schema、合成浏览器页面和本机 HTTP 假模型,覆盖需求依据、主备切换、双失败、错误依据拒绝、已完成结果复用、历史/重启及密钥不暴露;显式覆盖所有模型环境变量,不使用真实模型 Key 或真实平台账号。迁移脚本也兼容旧库缺分析表,按阅读后的依赖顺序复制分析事实。
test:business-workbench 在独立 PostgreSQL、Edge 和本机假模型验证需求解析、显式确认、已学初筛/阅读、多轴分析、历史与复用。schema 8 增加不可变商家需求版本;迁移兼容旧库缺该表,并在同一事务内核对父版本关系和失败回滚。各脚本的实际执行结果与未覆盖项见开发进度,不能以脚本存在代替通过。
test:analysis-review 使用独立 PostgreSQL、Edge 和本机假模型准备合成阅读/分析,验证四种核对、修正依据、并发旧版本拒绝、最新版本统计及重启;真实业务结论仍需维护者核对。schema 9 增加不可变核对链,迁移兼容旧库缺表、保留修订顺序并拒绝坏父引用。