chore: Cursor 全面替换 co-chat → pchat 配置真源
- cursor-config/ 项目级+用户级 MCP 与 rules 模板 - deploy-cursor-config.sh 一键部署 - retire_cochat.sh 支持 patchNativeOk 并自动卸载扩展 - mcp-config/cursor.mcp.json 同步 ensure-hub 唯一套 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,45 +1,114 @@
|
||||
#!/usr/bin/env bash
|
||||
# FR-RETIRE: 验收通过后卸载 co-chat,仅保留 pchat
|
||||
# FR-RETIRE: 卸载 co-chat 扩展,Cursor 仅保留 pchat(patchNativeOk 可过门禁)
|
||||
set -euo pipefail
|
||||
|
||||
BACKUP_ROOT="$HOME/.persistent-chat-local/backups/cochat-retire-$(date +%Y%m%d-%H%M%S)"
|
||||
ENHANCE="$HOME/.persistent-chat-local/composer-enhance.json"
|
||||
WS="${PCHAT_WORKSPACE:-/Users/karuo/Documents/个人}"
|
||||
|
||||
echo "=== pchat retire co-chat ==="
|
||||
|
||||
gate_ok=false
|
||||
if [[ -f "$ENHANCE" ]]; then
|
||||
permOk=$(python3 -c "import json; print(json.load(open('$ENHANCE')).get('permOk',False))" 2>/dev/null || echo False)
|
||||
patchOk=$(python3 -c "import json; print(json.load(open('$ENHANCE')).get('patchOk',False))" 2>/dev/null || echo False)
|
||||
if [[ "$permOk" != "True" || "$patchOk" != "True" ]]; then
|
||||
echo "阻断:composer-enhance.json 未全绿 (permOk=$permOk patchOk=$patchOk)"
|
||||
echo "请先完成 Hub 向导 W2/W8"
|
||||
read -r permOk patchOk patchNativeOk cursorPrefOk <<< "$(python3 -c "
|
||||
import json
|
||||
s=json.load(open('$ENHANCE'))
|
||||
print(s.get('permOk',False), s.get('patchOk',False), s.get('patchNativeOk',False), s.get('cursorPrefOk',False))
|
||||
" 2>/dev/null || echo "False False False False")"
|
||||
w8=false
|
||||
[[ "$patchOk" == "True" || "$patchNativeOk" == "True" ]] && w8=true
|
||||
if [[ "$permOk" == "True" && "$cursorPrefOk" == "True" && "$w8" == true ]]; then
|
||||
gate_ok=true
|
||||
else
|
||||
echo "阻断:门禁未过 permOk=$permOk patchOk=$patchOk patchNativeOk=$patchNativeOk cursorPrefOk=$cursorPrefOk"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "警告:无 composer-enhance.json,继续需自担风险"
|
||||
read -r -p "输入 YES 继续: " ans
|
||||
[[ "$ans" == "YES" ]] || exit 1
|
||||
echo "警告:无 composer-enhance.json"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$BACKUP_ROOT"
|
||||
|
||||
# 备份扩展
|
||||
for ext in "$HOME/.cursor/extensions"/co-chat.co-chat-panel-*; do
|
||||
[[ -d "$ext" ]] || continue
|
||||
echo "备份 $ext"
|
||||
cp -R "$ext" "$BACKUP_ROOT/"
|
||||
done
|
||||
|
||||
# 备份 globalStorage
|
||||
GS="$HOME/Library/Application Support/Cursor/User/globalStorage/co-chat.co-chat-panel"
|
||||
if [[ -d "$GS" ]]; then
|
||||
cp -R "$GS" "$BACKUP_ROOT/globalStorage-co-chat"
|
||||
echo "保留 globalStorage(pchat 原生增强仍读写 storage.json)"
|
||||
fi
|
||||
|
||||
# 备份 mcp.json
|
||||
MCP="$HOME/.cursor/mcp.json"
|
||||
[[ -f "$MCP" ]] && cp "$MCP" "$BACKUP_ROOT/mcp.json.bak"
|
||||
for mcp in "$HOME/.cursor/mcp.json" "$WS/.cursor/mcp.json"; do
|
||||
[[ -f "$mcp" ]] && cp "$mcp" "$BACKUP_ROOT/$(basename "$(dirname "$mcp")")-mcp.json.bak"
|
||||
done
|
||||
|
||||
echo "备份完成: $BACKUP_ROOT"
|
||||
echo "下一步:手动删除扩展目录、清理 mcp.json 中 co-mcp、删除 co-chat.mdc"
|
||||
echo "回滚:从 $BACKUP_ROOT 恢复"
|
||||
# 删除 co-chat 扩展
|
||||
for ext in "$HOME/.cursor/extensions"/co-chat.co-chat-panel-*; do
|
||||
[[ -d "$ext" ]] || continue
|
||||
echo "删除 $ext"
|
||||
rm -rf "$ext"
|
||||
done
|
||||
|
||||
# 退役 workspace co-chat.mdc
|
||||
if [[ -f "$WS/开发文档/脚本/pchat_retire_co_rule.sh" ]]; then
|
||||
bash "$WS/开发文档/脚本/pchat_retire_co_rule.sh" "$WS"
|
||||
fi
|
||||
|
||||
# 用户级 mcp:空(避免与项目级重复)
|
||||
cat > "$HOME/.cursor/mcp.json" << 'EOF'
|
||||
{
|
||||
"mcpServers": {}
|
||||
}
|
||||
EOF
|
||||
|
||||
# 项目级 mcp:pchat + codegraph 唯一套
|
||||
cat > "$WS/.cursor/mcp.json" << 'EOF'
|
||||
{
|
||||
"mcpServers": {
|
||||
"persistent-chat": {
|
||||
"type": "stdio",
|
||||
"command": "/Users/karuo/.persistent-chat-local/ensure-hub.sh",
|
||||
"args": ["--workspace=/Users/karuo/Documents/个人"],
|
||||
"env": {
|
||||
"PCHAT_HTTP_PORT": "13458",
|
||||
"PCHAT_NODE": "/usr/local/opt/node@22/bin/node",
|
||||
"PCHAT_WORKSPACE": "/Users/karuo/Documents/个人",
|
||||
"PCHAT_VSIX_4TOOLS": "1",
|
||||
"PCHAT_TOOL_SET": "4"
|
||||
},
|
||||
"disabled": false,
|
||||
"autoApprove": [
|
||||
"wait_for_user_input",
|
||||
"init_conversation",
|
||||
"merge_conversation",
|
||||
"select_conversation"
|
||||
]
|
||||
},
|
||||
"codegraph": {
|
||||
"type": "stdio",
|
||||
"command": "/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火种_知识模型/CodeGraph_MCP语义代码图谱/脚本/codegraph_mcp_serve.sh",
|
||||
"args": ["${workspaceFolder}"],
|
||||
"disabled": false,
|
||||
"autoApprove": [
|
||||
"codegraph_search",
|
||||
"codegraph_callers",
|
||||
"codegraph_callees",
|
||||
"codegraph_impact",
|
||||
"codegraph_node",
|
||||
"codegraph_context",
|
||||
"codegraph_explore",
|
||||
"codegraph_files",
|
||||
"codegraph_status"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "备份: $BACKUP_ROOT"
|
||||
echo "完成:co-chat 扩展已删 · co-chat.mdc 已退役 · MCP 已统一为 pchat"
|
||||
echo "请 Cmd+Q 重启 Cursor"
|
||||
|
||||
Reference in New Issue
Block a user