☰
TaoToken 配置实战:用 settings.json 骨架复现李蓓地产交易决策的“不看“逻辑
2026/9/29 9:55:23 网站建设 项目流程

1. 从李蓓的地产交易说起:为什么"不看"比"看"更难

李蓓年内净值 -24.5%,同期沪深300 +6.73%、创业板50 +34.96%,重仓地产、踩空AI主线。Mark Minervini 用 SEPA 系统逐条拆解后给出一句结论:这不是 setup,这笔交易我连看都不会看。地产指数在200日均线下方运行超过一年,50/150/200 MA 空头排列,属于 Weinstein 定义的 Stage 4 下跌趋势;没有 VCP 收缩形态,没有放量 pivot 突破;硬止损距离15-20%,远超他7-8%的上限。五个支柱筛下来,一个都不满足。

这件事真正值得琢磨的地方,不是"李蓓错了",而是 Minervini 的决策方式:他先定义什么不买,再谈买什么。Stage 4 不看、无 VCP 不看、止损太宽不看——三条排除规则一摆,90% 的标的根本进不了他的视野。这就是排除法思维:决策质量不取决于你看了多少,而取决于你提前排除了多少。

把这个逻辑搬到 AI 工具配置上,你会发现结构完全同构。你在 Claude Code、Cursor 这类工具里调用模型和工具时,如果没有白名单/黑名单机制,就等于"什么标的都看"——任何工具调用都能触发、任何模型都能被路由、任何请求都进审计日志。真正专业的配置,是先写清楚"哪些允许、哪些拒绝、哪些必须记录",再让请求进来。这篇就用一份可复制的settings.json骨架,把 Minervini 的"不看"逻辑落到 TaoToken 的统一 Key/API 通道上。

2. TaoToken 前置:统一 Key 与 API 通道是什么

TaoToken 在这里扮演的角色,是把你所有 AI 工具调用的出口收敛到一个统一通道上。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api (这个地址不加 UTM 参数,直接用于配置)。

为什么统一通道对"排除法"这么关键?打个比方:如果你家有十个门,每个门一把锁,你想执行"只允许快递员进、其他人一律不进"的规则,就得在十个门口各装一套识别系统,漏一个就破功。TaoToken 相当于把十个门合并成一个总入口,你只需要在一个地方写白名单和黑名单,所有工具的调用都从这里过。过滤规则集中了,审计日志也集中了,出问题只查一个地方。

具体到配置层面,你需要先在控制台拿到 API Key,然后把它写进各工具的settings.json。这里有个容易踩的坑:很多人把 Key 直接硬编码在项目文件里然后提交到 Git,等于把总入口的钥匙贴在门上。正确做法是用环境变量引用,settings.json里只写变量名。下面第三节的骨架会体现这一点。

拿 Key 的路径:进入控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,在 API Keys 页面 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 创建一个新 Key,复制出来先存到本地环境变量里,别急着写进文件。

3. 可复制的 settings.json 骨架

下面这份骨架的核心思路,是把 Minervini 的三条排除规则翻译成配置项:allow是白名单(只买 Stage 2),deny是黑名单(Stage 4 直接跳过),audit是审计开关(每笔决策留痕)。你可以直接复制,把里面的模型名和工具名换成你实际用的。

{ "provider": { "name": "taotoken", "base_url": "https://taotoken.net/api", "api_key_env": "TAOTOKEN_API_KEY", "timeout_ms": 60000, "max_retries": 2 }, "routing": { "default_model": "claude-sonnet-4-5", "allow_models": [ "claude-sonnet-4-5", "claude-opus-4-1", "gpt-4o" ], "deny_models": [ "*-preview-*", "*-experimental-*" ] }, "tools": { "allow": [ "read_file", "list_dir", "grep_search", "run_tests" ], "deny": [ "delete_file", "drop_table", "exec_shell_unsafe", "write_prod_db" ], "require_confirm": [ "write_file", "git_push" ] }, "audit": { "enabled": true, "log_path": "./logs/taotoken-audit.jsonl", "record_fields": [ "timestamp", "model", "tool", "decision", "reason" ] } }

逐块解释一下。provider块里api_key_env写的是环境变量名TAOTOKEN_API_KEY,不是 Key 本身——这样文件可以安全提交,Key 留在本地。routing.allow_models是模型白名单,只有列出的模型能被路由;deny_models用通配符挡掉所有 preview 和 experimental 版本,理由和 Minervini 不碰未确认形态一样:预览版行为不稳定,不该进生产决策链。

tools块是重点。allow里放的是只读、低风险操作,随便调;deny里放的是删除文件、删表、危险 shell、写生产库这类一旦执行就不可逆的操作,直接拒绝,连确认机会都不给——这就是"连看都不会看"。require_confirm是中间地带,写文件、推代码这类需要人工点一下头。三层结构对应 Minervini 的"可买 / 不可买 / 需确认 setup"。

audit块打开后,每次调用都会往./logs/taotoken-audit.jsonl追加一行 JSON,记录时间、模型、工具、决策结果和原因。这是"审计"落地的地方:事后你能查清楚哪次调用被拒了、为什么拒。

设置环境变量(Linux/macOS):

export TAOTOKEN_API_KEY="你的Key" echo 'export TAOTOKEN_API_KEY="你的Key"' >> ~/.bashrc

Windows PowerShell:

$env:TAOTOKEN_API_KEY = "你的Key" [Environment]::SetEnvironmentVariable("TAOTOKEN_API_KEY", "你的Key", "User")

4. 验证请求与成功结果

配置写完不验证,等于没配。分三步验证:通道通不通、白名单生不生效、黑名单拦不拦得住。

第一步,验证 API 通道。用 curl 打一个最小请求,确认 Key 和 base_url 都对:

curl -s https://taotoken.net/api/v1/messages \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 OK 两个字母即可"}] }'

成功的话你会拿到一个 JSON,content数组里有模型返回的文本。如果返回 401,说明 Key 没读到或写错了;返回 404,检查 base_url 是不是漏了/v1或写成了带 UTM 的地址。

第二步,验证白名单。把请求里的model换成一个不在allow_models里的名字,比如some-random-model,预期是被拒绝或回退到默认模型。如果它照样返回结果,说明你的路由层没真正读allow_models,白名单形同虚设。

第三步,验证黑名单和审计。触发一个deny里的工具(比如让 Agent 尝试delete_file),预期是直接被拦,同时./logs/taotoken-audit.jsonl里应该多出一行:

{"timestamp":"2026-01-15T10:23:41Z","model":"claude-sonnet-4-5","tool":"delete_file","decision":"denied","reason":"in deny list"}

看到这行,说明"不看"逻辑真正生效了:请求进来了,但在执行前被规则挡掉,并且留了痕。这三步都过,你的骨架就算跑通了。

5. 本篇常见错排查

报错一:401 Unauthorized。九成是环境变量没生效。先echo $TAOTOKEN_API_KEY看有没有值;如果是在 IDE 里跑,注意 IDE 可能没继承你 shell 的环境变量,需要在 IDE 的启动配置里单独设,或者重启 IDE。

报错二:白名单不生效,deny 的模型照样能调。检查allow_models的字段名是否和你的工具实际读取的字段一致。不同工具对配置字段的命名不一样,有的叫allow_models,有的叫allowedModels。以你所用工具的官方文档为准,别照抄字段名。

报错三:审计日志文件不生成。多半是log_path的目录不存在。程序通常不会自动建目录,先手动mkdir -p ./logs。另外确认进程对该目录有写权限,容器环境里经常因为挂载权限问题写不进去。

报错四:通配符*-preview-*没匹配上。有些配置解析器不支持 glob 通配,只支持精确匹配或前缀匹配。如果发现挡不住,把通配改成显式列举,或者确认你的工具用的是哪种匹配语法。

报错五:改了 settings.json 但行为没变。配置一般只在进程启动时读一次,改完要重启工具或重载配置。热重载不是所有工具都支持,别假设它自动生效。

6. 把"不看"变成默认动作

Minervini 那句话的真正分量在于:排除规则是提前写好的,不是临场判断的。市场再热闹,Stage 4 就是不碰;止损超过 8%,就是不入场。规则先于情绪,这才是 33500% 回报背后的东西。

配置也一样。settings.json里的deny列表,应该在你第一次跑 Agent 之前就写好,而不是等它误删了一个文件再补。想验证模型对话效果,可以去模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 直接试;长期跑编码和 Agent 任务,建议看 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ;接入细节和字段说明在接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里;Key 管理回到 API Keys https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。Claude Code 用户可参考 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。

我自己的习惯是:每加一个新工具,先问一句"它最坏能干什么",把那个操作写进deny,再让它跑。先划红线,再谈效率。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询