Perplexity Pro / Roo Code

Roo Codeを使います。

editor 1

いつも通りにvimを使いたいのですがvisual studio codeの情報が圧倒的に多いので、今から1年間はLLMはvisual studio codeから使うことにします。

数年経ったらvimからLLMを簡単に使えるように開発が進むことを期待しています。

開発環境

開発環境はひとまず仮想環境で構築することとします。

M3 MacBook Airは引き続きVMwareを使うこととします。脱VMwareとか言う人達が増えている状況ですが。

editor 2

仮想環境でUbuntuで開発します。

依存関係を無くしておいた方が安心なのでsnapを使いたいのですがCPUがARMだと用意されていません。(2025.03.31)

visual studio codeの公式HPからdebをdownloadして下記のようにします。

公式ホームページ。

Your code editor. Redefined with AI.

公式ホームページ。ダウンロード。ここからダウンロードします。

Download Visual Studio Code


$ cd ~/Downloads
$ sudo apt install ./code_1.98.2-1741787947_arm64.deb

Add Microsoft apt repository for Visual Studio Code ?
と質問されるのでYesかNoで回答します。(Noでも使えます。)

Perplexity Proの設定

What do you want to know?

左下のアカウント名の右のギアをクリックします。

左のWorkspaceの下のAPIをクリックします。

Setup PaymentのSetupをクリックします。

LINEMOを契約しているのでPerplexity Proを一年間無料で使えてPerplexity Proが使える場合5$分はAPIを無料で使えます。
無料で使うのですがクレジットカードを登録する必要があります。

API KeysのGenerateをクリックします。
Copyをクリックします。

model一覧です。

Models

visual studio code / 設定

Extensionsでroo codeで検索します。
installします。

OpenRouterとかはここでは無視してorの下を設定していきます。
(すぐにUI/UX変わるかもですが。AI Agentは開発速度が速すぎて少し前の記事とUI/UXが一致しない。)

Bring Your Own API Key

[Base URL]

https://api.perplexity.ai/

[OpenAI API Key]

*****************************************************

[Model]

sonar

[Let’s go]

Auto-approve: None

Model

慣れるまではsonarで試してみることにしました。ほぼ勘です。

ときどき欲しくなる機能を作ってもらう

仕様

指定したfolderの下のfile一覧とfile sizeを出力するprogramを作ります。
folderの指定は実行時引数で渡します。
file sizeは人間にわかりやすい単位で降順で出力してください
directoryはdirectoryの下のfile sizeの合計を再帰的に取得してください。
directoryはdirectory一覧を出力してください。各directoryごとにそのdirecotryの下のfile sizeの合計を出力してください。

Google翻訳です。賢い。少し修正してます。

specification

create a python script that outputs a list of files and their sizes under a specified folder.
the folder is specified as an argument at run time.
please output file sizes in descending order in human-friendly units.
for directory, recursively get the total file size under the directory.
for directory, output a list of directories. for each directory, output the total file size under that directory.

sonar-reasoningを使って60秒以上戻って来ない場合は無限loopになっているはずです。
Cancelしましょう。reasoningだからかな。

費用

上記のpythonを作ってもらって、ゆっくり作業して1-2時間で1$を消費する感じです。

それぞれの人に強く依存すると思うので「Perplexity Proはそのくらいなのかも」くらいで考えてください。

output

file nameは変えてます。

file_sizes_roo_code.py

import os
import pathlib
from argparse import ArgumentParser

def get_file_sizes(directory):
    """Get file sizes in a directory."""
    files = []
    for file in os.listdir(directory):
        path = os.path.join(directory, file)
        if os.path.isfile(path):
            size = os.path.getsize(path)
            files.append((file, size))
    return files

def get_directory_sizes(directory):
    """Get total size of all files in a directory and its subdirectories."""
    total_size = 0
    for entry in os.scandir(directory):
        if entry.is_file():
            total_size += entry.stat().st_size
        elif entry.is_dir():
            total_size += get_directory_sizes(entry.path)
    return total_size

def convert_size(size):
    """Convert size in bytes to human-friendly units."""
    for unit in ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z']:
        if abs(size) < 1024.0:
            return f"{size:3.1f}{unit}B"
        size /= 1024.0
    return f"{size:.1f}YB"

def main():
    parser = ArgumentParser(description='List files and directories with sizes.')
    parser.add_argument('directory', help='Path to the directory to scan.')
    args = parser.parse_args()

    directory = args.directory

    # Get file sizes
    files = get_file_sizes(directory)
    files.sort(key=lambda x: x[1], reverse=True)

    print(f"Files in {directory}:")
    for file, size in files:
        print(f"{file}: {convert_size(size)}")

    # Get directory sizes
    subdirectories = [entry.name for entry in os.scandir(directory) if entry.is_dir()]
    print("\nSubdirectories with total file sizes:")
    for subdirectory in subdirectories:
        subdirectory_path = os.path.join(directory, subdirectory)
        total_size = get_directory_sizes(subdirectory_path)
        print(f"{subdirectory}: {convert_size(total_size)}")

if __name__ == "__main__":
    main()

まとめ

file sizeは降順だけどdirectoryが降順でない。

sonar-reasoningでpythonを実行したら無限ループに入ってしまうscriptを生成する場合もありました。

広告

IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』
さくらのレンタルサーバ
ムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト




«       »