assistant/docs/DESIGN.md

149 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 橘子拓客:当前设计与实施范围
> 2026-10-28 用户明确将本项目从学校办事助手转为 AI 拓客助手,首个平台为小红书。本窗口只开发此项目;同级 `assistant/` 独立保留。
> 原学校设计见 [历史归档](archive/DESIGN-school-2026-10-28.md),其中查课、谈话、角色准入、填报、审批与回查链路退出当前运行入口。
> 用户已明确要求开始实现 [AI 拓客助手优化方案 v0.1](AI拓客助手优化方案-v0.1.md)。以下记录本次实施状态;真实平台与业务效果的验收另列,不由本地测试替代。
> 2026-10-29 用户已批准执行 [结果交付与知识复用优化方案 v0.3](橘子拓客结果交付与知识复用优化方案-v0.3.md)。结果交付、必要字段、程序验收、独立证据排名及知识界面已首轮实现;实际跨任务复用、完整平台链路与业务效果继续待验收,不能由本地样本推导。
> 2026-10-30 按用户《橘子拓客 纠偏方案 v1》调整方向:以正常规模候选交付的真实调用、token及时间衡量主链路,不继续D44回复直接父归属或预检专项。用户确认继续后已执行P1基线,实际交付2/10位并按取证停滞停止,等待监督确认后才进入P2;以下D20–D44记录作为历史,不作为继续专项开发或复测的授权。
### P0:默认关闭实验性回复关系与预检
`Settings.reply_relation_preflight_enabled`(环境变量 `REPLY_RELATION_PREFLIGHT_ENABLED`)默认 `False`,统一控制两个模型工具 `inspect_reply_relations` / `resolve_reply_target`、预检正则路由、编排、提示、执行gate及交付投影。默认不调用 `compile_preflight_policy` 改写意图;显式开启时保留原实现。续跑时也从已有Agent移除关闭工具并刷新动作Schema,保留实际浏览器及2px park规则。开关是后端启动配置,本轮未重启桌面端,不能把新进程离线审计说成现有进程已重载。
`save_source` 仍逐字核对真实独立容器并先持久化来源;成功只证明原话核验及保存,不再因回复父关系未知记为unknown。`parent_resolution`、父/根引用、诊断及 `relations_checked` 独立保留,不猜父关系;工具下一步与默认提示不再要求补父容器、重存回复。用户明确要求关系时的交付条件仍独立校验,不能由保存success推出关系完整或整条获客链已完成。`evidence.json` 恢复及历史事实不回填。旧知识方法的同版本定义不可变,P0不改库或迁移旧文案;其保存成功不得解释成父关系成功,流程定义与成本口径留待P3按新版本处理。
本机验证覆盖默认关闭、显式开启、历史投影、旧会话续跑、未知父关系保存与逐字核验。另以既有真实发现任务只读重建当前模型契约,确认25个动作中两个实验工具均不存在;证据为 `data/ui-verification/p0-default-tool-schema.json`。此为当前代码将发送的Schema审计,未发模型请求,不是历史请求或真实上游收到的回执;严格真实请求侧验收尚待取得。
P1已重新启动当前代码,补齐P0真实请求侧核对:`task_76d551192d7e` 的44份出站动作Schema均关联同call_id的供应商response及succeeded;实际24个动作,两个实验工具均不存在。此回执属于P1新任务,不补写P0离线审计或历史任务。
### P1:装修服务主链路基线(已测量,业务未达标)
用户明确商品为装修服务,目标客户为近期要装修的用户,无地区限制;目标10位,只读,不设篇数或评论数上限。桌面创建独立任务 `task_76d551192d7e`,输入已有“10位去重候选”仍重复追问,按同一目标填10后继续,未修解析或调参。新增的代码仅为程序测量:真实模型出站契约的安全元数据、实际工具边界事件及 `scripts/measure-prospecting-baseline.py`;不记录参数、提示、Key或完整Schema,不改变请求和业务控制。
任务以 `evidence_stalled` 停止:实际访问4篇,3篇取得核验摘录,保存正文3、评论6、回复0;分析9条后保留2位稳定来源身份候选,身份未知候选0,尚缺8位。单候选23.5次调用、570242.5 tokens、98.885秒;总47次调用/1140485 tokens/44个步骤/50次实际工具调用/197.77秒。实际总时间包括人数补问;供应商usage完整,缓存命中858496输入tokens,未换算费用账单。任务内 `baseline.json` 和PROGRESS保存分阶段指标及工具分布,不能将未达10位当作完整业务闭环或降本成功。
已确认检查18次与保存12次占实际50次调用的60%;保存校验拒绝3次,末尾连续3次来源容器检查失败触发原保护;4次评论区推进中3条有记录的尝试均not_moved,展开0。最底层容器失败分支尚无法从持久化记录确认。P2应围绕这些实测问题将当前笔记内的推进、读取、逐字保存与展开程序化,保留原校验及真实失败原因;不继续回复父归属专项,不增加未经本轮失败支持的新约束。P1缺少10位完整基线,后续不能宣称已取得同等10位交付的50%降本验收。
## 1. 产品与首个闭环
用户用一段自然语言描述目标 → 模型识别意图、提取已有条件并生成关键词 → 必要缺项才追问 → 按阶段搜索/检查指定页面 → 阅读笔记、评论及回复 → 核对主页或整理导出 → 独立复盘与用户评价。对话支持在同一任务修订标准和继续,目标版本、来源和动作历史保留。
当前首版交付:蓝灰玻璃面板的单段持续对话、可收放历史与设置抽屉、按需展开的执行浏览器、可展开理解卡、无默认阅读配额、真实停止原因、评论与回复取证、主页身份核对、CSV名单导出、点赞点踩与单条纠正、独立经验复盘、受授权的关注/私信工具及账号动作账本。继续保留页面证据、人工登录/验证、模型设置和可选公开资料工具。
用户进一步指定按小鹅网页复刻视觉与动效;布局、粒子轮廓、翻转关键帧和验证范围见 [界面参考记录](UI_REFERENCE_PENGUIN.md)。动画与真实任务状态关联,减少动态时静态呈现,不用演示数据或动画冒充任务成功。
用户已批准实施 [UI 优化方案](UI优化方案-v0.2.md)。当前已分离默认品牌粒子、对话粒子和结果组装,并接入必要补充、真实阶段、来源核验、名单表格、文件交付及受限后的独立路线。补充卡和路线提交校验任务及结果版本;文字与卡片回答沿同一任务接续,旧卡保留只读历史。精确粒子轨迹仍需参考连续画面对照,现为独立流动实现。
2026-10-29 用户进一步指定品牌为类似“小火花”的造型:界面标识和默认粒子已改为共享圆润火花轮廓、独立浮滴和白色笑脸,使用贴合玻璃面板的银蓝配色,不使用用户提供的红色JPG。对话流动粒子和结果方阵继续独立保留;参考网页只指导布局及交互表现,不再沿用其品牌形象。
同日正式改名为“橘子拓客”,助手昵称“小橘”。窗口、页面、关于面板及产品元信息统一名称;应用图标沿用现有银蓝小火花并加浅蓝圆角底,提供SVG、1024透明PNG、macOS ICNS和Windows ICO,源码运行时设置Dock/窗口图标,打包配置引用相同资源。npm包名、appId及既有用户数据目录保持稳定,改名不创建空配置或丢失历史;图标由 `scripts/generate-app-icons.mjs` 从已有SPARK路径离线生成,普通构建使用仓库内成品,不新增运行依赖。
同日D39按实际任务状态调整输入框:消息提交中或当前任务 `running` 时,右侧显示转圈状态;HTTP提交返回后仍以持续任务状态展示,不因一次请求结束恢复发送箭头。执行中仍能输入并发送补充说明,停止沿用任务内按钮;暂停、等待补充及结束状态恢复发送图标,减少动态时保留静态进度图标。macOS窗口使用 `hiddenInset` 保留原生三个窗口按钮,40px浅蓝灰可拖动栏在按钮右侧显示标题;Windows/Linux保留原生标题栏,普通浏览器预览不显示桌面栏。内容及原生浏览器插槽按实际DOM边界下移,不改2px park或视图缩放。隔离界面已验证提交后持续转圈、补充、完成与停止的切换,真实原生标题栏核对见D39运行记录。
`max_notes/max_comments_per_note` 默认 null,仅用户明确指定时生效。新拓客任务及迁移后续跑不使用60步或600秒总量终止;单次工具/模型超时仍保留。框架按无限执行范围运行,屏蔽预算收尾提示并保留消息压缩、用户中断和无进展保护。累计操作台账保留,损坏台账不重置为0。
2026-10-29 用户补充:不能没有终点一直跑。发现候选以用户明确的 `target_candidates` 为交付目标,未给人数、指定页面、明确篇数或“先做一轮”范围时,只补问“这次先整理多少位候选?”。纯数字卡片/对话确认直接接续同一任务,不再调用意图模型。人数与笔记/评论条数分别处理;程序检查用户原话,不接受模型擅猜10位或20位。复杂/中文数字表达暂保守补问,不能自动猜值。检查、研究、导出及明确跟进范围不强求候选人数。
候选按来源作者主页的稳定身份合并,同名不合并;只有线索里的昵称/链接推测不算身份证据。身份未知来源单列,不计达标;主页可见小红书号仍需独立核对。逐步保存后按剩余目标分段分析,达标时在下一次网页/模型调用前停止;关键词未遍历范围继续如实保留。未达标、采集失败或同页反复取证无新增时交付阶段结果,用户决定调整数量/方向或继续,不自动换路线无限跑。人数按本次必要条件统计,不等于有效客户或成交数。修改标准后旧结果保留但不计当前达标,数量单独修改可复用已判断资料。
v0.3由 `delivery.py` 与 `people.py` 统一交付和人数口径:运行状态、目标满足、文件产物分别计算,保留原浏览器失败与停止原因。可选字段缺失不阻止交付;用户明确要求的本人需求、地区、可见账号号和CSV才成为必要条件。地区须本人该来源原话支持,IP或父评论不能代填。有限范围需实际成功采集、逐来源判断及覆盖依据,未取得资料不能称零需求。结果逐项展示需求、身份、地区、账号、跟进及可选用户后续反馈,补充来源/未知身份另列,不再统一要求人工待复核;CSV沿同一口径保留全部证据与缺项。
## 2. 复用与重做
复用 Electron/React 桌面壳、内嵌 WebContentsView、browser-use CDP 执行器、暂停/续跑/接管、逐步截图与进度记录、PostgreSQL 持久化、经验试用与回执数据结构。新增独立 `backend/prospecting/` 编排和 API;当前入口不挂载学校业务路由,不调用学校 NLU、填报或审批状态机。
商家条件、拓客阶段、来源结果、业务判断与验收全部重做。原学校知识 YAML 仅作为历史资料保留;新运行只加载小红书拓客知识,使用独立租户作用域隔离旧学校任务和经验。兼容数据层的 `school_id/student_id` 暂保留为内部租户/操作者字段,界面不出现学校身份。
## 3. 业务判断和证据
- 商品/客户/地区按任务需要提取,不统一设为必填;关键词可由助手生成并在计划中说明推断。地区未提供即未知,不擅自补成全国。
- 作者、首层评论者和每位回复者分别判断,保存父/根/回复对象关系;分享、教程和一般咨询不等于正在购买服务。“正在装修”与“明确找服务”作为不同判断维度,不能擅自缩窄目标。
- 每条候选保留来源 URL、来源类型、原话、理由、观察时间;按已有证据具体说明字段状态,不自动确认客户身份或成交意向。
- 名单与CSV共用按人分组,合并同人的全部原话、来源和纠正;身份待核记录另列。增量分析保留正文/父根上下文,按note_id或已观察笔记路径关联,不因临时签名链接变化丢失讨论背景。
- 小红书阅读以实际页面为准,登录/验证码/访问限制暂停请用户处理;不把未读评论记为空,也不以搜索摘要代替已读笔记。
- 来源完整 URL 由程序从当前页面读取,不要求模型寻找 canonical 或重建签名链接。先观察当前可见来源容器及原文,再逐条保存;候选容器仅来自当前真实 DOM。
- 浏览器会话结束后,右侧切换为标明只读的最后截图及结束原因;不保留已销毁原生视图的空区域,也不把截图称为可操作网页。
- 发现与整理不自动授权触达。关注/私信先只读核对账号与对象,再由用户选择具体批次;私信另需确定内容。实际动作必须使用受约束工具,核对发送账号、目标和输入内容,先持久记账再操作;已关注跳过,结果未知不重发。跟进执行配置关闭通用click/input/send_keys,避免绕过账本。
- 私信出现红色失败标记或未知结果,持久暂停该账号后续私信;仅页面明确每日限制时标记当日上限。重新核对页面且无已知限制、用户明确确认后才解除,保留历史且不自动重放未知动作。此次开发没有对真实账号执行关注或私信。
- 检索覆盖来自实际观察到的搜索页URL,分别记录已观察和未核对关键词;未核对范围不冒充已读。相同页面、相同动作且无新增来源连续重复时停止无进展操作。停止原因由程序记录,模型总结另存,不能用模型“预算耗尽”解释真实终态。
- 已保存资料复核完成不等于网页采集完成。`done(success=False)`保留失败原因,复核同时检查原浏览器结果;旧误标任务通过只读投影展示阶段结果,原日志与数据库保留。检索覆盖接受实际观察到的`search_result_ai`路径并有限解码,不推断未观察的访问或全文阅读。
## 4. 学习闭环
操作能力、阶段模板、业务反馈与本次任务资料分层保存。阶段结束、暂停或异常后独立运行复盘;模型可提出探索候选,不能自报成功。`knowledge.py` 使用工作区隔离的 `prospecting_methods`、`prospecting_validation_events`、`prospecting_business_feedback` 保存方法版本、不可变事件和反馈;`verification.py` 将程序动作事实同步为方法及验收回执。旧通用经验表兼容保留,当前召回改用结构化方法,不再靠模型相符回执升级旧草稿。
程序验收接保存独立来源、展开当前父讨论的新增回复、匹配来源作者的主页号及当前结果文件;只有完整前后引用、程序验证方式与实际后置条件才能计成功。无新增、加载慢、归属不明记未知;受阻、程序故障和未使用分别记录,不冒充方法反证。详细前后快照只保存在对应任务证据,共享事件保存引用和对象摘要。知识界面按原验证事件取对应动作前后快照,阶段证据不能用单一动作的快照替代。
复用先检查平台、阶段、能力、来源类型、适配器版本、依赖版本及授权,再按独立证据和内部样本修正指标排序。首版至少3个独立任务、3个不同对象且没有未解决反证才进入优先复用;一次成功为可试用,无证据为探索候选。任务/对象最大独立匹配去重,同对象重试、恢复与重复导出不能抬分;修订以新事件关联原记录,依赖失效会重算阶段状态。高等级方法遇相关反证仍暂停。规则 `independent-evidence-v1` 是选择规则,不是成功/成交概率。
当前参数化阶段仅验收同篇正文与一条独立评论/回复均保存的实际分支,依赖真实操作事件;没有把各动作拼成已验证的完整搜索/主页/触达链路。`xhs_visible_dom_v1` 是当前DOM适配器版本,不是平台所有页面变体分类,每次操作仍需现场入口与归属核对。更细页面变体、其他阶段组合及业务策略排名继续待真实样本积累。
2026-10-29 首个新版真实任务审计(D37):正文保存及CSV导出各形成1次有程序依据的独立成功,两方法均可试用;本次召回为空,尚未证明跨任务复用。评论/回复/主页链路未跑通。实际长句还暴露人数识别、账号可选及明确需求条件的程序提取缺陷,悬浮卡反复点击与8次动作结构错误导致部分交付;新建内嵌会话分支漏传目标版本,不能回填历史猜值。这些为当时待修问题,优先修复并沿原任务小范围验收,再继续不同对象的复用测试。
同日D38已实现上述首轮修复并通过本地回归:长修饰语的人数绑定到候选对象,跨逗号可选账号不变必填、明确需求单独校验;旧任务仅在用户明确继续时按原话重核编译字段,保留后确认人数及原证据/文件版本。评论未进视口有明确状态,新增受约束的 `advance_comments` 原生点击/滚动及 `open_source_profile` 来源作者入口;重核稳定评论ID、原话与真实唯一链接,悬浮卡原地无推进不能反复点,不猜URL。导航观察仅留任务事实,不直接新增方法成功。
无进展保护按页面、操作目标与真实新增累计,临时节点索引、悬浮卡、等待、空滚动、失败导航或未知展开日志不能清零;真实页面/滚动/来源变化才算推进。Schema失败仅记录程序声明字段路径和标准错误类型,供正常下一步纠正,不额外调用修复模型;连续失败保留程序原因,401/402/429保留实际具体类别。新内嵌会话也传目标版本,旧缺失不回填。知识页区分本阶段不适用与相关反证暂停,不显示跨阶段的误导性零成功。真实平台兼容和复用仍需下一次已授权任务验收,不能由本地夹具直接判为已修通整链路。
同日D39只读复查用户已续跑的原任务:条件已按原话修正为CSV及本人明确需求,保留用户后来确认的1位,目标版本3;新增1篇有实际作者主页锚点关联的需求正文后,程序以 `target_reached` 在1/1停止并交付。当前2条正文中1位达标、1组身份未知,CSV保留两者。任务内召回正文保存方法,并新增具有目标版本及可读取前后快照的保存/导出事件;这仍是同任务续跑,两方法各只有1个独立成功任务,不算跨任务复用。评论、回复展开及完整主页打开均未执行:正文先达目标,不能据此称评论/主页新工具已通过真实验收。下一次验证应给指定笔记及有限讨论阅读范围,避免候选人数达标提前结束这一专项检查。
同日D40按用户授权由CUA新建有限只读验证任务:指定1篇笔记、inspect、评论与回复合计最多8条,不继承候选人数;实际取得正文1、评论5、回复3,无触达。回复的父根及回复对象字段为空,3次回复操作验收正确保持unknown;无专用展开调用或展开事件,不能判完整讨论链路通过。当前completed对用户明确的展开及归属要求表达过强:先修回复归属,再补范围完成校验,随后重做同类有限验证;旧来源不补造父根。已观察到正文方法在新任务召回并再次执行,保持trial,不把同篇对象重查当作新对象覆盖。原生浅色左标题栏已取得真实截图,窗口按钮仅AX存在、像素未核实,拖动及全屏仍未验收;运行与结束按钮标签切换已在真实任务核对,持续旋转像素仍沿用隔离验证范围。
同日D41已修复正文候选与保存观察对`.content > .note-text`的定位差异,支持明确讨论组内根评论与回复列表为兄弟节点的结构;平级回复存在明确回复对象但缺少唯一评论引用时,只确认根讨论、保留直接父评论未知。展开入口按当前真实讨论组观察,支持div文字入口、已渲染但未进入视口的定位及白名单筛选计数;按实际位置先推进视口,使用专用展开工具核对同组完整前后回复集合,不能由5条取证批量或其他讨论新增冒充展开。指定页面的inspect/research任务仅从用户直接要求提取评论、回复、展开及关系条件,缺项时交付阶段成果;阅读上限不当作最低条数,不由模型done宣告全部完成。两次同组有限实测均取得正文1、评论1、回复1,根关联已恢复;第二次专用展开有同owner新增1条及完整快照的程序成功,直接父评论仍未知。真实合法摘录与展开全文指纹存在严格匹配假阴性,离线精确核对已确认该新增摘录,但程序归属修复的最终状态见D41记录;不补写历史来源或事件,不据此升级整链路。现已增加程序观察的完整容器规范指纹:保存原话校验与展开后新增容器采用相同规范,按当前目标版本及真实保存事实绑定合法摘录;额外只读观察失败保留未知,不重试点击或模型。1017项本地回归通过,未补旧指纹、未启动第三轮付费任务。后续正常任务验证新绑定和直接父评论与回复对象;无须为凑成功重复运行相同范围。浅色左标题及原生三个窗口按钮已取得真实截图,拖动和全屏仍未测试。
同日D42继续修复实际目标头部/标记/主页身份与同组唯一父回复的核对,缺唯一依据或冲突仍未知。新增真实用户会话驱动的第一组/一组范围,在检查与保存两侧约束根key,续跑只刷新正式请求及目标版本,不覆盖未落盘证据;归属要求支持完整回复链及直接父回复等自然说法,显式回复父回复的新增子回复另有独立深度条件,不能用根→直接回复代替。浏览器paint/hit测试核对当前可命中点后使用原生mouse,不按旧坐标盲点。`resolve_reply_target`从实际前缀入口原生移入,重新核对来源及命中点后单击;只有真实主页身份、原生返回及原来源重新核对都成立,才以本轮短期依据匹配同组唯一父回复,同作者多条发言仍未知。宿主仅允许页面实际触发的小红书HTTPS主页弹窗在同一视图打开,诊断只保留白名单分类和动作,不拼URL。
DeepSeek浏览器适配改为标准端点强制命名函数提交完整输出并本地校验,保留图像、usage及关闭思考;结构拒绝内部422,安全纠错提示随正常下一步,不增独立修复调用。D42两任务及同篇续跑累计111次实际调用,110次成功、1次连接错误、Schema错误0;未知连接原因和未返回usage不推断为格式、欠费或零消耗。工程上全后端1209项、Node弹窗11项、TypeScript及桌面构建通过;真实业务上明确组范围、专用同组展开及容器绑定取得验证,但目标子回复仍为直接父未知,关系3/4、二级分支0/1。手动实际作者头部链接可打开完整主页,回复前缀点击仍无导航或弹窗,返回未成功;不能用作者主页替代回复目标身份或宣称整链路通过。目标版本2追加网页回查误走已有来源分析,现已按真实追加指令在意图落地、准备与执行处纠正:明确网页核对优先进入浏览器,已保存/不新增来源只限制范围;纯离线复核仍复用。回查从当前页与原生历史起步,明确禁止分析时保留旧判断及版本,不增加收尾分析调用。该路由修复通过本地回归,尚无修正后的实页回执。旧目标展开不能计入新目标,交付继续partial;同篇续跑不增加独立对象排名。详细实测、用量及资料完整性见D42记录。官方协议依据:[Tool Calls](https://api-docs.deepseek.com/zh-cn/guides/tool_calls/)、[Chat Completions](https://api-docs.deepseek.com/zh-cn/api/create-chat-completion/)。
同日D43本人登录后,在新笔记做首组只读验收。首个当前页续跑曾误导航应用UI,后增加task→view→target锁、上下文和逐act状态边界及显式当前页修订时的view保护;丢失或错误业务目标不猜地址恢复。标准JSON Schema导出补minItems与单动作项属性数约束,仍完整校验,不修坏JSON或补动作。1251项后端、TypeScript、构建及Node弹窗11项通过;保留liveview的修订竞态仅有本地回归,不用显式入口的实页结果替代。初始目标版本1候选浏览最多2篇,版本2/3明确只当前新笔记第一组,范围为正文最多1条、评论与回复合计最多4条;三版属于同一任务,不按修订次数加独立分。最终目标版本3实测正确新业务页、正文1/评论1/回复2、专用同组展开新增2和规范容器绑定、无名单分析或触达;首条普通回复父根正确,明确二级子回复仍只有根讨论和可见目标文字,无唯一目标主页身份,实际目标点击not_moved,主页返回重核未验。当前UI为4条阶段资料、部分交付,关系1/2、二级0/1。整任务25调用含早期1结构拒绝,最后13调用零结构错误,不称全轮零错误。正文方法有3独立任务/3对象而进入preferred,其它相关操作2/2仍trial、阶段链paused;新笔记不等于二级身份已可核对,不为凑通过追加同类付费续跑。
同日D44开始将样本预检与取证分开:`inspect_reply_relations`只读当前可见组,只有稳定且唯一的直接父为另一条回复才为eligible;需要原生身份、冲突和未知均不合格,预检不自动展开、保存、打开目标或形成方法成功。首个有限任务13次调用全部成功,但实际打开两篇新笔记及一篇排除旧笔记,且预检原始计数未持久化,不能认可严格范围或把模型报告的0/0当程序验收。随后增加独立安全预检遥测、当前run/目标版本的实际访问gate及预检专属交付:确认可见且范围完整时,零合格也可作为“预检完成,未发现合格样本”;未到视口、访问记录缺失、越界或未知继续保留限制,不能假称读完。纯预检应跳过保存方法召回、名单分析及知识成功验收。第二个独立任务6次调用全部成功,程序确有0/0未到视口及1/0未知的遥测,实际仅一篇指定笔记、无保存或触达;但“独立做一轮只读预检”未被策略解析识别,访问gate、专属交付及知识过滤未启用,仍落到普通无来源blocked。1400项后端、TypeScript、构建及4项SSR检查是该修正阶段的本机结果,不能覆盖真实措辞漏识别。正在补实际原话回归;第三次独立实测前先离线确认active、最多1篇及排除2篇,不改写前两个任务的失败、用量或知识事件。二级归属与跨任务方法执行仍待真正合格样本,不用预检计数代替成功事实。
个人昵称、评论原话、用户资料和临时搜索词不作为跨任务操作经验。只召回当前小红书作用域,旧学校知识不注入。👍/👎关联任务、结果快照和目标版本,单条纠正保留原证据;方法反馈独立提交,不改写任务目标或重跑浏览器。用户可选记录已回复/确认需求/合作/无回复/不匹配,明确标为用户反馈、归因未证实;满意度和业务结果不增加方法技术成功数。替代路线按已有成果提供:复核已保存资料只调用独立分析,不新增网页操作;导出生成本地名单。路线提交校验当前目标与结果版本,保留账号暂停及未知动作记录。尚无真实获客效果排名。
2026-10-29 对最近跟妆任务只读审计:任务保存正文/评论/回复3类取证操作草稿,共享库只有1条draft、0条verified,试用回执0;当前任务未召回旧经验。这些草稿只覆盖可见容器检查和原话保存,尚不包含已验证的完整搜索、详情、展开回复、主页及交付链路。历史通用文本判重把相似的三类模板误合并,旧采集空快照还可能覆盖复盘后候选列表。
后续程序操作合同使用 `xhs_operation_{capability}_{source_kind}_v{version}` 稳定身份,在本小红书作用域按能力、来源类型和版本区分,独立于历史 `xhs_visible_*`;同合同重复复盘不重复累计观察。本轮有真实来源依据的合同内容由程序生成,不能被模型同key候选覆盖。恢复学习候选和回执保留数据库与快照两边的独有项,冲突保留数据库主值并留下双方依据,不把冲突重复算成多次验证。历史错配行保留审计,不自动修写或升为verified;实际可复用性仍须下一次不同对象的真实任务产生逐条回执。
界面投影由 `backend/prospecting/cards.py` 从任务与实际证据生成,前端仅渲染固定卡片。界面、路线和导出使用同一恢复后的来源版本;来源和主页按来源ID合并,较新观察优先,未知或相同时间保留数据库记录。导出使用独立文件清单保存版本与时间,不被后续旧任务快照抹去;文件缺失或路径不属于任务目录时不能打开。
## 5. 模型和公开资料工具
2026-10-28 核实官方文档:默认 `deepseek-flash`(DeepSeek-V4.1-Flash-1017,支持图像输入),可选 `deepseek-v4-pro`(文本复核,当前不支持图像)。保持 browser-use 锁定 0.13.10,按该版本实际接口适配截图和结构化输出;不无依据升级整个执行框架。
DeepSeek Search/Fetch 作为可选公开网页工具,使用相同 DeepSeek Key;Search 搜索公开材料、Fetch 返回 Markdown。此工具不复用小红书登录态,不保证可读登录后正文或评论,不将第三方摘要升级为已验证线索。默认不开启,用户显式选择或主动使用资料检索入口才调用。
**后续讨论事项(2026-10-29,用户要求先记录、暂不实施)**:当前Search会保存公开检索结果,Fetch已有独立API,但公开资料尚未接入关键词优化和后续任务规划,开关的实际辅助价值有限。后续讨论按需接成“检索业务背景 → 阅读公开正文 → 展示来源与依据 → 优化搜索方向 → 到实际小红书页面核验”。先跑稳小红书主链路,再讨论启用时机、资料展示、效果验证和复用方式;不把公开摘要混入实际读取的客户证据,不自动启用或立即扩展功能。
**用量与重复调用优化(2026-10-29 已实现)**:保持deepseek-flash和关闭思考。在供应商响应返回时、结构校验前记录实际usage,按任务及意图/网页/上下文整理/增量分析/复核阶段累计模型、输入输出、缓存及校验状态;旧历史缺项、未知/部分用量与存储异常单独展示,不推算为0、不当供应商费用账单,也不建立自有余额或用量配额。日志不保存Key、原始提示/响应或签名链接。存储异常不触发模型重试。
相同来源、标准和模型复用已核验判断,只分析新增/变化资料;正文/父根、纠正、业务标准或模型变化会令相关缓存失效。普通资料复核优先复用,另设“重新分析(新增模型用量)”明确强制重做。过程输出要求简短;同一笔记、同一已保存来源量下三次容器/原文取证失败,当步停止并保留资料,不继续付费空转。这里是无进展保护,非任务总量配额。实际节省费用及真实平台表现待后续任务对照验证,旧任务用量无法补造。
官方依据:[模型](https://api-docs.deepseek.com/zh-cn/quick_start/pricing/) / [视觉](https://api-docs.deepseek.com/zh-cn/guides/vision/) / [Search/Fetch](https://api-docs.deepseek.com/zh-cn/guides/search/)。
## 6. 运行与验证
当前目录保留 `school-assistant/` 名称,应用显示“橘子拓客”。独立 PostgreSQL 使用原端口 15433,不触碰同级 assistant 的库、浏览器登录态或服务。启动前检查端口归属,不关闭其他项目的进程。
先验证依赖、类型/构建、后端测试和本地完整流程,再启动桌面应用。缺 Key 时界面可运行并明确提示未配置;真实模型、Search/Fetch 和小红书登录后链路分别验证,不用本地夹具代替真实成功。
## 7. 当前实施顺序
本轮已实现以上对话、阅读、导出、授权、反馈及复盘合同,并完成本地测试和桌面启动核对。旧任务59/60步与51/60步、已保存来源和失败历史各自保留,未自动续跑或追加真实平台采集。
当前顺序以用户纠偏阶段为准,各阶段汇报后须获监督确认才进入下一阶段:
1. P0冻结止损:默认关闭实验工具与全部预检路径、保存成功与父关系分离;不继续D44桌面复测。本机验证完成,P1首轮44个真实浏览模型请求已补齐工具列表回执。
2. P1主链路基线:用户已确认装修服务及近期准备装修用户,真实只读discover目标10位、不加篇数上限,实际2/10位后按原取证停滞规则停止。任务目录已输出 `baseline.json`,完整指标见当前P1记录;未达标缺8位,不调参凑数、不续跑美化基线。测量阶段完成,业务未达标,等待监督确认后进入P2。
3. P2确定性动作程序化:按实测瓶颈实现 `harvest_note(max_items)`、`list_search_notes(keyword)`,保留原话校验及去重;与P1同任务规模对比单候选调用及token下降至少50%,用数据评估非判断步骤关闭视觉。
4. P3用可执行工具序列及参数沉淀流程,真实台账填成本,同类第二任务衡量节省量;保留 `independent-evidence-v1`,停止未验证方法的浏览器提示注入。
5. P4模型结构化提取、理解卡确认后程序执行;盘点并替换直接改意图/范围的自然语言正则,正则只作确认提示。P5在P2完成后按职责纯搬移tools,归档D20–D44并将主PROGRESS控制在200行内;P0不提前拆分或归档。
同一做法失败两次即停下查根因换思路;登录、验证码、平台限制、余额或鉴权问题立即暂停并如实报告。真实触达及任何提交代码须另获用户明确同意,当前不commit/push。未授权关注、评论、私信的边界、四个独立端口及内嵌park约定保持。
细粒度JSON错误诊断等未单独验收的事项继续保留,不用本次UI更新替代。截图连续稳定性按后续真实批次记录,不从本地夹具推出全局保证。
每轮按“问题出在哪 → 怎么修复及验证结果 → 接下来怎么走”收尾,保留未解决事项,具体约定见项目 CLAUDE.md。