makecindy / makecindy/cindy

bug(desktop): device-link 项目的协同入口在草稿与已创建会话之间不一致

Open
#1,170 6 comments 0 reactions 1 assignee Claimed by @dashhuang View on GitHub
bug
Dominant language
TypeScript
Stars
2.7k
Forks
401
Avg merge
21h 40m
Merged PRs (30d)
805

Description

## Project state

- Status: 待评估
- Owner: 待认领
- Proposer: zhaotianyi-source
- Priority: P2
- Next: 在 device-link 远程项目上分别验证新建草稿与已创建会话的协同入口,并确认产品策略是支持还是明确禁用

## 问题描述

最新主干 `7e7c577a` 对 device-link 远程项目的协同入口判定不一致:新建草稿阶段明确不显示协同入口,但进入已创建的远程项目会话后,当前 `allowCollabToggle` 没有检查 `remoteDeviceId`,理论上可能重新显示协同入口。

这会导致同一个 device-link 项目在“创建前”和“创建后”出现不同的能力认知:用户在新建页看不到协同开关,进入会话后却可能看到;如果 device-link 协同实际上尚未支持,入口还可能把用户带入无法完成的流程。

## 源码定位

- 已创建会话:`CCAgentSessionView.tsx` 的 `collabPolicyEligible` 只检查 `orcaMode`、`orcaRole`、`workspaceKind` 和 `workingDir`,`allowCollabToggle` 没有排除 `remoteDeviceId`:
[CCAgentSessionView.tsx#L1814-L1834](https://github.com/makecindy/cindy/blob/7e7c577a/apps/desktop/src/renderer/features/cc-agent/CCAgentSessionView.tsx#L1814-L1834)
- 会话输入栏根据 `allowCollabToggle` 决定是否挂载 `collaboration`:
[CCAgentSessionView.tsx#L3336-L3344](https://github.com/makecindy/cindy/blob/7e7c577a/apps/desktop/src/renderer/features/cc-agent/CCAgentSessionView.tsx#L3336-L3344)
- 新建草稿:`NewMakerDraftRoute.tsx` 的 `collabPolicyEligible` 明确要求 `effectiveDeviceLinkDeviceId == null`,device-link 草稿不会挂载协同入口:
[NewMakerDraftRoute.tsx#L699-L707](https://github.com/makecindy/cindy/blob/7e7c577a/apps/desktop/src/renderer/features/cc-agent/NewMakerDraftRoute.tsx#L699-L707)
- 新建页注释也明确写着 device-link 不支持协同:
[NewMakerDraftRoute.tsx#L3166-L3174](https://github.com/makecindy/cindy/blob/7e7c577a/apps/desktop/src/renderer/features/cc-agent/NewMakerDraftRoute.tsx#L3166-L3174)

## 复现步骤

1. 在一台设备上开启 device-link,并连接到另一台 Cindy 设备。
2. 在控制端选择被控设备上的项目目录,观察新建项目草稿页的工具栏。
3. 确认新建草稿阶段没有协同入口。
4. 创建该项目会话并进入会话页,观察 ChatInput 工具栏是否出现协同入口。
5. 如果入口出现,尝试开启协同并观察是否能正常创建 Worker;记录实际 UI、错误提示和被控端行为。

当前为源码静态分析结论,device-link 实机结果待补充。

## 期望行为

先明确并统一 device-link 的产品策略:

- 如果 device-link 协同不支持:新建草稿和已创建会话都不应显示入口,并提供一致的不可用说明(或完全隐藏)。
- 如果 device-link 协同要支持:新建草稿和已创建会话都应显示入口,并完成 Worker 创建、远端 MCP、权限和失败回滚的端到端链路。

无论采用哪种策略,判定逻辑都应集中在同一个可测试的 capability/policy helper 中,避免两个路由各自维护不同条件。

## 实际行为

- 新建 device-link 项目草稿:源码明确隐藏协同入口。
- 已创建 device-link 项目会话:源码条件没有排除 `remoteDeviceId`,可能显示协同入口。
- `CCAgentSessionView.tsx` 的注释仍描述为“排除远端会话”,但当前实现允许 SSH 远程协同,也没有单独区分 device-link。

## 验收标准

- [ ] 明确 device-link 是否支持协同,并在 Issue 或产品文档中记录决策。
- [ ] 新建草稿与已创建会话使用同一套协同能力判定。
- [ ] 覆盖本地 project、SSH remote project、device-link project、dialogue、Orca worker 五类场景。
- [ ] 不支持时入口不会挂载,也不会通过其他路径创建 Worker。
- [ ] 支持时补齐 device-link Worker 创建、远端 MCP、权限和失败回滚测试。
- [ ] 更新 `CCAgentSessionView.tsx` 与 `NewMakerDraftRoute.tsx` 中互相矛盾的注释。

## 环境

- Cindy 当前源码基线:`main@7e7c577a`
- 用户反馈平台:macOS;具体 Cindy 版本、被控设备版本及是否实际使用 device-link 待补充
- 安装方式:待补充

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.