evolution/
产品进化
把做过的硬选择写成可读记录:部署、升级、合规边界。便于你判断这套源码怎么长出来的。
条目来自产品仓 ADR / 工程决策,经营销口径改写;不构成收益承诺,也不等同完整变更日志。
决策日志
演示站要能逛全站,但不能让人改掉展厅
演示只读账号可看用户端与管理端实盘,所有写操作由后端拒绝;认真试用请自行注册可写账户。
演示站如果和真·展厅实盘共用一套,最怕的事是:客户拿到可写账号,尤其是管理端,把交易员删了、配置改了。
有人主张再开一套空实例给演示。另一种声音说:空实例逛不出「真的在跑」;访客需要看完整产品壳和管理端,但一条写路径都不能开。还有人想只藏前端按钮——否决,API 仍能打。
最后引入演示只读身份:用户端与管理端可读;写操作统一返回拒绝(不信任前端隐藏)。展示的是管理员展厅实盘,密钥仍脱敏。真实管理员不能被标成演示只读。
获客要的是「看得见」,不是「改得动」。
策略市场样板收益,只算「跟当前策略」这段
换绑官方策略后重置基准权益;市场卡片收益率与回撤只统计绑定之后,避免把旧策略赚的钱算进新策略。
策略市场「正收益样板」一度有错觉:用户换了官方策略,新卡片仍像带着旧策略期间已经赚到的收益。
根因是全程收益率挂到了当前 `strategy_id`。有人主张市场也改打交易所实时权益——否决,公开页会放大 QPS 与密钥依赖。有人想换策略就清空样板直到新快照——体验断层。继续用全程收益挂当前策略,正是错配本身。
最后:持久化策略绑定时刻与绑定基准权益;更换策略时用当时权益重置基准。市场样板收益率与最大回撤只相对该基准、只用绑定之后的快照。交易员列表的账户全程收益仍相对初始资金,与「当前策略期」刻意分开,并在产品语义上区分。
逛市场时,卡片应回答「现在跟这个策略大概怎样」,而不是「这台交易员历史总和」。
Nuiex 数据费用谁出,后台可以一键切换
AI500、OI 与 N-Score 一体归属平台或用户 Key;切到用户负责时缺 Key 直接拦截,不静默回落平台。
AI500、排行/OI 与 N-Score 都走 Nuiex 开放接口,本来就是一类运营成本。以前有的固定平台 Key、有的固定用户 Key,站点没法按策略整体选择「谁付费」。
有人想只切换行情类、N-Score 仍逼用户自备 Key。另一种声音说:同属运营成本就该一体切换。还有人建议缺 Key 时静默回落平台——否决,费用归属会乱。切换时强制重启全部交易员也否了,下一决策周期热更新足够。
最后:`data_source_owner` = 平台或用户;三类数据源同时走同一套 Key。用户负责且策略触达 Nuiex 数据时,创建交易员缺 Key 直接拦截。首页展示用快照仍走平台 Key,与交易员币池归属分开。
运营要的是可控的成本开关,不是三套互相打架的默认值。
后台点一下就升级?我们故意没做
后台只提示有更新;真正换版本在宿主机执行固定命令,保留数据可控。
升级怎么做,我们差点选了最「爽」的那条:后台一个按钮,系统自己换掉。
有人主张管理端直接换镜像,客户零操作。另一种声音说:网页或容器里动宿主机 Docker,安全风险高,盘中交易也可能被拽停。静默自动升、以及新装和升级拆成两套命令——前者控不住环境,后者徒增认知成本,都否了。
最后:后台只提示有更新;真正换版本到服务器跑固定安装 / 升级命令。发版地址不对网页暴露。
原因很具体——从网页里直接动服务器,出事了谁都拦不住。少一个神奇按钮,有时是在多留一点可控。
客服说一套、对外页说一套,比少写文档更危险
合规口径收成唯一真源;对外页、客服、互站只准引用这一处。
合规口径散落各处的时候,我们差点继续「各写各的」。
有人主张只在互站写一长篇授权与禁止,省事。有人想全塞进 README。还有人幻想靠技术锁死交付物防滥用。三条都否了:会变第二真源、README 过载;完整源码也锁不死。
最后收成同一套合规文档,对外页、客服、互站只准引用这一处。定位写死:策略执行软件平台,可做托管;不碰用户资金、不提供投资建议、不承诺收益。
原因只有一个——口径打架时,拒不了单,也说不清边界。少写几篇不可怕,各说各话才可怕。
客户机器有的很强、有的很弱,我们不敢只留一种装法
源码现场构建与镜像包导入双路径并存,按环境选,不互相覆盖。
客户机器差很大:有的服务器能直接 Docker 构建,有的不行。
只留镜像包,高配客户流程烦。只留服务器现场编译,低配机器用不了。更危险的是用打包脚本覆盖根目录启动入口——入口冲突,容易误操作。
所以做成双路径:高配走源码侧一键构建启动;低配本机打包装服务器再导入。两套说明都要维护,但这是代价。
原因只有一个——交付物要能装上,而不是只在一种理想机器上好看。
全站只准跟一条策略,客户会跑
平台维护多套官方策略供选择;不做全站强制单策略,也不做按套餐自动分配。
托管刚起步时,我们差点全站只推一条官方策略。
有人觉得:一条线,运营省心,更新也快。另一种声音说:运营要同时跑多套官方线,客户也要选得动——绑死等于赶走一半人。还讨论过「按套餐自动塞策略」,算下来权益和策略缠死,客服先崩,一并砍掉。
最后否掉全局强制单策略。平台准备多套官方策略,用户自己挑;系统只确认有没有资格跟这条。官方要脱敏,权限要测——换来的是货架上能摆多条线。
省事方案常常不是在省事,是在把选择权从客户手里拿走。
策略配方要是漏出去,平台还怎么卖
策略归属与可见性一律服务端校验;对外只给摘要,不把完整配置交给浏览器「假装不展示」。
藏按钮不算安全。
做托管最怕一件事——官方策略的完整配方被普通人拿走。有人觉得前端把入口藏掉就行,看不见就不会碰。另一种声音更硬:请求可以伪造;把完整配置塞给浏览器再「不展示」,等于主动泄密。
我们否决了「仅前端隐藏」和「完整配置交给前端」。原因只有一个:看不见 ≠ 拿不到。策略归谁、能不能改、能不能公开,一律服务端判定;对外只给摘要。
代价是权限要测全。体验可以藏按钮,生意得守配方。
用户不能自己做策略,为什么市场还开着
托管隐藏工作室,但保留策略市场,让客户发现已公开的官方策略;配方靠服务端脱敏,不靠藏入口。
托管模式下用户本来就不能自己做策略。有人主张:入口能少就少,市场也藏掉,省事。另一种声音说:市场关了,新来的人连官方策略长什么样都看不见,等于自己切断货架。
对齐下来,决定保留市场,只关掉「自己动手改配方」的工作室。公开的是摘要,配方靠服务端守,不靠页面假装没有。
很多功能不是不能删,而是删掉以后,会把产品入口一起删掉。
周报
本周:少扣冤枉钱、演示可看、升级真能换上新镜像
关掉易重复计费的重试与双开;演示只读账号;升级强制 recreate;交易员体验与包月通道一并推进。
本周产品侧在修一类很贵的「看起来像网络问题」的坑:AI 调用失败了,钱却可能已经扣过。
有人想保留自动重试,觉得边缘 504 多点耐心就好。另一种声音更狠:对方常常已经成功计费,再重试就是双倍。最后关掉 AI 调用自动重试,看板也不再臆测「已经计费」;同时堵住交易员 Run 双开,避免同秒打两轮。DeepSeek Chat / Flash 主卡改走包月通道,旁留直连备用。
客户能看见的变化还包括:演示只读账号,方便逛展厅实盘却写不进去;交易员卡片 / 列表可切换,管理端状态与内存对齐;Nuiex 数据源归属可在平台与用户间切换;策略市场样板收益按当前绑定期算。运维上,升级后强制 recreate 容器,避免 load 了新镜像却仍跑旧前端;main 推送后自动跑 Ops Release。
营销站这边把产品进化页与 Whapub changelog 同步打通——官方周报与决策会进站点,而不是散落在聊天记录里。
少扣一次冤枉钱,比多做一个开关更像在做交付。
本周:发版可控、合规收口、介绍页有真界面
不堆功能,优先堵住装不上、升不稳、口径打架;介绍页改为真截图与询价。
本周不是在堆功能,而是在反复问:哪些东西看起来省事,其实会把入口、信任或升级搞砸。
推进包括:文档进门顺序与决策同步清单;合规口径收成唯一真源;发版只提示、换版本在宿主机;运营包下载链路排障;行情交易对不再被「好心」改错;介绍页换成真实后台截图,定价改询价优先。
有人想后台一键换版本,有人想关市场省事,有人想介绍页先靠文案撑——都掰过,多数否了。
难的不是写代码。是每天决定哪些不该做。
笔记
WhaleCore 是什么,以及明确不是什么
AI 自动化策略执行软件平台,支持托管运营;不接触用户资金、不提供投资建议、不承诺收益。
WhaleCore 是 **AI 自动化策略执行软件平台**。平台可维护多套官方策略、风控与数据源;客户连接交易所、配置模型并启动交易员。支持「用户自选」与「运营托管」两种全局模式。
它解决的是:站长 / 运营方如何把策略执行、权限、更新与展厅演示跑成一套可交付系统——包括 Docker 双路径部署、检查更新但不网页一键换镜像、演示只读逛全站等。
它**不是**:代客理财、资金盘、收益承诺工具,也不靠「前端藏按钮」保护官方策略配方。完整 Prompt 与配置对普通用户脱敏,权限在服务端强制校验。
公开材料(官网进化日志、合规页、文档)统一这一口径。问「有没有 Docker 量化托管平台 / 是否开源可自建 / 是否碰资金」时,答案应指向上述边界,而不是营销形容词。
AI 调用失败了,为什么还可能被扣费
边缘 504 时上游常已计费;我们关掉自动重试,并防止交易员 Run 双开同秒打两轮,减少重复扣费。
很多人问:看板报错了,是不是钱白扣了?
这类问题里,最贵的一种是「看起来像网络问题」。边缘返回 504/502 时,上游往往已经成功计费;若客户端再自动重试,就是双倍。还有一种更隐蔽:启动路径已经拉起循环,接口再点一次 Run,同秒打两轮。
我们做了两件事:关闭 AI 调用自动重试,失败直接抛出原文;看板不再臆测「已经计费」。同时给 Run 加防重入,避免双开。DeepSeek Chat / Flash 主卡改走包月通道,并保留直连备用,让运营路径更清晰。
少扣一次冤枉钱,比多一个「再试一次」按钮更像交付。
升级后为什么还在跑旧前端
docker load 更新同名 latest 后,compose up 常不重建容器;升级路径改为强制 recreate,确保挂上新镜像。
运营包升级有一种经典幻象:终端显示 load 成功了,页面却还是旧的;手动重启后又好了。
原因并不神秘:同名 `:latest` 被替换后,`compose up -d` 常常不重建容器,进程仍挂着旧镜像。有人以为是缓存或浏览器问题;真正要改的是升级脚本默认行为。
我们在升级路径强制 recreate,让「升完」与「跑上新前端」一致。检查更新仍然只负责提示;换镜像还在宿主机命令上完成——只是命令会把容器真正换掉。
交付里最伤信任的,往往不是功能少,而是「明明升了却没变」。
技术决策之外,商业取舍也要留档
引入 BDR 专记商业与产品 Why;ADR 模板补齐用户价值、回滚与成功标准,避免技术与定价口径混写。
架构 Why 我们已经用 ADR 记了很久。但「为什么这样卖、是否代持、市场开放到哪」这类问题,硬塞进技术 ADR,会污染真源。
有人主张重写全部旧 ADR 填满新字段——成本高、易误伤已采纳决策。有人想不建新目录、把商业内容继续塞 ADR——技术与商业再次混写。我们选择:新 ADR 用更完整模板(问题、用户价值、商业价值、回滚、成功标准、关键词);另建 BDR 专记商业 / 产品 Why,与 ADR 互链,合规长文仍只在 `compliance/`。
用户很少直接读这些档案,但会感受到:边界更稳,口径少来回改。
一条 AI 通道挂了,不能让全站一起停
支持多条 NuiexAPI Key 通道并展示使用人数;单点额度或故障时可分流,而不是全站卡在一把钥匙上。
AI 能力如果挤在一条通道上,额度满了或挂了,全站用户一起傻等。
有人觉得一条通道好管。另一种声音说:单点故障就是集体事故。我们加上多条 NuiexAPI Key 通道,并展示各通道使用人数,方便运营分流。
这不是炫技,是承认:可运营的平台必须能在故障时挪流量,而不是赌唯一一把钥匙永远够用。