备忘


Windows

  1. Sysinternals Suite, live.sysinternals.com
  2. IObit Uninstaller Free, Geek Uninstaller
  3. Snipaste
  4. Fork
  5. Paint.NET
  6. OpenArk
  7. LockHunter
  8. Honeyview
  9. TreeSizeFree-Portable
  10. etcher
  11. ContextMenuManager
  12. 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+IHNjcnlwdCAzeTlwaUU5blluQStWNCty
    ZzdEQ01BIDE4CnFHdHp0dksyUHd6ZkVZWU5MMmtxMzNENjd0MWtJQ0JjZmdzVGoy
    enU4TWsKLS0tIGFwUE1sd0pCYXZVWVBtalI3Z3MzOThEM3lEbkxoZ2dXRm1QVmZ1
    ZTJqSzgK7t4RDEnDkEBTku3Tira3mCZHZDDPbQ3BtnLAzx/vT4gT9/xygaXEEosz
    LINQKXBwOfyMBsem3brnQz5D5FKtvV7lH4jqoQKyN6MdCTjo9AvYTn1eCecYs115
    1FJN1Hep73ZCDC16krayRt6RCgI7sA5MqFEeEI+Z8PWjCTnK2zYu3+g1BDOEI0En
    0U3k2Sr8uPObJzTUEX4q2Kc0L3yl2ZJvNok8Hu2Go0gkjdMtX46PfKv23uky9i2L
    KLJMrZPckKe9p+auG+iTVdvYgeyM27mifCXX1k6QVvnfadgTyo//vSryVhQZ96NQ
    LErnCABu6D4kWvyIUlShYYNyYPalkr39AE55UTPPl0uJy85Bkux2MC3fH/OMai0k
    o3r61NaTkvZuFpao3gs9VzLEcSdQgPSLl3T9Fj55omdSYzEKCmYJyZ7Iq+ysWZrP
    YUBNpadKVd2UlMENoCnwjxFpa46OPQFUvU8/iouQ1fyIgGhNMXxj74rYvJl9iiFM
    Rlf/+jKGi3WtStyXgs5XZRTo9c6Gwe72SUU7FhlcHF2QBHK69fUvVLEoBytfFf4Q
    i8DBPffBU/RHB8LjbbemylAZFpgI8djXwSgSkgtVdeakkUbv7yFmUwNtduKJXT+A
    NOgozU+c+2INrVVwD3yTM4NVA/vWZRmt0mpXgrwv6Nx5gW9fKGaNZR9oxm1VX/7Z
    pad15WqO/7SejQr2vvXN5UXMbgQQGCpnuEu1Uq7wjPiNd+J3a2YTN5hrIOD3Jz/D
    ciaadktkZKPTZhAU3ocxS48XZjqavFwHHHJPr2bdPrCZFBt1jlirW532fScNYu8Q
    PFZTcWpvsgyaXH5wOPDnU+tF8UHTKVUEtxaL/eBHXF8UOW2vNjyAR11AZh4vhz/8
    neqIc7UrW9WikXTpRSVgF1DV9Fc1oLOcRla0+wvMAIKQ25zozJpeemrQo0B3RS5u
    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
    uoKN31IztVU/vErOB+x84lZ2yI4FclV5NA==
    -----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 !
  目录