备忘


Windows

  1. LockHunter
  2. Honeyview
  3. Snipaste
  4. Sysinternals Suite, live.sysinternals.com
  5. TreeSizeFree-Portable
  6. etcher
  7. ContextMenuManager
  8. Fork
  9. OpenArk
  10. Geek Uninstaller
  11. QuickLook

WSL2

  1. systemd support
  2. WSL Utilities
  3. WSLg

Linux

  1. Dash to dock
  2. Hide top bar
  3. Variety

Mac

  1. Hidden Bar
  2. Macs Fan Control
  3. Rectangle

Tools

Network

  1. MTR
  2. WinMTR (Redux), WinMTR

C++

  1. Compiler Explorer
  2. Template Expansion

Docs

  1. Assembly: x86 Assembly Guide, x86 and amd64 instruction reference

  2. Cryptography: Everything you should know about certificates and PKI but are too afraid to ask, 关于证书(certificate)和公钥基础设施(PKI)的一切(SmallStep, 2018)

Misc

  1. bash 文件中 set 命令的帮助文档 bash -c "help set"

  2. 让 CPU 使用率达到 100% while : ; do : ; done

  3. Font: CaskaydiaMono Nerd Font Propo, Cascadia Mono PL

  4. 关于 kB 和 KiB 的区别

    • 1 kibibyte (KiB) = 1,024 bytes
    • 1 kilobyte (kB) = 10**3 bytes
    • 1 mebibyte (MiB) = 1,024**2 bytes = 1,048,576 bytes
    • 1 megabyte (MB) = 1,000**2 bytes = 10**6 bytes
    • 1 gibibyte (GiB) = 1,024**3 bytes = 1,073,741,824 bytes
    • 1 gigabyte (GB) = 1,000**3 bytes = 10**9 bytes

      参考: https://en.wikipedia.org/wiki/Byte

      当表示计算机中数据量的大小时,K、M、G、T等单位之间的进制都是 1024。

      当表示网速时,K、M、G、T等单位之间的进制都是 1000。

      计算机网络的性能指标

  5. 查找 <> 包裹的字符串,< 前不是 ‘`‘ 字符并且 > 后也不是 ‘`‘ 字符的正则表达式:

    # (?<!`)<.+?>(?!`)
    grep -P '(?<!`)<.+?>(?!`)' -R -n .
  6. YAML 多行字符串标记对照表 总结

    a. `|` 系列:保留原样换行
    b. `>` 系列:换行转空格
    c. `+`:保留结尾空行
    d. `-`:删除结尾空行

    举例
    literal_block: |
    Line 1
    Line 2
    Line 3
    
    literal_block_plus: |+
    Line 1
    Line 2
    Line 3
    
    
    literal_block_strip: |-
    Line 1
    Line 2
    Line 3
    
    
    folded_block: >
    Line 1
    Line 2
    Line 3
    
    folded_block_plus: >+
    Line 1
    Line 2
    Line 3
    
    
    folded_block_strip: >-
    Line 1
    Line 2
    Line 3
    测试脚本
    import yaml
    
    with open('demo.yaml', 'r', encoding='utf-8') as f:
        data = yaml.safe_load(f)
    
    for key, value in data.items():
        print(f"{key}:\n{repr(value)}\n{'-'*40}")
    结果
    literal_block:
    'Line 1\nLine 2\nLine 3\n'
    ----------------------------------------
    literal_block_plus:
    'Line 1\nLine 2\nLine 3\n\n\n'
    ----------------------------------------
    literal_block_strip:
    'Line 1\nLine 2\nLine 3'
    ----------------------------------------
    folded_block:
    'Line 1 Line 2 Line 3\n'
    ----------------------------------------
    folded_block_plus:
    'Line 1 Line 2 Line 3\n\n\n'
    ----------------------------------------
    folded_block_strip:
    'Line 1 Line 2 Line 3'
    ----------------------------------------
  7. 处理 iptables 命令可能查看不到规则端口信息的问题 整理 Kubernetes 的 NodePort 规则时可能会遇到使用 iptables 命令查看 KUBE-NODEPORTS 链时无法查看到 tcp 端口的问题。
    这个时候就需要使用 nft list chain ip nat KUBE-NODEPORTS 来查看才行。
    nft 命令可以通过命令 apt install nftables 来安装。
    与命令 iptables-save 等价的命令是 nft list ruleset
    https://www.reddit.com/r/kubernetes/comments/1bf8rma/nodeport_kubeproxy_v126_no_longer_has_destination/
  8. 处理无法查看 iptables 中 log 目标输出的日志的问题 可以使用命令 echo 1 > /proc/sys/net/netfilter/nf_log_all_netns 强制系统记录所有的日志。
    https://stackoverflow.com/questions/39632285/how-to-enable-logging-for-iptables-inside-a-docker-container
  9. 清空 iptables 的所有规则
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -t raw -F
    iptables -t raw -X
    iptables -t raw -Z
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -t mangle -Z
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -Z
    iptables -t filter -F
    iptables -t filter -X
    iptables -t filter -Z
    iptables -t security -F
    iptables -t security -X
    iptables -t security -Z
    
    ip6tables -P INPUT ACCEPT
    ip6tables -P FORWARD ACCEPT
    ip6tables -P OUTPUT ACCEPT
    ip6tables -t raw -F
    ip6tables -t raw -X
    ip6tables -t raw -Z
    ip6tables -t mangle -F
    ip6tables -t mangle -X
    ip6tables -t mangle -Z
    ip6tables -t nat -F
    ip6tables -t nat -X
    ip6tables -t nat -Z
    ip6tables -t filter -F
    ip6tables -t filter -X
    ip6tables -t filter -Z
    ip6tables -t security -F
    ip6tables -t security -X
    ip6tables -t security -Z
  10. 设置 pip 使用的 mirror
    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    pip config set install.trusted-host mirrors.aliyun.com
  11. 设置 Ubuntu 使用的 http 代理
    export http_proxy=http://localhost:7890
    export https_proxy=http://localhost:7890
    
    # minikube proxy
    # https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/
    export HTTP_PROXY=http://localhost:7890
    export HTTPS_PROXY=https://localhost:7890
    export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24
    
    # git http/https proxy
    git config --global http.proxy http://localhost:7890
    git config --global https.proxy http://localhost:7890
    
    # ssh proxy (nc)
    # 注意 nc 支持 socks 4, socks 5 或者 https 代理,如果要使用 http 代理可以使用 ncat
    cat << EOF >> ~/.ssh/config
    Host github.com
        User git
        ProxyCommand nc -x localhost:7890 -Xconnect %h %p
    EOF
    
    # ssh proxy (ncat)
    # ncat command comes from nmap(https://nmap.org/dist/nmap-7.92-setup.exe)
    cat << EOF >> ~/.ssh/config
    Host github.com
        User git
        ProxyCommand ncat --proxy localhost:7890 --proxy-type http %h %p
    EOF
    
    # or use http proxy when available
    cat << EOF >> ~/.ssh/config
    # https://man.openbsd.org/ssh_config
    Match host github.com exec "ncat -z 127.0.0.1 7890"
        ProxyCommand ncat --proxy 127.0.0.1:7890 --proxy-type http %h %p
    EOF
    
    # apt proxy
    cat << EOF | sudo tee /etc/apt/apt.conf.d/proxy.conf
    Acquire {
        HTTP::proxy "http://localhost:7890";
        HTTPS::proxy "http://localhost:7890";
    }
    EOF
    
    # Docker http proxy
    sudo mkdir -p /etc/systemd/system/docker.service.d
    cat << EOF | sudo tee /etc/systemd/system/docker.service.d/override.conf
    [Service]
    Environment="HTTP_PROXY=http://localhost:7890"
    Environment="HTTPS_PROXY=http://localhost:7890"
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker.service
    在使用 sudo 时,如果想环境变量中的代理设置依然有效,可以编辑 `/etc/sudoers` 文件
    + Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"
  12. 设置 Ubuntu 使用的 mirror
    cp /etc/apt/sources.list /etc/apt/sources.list.bak
    sed -i "s@http://.*archive.ubuntu.com@https://mirrors.bfsu.edu.cn@g" /etc/apt/sources.list
    sed -i "s@http://.*security.ubuntu.com@https://mirrors.bfsu.edu.cn@g" /etc/apt/sources.list
    apt update
  13. Ubuntu 安装 Docker 镜像:https://mirrors.bfsu.edu.cn/help/docker-ce
    sudo groupadd docker
    sudo usermod -aG docker $USER
    newgrp docker
    {
        "builder": {
            "gc": {
                "defaultKeepStorage": "20GB",
                "enabled": true
            }
        },
        "experimental": false,
        "features": {
            "buildkit": true
        }
    }
    路径为: /etc/docker/daemon.json/var/snap/docker/current/config/daemon.json
  14. 修改 Docker 的 cgroup driver 为 systemd
    {
    + "exec-opts": ["native.cgroupdriver=systemd"]
    }
    将上面的内容添加到 Docker 的配置文件中,路径一般为:/etc/docker/daemon.json
  15. Ubuntu 安装 Golang
    # https://golang.google.cn/dl/
    # https://golang.google.cn/doc/install
    # https://goproxy.cn/
    
    wget -O - https://golang.google.cn/dl/go1.19.1.linux-amd64.tar.gz | tar -C $HOME -xz
    export PATH=$PATH:$HOME/go/bin
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    
    # ubuntu
    sudo add-apt-repository ppa:longsleep/golang-backports
    sudo apt update && sudo apt install golang -y
  16. Ubuntu 安装 podman 及 podman-compose
    # podman(https://podman.io/getting-started/installation)
    sudo apt install podman
    
    # podman-compose(https://github.com/containers/podman-compose)
    sudo apt install python3-pip
    pip3 install podman-compose
    
    # qemu-system
    sudo apt-get install qemu-system-x86
    
    # gvproxy
    wget -O gvproxy https://github.com/containers/gvisor-tap-vsock/releases/download/v0.4.0/gvproxy-linux
    chmod +x gvproxy
    sudo mv ./gvproxy /usr/libexec/podman/
    修改 /etc/containers/registries.conf 文件,让 podman 能够支持从 docker 上拉取镜像
    + unqualified-search-registries = ["docker.io", "quay.io"]
  17. Ubuntu 安装 Homebrew
    # 官网:https://brew.sh/
    # 镜像:https://mirrors.bfsu.edu.cn/help/homebrew/
    
    export HOMEBREW_INSTALL_FROM_API=1
    export HOMEBREW_API_DOMAIN="https://mirrors.bfsu.edu.cn/homebrew-bottles/api"
    export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.bfsu.edu.cn/homebrew-bottles"
    export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.bfsu.edu.cn/git/homebrew/brew.git"
    export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-core.git"
    
    git clone --depth=1 https://mirrors.bfsu.edu.cn/git/homebrew/install.git brew-install
    /bin/bash brew-install/install.sh
    rm -rf brew-install
    
    test -r ~/.zshrc && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.zshrc
  18. Caddy
    # To install cloudflare, run the following command
    # caddy add-package github.com/caddy-dns/cloudflare
    
    # https://caddyserver.com/docs/caddyfile/options
    {
        #debug
        log {
            output file /var/log/caddy/caddy.log
            format json
            level ERROR
        }
    }
    
    # default directives order: https://caddyserver.com/docs/caddyfile/directives#directive-order
    site {
        tls !!!email
        tls {
            dns cloudflare !!!key
        }
    
        root * /usr/share/caddy
        file_server
        #reverse_proxy 127.0.0.1:8080
    
        @websockets {
            path /ws
            header Connection upgrade
            header Upgrade websocket
        }
        #reverse_proxy @websockets unix//dev/shm/ws.sock
        reverse_proxy @websockets 127.0.0.1:9090
    }
  19. Windows11 开启 DoH 1. 查看系统自带支持的 DoH 服务器地址
    # 方式一
    Get-DnsClientDohServerAddress
    
    # 方式二
    netsh dns show encryption
    2. 添加常用的 DoH 服务器
    # DNSPod https://www.dnspod.cn/products/publicdns
    netsh dns add encryption server=119.29.29.29 dohtemplate=https://doh.pub/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=2402:4e00:: dohtemplate=https://doh.pub/dns-query autoupgrade=no udpfallback=no
    
    # AliDNS https://alidns.com/
    netsh dns add encryption server=223.5.5.5 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=223.6.6.6 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=2400:3200::1 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=2400:3200:baba::1 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    3. 配置系统网络 在系统设置 "Network & internet > Ethernet" 中将 DNS Server assignmentAutomatic (DHCP) 改为 Manual 并设置
    | IPv4                  | On                        |
    | Preferred DNS         | 119.29.29.29              |
    | DNS over HTTPS        | On (automatic template)   |
    | Fallback to plaintext | Off                       |
    | Alternate DNS         |                           |
    | DNS over HTTPS        | Off                       |
    
    | IPv6                  | On                        |
    | Preferred DNS         | 2402:4e00::               |
    | DNS over HTTPS        | On (automatic template)   |
    | Fallback to plaintext | Off                       |
    | Alternate DNS         |                           |
    | DNS over HTTPS        | Off                       |
    4. 使用 https://www.dnsleaktest.com/ 测试
  20. Windows11 中为 WSL2 开启 KVM 支持权限设置 1. 确保内核版本比较新
    # 如果需要更新内核可以手动到 https://www.catalog.update.microsoft.com/Search.aspx?q=wsl 下载预编译好的内核
    $ uname -r
    5.15.79.1-microsoft-standard-WSL2
    2. 将用户添加到组 kvm 中
    $ sudo usermod -a -G kvm ${USER}
    3. 修改 https://learn.microsoft.com/en-us/windows/wsl/wsl-config
    $ cat << EOF | sudo tee /etc/wsl.conf
    [boot]
    command = /bin/bash -c 'chown root:lvm /dev/kvm && chmod 660 /dev/kvm'
    
    [wsl2]
    nestedVirtualization=true
    EOF
    4. 确认 kvm 可用
    $ kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
  21. Windows 中为 Hyper-V 中的虚拟机开启虚拟化支持 在 Windows 中以管理员身份打开 powershell
    # 查看有哪些虚拟机
    $ Get-VM
    Name              State   CPUUsage(%) MemoryAssigned(M) Uptime           Status             Version
    ----              -----   ----------- ----------------- ------           ------             -------
    UbuntuServer22.04 Running 0           12288             00:42:38.0460000 Operating normally 9.0
    
    # 查看指定虚拟机是否已经打开了虚拟化
    $ Get-VMProcessor -VMName UbuntuServer22.04 | fl | findstr ExposeVirtualizationExtensions
    ExposeVirtualizationExtensions               : False
    
    # 开启指定虚拟机的虚拟化支持
    $ Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName UbuntuServer22.04
    
    # 确认指定虚拟机开启了虚拟化
    $ Get-VMProcessor -VMName UbuntuServer22.04 | fl | findstr ExposeVirtualizationExtensions
    ExposeVirtualizationExtensions               : True
    进入虚拟机,确认虚拟化是否已经开启
    $ egrep -o 'vmx|xvm' /proc/cpuinfo
    vmx
  22. Windows 中配置 Hyper-V 中的虚拟机使用 WSL 同网段的静态 IP 首先获取 WSL 的信息
    $ ip a show dev eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1280 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:51:33:53 brd ff:ff:ff:ff:ff:ff
        inet 172.31.203.89/20 brd 172.31.207.255 scope global eth0
        valid_lft forever preferred_lft forever
        inet6 fe80::215:5dff:fe51:3353/64 scope link
        valid_lft forever preferred_lft forever
    
    $ ip r
    default via 172.31.192.1 dev eth0 proto kernel
    在 Hyper-V Manager 中配置虚拟机使用名为 WSL 的虚拟交换机,并使用静态的 MAC 地址。
    配置 Hyper-V 中的 Ubuntu 虚拟机使用静态 IP 地址 172.31.203.100,编辑文件 /etc/netplan/50-cloud-init.yaml
    network:
        version: 2
        ethernets:
            eth0:
            addresses:
            - 172.31.203.100/20
            routes:
            - to: default
                via: 172.31.192.1
            nameservers:
                addresses: [172.31.192.1]
    然后使用命令 netplan apply 应用修改即可。
  23. Windows 11 中允许局域网访问 WSL2 将下面的内容添加到 C:\Users\%USERNAME%\.wslconfig 文件中
    [wsl2]
    networkingMode=mirrored
    dnsTunneling=true
    firewall=true
    autoProxy=true
    
    [experimental]
    hostAddressLoopback=true
    并在 Windows 中使用命令 wsl --shutdown 重启 WSL2 后即可生效。 参考:https://learn.microsoft.com/en-us/windows/wsl/wsl-config
  24. Windows Terminal 配置
    {
        "actions": 
        [
            {
                "command": 
                {
                    "action": "copy",
                    "singleLine": false
                },
                "id": "User.copy",
                "keys": "ctrl+shift+c"
            },
            {
                "command": "paste",
                "id": "User.paste",
                "keys": "ctrl+shift+v"
            }
        ],
        "copyOnSelect": true,
        "multiLinePasteWarning": false,
        "defaults":
        {
            "adjustIndistinguishableColors": "never",
            "antialiasingMode": "cleartype",
            "bellStyle": "taskbar",
            "closeOnExit": "always",
            "colorScheme": "Dracula+",
            "cursorShape": "filledBox",
            "experimental.retroTerminalEffect": false,
            "font":
            {
                "face": "CaskaydiaMono Nerd Font Propo",
                "size": 13.0,
                "weight": "normal"
            },
            "historySize": 9999999,
            "intenseTextStyle": "all",
            "opacity": 90,
            "padding": "6",
            "suppressApplicationTitle": true,
            "useAcrylic": true,
            "useAtlasEngine": true
        },
        "schemes": [
            {
                "background": "#212121",
                "black": "#21222C",
                "blue": "#82AAFF",
                "brightBlack": "#545454",
                "brightBlue": "#D6ACFF",
                "brightCyan": "#A4FFFF",
                "brightGreen": "#69FF94",
                "brightPurple": "#FF92DF",
                "brightRed": "#FF6E6E",
                "brightWhite": "#F8F8F2",
                "brightYellow": "#FFCB6B",
                "cursorColor": "#ECEFF4",
                "cyan": "#8BE9FD",
                "foreground": "#F8F8F2",
                "green": "#50FA7B",
                "name": "Dracula+",
                "purple": "#C792EA",
                "red": "#FF5555",
                "selectionBackground": "#F8F8F2",
                "white": "#F8F8F2",
                "yellow": "#FFCB6B"
            }
        ]
    }
  25. 设置 Artifactory 搭建的 Chocolatey 的镜像
    # https://jfrog.com/help/r/artifactory-working-with-chocolatey-packages-in-artifactory/artifactory-working-with-chocolatey-packages-in-artifactory
    # https://stackoverflow.com/questions/49413259/mirror-chocolatey-with-artifactory
    choco source add -n artifactory -s="https://artifactory.ubisoft.org/artifactory/api/nuget/choco-remote" --priority 1 --bypass-proxy --allow-self-service
    choco source disable -n chocolatey
    choco source enable -n artifactory
  26. Proxy
    -----BEGIN AGE ENCRYPTED FILE-----
    YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBwVHg2dklJcms0LzQvR28r
    aEQ4S2l3IDE4CjlldWJUZ3JSeVo3Yys5RjhtUGNVS21LWkZoUGh4NUx1ZlA0RVVT
    eWVEUHMKLS0tIDJFNzJ4RzMyTGNVWWR2WVJsMUh0N2xFNnZiU1dNVURMRE91eDZt
    bmZzTzgK1eH3aZ8YR6eRUP8/A2bn0lr0h1bjmAPR93RKwBfyk1e4mW5gvKHdz409
    SM8KhSzcpHS+x/H9q7reUhOStagYHI6GCjTtplGS7bfTl+TtVxuWcq45fNzbLIVo
    7bsIeHaZf4aE06z92BgX3WSKuynCjvnT3602buDBiXErgHyCRXp6TEFV9GTSEeLv
    5FUwUxoW58VXpkfvkz0GySeMJ5LU3nrp34MxGU5s62FeSNLSlseNnXfdUNEwumdk
    6R4mL+5NIhdRmv1PLVkdfx97q/4MQHcJGZ6Y7F1jlty4KWkU0QEglvBry4x5S0YT
    Hb1ipVkxlVflwTp6TXkC+H9QCJciDxssGYTaHFgnYvpOfo/i56iBKpJhRyg4xfHm
    UxPymEgJygxd7tj5J2GCrjb0rRDJs0iP6Fa8wBg52/DP/jlFGTNO60xdKxQtT95t
    BI2DZlNJGFHYxwxeX86KDdaSn9ZRqNRa09/cDgq9o14u0z0jB2Bm8AVk9Zh1N7jx
    t3qlfEuvX5cI4MyvnkXWVCKAE6F8T492IbmW/uEsqN/UHDK2VTSifG1Fdnj0UMcj
    IhOawPceyhyagT7eKrMbTVGnirMxwyZNQZLx81njaRrb/lt+T/10AtDxGwSH3maH
    1XeW5atRXw0qktB34It3FFTMRJv0DDsHr+vXxdTdIyc7H9KznNgoxKqffHvB/VTJ
    a/ySNkIRLYneAjPHlCnffPEAZEgDw69zrEkNjjhVoXSB/AQK4Znj3GmB4v/1N505
    fmtKoeAqhyXBAFov4vtOEP0QDINuo2riy005RYKajs6yfbI2Hus3+GMnTVo1ufXr
    uSI2GbLVJjTP5wL1tvu7V8EBL4qm5rUhJTDAIiIDQV0KvzIsZVAiYScNi+wueylu
    gHMUu9EOUerqygFOnPMcdFiwxcngOTgxevnX4KEIrVa41U52OsrY9BuNqxwQ+0FH
    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
    -----END AGE ENCRYPTED FILE-----
  27. Ollama Continue config
    # OLLAMA_CONTEXT_LENGTH=8192
    # OLLAMA_FLASH_ATTENTION=1
    # OLLAMA_KV_CACHE_TYPE=q4_0
    # OLLAMA_NUM_PARALLEL=8
    # OLLAMA_KEEP_ALIVE=30m
    
    name: Local Agent
    version: 1.0.0
    schema: v1
    
    models:
    - name: Autodetect
        provider: ollama
        model: AUTODETECT
        apiBase: http://localhost:11434
        roles:
        - apply
        - autocomplete
        - chat
        - edit
        - embed
        - rerank
        - summarize
        requestOptions:
        noProxy:
            - localhost
        extraBodyProperties:
            keep_alive: -1
            # https://huggingface.co/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF
            repetition_penalty: 1.05
        defaultCompletionOptions:
        temperature: 0.7
        topP: 0.8
        topK: 20
        maxTokens: 65536
        capabilities:
        - tool_use
        chatOptions:
        baseSystemMessage: You are an expert software developer. You give helpful and concise responses.
    context:
    - provider: file
    - provider: code
    - provider: diff
    - provider: currentFile
    - provider: terminal
    - provider: open
    - provider: tree
    - provider: problems
    - provider: debugger
        params:
        stackDepth: 3
    - provider: repo-map
        params:
        includeSignatures: false # default true
    - provider: os

文章作者: Kiba Amor
文章链接: https://kibazen.cn/memo/
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 Kiba Amor !
  目录