ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

摩擦信号写入 Git 仓库,TaoToken 管后续 AI 复盘会话

摩擦信号写入 Git 仓库,TaoToken 管后续 AI 复盘会话 1. 摩擦信号写入 Git 后复盘会话为什么需要一个统一模型出口当 Claude Code 的 Stop Hook 弹出[teamai] 本次会话可能包含值得记录的问题你中断了AI 2次AI重试失败工具8次时很多人会直接运行/teamai-share-learnings。但复盘会话本身要调用模型团队里有人用 Claude Code有人用 Codex还有人用 Cursor、WorkBuddy、Windsurf模型出口和 API Key 很容易散落。本文把后续复盘出口统一到 TaoToken官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_intro让“摩擦信号进 Git”和“复盘总结走统一 API”形成闭环。团队 AI 协作最容易被忽略的不是模型能力而是经验流动方式。一个后端同事在 Claude Code 里调好了 MCP 配置、编码规范、密钥扫描 Hook另一个前端同事却在 Cursor 里重新踩坑新人入职后需要靠聊天工具收文件、手动复制目录某个安全规则更新后只有当天开会的人知道其他人本地还留着旧版本。更麻烦的是AI 会话里的踩坑过程往往一次性消耗中断、重试、拒绝工具调用这些高价值信号没有被记录下一次同类问题仍然从零开始。腾讯开源的 teamai-cli 选择用 Git 做团队 AI 协作底座把 Skill、Rule、文档、Hook、MCP 配置放进共享仓库再分发到不同 AI 编程工具。它真正有意思的一步是用 Stop Hook 采集“摩擦信号”手动打断、拒绝工具调用、命令多次失败才会被标记为值得沉淀的会话。确认后AI 总结本次踩坑经验提交到团队 Git 仓库。问题也随之出现运行/teamai-share-learnings时复盘会话要调用模型。如果每个人本地模型出口不同有的用默认端点有的用个人 Key有的在 Codex 里配置不完整那么复盘质量、Token 消耗、权限边界都会失控。所以本文不是只讲 teamai-cli 怎么装而是把重点放在摩擦信号如何进 Git复盘会话如何稳定走https://taotoken.net/api以及 Claude Code、Codex、CC Switch 三套环境怎么配。2. teamai-cli 的 Stop Hook 把摩擦信号变成可评审 Markdownteamai-cli 的核心不是替代 AI 编程工具而是做 AI 工具层的管理底座。它把团队共享配置放在 Git 仓库里通过teamai pull同步到本地再映射到 Claude Code、Codex、Cursor、CodeBuddy、WorkBuddy、Gemini CLI、Windsurf、Trae、Aider、Amp、OpenClaw 等工具的原生目录。不同客户端可以继续用自己的界面但背后的 Skill、Rules、文档、Hook 和 MCP 声明来自同一套仓库版本。Stop Hook 是其中一个关键入口。普通任务一次性跑完不会触发提醒只有反复搏斗的会话才会弹出复盘建议。比如[teamai] 本次会话可能包含值得记录的问题 你中断了AI 2次AI重试失败工具8次。 任务修复重复的项目级Hook注入问题 建议运行 /teamai-share-learnings 总结本次经验并分享给团队。这个提示背后的逻辑是中断、重试失败、工具调用被拒绝都是“摩擦信号”。它们比单纯聊天记录更有价值因为这里包含了真实排障路径、错误命令、失败假设和最终修复方式。teamai-cli 不无差别记录所有会话只在高摩擦场景下生成待整理条目。如果你的团队版本支持自定义 Stop Hook可以用一个 bash 脚本兜底采集。下面示例会在摩擦达到阈值时把会话摘要写入.teamai/learnings/pending并自动提交到 Git#!/usr/bin/env bash # .teamai/hooks/stop.sh set -euo pipefail ROOT$(git rev-parse --show-toplevel 2/dev/null || pwd) PENDING$ROOT/.teamai/learnings/pending mkdir -p $PENDING SESSION_ID${TEAMAI_SESSION_ID:-$(date %s)} INTERRUPTS${TEAMAI_INTERRUPTS:-0} RETRY_FAILED${TEAMAI_RETRY_FAILED:-0} TOOL_REJECTED${TEAMAI_TOOL_REJECTED:-0} if [ $INTERRUPTS -gt 0 ] || [ $RETRY_FAILED -ge 3 ] || [ $TOOL_REJECTED -gt 0 ]; then cat $PENDING/$SESSION_ID.md EOF --- session_id: $SESSION_ID interrupts: $INTERRUPTS retry_failed: $RETRY_FAILED tool_rejected: $TOOL_REJECTED status: pending created_at: $(date -Iseconds) --- EOF git add $PENDING/$SESSION_ID.md git commit -m chore(teamai): collect friction signal $SESSION_ID || true fi对应配置可以放在团队仓库中例如# .teamai/config.yaml hooks: stop: enabled: true script: .teamai/hooks/stop.sh friction: interrupt_threshold: 1 retry_failed_threshold: 3 tool_reject_threshold: 1这样做的价值是摩擦信号先变成 Git 里的 Markdown再进入 MR 评审流程。评审通过后它才成为团队知识库的一部分。后续 AI 在相似任务启动时可以通过召回能力检索这些经验而不是让每个人重新踩一遍同样的坑。但要注意Stop Hook 只负责采集和提交信号真正把 pending 文件整理成可读经验的是/teamai-share-learnings。这个复盘动作会调用模型所以模型出口必须先配置好。3. 准备 TaoToken模型对话、API Keys、Coding Plan 与 Base URL后面所有配置都围绕三个值展开Base URL、API Key、模型 ID。Base URL 固定为https://taotoken.net/api注意这个地址不要加 UTM 参数工具配置只认干净的 API 根路径。API Key 使用占位符YOUR_API_KEY实际值需要登录后创建。模型 ID 则从模型对话页选择并复制。先访问 TaoToken 官网完成注册或登录https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_get_key。如果你只是先验证复盘链路可以进入模型对话页选一个日常模型确认账号可用https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_model_chat如果你准备把团队日常 Coding 和后续复盘都接到同一套出口可以查看 Coding Plan 页面确认额度、并发和模型范围https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_coding_plan创建 Key 时进入 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_api_keys建议给团队复盘会话单独建一个 Key命名上区分用途例如teamai-learnings。不要把个人 Key 写进共享 Git 仓库也不要把真实 Key 提交到.teamai目录。teamai-cli 的共享仓库适合放配置模板、Hook 脚本和 MCP 声明密钥应通过环境变量注入。MCP 配置里也应使用环境变量占位不要把明文 Key 写进仓库。准备阶段可以这样做# 只在当前 shell 临时生效适合先验证 export TAOTOKEN_API_KEYYOUR_API_KEY export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY注意上面三行只是临时验证。Claude Code 和 Codex 的长期配置方式不同不能混用。Claude Code 走ANTHROPIC_*Codex 走config.toml里的模型供应商配置。把ANTHROPIC_*套到 Codex 上不会生效这是常见错误。4. Claude Code / Codex / CC Switch 三套配置复盘请求统一走 TaoToken先看 Claude Code。推荐使用settings.json配置用户级路径通常是~/.claude/settings.json项目级路径是.claude/settings.json。如果团队希望复盘会话也走统一出口可以把 Base URL 和 Key 放在用户级配置里{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: claude-sonnet-4-5 }, permissions: { allow: [ Bash(teamai pull:*), Bash(git add:*), Bash(git commit:*), Bash(git status:*) ] } }其中ANTHROPIC_MODEL按你在 TaoToken 模型对话页看到的实际模型 ID 填写。ANTHROPIC_BASE_URL必须是https://taotoken.net/api不要写成带查询参数的网页地址。配置完成后重启 Claude Code 会话再运行一次普通提问确认请求已经走 TaoToken。再看 Codex。Codex 不使用ANTHROPIC_*而是读取~/.codex/config.toml。典型配置如下model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api responses然后在 shell 里导出 Keyexport TAOTOKEN_API_KEYYOUR_API_KEY如果你的 Codex 版本对wire_api要求不同可以按版本说明改成chat或其他兼容值。关键是model_provider指向taotokenenv_key指向你实际导出的环境变量名。不要把ANTHROPIC_AUTH_TOKEN写进 Codex 配置也不要指望 Codex 读取 Claude Code 的settings.json。最后是 CC Switch 三件套。如果你使用 CC Switch 管理多个 Claude Code 供应商可以在供应商管理里新增 TaoToken核心三件套是{ name: TaoToken, baseUrl: https://taotoken.net/api, apiKey: YOUR_API_KEY, model: claude-sonnet-4-5 }不同版本 CC Switch 的字段名可能略有差异但本质一致Base URL 填https://taotoken.net/apiAPI Key 填YOUR_API_KEY对应的真实值模型填从模型对话页复制的 ID。配置好后切换到 TaoToken 供应商再启动 Claude Code。这样/teamai-share-learnings触发复盘时模型请求会走 TaoToken而不是散落到个人默认端点。如果你还没有创建 Key回到 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_create_key。创建后先复制保存再填入对应客户端配置。5. 跑通 /teamai-share-learnings从摩擦提示到知识库提交配置好模型出口后可以把 teamai-cli 的完整链路跑一遍。前置依赖是 Node.js ≥18 和 Git 环境。安装与初始化可以按下面流程执行# 1. 全局安装 teamai-cli npm install -g teamai-cli # 2. 管理员初始化团队仓库具体 scope 按团队规模选择 teamai init --scope team # 或直接在业务仓库内初始化项目级配置 teamai init --scope project # 3. 成员接入团队仓库 teamai join 你的团队 teamai 仓库地址 teamai pull # 4. 查看和切换角色 teamai roles list teamai roles switch backend团队仓库里可以维护 Skill、Rules、文档、Hook 和 MCP 声明。MCP 配置建议使用环境变量占位例如{ mcpServers: { team-tools: { command: npx, args: [-y, your-mcp-server], env: { API_KEY: ${TAOTOKEN_API_KEY} } } } }这里只做工具配置分发不要让 MCP 或 Agent 直连 Oracle、生产数据库等敏感系统。涉及 SQL、部署命令、数据变更时应由读者在本地或受控环境手动执行AI 只负责生成建议和复盘总结。当一次会话出现多次中断或重试失败Stop Hook 会生成 pending 文件并提示你运行/teamai-share-learnings在 Claude Code 或 Codex 会话中输入该命令。它会读取.teamai/learnings/pending下的摩擦信号调用当前配置的模型进行总结生成结构化经验再提交到团队 Git 仓库。提交后可以检查ls -la .teamai/learnings/pending ls -la .teamai/learnings git status git log --oneline -5如果团队使用 MR 流程可以基于自动创建的分支发起合并请求。评审通过后下一次成员开启 AI 会话SessionStart Hook 会自动同步最新配置和知识库。这样就完成了“个人踩坑 → 摩擦信号 → Git 提交 → AI 复盘 → 团队知识库 → 后续召回”的闭环。关键点是/teamai-share-learnings的复盘质量取决于模型出口是否稳定。把 Claude Code 或 Codex 的模型供应商指向https://taotoken.net/api后复盘会话的 Token 消耗、Key 权限和模型选择都集中在 TaoToken排查问题也更简单。6. 团队排障清单Hook 不触发、401、模型 404、Codex 不生效实际落地时最常见的问题不是 teamai-cli 本身而是环境配置和 Hook 状态。下面按现象排查。第一Stop Hook 不触发。先确认 AI 客户端是否支持 SessionStart / Stop Hook以及 Hook 是否被关闭。有些客户端或企业策略会禁用 Hook导致自动同步和摩擦采集失效。这种情况下只能手动执行teamai pull如果 Stop Hook 脚本存在但没有执行权限也要补上chmod x .teamai/hooks/stop.sh第二Claude Code 报 401 或认证失败。检查~/.claude/settings.json里的ANTHROPIC_AUTH_TOKEN是否等于实际 KeyANTHROPIC_BASE_URL是否为https://taotoken.net/api。注意不要混用多个供应商配置也不要让旧环境变量覆盖新配置。可以临时取消旧变量再重启unset ANTHROPIC_API_KEY unset ANTHROPIC_AUTH_TOKEN unset ANTHROPIC_BASE_URL然后重新打开 Claude Code让settings.json生效。第三模型 404 或 model not found。通常是模型 ID 写错。回到模型对话页重新复制模型 IDhttps://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_model_fix第四Codex 没有走 TaoToken。检查~/.codex/config.toml是否设置了model_provider taotoken以及[model_providers.taotoken]下的base_url是否为https://taotoken.net/api。再确认env_key TAOTOKEN_API_KEY对应的环境变量已经导出。Codex 不会读取ANTHROPIC_*这是两套独立配置。第五Git 提交失败。常见原因是分支保护、没有写权限、Hook 自动提交时遇到冲突。可以手动检查git status git branch --show-current git diff如果团队要求所有变更走 MR就不要让 Hook 直接提交到受保护分支改为提交到learnings/auto之类的临时分支。第六知识召回没有生效。teamai-cli 的召回功能通常默认关闭需要手动启用避免无关节省检索开销。启用后teamai-recall会在任务启动时检索团队知识库。手动检索可以先用teamai recall Hook 注入重复如果检索结果为空先确认 learnings 已经合并到当前分支再确认召回开关已打开。第七MCP 配置泄露 Key。共享仓库里只允许出现环境变量占位例如${TAOTOKEN_API_KEY}。如果发现明文 Key立即在 TaoToken API Keys 页面撤销旧 Key重新创建并替换https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_revoke_key7. 适合与不适合的边界以及文末 CTAteamai-cli 适合这样的团队多人混用 Claude Code、Codex、Cursor、WorkBuddy、Windsurf 等工具希望统一编码规范、安全检查、MCP 配置新人或外包人员较多希望一键交付 AI 使用规范经常重复踩同类坑希望把摩擦信号沉淀为团队知识企业内部不同团队需要复用 Skill例如安全团队统一分发代码审计规则不想额外搭一套复杂 AI 中台只想基于现有 Git 做治理。它不太适合团队只用单一 AI 工具没有多客户端同步诉求团队本身没有 Git 协作流程不接受 MR 评审或者希望所有 AI 配置都由个人自由管理不愿意纳入共享仓库。如果决定落地建议按这个顺序推进先用 TaoToken 官网注册并确认模型可用再创建 API Key然后把 Claude Code 或 Codex 的模型出口切到https://taotoken.net/api最后接入 teamai-cli 并运行一次/teamai-share-learnings。这样可以从最小闭环开始不会一上来就重构所有开发流程。文末按高转化路径整理如下。先进入模型对话页选一个模型验证账号与复盘请求https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_cta_chat如果你准备把日常 Coding 和团队复盘都纳入统一额度查看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_cta_plan然后创建 API Key填入settings.json、config.toml或 CC Switchhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_cta_api_keysClaude Code 环境如果还需要确认ANTHROPIC_*和settings.json写法可以查看 Claude Code 文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_cta_claude_code最后回到 TaoToken 官网总入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentteamai_final。配置完成后把复盘出口设为https://taotoken.net/api再运行/teamai-share-learnings让摩擦信号真正进入团队 Git 知识库而不是停留在某一次会话记录里。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进