Skip to content

v0.3.3

Pre-release
Pre-release

Choose a tag to compare

@cxykevin cxykevin released this 29 Jul 15:41
dd11a66

本 Release 作为 Development Techology Preview Level 1 的一部分发布。

本版本更新代码库索引系统,支持按目录搜索,以及 search 工具的 online 模式。Online Search 可以搜索来自 Bing/Tavily/Github/arXiv 的混合内容。

本次更新由 Deepseek V4 Flash 完成大部分工作,并人工修改 (花费约 5 rmb)。

安装

# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash
# Windows
irm https://alk.cxykevin.top/i.ps1 | iex

配置

路径

# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json

从 v0.2.x 升级配置文件

v0.3.x 添加了对嵌入模型的需求,用于代码索引构建。你需要在 Models 中以普通模型的形式添加你的嵌入模型,并指定 "Type": "embedding", "Hide": true, "ProviderSpecificConfig" 中 "Dimension" 为你使用向量模型的维度。

更改 ModelName 字段会导致整个 Codebase 强制重新索引!

我们建议您同时启用 LSP 支持和 OnlineSearch。Bing 基于爬虫,因此更推荐您使用 Tavily 进行日常搜索。

配置模板

{
    "$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",

    "Version": 1,
    "ThemeID": 0,
    "Model": {
        "ProviderURL": "https://openrouter.com/api/v1(这里没用)",
        "ProviderKey": "sk-or-xxx(这里没用)",
        "DefaultModelID": 1,
        "Models": {
            "0": {
                "ModelName": "模型名",
                "ModelID": "模型ID",
                "ModelDescription": "模型描述(可选)",
                "ModelAddPrompt": "附加系统提示词(可选)",
                "ModelTopP": -1,
                "ModelTopK": -1,
                "ModelTemperature": -1,
                "TokenLimit": 8192,
                "ProviderURL": "https://模型供应商/v1",
                "ProviderKey": "sk-模型密钥",
                "EnableThinking": true,
                "EnableToolCalling": false,
                "CompressSize": 128000,
                "ProviderSpecificConfig": {
                    "EnableDeepseekThinking": false,
                    "EnableReasoningEffort": true,
                    "EnableTopP": false,
                    "EnableTopK": false,
                    "EnableTemperature": false,
                    "EnableUsage": true,
                }
            },
            "1": {
                "ModelName": "embedding模型名",
                "ModelID": "embedding模型ID",
                "ProviderURL": "https://模型供应商/v1",
                "ProviderKey": "sk-模型密钥",
                "EnableThinking": true,
                "EnableToolCalling": false,
                "Hide": true,
                "Type": "embedding",
                "ProviderSpecificConfig": {
                    "Dimension": 1024
                }
            }
        }
    },
    "Agent": {
        "Agents": {
            "frontend": {
                "AgentName": "前端工程",
                "AgentDescription": "前端工程Agent",
                "AgentShortDescription": "擅长前端开发的前端工程Agent",
                "AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
                "AgentModel": 0,
                "AutoApprove": "",
                "AutoReject": "",
                "DisableSandbox": false
            }
        },
        "IgnoreBuiltinAgents": false,
        "GlobalPrompt": "始终使用中文回答",
        "SummaryModel": 0,
        "MaxCallCount": 50,
        "AutoApprove": "",
        "AutoReject": "",
        "IgnoreDefaultRules": false,
        "DisablePromptPreprocess": false,
        "UseShell": "",
        "TerminalEnvs": {
            "LANG": "zh_CN.UTF-8"
        },
        "DisableSandbox": false
    },
    "ignoreSignals": false,
    "Context": {
        "LSP": {
            "Enabled": true,
            "IdleTimeout": 600,
            "LanguageServers": {
                ".go": {
                    "Command": "gopls",
                    "Args": []
                }
            }
        },
        "EmbeddingModelID": 1,
        "SearchSummaryModel": 0,
        "OnlineSearch": {
            "timeout": 30,
            "proxy_url": "",
            "retry_count": 3,
            "bing": {
                "enable": true,
                "min_delay": 2,
                "max_delay": 5,
                "max_results": 10
            },
            "github": {
                "enable": false,
                "token": "ghp_xxx",
                "max_results": 5
            },
            "arxiv": {
                "enable": false,
                "max_results": 5
            },
            "tavily": {
                "enable": false,
                "api_key": "tvly-xxx",
                "search_depth": "basic",
                "include_answer": false,
                "include_raw_content": false,
                "max_results": 10
            }
        },
        "Codebase": {
            "BM25Weight": 0.7,
            "VectorMinSimilarity": 0.5,
            "BM25RetentionScore": 0.0
        }
    },
    "Server": {
        "Key": "<你的 websocket key>",
        "Path": "/acp",
        "Host": "127.0.0.1",
        "Port": 7433,
        "DisableStdioServer": true,
        "SessionTimeout": 60
    }
}

客户端

配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。

服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>

支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。

目前 helper 只支持 ws,不支持 wss

可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。

helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。

如果你需要链接到远程或自动链接无效,可以使用以下参数:

  • -config 配置文件路径
  • -host 服务器的 host
  • -port 服务器的 port
  • -path 服务器的 path
  • -key 服务器配置的 websocket key

如果你无法链接请检查是否在服务端和客户端都设置了 Key。服务端空 key 启动会自动生成一个随机秘钥并写入配置。

如果内置的 stdio 导致服务器自动退出或其它问题,则可在 config.json 中设置 DisableStdioServertrue 以禁用。

不要在用户目录或者根目录运行 Alkaid!

平台支持

  • Linux (amd64,arm64) (binary,deb,rpm,apk,archlinux)
  • Windows (amd64) (binary,msix)
  • MacOS (实验性amd64,实验性arm64)(沙盒除外) (binary)

注意:模型引擎尚未经过充分测试!

本 Release 仅供测试,不代表任何效果!不要在生产环境使用!

--- alkaid0 启航 ---

日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!