feat: 整合功能恢复与技能学习闭环(含 ECC v2.1 parity + Opus 4.7 接入 + prompt 工程优化)

主要变更:
- Skill Learning 闭环系统 (9/9 AC)
- Opus 4.7 模型层接入 + adaptive thinking
- Prompt 工程优化 (64 审计测试)
- Agent Teams 简化门控 (默认启用)
- Windows Terminal 后端修复 (EncodedCommand/WT_SESSION)
- TF-IDF 技能搜索精准化 (字段加权/CJK 优化)
- Autonomy 系统 (/autonomy 命令)
- ACP 协议完整实现
- mock.module 泄漏修复 (CI 全绿)
- 152+ lint/type 修复
This commit is contained in:
unraid
2026-04-22 16:07:42 +08:00
parent 711927f01b
commit 95fece4b51
316 changed files with 39611 additions and 14298 deletions

View File

@@ -0,0 +1,432 @@
# 内部限制与可解锁能力代码审计
更新时间2026-04-15
## 目的
这份文档只基于源码做判断,回答三个问题:
1. 哪些能力是真正的 `ant-only`
2. 哪些能力其实已经对 `Claude.ai` 订阅用户可用
3. 哪些能力看起来有入口,但实际上还缺实现,不能靠开开关直接解锁
这份文档不再把“依赖 Anthropic first-party / Claude.ai / OAuth”直接等同于“内部功能”。
对当前仓库,更准确的分类是:
- `ant-only`
- `subscriber-available`
- `subscriber-remote`
- `available-in-build`
- `stub/incomplete`
## 执行摘要
### 已经基本可用
下面这些从当前源码看,不该再归类为“内部功能”:
- `assistant`
- `brief`
- `proactive`
- `voice`
- `chrome` / Claude in Chrome
原因:
- 它们不是 `USER_TYPE==='ant'` 才能注册
- 其中多条路径已经在默认 build 中编入
- 它们的主要门槛是 `Claude.ai` 订阅、OAuth、环境依赖而不是内部员工身份
### 可用,但依赖远端专有基础设施
下面这些不是 stub也不是纯 ant-only但它们的执行面依赖远端服务
- `ultraplan`
- `ultrareview`
- `remote-env`
- `settings sync`
- `team memory sync`
- `mcp channels`
它们应归类为:
- `subscriber-remote`
-`first-party-only`
### 源码完整,且已纳入默认 build
下面这些能力从代码主体看是完整的,而且现在已经补进默认 build
- `DIRECT_CONNECT`
- `UDS_INBOX`
- `BRIDGE_MODE`
这类能力应归类为:
- `available-in-build`
### 不能靠开关直接解锁
下面这些当前不是 gate 问题,而是实现本身缺失或明确是 stub
- `REPLTool`
- `TungstenTool`
- `useMoreRight`
这类应归类为:
- `stub/incomplete`
## 重点功能矩阵
| 功能 | 当前状态 | 面向人群 | 当前阻断点 | 结论 |
| --- | --- | --- | --- | --- |
| `assistant` | 代码完整,默认 build 已编入 | 订阅用户 / 1P 用户 | 依赖 `KAIROS` 和 runtime gate | `subscriber-available` |
| `brief` | 代码完整,默认 build 已编入 | 订阅用户 / 1P 用户 | 依赖 entitlement / runtime config | `subscriber-available` |
| `proactive` | 代码完整,状态机完整 | 订阅用户 / 1P 用户 | 依赖 `PROACTIVE``KAIROS` 路径 | `subscriber-available` |
| `voice` | 代码完整 | `Claude.ai` 订阅用户 | 需要 OAuth、麦克风、音频依赖 | `subscriber-available` |
| `chrome` | 代码完整 | `Claude.ai` 订阅用户 | 需要订阅、扩展、非 WSL 等环境条件 | `subscriber-available` |
| `ultraplan` | 代码完整 | 订阅用户 / 1P 用户 | 依赖远端环境、策略、远端 session API | `subscriber-remote` |
| `ultrareview` | 代码完整 | 订阅用户 / 1P 用户 | 依赖远端 code review 环境与配额接口 | `subscriber-remote` |
| `DIRECT_CONNECT` | 代码完整 | 本地用户 | 默认 build 已启用;仍需显式使用 server/open 路径 | `available-in-build` |
| `UDS_INBOX` | 代码完整 | 本地用户 | 默认 build 已启用;仍需通过 peers/pipes/send 等入口使用 | `available-in-build` |
| `BRIDGE_MODE` | 代码完整 | 订阅用户 / self-hosted 用户 | 默认 build 已启用;官方路径仍有 entitlement / OAuth 条件 | `available-in-build` |
| `REPLTool` | Tool 外壳存在 | ant-native 运行时 | 当前 `call()` 明确返回不可用 | `stub/incomplete` |
| `TungstenTool` | 空壳 stub | 无 | 缺真实实现 | `stub/incomplete` |
| `useMoreRight` | external stub | 无 | real hook 缺失 | `stub/incomplete` |
## 分类规则
### `ant-only`
满足以下任一条件即可归入:
- 命令或工具只在 `USER_TYPE==='ant'` 时注册
- 外部构建在 parse / runtime 阶段直接拒绝
- 源码注释或逻辑明确说明只为内部用户设计
典型对象:
- `INTERNAL_ONLY_COMMANDS`
- `/files`
- `/tag`
- `/version`
- `/bridge-kick`
- agent `remote` isolation
- ant-only bundled skills
### `subscriber-available`
满足以下条件:
- 不要求 `USER_TYPE==='ant'`
-`Claude.ai` 订阅用户是正经产品面
- 不需要额外补一个缺失运行时才能工作
典型对象:
- `assistant`
- `brief`
- `proactive`
- `voice`
- `chrome`
### `subscriber-remote`
满足以下条件:
- 面向订阅用户或 first-party OAuth 用户
- 本地入口完整
- 但真正执行依赖远端环境、远端 session API、策略或配额系统
典型对象:
- `ultraplan`
- `ultrareview`
- `remote-env`
### `available-in-build`
满足以下条件:
- 源码主体完整
- 默认 build 已经编入
- 运行时可能仍有订阅、OAuth、配置或显式命令入口要求
典型对象:
- `DIRECT_CONNECT`
- `UDS_INBOX`
- `BRIDGE_MODE`
### `stub/incomplete`
满足以下条件:
- 当前仓库里的实现明确是 stub
- 或关键执行引擎缺失
- 去掉 gate 之后仍然不会真正工作
典型对象:
- `REPLTool`
- `TungstenTool`
- `useMoreRight`
## 重点功能说明
### `assistant`
`assistant` 当前应视为“已经基本可用”,而不是“待恢复”。
原因:
- 默认 build 包含 `KAIROS`
- 命令 gate 只检查 `feature('KAIROS')``tengu_kairos_assistant`
- 本地 GrowthBook 默认值里 `tengu_kairos_assistant``true`
结论:
- `assistant``subscriber-available`
### `brief`
`brief` 当前也应视为“已经基本可用”。
原因:
- 默认 build 包含 `KAIROS_BRIEF`
- 命令逻辑完整
- `BriefTool` 逻辑完整
- 本地 GrowthBook 默认值中:
- `tengu_kairos_brief = true`
- `tengu_kairos_brief_config.enable_slash_command = true`
结论:
- `brief``subscriber-available`
### `proactive`
`proactive` 也是当前基本可用,而不是未恢复。
原因:
- 命令逻辑完整
- `src/proactive/index.ts` 有完整状态机
- `SleepTool` 已经挂接 proactive 状态
- 即使 `PROACTIVE` build flag 没默认开,只要 `KAIROS` 路径存在,命令仍可用
结论:
- `proactive``subscriber-available`
### `ultraplan`
`ultraplan` 不是 stub也不是 ant-only。
原因:
- 默认 build 已编入 `ULTRAPLAN`
- 命令真实存在
- prompt 里还能自动触发 `/ultraplan`
但它不是纯本地能力,因为它依赖:
- `teleportToRemote()`
- 远端 eligibility
- 远端环境
- 组织策略
- Claude Code on the web session
结论:
- `ultraplan``subscriber-remote`
### `REPLTool`
`REPLTool` 不应被归到“可解锁,只差开关”。
原因:
- `call()` 里直接写明当前 build 不可用
- 注释明确说 REPL execution engine 由 ant-native runtime 提供
结论:
- `REPLTool``stub/incomplete`
### `DIRECT_CONNECT`
`DIRECT_CONNECT` 的 server/open/headless/client 链路是完整的。
当前状态:
- dev 默认开启
- 默认 build 也已启用
结论:
- `DIRECT_CONNECT``available-in-build`
- 现在不再是 build 阻断项
### `UDS_INBOX`
`UDS_INBOX` 的命令、hooks、tools 都在。
当前状态:
- dev 默认开启
- 默认 build 也已启用
结论:
- `UDS_INBOX``available-in-build`
### `BRIDGE_MODE`
`BRIDGE_MODE` 的主流程不是 stub。
当前状态:
- 默认 build 已启用
- 官方路径需要订阅/OAuth/entitlement
- self-hosted 路径能绕过一部分官方 gate
结论:
- `BRIDGE_MODE``available-in-build`
- 如果目标是先验证能力,自托管路径比官方 bridge 更现实
## 真正的 ant-only 范围
下面这些仍然应当稳稳归入 `ant-only`
- `INTERNAL_ONLY_COMMANDS`
- `/files`
- `/tag`
- `/version`
- `/bridge-kick`
- ant-only 工具注入:
- `ConfigTool`
- `TungstenTool`
- `REPLTool`
- `SuggestBackgroundPRTool`
- agent `remote` isolation
- ant-only bundled skills
- `verify`
- `remember`
- `stuck`
- `skillify`
这些不是订阅用户能力。
## 对逆向恢复的优先级建议
### 第一优先级
- `REPLTool`
- `TungstenTool`
- `useMoreRight`
原因:
- 这三项才是真正的实现缺口
- build 侧阻断已经不再是当前最主要问题
### 第二优先级
- 梳理 `assistant / brief / proactive / DIRECT_CONNECT / UDS_INBOX / BRIDGE_MODE` 的实际交付面
- 确认哪些该进入默认发布、哪些仍保留实验属性
原因:
- 这些能力很多已经能跑
- 更需要的是收敛发布策略和文档口径
## 附录:关键代码证据
### 订阅用户判定
- `src/utils/auth.ts:100`
- `src/utils/auth.ts:1560`
- `src/utils/auth.ts:1576`
- `src/utils/auth.ts:1679`
- `src/utils/auth.ts:1690`
### `assistant / brief / proactive`
- `src/commands/assistant/gate.ts:11`
- `src/commands/brief.ts:44`
- `src/commands/proactive.ts:14`
- `src/proactive/index.ts:37`
- `packages/builtin-tools/src/tools/BriefTool/BriefTool.ts:126`
- `packages/builtin-tools/src/tools/SleepTool/SleepTool.ts:22`
- `src/services/analytics/growthbook.ts:455`
- `src/services/analytics/growthbook.ts:469`
- `build.ts:28`
- `build.ts:40`
### `ultraplan`
- `src/commands/ultraplan.tsx:377`
- `src/commands/ultraplan.tsx:396`
- `src/commands/ultraplan.tsx:536`
- `src/utils/processUserInput/processUserInput.ts:470`
- `src/utils/teleport.tsx:818`
- `src/utils/background/remote/preconditions.ts:45`
- `build.ts:30`
### `DIRECT_CONNECT`
- `src/main.tsx:4728`
- `src/main.tsx:4846`
- `src/server/createDirectConnectSession.ts:26`
- `src/server/connectHeadless.ts:21`
- `src/server/sessionManager.ts:21`
- `src/server/backends/dangerousBackend.ts:14`
- `scripts/dev.ts:58`
### `UDS_INBOX`
- `src/commands.ts:122`
- `src/hooks/usePipeIpc.ts:458`
- `src/tools.ts:145`
- `packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:520`
- `scripts/dev.ts:46`
- `build.ts:39`
### `BRIDGE_MODE`
- `src/commands/bridge/index.ts:6`
- `src/bridge/bridgeMain.ts:2002`
- `src/bridge/bridgeEnabled.ts:29`
- `src/bridge/bridgeEnabled.ts:32`
- `src/bridge/bridgeEnabled.ts:57`
- `src/bridge/bridgeEnabled.ts:82`
- `scripts/dev.ts:27`
### `REPLTool`
- `packages/builtin-tools/src/tools/REPLTool/REPLTool.ts:78`
- `packages/builtin-tools/src/tools/REPLTool/REPLTool.ts:84`
### `stub / incomplete`
- `src/moreright/useMoreRight.tsx:1`
- `packages/builtin-tools/src/tools/TungstenTool/TungstenTool.ts:1`
- `packages/builtin-tools/src/tools/WebBrowserTool/WebBrowserPanel.ts:1`
### `ant-only`
- `src/commands.ts:267`
- `src/commands.ts:400`
- `src/commands/version.ts:17`
- `src/commands/files/index.ts:7`
- `src/commands/tag/index.ts:7`
- `src/commands/bridge-kick.ts:195`
- `src/tools.ts:235`
- `src/tools.ts:253`
- `packages/builtin-tools/src/tools/AgentTool/loadAgentsDir.ts:607`
- `packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:669`