1. 一人公司为什么总是“注册容易、跑起来难”
一人公司这个词在 2026 年已经不算新鲜,营业执照三天就能拿到,但真正让它每天转起来的个人开发者并不多。核心矛盾很直接:你既是销售、又是交付、还是财务和客服,时间被切得稀碎,任何一个环节掉链子,整条业务线就停摆。我见过太多自由职业者和独立开发者,白天回微信、晚上补文档,月底才发现客户资料散在三个聊天窗口里,发票和合同对不上号。
要破这个局,思路不是“更努力”,而是把重复动作交给一个本地 AI 执行引擎,让它按规则定时跑、按指令即时跑。OpenClaw 就是干这个的:它跑在你自己的机器上,能读本地文件、操控浏览器、操作微信,把“触发条件 → 动作序列 → 结果反馈”串成一条自动化链路。而这条链路里最耗心力、也最容易被忽略的一环,是 AI 调用通道——你不可能给每个任务单独申请一个模型 Key,也不可能让脚本里散落十几套鉴权逻辑。
这篇要解决的就是这件事:用 TaoToken 做统一的 Key 与 API 通道,把 OpenClaw 的各个任务模块接到同一个入口上,再以微信远控作为触发入口,让“人在外面、公司在跑”从口号变成可复制的配置。下面给到的config.toml和settings.json骨架你可以直接改路径就用,重点在通道接入和验证动作,而不是注册流程。
2. TaoToken 在 OpenClaw 链路里扮演什么角色
先把定位说清楚。OpenClaw 是执行引擎,负责“什么时候做什么”;TaoToken 是模型调用通道,负责“做的时候找谁要智能”。一人公司场景下,任务类型很杂:整理客户资料要理解文件名和内容,生成日报要总结日志,竞品调研要抽取网页字段,微信远控要解析自然语言指令。这些任务背后可能是不同的模型、不同的上下文长度、不同的调用频率。
如果每个任务各配一套 Key,你会遇到三个麻烦:一是 Key 管理成本高,换一次要改多处;二是额度分散,某个任务跑超了不好排查;三是脚本里硬编码鉴权,迁移机器时容易漏。TaoToken 的做法是提供一个统一入口,你在控制台生成 Key,所有 OpenClaw 任务模块都指向同一个 API 地址,模型选择在请求参数里区分。这样你只需要维护一份凭证,排障时也只需要看一个通道的日志。
对个人开发者来说,这个统一层的价值在“可替换性”:今天用某个模型做日报总结,明天想换一个更省额度的,只改配置里的模型名,不用动任务逻辑。OpenClaw 的定时任务和微信远控模块都通过这个通道发请求,链路结构保持稳定。
注意:TaoToken 是模型调用通道,不替代你的编辑器、不替代 OpenClaw 本身,也不做任何绕过合规的转发。它的作用是把鉴权和模型路由收敛到一个可管理的入口。
3. 前置准备:Key、目录与运行环境
动手前先把三样东西备齐,后面配置才不会卡。
第一是 TaoToken 的 API Key。进入控制台创建,建议按用途分 Key:一个给定时任务用,一个给微信远控用。分 Key 的好处是某个通道异常时能快速定位,也方便单独轮换。创建入口在控制台的 API Keys 页面,生成后立刻复制保存,页面刷新后不再完整显示。
第二是 OpenClaw 的工作目录结构。一人公司的自动化任务会频繁读写文件,目录乱了后面很难维护。建议在用户目录下建一个统一根目录,比如~/oneco,下面分tasks、logs、clients、reports、inbox五个子目录。inbox放待处理文件,clients按客户名建子文件夹,reports存生成的日报周报,logs存任务执行日志,tasks放任务定义文件。
第三是运行环境确认。OpenClaw 需要能访问本地文件系统和浏览器,微信远控模块需要保持登录态。先确认你的机器上 OpenClaw 能正常启动,再确认网络能访问 TaoToken 的 API 地址。这两步都通了,再往下配。
| 准备项 | 位置/说明 | 用途 |
|---|---|---|
| API Key | 控制台 API Keys 页面 | 统一鉴权,建议按任务分 Key |
| 工作根目录 | ~/oneco | 集中管理任务、日志、客户资料 |
| 任务定义 | ~/oneco/tasks | 存放各任务的配置文件 |
| 日志目录 | ~/oneco/logs | 排障时看执行记录 |
| 微信登录态 | OpenClaw 微信模块 | 远控指令的收发通道 |
4. 可复制配置:config.toml 与 settings.json 骨架
OpenClaw 的配置分两层:config.toml管引擎级参数,settings.json管任务级参数。下面这份骨架你可以直接复制,把路径和 Key 换成自己的。
先看config.toml。这里的关键是[ai]段,把 provider 指向 TaoToken 的 API 地址,Key 从环境变量读取,避免明文写在文件里。base_url用https://taotoken.net/api,不要带多余路径。
# ~/oneco/config.toml [engine] name = "openclaw" work_dir = "/Users/yourname/oneco" log_level = "info" log_dir = "/Users/yourname/oneco/logs" [ai] provider = "taotoken" base_url = "https://taotoken.net/api" api_key_env = "TAOTOKEN_API_KEY" default_model = "claude-sonnet" timeout_seconds = 60 max_retries = 2 [wechat] enabled = true mode = "remote_control" command_prefix = "/oc" reply_on_finish = true [scheduler] enabled = true timezone = "Asia/Shanghai"再看settings.json,这里定义具体任务。每个任务有trigger、steps、notify三段。trigger支持cron和wechat两种;steps是动作数组,按顺序执行;notify决定结果推送到哪里。下面给三个典型任务:客户资料归档、日报生成、微信远控入口。
{ "tasks": [ { "id": "client_archive", "name": "客户资料自动归档", "trigger": { "type": "cron", "expr": "0 18 * * *" }, "steps": [ { "action": "scan_dir", "path": "~/oneco/inbox", "pattern": "*.pdf" }, { "action": "ai_extract", "model": "claude-sonnet", "prompt": "从文件名和内容中提取客户名称与文档类型,返回JSON" }, { "action": "move_file", "target": "~/oneco/clients/{client}/{type}" }, { "action": "append_log", "path": "~/oneco/logs/archive.log" } ], "notify": { "channel": "wechat", "target": "file_helper" } }, { "id": "daily_report", "name": "日报自动生成", "trigger": { "type": "cron", "expr": "30 8 * * *" }, "steps": [ { "action": "read_file", "path": "~/oneco/logs/tasks.log", "range": "yesterday" }, { "action": "ai_generate", "model": "claude-sonnet", "template": "daily_report" }, { "action": "write_file", "path": "~/oneco/reports/daily_{date}.md" } ], "notify": { "channel": "wechat", "target": "file_helper" } }, { "id": "wechat_remote", "name": "微信远控入口", "trigger": { "type": "wechat", "prefix": "/oc" }, "steps": [ { "action": "ai_parse_intent", "model": "claude-sonnet" }, { "action": "dispatch_task", "map": { "归档": "client_archive", "日报": "daily_report" } }, { "action": "reply_result", "channel": "wechat" } ], "notify": { "channel": "wechat", "target": "sender" } } ] }配置里有几个点容易踩坑。api_key_env要求你先在 shell 里导出环境变量,不要直接把 Key 写进 toml。work_dir和任务里的~路径要确认展开正确,建议先用绝对路径跑通再换~。cron表达式是标准五段式,0 18 * * *表示每天 18:00。微信远控的prefix要和你在微信里发的指令前缀一致,否则不会触发。
5. 接入 TaoToken:统一 Key 与 API 通道
配置骨架有了,接下来把通道接上。第一步是导出环境变量,让 OpenClaw 能读到 Key。在 shell 配置文件里加一行,然后重新加载。
export TAOTOKEN_API_KEY="你的Key" source ~/.zshrc第二步是验证通道连通性。不要等定时任务跑起来才发现鉴权失败,先用一条最小请求确认。下面用 curl 发一个对话请求,模型名按你控制台可用的填。
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet", "messages": [{"role": "user", "content": "回复OK两个字"}], "max_tokens": 16 }'返回里能看到choices字段和内容,说明通道通了。如果返回 401,检查 Key 是否复制完整、环境变量是否生效;如果返回 404,检查base_url是否写成了带多余路径的形式。这一步通了,OpenClaw 的ai段就能正常工作。
第三步是把任务模块指向同一通道。OpenClaw 启动时会读config.toml的[ai]段,所有ai_extract、ai_generate、ai_parse_intent动作都会走这个通道。你不需要在每个任务里重复写 Key,只需要在需要区分模型时改model字段。这样一人公司的多个角色——归档员、报告员、调度员——共用一套鉴权,维护成本降到最低。
提示:如果你有多个任务对额度敏感,可以在控制台按 Key 查看用量,把定时任务和远控任务分 Key,排障时一眼能看出是哪条链路在消耗。
6. 验证请求:从微信远控到任务落地
通道通了,现在验证完整链路。先启动 OpenClaw,确认调度器和微信模块都进入运行状态。启动日志里应该能看到scheduler started和wechat module ready两行。
cd ~/oneco openclaw start --config ./config.toml然后在微信里给文件传输助手发一条指令,格式是前缀加意图,比如/oc 归档。预期行为是:OpenClaw 收到消息,解析出意图“归档”,映射到client_archive任务,执行扫描、提取、移动、记录四步,最后把执行结果回复到微信。
验证时重点看三个地方。一是微信是否收到回复,回复里应包含处理文件数量和目标路径。二是~/oneco/clients下是否出现按客户名建的新文件夹,文件是否移动到位。三是~/oneco/logs/archive.log是否追加了本次执行记录。这三处都对上,说明“微信远控 → 意图解析 → 任务执行 → 结果反馈”整条链路跑通了。
再验证定时任务。手动把系统时间调到 18:00 附近,或者临时把cron改成下一分钟,观察inbox里的测试文件是否被处理。定时任务和远控任务走的是同一个 AI 通道,所以通道验证过一次,这里主要验证调度是否准时、路径是否正确。
| 验证项 | 预期结果 | 排查方向 |
|---|---|---|
| 微信回复 | 收到含处理数量的消息 | 检查 prefix 和 reply_on_finish |
| 文件归档 | clients 下出现客户文件夹 | 检查 move_file 目标路径 |
| 日志追加 | archive.log 新增记录 | 检查 log_dir 权限 |
| 定时触发 | 到点自动执行 | 检查 cron 表达式和时区 |
7. 本篇常见错排查
报错一:401 Unauthorized。最常见的原因是环境变量没生效。config.toml里写的是api_key_env = "TAOTOKEN_API_KEY",但 shell 里没导出,或者导出后没重开终端。先在终端执行echo $TAOTOKEN_API_KEY确认有值,再启动 OpenClaw。另一个原因是 Key 复制时带了空格,重新复制一次。
报错二:任务触发但文件没移动。多半是路径问题。scan_dir的path如果用了~,要确认 OpenClaw 进程的用户和展开规则一致。建议先在配置里用绝对路径跑通,再换~。另外move_file的target里{client}和{type}是占位符,如果 AI 提取返回的字段名对不上,目标路径会拼错,检查ai_extract的 prompt 是否明确要求返回这两个字段。
报错三:微信指令没反应。先确认微信模块是否保持登录态,掉线后不会自动重连。再确认prefix是否匹配,/oc和/oc带不带空格行为不同。如果日志里看到消息进来了但没触发任务,检查dispatch_task的map里意图关键词是否和实际发送的一致。
报错四:定时任务重复执行。检查是不是同时开了多个 OpenClaw 实例,或者cron表达式写成了会在一分钟内多次触发的形式。一人公司场景下建议只跑一个实例,调度器单点负责。
报错五:AI 返回超时。把timeout_seconds调大,或者把max_retries设为 2。如果某个任务经常超时,考虑把该任务的模型换成响应更快的,或者在 prompt 里限制输出长度。
8. 把通道固定下来,让一人公司持续跑
一人公司真正跑通的标准,不是任务多花哨,而是链路稳定、排障有据、扩展不痛。TaoToken 在这里的价值是把模型调用收敛成一个可管理的入口,OpenClaw 的任务模块共用它,你只需要维护一份 Key、看一个通道的日志。微信远控作为触发入口,让你不在电脑前也能推进任务,这是单人对抗时间碎片化的关键。
下一步的扩展方向很明确:先把最痛的一个任务跑稳,比如客户资料归档,确认通道和调度都可靠,再加第二个任务。每加一个任务,只改settings.json,不动通道配置。这样你的“一人公司”不是一次性搭起来的,而是逐步长出来的。
需要生成 Key 和查看接入细节,可以从这里进:API Keys 页面 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。如果你还在选模型阶段,可以先用模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 试几条 prompt,确认返回风格符合你的任务需求,再写进settings.json。长期做编码和 Agent 类任务的话,Coding Plan 页 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 有更细的额度说明。