Show HN:エージェント用のSlack CLI

2026/02/06 6:38

Show HN:エージェント用のSlack CLI

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

概要

主なメッセージ

agent‑slack
は、TypeScript + Bun の CLI で、AI エージェントの Slack 統合を簡素化し、簡潔でトークン効率的な JSON 出力とゼロ設定認証を提供します。

主な機能と根拠

  • インストール:ワンライナーシェルスクリプトまたは
    npx skills add stablyai/agent-slack
  • 認証:macOS では自動的に Slack デスクトップデータを読み込み、失敗した場合は Chrome の抽出へフォールバックし、手動インポート (
    auth import-desktop
    ,
    auth import-chrome
    ) または環境変数 (
    SLACK_TOKEN
    ,
    SLACK_COOKIE_D
    ) を使用。
  • コアコマンド
    • auth
      – ログイン / 資格情報のインポート。
    • message get/list/send/react
      – 単一メッセージ取得、スレッドまたはチャンネル履歴のリスト化、メッセージ送信、メッセージへのリアクション;URL、チャンネル名 (
      #general
      ) または ID、およびオプションでスレッドタイムスタンプ / ワークスペース URL を受け付け。
    • user list/get
      – デフォルト最大200ユーザーをリスト化または ID/ハンドルで特定ユーザー取得;メールフィールドは適切なスコープがある場合のみ表示。
    • search all/messages/files
      – チャンネル、ユーザー、日付範囲 (
      --after
      ,
      --before
      ) 、コンテンツタイプでフィルタリング;ファイル検索は一致するファイルをダウンロード。
    • canvas get
      – URL またはワークスペース内の ID を通じて Slack キャンバスを Markdown として取得。
  • 出力:すべてのコマンドは null/空フィールドを積極的に削除した JSON を返します。添付ファイル(スニペット、画像、アタッチメント)は自動で
    ~/.agent-slack/tmp/downloads/
    にダウンロードされ、エージェントが利用できる絶対パスとして返却。

開発と貢献
ガイドラインとオープンソースロードマップは

CONTRIBUTING.md
に記載されています。

インパクト
最小限のボイラプレートで即座に使用可能な CLI を提供することで、開発者は Slack ワークフローを AI エージェントへ迅速に埋め込み、チーム全体で高速なボット開発とデータ抽出を実現できます。

本文

agent-slack
AI エージェント用 Slack 自動化 CLI(TypeScript + Bun)

指針:

  • デフォルトでトークン効率の良い出力(コンパクトな JSON、重複最小化、空/NULL フィールドは除外)を行うので、LLM が安価に結果を消費できる。
  • 設定不要認証 – Slack Desktop があれば認証は自動で完了し、失敗した場合は Chrome からのフォールバックも利用可能。Python の依存は無し。

概要

カテゴリコマンド
Readメッセージ取得、スレッド判定、全スレッド一覧
Searchメッセージ + ファイル(フィルタ付き)
Artifactsスニペット/画像/ファイルを自動ダウンロードしローカルパスで返す
Writeスレッド内返信、リアクション追加/削除
CanvasSlack Canvas を Markdown 形式で取得

インストール

curl -fsSL https://raw.githubusercontent.com/stablyai/agent-slack/master/install.sh | sh

エージェントスキル

リポジトリには

skills/agent‑slack/
に Claude Code、Codex、Cursor 等で使用できるエージェントスキルが同梱されています。
推奨は
skills.sh
からのインストールです:

npx skills add stablyai/agent-slack

手動の場合:

bash ./scripts/install-skill.sh

コマンド構成(概要)

agent-slack
├── auth
│   ├── whoami
│   ├── test
│   ├── import-desktop
│   ├── import-chrome
│   └── parse-curl
├── message
│   ├── get   <target>             # 1 件のメッセージ (+ スレッドメタ)
│   ├── list  <target>             # フルスレッド取得
│   ├── send  <target> <text>      # 送信/返信(自動で適切に処理)
│   └── react
│       ├── add    <target> <emoji>
│       └── remove <target> <emoji>
├── user
│   ├── list
│   └── get <user>
├── search
│   ├── all      <query>           # メッセージ+ファイル
│   ├── messages <query>
│   └── files    <query>
└── canvas
    └── get <canvas-url-or-id>     # Canvas → Markdown

出力は常に JSON で、NULL/空フィールドを積極的に除外。
添付ファイルは自動ダウンロードされ、絶対パスとして返却されます。


認証(面倒なセットアップ不要)

macOS では認証が自動で行われます:

  • デフォルト: Slack Desktop のローカルデータを読み込む(Slack を終了する必要なし)
  • フォールバック: 失敗した場合は Chrome から抽出(Chrome に Slack が開いている場合)

手動インポートも可能です:

agent-slack auth whoami
agent-slack auth import-desktop
agent-slack auth import-chrome
agent-slack auth test

また環境変数で設定できます:

export SLACK_TOKEN="xoxc-..."          # ブラウザトークン
export SLACK_COOKIE_D="xoxd-..."        # cookie d
agent-slack auth test

あるいは標準の Slack トークン(xoxb/xoxp)を使う場合:

export SLACK_TOKEN="xoxb-..."
agent-slack auth test

ターゲット:URL かチャンネル

message get / message list
は Slack メッセージ URL またはチャンネル参照のいずれでも受け付けます。

URL:

https://workspace.slack.com/archives/<channel>/p<digits>[?thread_ts=...]

チャンネル:

#general
(または
general
)やチャンネル ID 例:
C0123...

実際の使用例:

# チャンネル + ts で単一メッセージ取得
agent-slack message get "#general" --ts "1770165109.628379"

# スレッドルート ts でフルスレッド取得
agent-slack message list "#general" --thread-ts "1770165109.000001"

複数ワークスペースを設定している場合、チャンネル名(

#channel
/
channel
)を使うときは
--workspace
を渡すか
SLACK_WORKSPACE_URL
を設定します:

agent-slack message get "#general" --workspace "https://stablygroup.slack.com" --ts "1770165109.628379"

メッセージ / スレッドの読み取り

# 単一メッセージ (+ スレッド概要)
agent-slack message get "https://workspace.slack.com/archives/C123/p1700000000000000"

# メッセージに対するフルスレッド
agent-slack message list "https://workspace.slack.com/archives/C123/p1700000000000000"

オプションでリアクションやリアクター情報を含めることも可能

agent-slack message get <url> --include-reactions

message get vs. list

  • message get
    は単一メッセージを取得します。スレッド内の場合は、スレッドのメタ(返信数・参加者)も返却しつつ、全文は含めません。

    {
      "message": { "ts": "...", "text": "...", "user": "U123", ... },
      "thread": { "replyCount": 5, "participants": ["U123","U456"] }
    }
    
  • message list
    はスレッド内の全メッセージ(またはチャンネル履歴)を取得します。全文が必要な場合はこちら。

    {
      "messages": [
        { "ts":"...", "text":"...", "user":"U123", ... },
        { "ts":"...", "text":"...", "user":"U456", ... }
      ]
    }
    

get
は単一メッセージ確認やスレッド展開の可否をチェックする際に、
list
は完全な会話を読み取りたいときに使用します。

ファイル(スニペット/画像/添付)

message get/list
は添付ファイルを自動でダウンロードし、エージェントが直接利用できる一時ディレクトリへ保存して絶対パスを返します。

  • macOS デフォルト:
    ~/.agent-slack/tmp/downloads/

エージェントはそのパスから直接読み取れます(例:スニペットは

.txt
、画像は
.png
)。

検索(メッセージ + ファイル)

# メッセージとファイルを同時に検索
agent-slack search all "smoke tests failed" --channel "#alerts" --after 2026-01-01 --before 2026-02-01

# メッセージのみ検索
agent-slack search messages "stably ai" --user "@stablyai" --channel general

# ファイルのみ検索(ダウンロードしてローカルパスを返す)
agent-slack search files "testing" --content-type snippet --limit 10

ヒント:
信頼できる結果を得るには

--channel ...
を必ず指定します(チャンネル限定検索は履歴/ファイルをローカルでフィルタ)。複数ワークスペース間で
#channel
名を使う場合は
--workspace https://...slack.com
を設定してください。

ユーザー情報

# ユーザー一覧(メールアドレス取得には適切な Slack スコープが必要;欠損フィールドは除外)
agent-slack user list --workspace "https://workspace.slack.com" --limit 200 | jq .

# ID またはハンドルでユーザーを取得
agent-slack user get U12345678 --workspace "https://workspace.slack.com" | jq .
agent-slack user get "@alice"   --workspace "https://workspace.slack.com" | jq .

Canvas を Markdown 形式で取得

agent-slack canvas get "https://workspace.slack.com/docs/T123/F456"
agent-slack canvas get "F456" --workspace "https://workspace.slack.com"

開発 / コントリビュート

CONTRIBUTING.md
をご覧ください。


Stably

Code. Ship. Test.

Documentation · Homepage

同じ日のほかのニュース

一覧に戻る →

2026/02/07 6:51

**OpenCiv3:サイクリズム・III のオープンソースでクロスプラットフォーム化した再構築**

## Japanese Translation: OpenCiv3は、Civilization IIIのオープンソースでクロスプラットフォームなリメイクであり、レガシー制限を取り除き、モッドサポートを拡張しつつもコアゲームプレイを保持します。Godot EngineとC#で構築されており、Windows、Linux、macOS上でネイティブに動作し、専用のCivilization IIIファイルは不要です(ただしローカルコピーがあると互換性が向上します)。 現在のプレアルファ版(v0.3「Dutch」、2025年12月)は、OS固有のzipまたはtgz(「スタンドアロンモード」でプレースホルダーグラフィック付き)として配布されます。インストール手順は以下の通りです。 - **Windows** – zipを解凍し、`OpenCiv3.exe` をダブルクリックします。ブロックされている場合は解除し、自動検出できない場合は環境変数 `CIV3_HOME` にCivilization IIIフォルダーのパスを設定してください。 - **Linux** – `.tgz` を解凍し、`export CIV3_HOME="/path/to/civ3"` としてから `OpenCiv3.x86_64` を実行します。 - **macOS** – zipを解凍し、`xattr -cr /path/to/OpenCiv3.app` でクォータリゼーションを解除し、同様に `CIV3_HOME` を設定してターミナルから起動します。 既知の問題としてはプレースホルダー資産、不完全なBIQ/SAVファイルサポート(クラッシュを引き起こす可能性があります)、および新規ゲーム開始時にマップ生成用保存ファイルが欠如しているためmacOSでクラッシュするケースがあります。最低ハードウェア要件はまだ公開されていません。プロジェクトはMITライセンスの下でリリースされ、Firaxis、CivFanatics.com、その他の団体とは独立しています。 開発者はBIQ/SAVサポートの完全復元、プラットフォーム別クラッシュ(特にmacOS)の修正、後半ゲームコンテンツの追加、およびグラフィックと安定性の向上に積極的に取り組んでいます。バグや機能要望はGitHubで追跡されており、コミュニティからの貢献が奨励されています。 モッドフレンドリーでクロスプラットフォームな基盤を提供することで、OpenCiv3はプレイヤーと開発者にオリジナルIPを侵害せずにクラシックなCivilization体験を拡張する機会を提供します。

2026/02/07 1:20

Waymoワールドモデル

## Japanese Translation: > **Waymoは、Waymo World Modelという生成シミュレーションエンジンを公開しました。このエンジンは、極端な天候・自然災害・象やロングホーンのような珍しいオブジェクト、逆走トラックなど安全に関わるインシデントを含むハイパーリアリスティックな自律運転シナリオを生成します。** > Google DeepMind の Genie 3 をベースにしたこのモデルは、カメラと LiDAR データを融合し、ドライビングアクション制御・シーンレイアウト制御・時間帯、天候、カスタムシナリオを調整する言語プロンプトという3つの制御機構を提供します。録画済みまたは新規生成されたルートに対して代替ドライビング決定を評価する「what‑if」反実仮想シミュレーションもサポートしています。 > Waymo Driver は米国都市で約 2 億マイルの完全自律走行距離を記録し、数十億マイルに相当するバーチャル走行をシミュレートしてきました。World Model はリアルなダッシュカムやモバイルカメラ映像を多模態シミュレーションへ変換し、正確な視覚シーンと一致させることでこの機能を拡張します。効率的なバリアントは実時間の最大4倍速で動作し、計算資源を削減しつつ長時間テストが可能です。 > このシステムは、安全性が証明された自律運転を実現するために Waymo の AI エコシステムの重要柱となっており、Waymo と Google DeepMind からなる大規模チームによって開発されています。

2026/02/05 20:19

**ジオジョインをH3インデックスで400 倍高速化した手法** - **問題点:** 大規模な空間データセットに対する従来のジオジョインクエリは、ポイント‐イン‐ポリゴン判定やテーブル全体のスキャンが必要だったため遅延が大きかった。 - **解決策:** Uber の H3 ヘキサゴナル階層インデックスシステムを利用し、空間情報を固定サイズセルへ事前集約した。 - **実装手順:** 1. すべてのジオメトリ(点・線・多角形)を適切な解像度で対応する H3 インデックスに変換する。 2. 生成されたインデックスを別テーブルに格納し、H3 キーで索引付けする。 3. ジョイン時には、重複した H3 インデックスをキーとしてマッチさせ、膨大な空間判定処理を回避する。 - **結果:** クエリ遅延が数時間から数分へと短縮され、約 400 倍の高速化を実現。また、選択した解像度内であれば空間的正確性は維持された。 ジオメトリ比較を単純な整数キー検索に置き換えることで、データの忠実度を損なうことなく大幅なパフォーマンス向上を達成しました。

## Japanese Translation: ## Summary この記事は、コストの高い空間述語をH3ベースの集合演算に置き換えることで、遅い二次元空間結合をコンパクトなキーで高速ハッシュ結合へと変換する方法を示しています。各ジオメトリを解像度 3 の少数の H3 セルで覆うことにより、結合は最初にセルを共有する候補ペアをフィルタリングし、その後で正確な `ST_Intersects` をその候補のみに適用します。これにより、潜在的に何百万もの交差チェックが、フィルタ済みセットだけに減少し、テストで 400 倍の速度向上を実現しています。この手法は CTE、ビュー、およびサブクエリとシームレスに機能し、追加のマテリアライズドテーブルやスキーマ変更は不要です。したがって、精度を下げるなどの実験も容易になります。高い H3 解像度では偽陽性が減少しますが、形状ごとのセル数が増加し、低解像度ではインデックス作成が簡単ですが、解像度 4 を超えるとセル数の増加により急激に大きくなります。実際には、この書き換えにより 15 ワーカーの Xeon クラスターで結合時間を約 459 秒から約 1.2 秒へ短縮し、正確な一致精度(最終的な `ST_Intersects` によって偽陽性が除去される)を維持したまま高速な空間分析を可能にしています。