diff --git a/README.md b/README.md index 36193ea..10388dd 100644 --- a/README.md +++ b/README.md @@ -2,31 +2,28 @@ ## 这个仓库什么也不能做,请不要盯着我。 -VSCode 配置: +### VSCode 配置: ```json "github.copilot.advanced": { - "debug.overrideProxyUrl": "http://localhost:8181", - "debug.chatOverrideProxyUrl": "http://localhost:8181/v1/chat/completions", + "debug.overrideProxyUrl": "http://127.0.0.1:8181", + "debug.chatOverrideProxyUrl": "http://127.0.0.1:8181/v1/chat/completions", "authProvider": "github-enterprise" }, "github-enterprise.uri": "https://cocopilot.org", ``` -其中 `http://localhost:8181` 是你启动的 `override` 服务地址。 +### JetBrains等 配置: -JetBrains 配置: -请在自己的.zshrc/.bashrc文件中配置好环境变量参数,然后重启JetBrains工具. -```shell - ## code 配置 - export AGENT_DEBUG_OVERRIDE_PROXY_URL="http://127.0.0.1:8181" - ## chat配置 - export AGENT_DEBUG_OVERRIDE_CAPI_URL="http://127.0.0.1:8181/v1" -``` +按照 coco dash 页面截图配置后,执行对应系统的脚本后重启IDE: +* scripts/install.sh 适用于 `macOS` 和 `Linux` +* scripts/install-all-users.vbs 适用于 `Windows`,为电脑上所有用户配置,需要有管理员权限。 +* scripts/install-current-user.vbs 适用于 `Windows`,为当前用户配置,无需管理员权限。 +* scripts/uninstall 相关脚本与之对应,为卸载配置。 -其中 `http://localhost:8181` 是你启动的 `override` 服务地址。 +其中 `http://127.0.0.1:8181` 是你启动的 `override` 服务地址。 -config.json 配置 +### config.json 配置 ```json { @@ -55,13 +52,14 @@ config.json 配置 可以通过 `OVERRIDE_` + 大写配置项作为环境变量,可以覆盖 `config.json` 中的值。例如:`OVERRIDE_CODEX_API_KEY=sk-xxxx` +### 其他说明 1. 理论上,Chat 部分可以使用 `chat2api` ,而 Codex 代码生成部分则不太适合使用 `chat2api` 。 2. 代码生成部分做过延时生成和客户端 Cancel 处理,很有效节省你的Token。 3. 我目前就试了下 `VSCode` ,至于 `JetBrains` 等IDE尚未适配,如果你有相关经验,请告诉我。 4. 项目基于 `MIT` 协议发布,你可以修改,请保留原作者信息。 5. 有什么问题,请在论坛 https://linux.do 讨论,欢迎PR。 -## Star History +### Star History [![Star History Chart](https://api.star-history.com/svg?repos=linux-do/override&type=Date)](https://star-history.com/#linux-do/override&Date) diff --git a/scripts/install-all-users.vbs b/scripts/install-all-users.vbs new file mode 100644 index 0000000..cc6fa47 --- /dev/null +++ b/scripts/install-all-users.vbs @@ -0,0 +1,31 @@ +If Not WScript.Arguments.Named.Exists("elevate") Then + CreateObject("Shell.Application").ShellExecute WScript.FullName, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 10 + WScript.Quit +End If + +Set oShell = CreateObject("WScript.Shell") +Set oEnvSystem = oShell.Environment("SYSTEM") +Set oFS = CreateObject("Scripting.FileSystemObject") + +MsgBox "It may take a few seconds to execute this script." & vbCrLf & vbCrLf & "Click 'OK' button and wait for the prompt of 'Done.' to pop up!" + +Dim baseUrl +baseUrl = "http://127.0.0.1:8181" + +Sub RemoveEnv(env) + On Error Resume Next + + env.Remove("AGENT_DEBUG_OVERRIDE_PROXY_URL") + env.Remove("GITHUB_COPILOT_OVERRIDE_PROXY_URL") + env.Remove("AGENT_DEBUG_OVERRIDE_CAPI_URL") + env.Remove("GITHUB_COPILOT_OVERRIDE_CAPI_URL") +End Sub + +RemoveEnv oShell.Environment("USER") + +oEnvSystem("AGENT_DEBUG_OVERRIDE_PROXY_URL") = baseUrl +oEnvSystem("GITHUB_COPILOT_OVERRIDE_PROXY_URL") = baseUrl +oEnvSystem("AGENT_DEBUG_OVERRIDE_CAPI_URL") = baseUrl & "/v1" +oEnvSystem("GITHUB_COPILOT_OVERRIDE_CAPI_URL") = baseUrl & "/v1" + +MsgBox "Done." diff --git a/scripts/install-current-user.vbs b/scripts/install-current-user.vbs new file mode 100644 index 0000000..b50d0c5 --- /dev/null +++ b/scripts/install-current-user.vbs @@ -0,0 +1,15 @@ +Set oShell = CreateObject("WScript.Shell") +Set oEnv = oShell.Environment("USER") +Set oFS = CreateObject("Scripting.FileSystemObject") + +Dim baseUrl +baseUrl = "http://127.0.0.1:8181" + +MsgBox "It may take a few seconds to execute this script." & vbCrLf & vbCrLf & "Click 'OK' button and wait for the prompt of 'Done.' to pop up!" + +oEnv("AGENT_DEBUG_OVERRIDE_PROXY_URL") = baseUrl +oEnv("GITHUB_COPILOT_OVERRIDE_PROXY_URL") = baseUrl +oEnv("AGENT_DEBUG_OVERRIDE_CAPI_URL") = baseUrl & "/v1" +oEnv("GITHUB_COPILOT_OVERRIDE_CAPI_URL") = baseUrl & "/v1" + +MsgBox "Done." diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100755 index 0000000..49c9fe6 --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +set -e + +OS_NAME=$(uname -s) +BASE_URL="http://127.0.0.1:8181" + +KDE_ENV_DIR="${HOME}/.config/plasma-workspace/env" +LAUNCH_AGENTS_DIR="${HOME}/Library/LaunchAgents" + +PROFILE_PATH="${HOME}/.profile" +ZSH_PROFILE_PATH="${HOME}/.zshrc" +PLIST_PATH="${LAUNCH_AGENTS_DIR}/copilot.override.plist" + +if [ "$OS_NAME" = "Darwin" ]; then + BASH_PROFILE_PATH="${HOME}/.bash_profile" + + mkdir -p "${LAUNCH_AGENTS_DIR}" + echo 'Labelcopilot.overrideProgramArgumentssh-c' >"${PLIST_PATH}" +else + BASH_PROFILE_PATH="${HOME}/.bashrc" + mkdir -p "${KDE_ENV_DIR}" +fi + +touch "${PROFILE_PATH}" +touch "${BASH_PROFILE_PATH}" +touch "${ZSH_PROFILE_PATH}" + +GH_OVERRIDE_SHELL_NAME="copilot.override.sh" +GH_OVERRIDE_SHELL_FILE="${HOME}/.${GH_OVERRIDE_SHELL_NAME}" +echo '#!/bin/sh' >"${GH_OVERRIDE_SHELL_FILE}" + +# shellcheck disable=SC2016 +EXEC_LINE='___GH_OVERRIDE_SHELL_FILE="${HOME}/.copilot.override.sh"; if [ -f "${___GH_OVERRIDE_SHELL_FILE}" ]; then . "${___GH_OVERRIDE_SHELL_FILE}"; fi' + +# shellcheck disable=SC2129 +echo "export AGENT_DEBUG_OVERRIDE_PROXY_URL=\"${BASE_URL}\"" >>"${GH_OVERRIDE_SHELL_FILE}" +echo "export GITHUB_COPILOT_OVERRIDE_PROXY_URL=\"${BASE_URL}\"" >>"${GH_OVERRIDE_SHELL_FILE}" +echo "export AGENT_DEBUG_OVERRIDE_CAPI_URL=\"${BASE_URL}/v1\"" >>"${GH_OVERRIDE_SHELL_FILE}" +echo "export GITHUB_COPILOT_OVERRIDE_CAPI_URL=\"${BASE_URL}/v1\"" >>"${GH_OVERRIDE_SHELL_FILE}" + +if [ "$OS_NAME" = "Darwin" ]; then + launchctl setenv "AGENT_DEBUG_OVERRIDE_PROXY_URL" "${BASE_URL}" + launchctl setenv "GITHUB_COPILOT_OVERRIDE_PROXY_URL" "${BASE_URL}" + launchctl setenv "AGENT_DEBUG_OVERRIDE_CAPI_URL" "${BASE_URL}/v1" + launchctl setenv "GITHUB_COPILOT_OVERRIDE_CAPI_URL" "${BASE_URL}/v1" + + # shellcheck disable=SC2129 + echo "launchctl setenv \"AGENT_DEBUG_OVERRIDE_PROXY_URL\" \"${BASE_URL}\"" >>"${PLIST_PATH}" + echo "launchctl setenv \"GITHUB_COPILOT_OVERRIDE_PROXY_URL\" \"${BASE_URL}\"" >>"${PLIST_PATH}" + echo "launchctl setenv \"AGENT_DEBUG_OVERRIDE_CAPI_URL\" \"${BASE_URL}/v1\"" >>"${PLIST_PATH}" + echo "launchctl setenv \"GITHUB_COPILOT_OVERRIDE_CAPI_URL\" \"${BASE_URL}/v1\"" >>"${PLIST_PATH}" +fi + +if [ "$OS_NAME" = "Darwin" ]; then + # shellcheck disable=SC2016 + sed -i '' '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '' '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${BASH_PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '' '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${ZSH_PROFILE_PATH}" >/dev/null 2>&1 + + echo 'RunAtLoad' >>"${PLIST_PATH}" +else + # shellcheck disable=SC2016 + sed -i '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${BASH_PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${ZSH_PROFILE_PATH}" >/dev/null 2>&1 +fi + +echo "${EXEC_LINE}" >>"${PROFILE_PATH}" +echo "${EXEC_LINE}" >>"${BASH_PROFILE_PATH}" +echo "${EXEC_LINE}" >>"${ZSH_PROFILE_PATH}" + +if [ "$OS_NAME" = "Darwin" ]; then + echo 'done. the "kill Dock" command can fix the crash issue.' +else + ln -sf "${GH_OVERRIDE_SHELL_FILE}" "${KDE_ENV_DIR}/${GH_OVERRIDE_SHELL_NAME}" + echo "done. you'd better log off first!" +fi diff --git a/scripts/uninstall-all-users.vbs b/scripts/uninstall-all-users.vbs new file mode 100644 index 0000000..85687c3 --- /dev/null +++ b/scripts/uninstall-all-users.vbs @@ -0,0 +1,22 @@ +If Not WScript.Arguments.Named.Exists("elevate") Then + CreateObject("Shell.Application").ShellExecute WScript.FullName, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 10 + WScript.Quit +End If + +MsgBox "It may take a few seconds to execute this script." & vbCrLf & vbCrLf & "Click 'OK' button and wait for the prompt of 'Done.' to pop up!" + +Sub RemoveEnv(env) + On Error Resume Next + + env.Remove("AGENT_DEBUG_OVERRIDE_PROXY_URL") + env.Remove("GITHUB_COPILOT_OVERRIDE_PROXY_URL") + env.Remove("AGENT_DEBUG_OVERRIDE_CAPI_URL") + env.Remove("GITHUB_COPILOT_OVERRIDE_CAPI_URL") +End Sub + +Set oShell = CreateObject("WScript.Shell") + +RemoveEnv oShell.Environment("USER") +RemoveEnv oShell.Environment("SYSTEM") + +MsgBox "Done." diff --git a/scripts/uninstall-current-user.vbs b/scripts/uninstall-current-user.vbs new file mode 100644 index 0000000..79813ed --- /dev/null +++ b/scripts/uninstall-current-user.vbs @@ -0,0 +1,11 @@ +Set oShell = CreateObject("WScript.Shell") +Set oEnv = oShell.Environment("USER") + +MsgBox "It may take a few seconds to execute this script." & vbCrLf & vbCrLf & "Click 'OK' button and wait for the prompt of 'Done.' to pop up!" + +oEnv.Remove("AGENT_DEBUG_OVERRIDE_PROXY_URL") +oEnv.Remove("GITHUB_COPILOT_OVERRIDE_PROXY_URL") +oEnv.Remove("AGENT_DEBUG_OVERRIDE_CAPI_URL") +oEnv.Remove("GITHUB_COPILOT_OVERRIDE_CAPI_URL") + +MsgBox "Done." diff --git a/scripts/uninstall.sh b/scripts/uninstall.sh new file mode 100755 index 0000000..da1c1d1 --- /dev/null +++ b/scripts/uninstall.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +set -e + +OS_NAME=$(uname -s) + +KDE_ENV_DIR="${HOME}/.config/plasma-workspace/env" + +PROFILE_PATH="${HOME}/.profile" +ZSH_PROFILE_PATH="${HOME}/.zshrc" +PLIST_PATH="${HOME}/Library/LaunchAgents/copilot.override.plist" + +if [ "$OS_NAME" = "Darwin" ]; then + BASH_PROFILE_PATH="${HOME}/.bash_profile" +else + BASH_PROFILE_PATH="${HOME}/.bashrc" +fi + +touch "${PROFILE_PATH}" +touch "${BASH_PROFILE_PATH}" +touch "${ZSH_PROFILE_PATH}" + +GH_OVERRIDE_SHELL_NAME="copilot.override.sh" +GH_OVERRIDE_SHELL_FILE="${HOME}/.${GH_OVERRIDE_SHELL_NAME}" + +rm -rf "${GH_OVERRIDE_SHELL_FILE}" + +if [ "$OS_NAME" = "Darwin" ]; then + launchctl unsetenv "AGENT_DEBUG_OVERRIDE_PROXY_URL" + launchctl unsetenv "GITHUB_COPILOT_OVERRIDE_PROXY_URL" + launchctl unsetenv "AGENT_DEBUG_OVERRIDE_CAPI_URL" + launchctl unsetenv "GITHUB_COPILOT_OVERRIDE_CAPI_URL" + + rm -rf "${PLIST_PATH}" + + # shellcheck disable=SC2016 + sed -i '' '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '' '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${BASH_PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '' '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${ZSH_PROFILE_PATH}" >/dev/null 2>&1 + + echo 'done.' +else + # shellcheck disable=SC2016 + sed -i '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${BASH_PROFILE_PATH}" >/dev/null 2>&1 + # shellcheck disable=SC2016 + sed -i '/___GH_OVERRIDE_SHELL_FILE="${HOME}\/\.copilot\.override\.sh"; if /d' "${ZSH_PROFILE_PATH}" >/dev/null 2>&1 + + # shellcheck disable=SC2115 + rm -rf "${KDE_ENV_DIR}/${GH_OVERRIDE_SHELL_NAME}" + echo "done. you'd better log off first!" +fi