---
title: "นักพัฒนา"
description: "เรียกใช้ CLI ครั้งเดียว ดึงทุกข้อมูลลับ ไม่ต้องใช้ env var ไม่มีไฟล์กำหนดค่า และไม่มีข้อมูลลับในบันทึก"
lang: th
url: https://clavitor.ai/th/developers
markdown: https://clavitor.ai/th/developers.md
translation_of: https://clavitor.ai/en/developers.md
authoritative: false
publisher: Clavitor LLC
---

> This is the Thai translation of [Developers](https://clavitor.ai/en/developers.md). The original English text is authoritative; where the two differ, the English version prevails.

# นักพัฒนา: เรียกใช้ CLI ครั้งเดียว ดึงทุกข้อมูลลับ

ไม่ต้องใช้ env var ไม่มีไฟล์กำหนดค่า และไม่มีข้อมูลลับในบันทึก ทุกข้อมูลลับที่โค้ดของคุณต้องการจะถูกดึงมาใช้งานขณะรันไทม์จากห้องนิรภัยที่เอเจนต์ไม่สามารถเลี่ยงผ่านได้

## รูปแบบการใช้งาน: จัดเก็บเพียงครั้งเดียว ดึงข้อมูลได้จากทุกที่

เอเจนต์แต่ละตัวจะถูกเริ่มต้นเพียงครั้งเดียวด้วยโทเค็น ขอบเขตการใช้งาน และขีดจำกัดอัตราของตนเอง หลังจากนั้นเอเจนต์จะสามารถดึงข้อมูลลับขณะรันไทม์ได้ คีย์จะถูกจัดเก็บแบบเข้ารหัสในห้องนิรภัย และไม่ถูกเก็บใน env var หรือซอร์สโค้ดเด็ดขาด หากมีการหมุนเวียนคีย์ ให้อัปเดตใน UI ของห้องนิรภัย แล้วเอเจนต์ทุกตัวจะดึงคีย์ใหม่ไปใช้โดยอัตโนมัติ

```
# One-time setup — paste the token at the prompt, or pipe it in

$ echo "$CLAVITOR_TOKEN" | clavitor-cli init

# Single value — piped, never stored

$ clavitor-cli get "Deploy Key" --field private_key | ssh-add -

# Whole config — secrets resolved, template safe to store anywhere

$ clavitor-cli render app.config.json | myapp --config -

# Proxy — credentials injected at the network layer

$ export HTTPS_PROXY=http://localhost:1983
$ curl -H "Authorization: Bearer clavitor://OpenRouter/key" https://openrouter.ai/api/v1/models
```

## สามวิธีในการใช้งาน: Field, Render หรือ Proxy

### Field

ค่าเดียว ส่งผ่านไพพ์ไปยังคำสั่งหรือสคริปต์ใดๆ ข้อมูลลับจะปรากฏอยู่ในไพพ์เท่านั้น ไม่อยู่ในตัวแปร และไม่ถูกบันทึกลงดิสก์

### Render

ไฟล์กำหนดค่าทั้งไฟล์ แปลงการอ้างอิง `clavitor://` ทั้งหมดเมื่อเริ่มต้น เทมเพลตสามารถคอมมิตได้อย่างปลอดภัย ไฟล์กำหนดค่าที่แปลงแล้วจะอยู่ในไพพ์

### Proxy

HTTPS proxy แปลงข้อมูลรับรองจากเฮดเดอร์อย่างโปร่งใส เอเจนต์จะเขียน `clavitor://` ในตำแหน่งที่ต้องการใช้ข้อมูลลับ จากนั้น proxy จะแทรกค่าจริงเข้าไป ไม่มีการบันทึกใดๆ และไม่มีการเก็บไว้ในหน่วยความจำของเอเจนต์

### ควรใช้วิธีไหนดีครับ

| Feature | Field | Render | Proxy |
|---|---|---|---|
| ไม่ให้ข้อมูลลับหลุดเข้าไปในบันทึก | 3/3 | 2/3 | 3/3 |
| ใช้งานได้กับทุกภาษาโปรแกรม | 3/3 | 3/3 | 3/3 |
| ใช้งานได้กับทุกเครื่องมือ (curl, SDK, เบราว์เซอร์) | 2/3 | 1/3 | 3/3 |
| การกำหนดขอบเขตและการตรวจสอบสำหรับแต่ละเอเจนต์ | 3/3 | 3/3 | 1/3 |
| ข้อมูลลับหลายรายการพร้อมกัน | 1/3 | 3/3 | 2/3 |
| ไม่ต้องแก้ไขโค้ด | 0/3 | 0/3 | 3/3 |
| ไฟล์กำหนดค่าสามารถคอมมิตได้อย่างปลอดภัย | 0/3 | 3/3 | 0/3 |
| กรณีใช้งาน SSH / non-HTTP | 3/3 | 3/3 | 0/3 |

**เลือกด่วน:** กำลังสร้างสคริปต์หรือเครื่องมือ CLI ใช่ไหมครับ ใช้ **Field** กำลังปรับใช้บริการด้วยไฟล์กำหนดค่าใช่ไหมครับ ใช้ **Render** กำลังรัน AI เอเจนต์ที่เรียกใช้ API ใช่ไหมครับ ใช้ **Proxy**

## ทำไมวิธีนี้จึงดีกว่า proxy สำหรับข้อมูลรับรองอื่นๆ ทั้งหมด

**ไม่มีอะไรให้ขโมย** proxy ที่โฮสต์บนคลาวด์เป็นเป้าหมายที่มีมูลค่าสูง หากเจาะระบบเข้าได้ก็จะเข้าถึงข้อมูลรับรองของลูกค้าทุกราย proxy ในเครื่องจะจัดเก็บข้อมูลรับรองในไฟล์กำหนดค่าของตนเอง ซึ่งเอเจนต์ใดๆ ในเครื่องก็สามารถอ่านได้ proxy ของ Clavitor ถือครองเพียงไฟล์กำหนดค่าที่เข้ารหัสไว้ ไม่มีความลับที่เป็นข้อความธรรมดาบนดิสก์ และไม่มีที่เก็บข้อมูลรับรองให้เจาะเข้าขโมย

**เอเจนต์ไม่สามารถงัดแงะได้** เอเจนต์ที่ถูกเจาะระบบไม่สามารถดึงข้อมูลรับรองจาก proxy ได้ เนื่องจาก proxy ไม่ได้เปิด API ให้ใช้งาน ไม่ได้แสดงแดชบอร์ด และไม่รับคำสั่งใดๆ proxy จะอ่านเพียงหนึ่งเฮดเดอร์ แปลงหนึ่งการอ้างอิง และแทรกผลลัพธ์ลงในคำขอขาออก จึงไม่มีพื้นผิวการโจมตี

**ไม่มีอะไรในบันทึก** เอเจนต์จะเขียน `clavitor://Entry/field` ซึ่งนี่คือสิ่งที่ปรากฏใน stdout ในบันทึก และในประวัติการสนทนา ข้อมูลรับรองจริงจะปรากฏอยู่ภายในกระบวนการของ proxy เฉพาะในช่วงเวลาของการเรียก HTTP ครั้งเดียวเท่านั้น ตัวรวบรวมบันทึก crash dump และ artifact ของ CI จึงสะอาด

**ไม่ต้องกำหนดค่า** ไม่มีตารางเราต์ ไม่มีการแมป API และไม่มีไฟล์ข้อมูลรับรองให้จัดการ การอ้างอิง `clavitor://` ในเฮดเดอร์คือคำสั่งเดียวเท่านั้น `init` ครั้งเดียว env var ตัวเดียว ก็เสร็จสิ้น

## ภาษา: ใช้งานได้กับทุกภาษาโปรแกรม ไม่ต้องใช้ SDK

### Bash

```
# The proxy handles credential injection — no secrets in the command

$ export HTTPS_PROXY=http://localhost:1983
$ curl -H "Authorization: Bearer clavitor://OpenRouter API/key" \
  https://openrouter.ai/api/v1/models
```

### Go

```
key, _ := exec.Command("clavitor-cli", "get", "OpenRouter API", "--field", "key").Output()
client := openai.NewClient(option.WithAPIKey(strings.TrimSpace(string(key))))
```

### Python

```
import subprocess
# Pass directly — or use the HTTPS proxy to avoid holding the key entirely

stripe.api_key = subprocess.check_output(
    ["clavitor-cli", "get", "Stripe API", "--field", "key"]
).decode().strip()
```

### Rust

```
let key = std::process::Command::new("clavitor-cli")
    .args(["get", "AWS Credentials", "--field", "secret_key"])
    .output()?;
let client = aws::Client::new(String::from_utf8(key.stdout)?.trim());
```

### TypeScript / Node

```
import { execSync } from 'child_process';
const apiKey = execSync('clavitor-cli get "Anthropic API" --field key').toString().trim();
const client = new Anthropic({ apiKey });
```

### C# / .NET

```
using System.Diagnostics;
var psi = new ProcessStartInfo("clavitor-cli") { RedirectStandardOutput = true, UseShellExecute = false };
psi.ArgumentList.Add("get");
psi.ArgumentList.Add("Stripe API");
psi.ArgumentList.Add("--field");
psi.ArgumentList.Add("key");
var key = Process.Start(psi)!.StandardOutput.ReadToEnd().Trim();
var client = new StripeClient(key);
```

### PowerShell

```
# Single value — pipe or use directly

$key = clavitor-cli get "AWS Credentials" --field secret_key
Set-AWSCredential -AccessKey $env:AWS_ACCESS_KEY -SecretKey $key

# Or use the proxy — no secrets in the script at all

$env:HTTPS_PROXY = "http://localhost:1983"
Invoke-RestMethod -Uri "https://api.openai.com/v1/models" `
  -Headers @{ Authorization = "Bearer clavitor://OpenAI/key" }
```

### Java

```
import java.nio.charset.StandardCharsets;

Process p = new ProcessBuilder("clavitor-cli", "get", "Stripe API", "--field", "key").start();
String key = new String(p.getInputStream().readAllBytes(), StandardCharsets.UTF_8).trim();
Stripe.apiKey = key;
```

## การเรนเดอร์ไฟล์กำหนดค่า: จัดเก็บไฟล์กำหนดค่าของคุณ ไม่ใช่ข้อมูลลับของคุณ

`clavitor-cli render` จะสแกนไฟล์ใดๆ เพื่อหาการอ้างอิง `clavitor://entry/field` แปลงแต่ละรายการกับห้องนิรภัย และส่งออกผลลัพธ์ เทมเพลตสามารถจัดเก็บได้อย่างปลอดภัยในทุกที่ ไฟล์กำหนดค่าที่แปลงแล้วจะอยู่ในไพพ์ ข้อมูลลับจะไม่ถูกบันทึกลงดิสก์

```
# Template (safe to store anywhere)

$ cat app.config.json
{"api_key": "clavitor://OpenRouter API/key", "db": "clavitor://Prod DB/password"}

# Resolved (piped to application, never on disk)

$ clavitor-cli render app.config.json
{"api_key": "[resolved]", "db": "[resolved]"}
```

ใช้งานได้กับ JSON, YAML, TOML, .env หรือไฟล์ข้อความใดๆ หากมี `clavitor://` อยู่ภายใน ระบบจะทำการแปลง

## คู่มือการผสานรวมเพิ่มเติม

### โครงสร้างพื้นฐาน

Docker, Kubernetes, Terraform, Ansible, GitHub Actions, GitLab CI, SSH ไม่มีข้อมูลลับในการกำหนดค่า และไม่มีข้อมูลลับในบันทึก
[คู่มือโครงสร้างพื้นฐาน →](https://clavitor.ai/th/developers/infrastructure)

### AI เอเจนต์

Claude Code, Codex, OpenClaw, Hermes, CrewAI, LangChain. โทเค็นที่กำหนดขอบเขต บันทึกการตรวจสอบ และการล็อกดาวน์อัตโนมัติ
[คู่มือเอเจนต์ →](https://clavitor.ai/th/developers/agents)

### เครื่องมือ MSP

PowerShell, Datto RMM, N-able, ConnectWise Automate การออกข้อมูลรับรองสำหรับฐานลูกค้าของคุณ
[คู่มือ MSP →](https://clavitor.ai/th/developers/msp)

## รูปแบบการใช้งานจะเหมือนเดิมเสมอ

เรียกใช้ CLI ครั้งเดียวในทุกบริบท ขอบเขตของเอเจนต์จะเป็นตัวกำหนดสิ่งที่มองเห็น ระดับชั้นการเข้ารหัสจะเป็นตัวกำหนดสิ่งที่ถอดรหัสได้ และบันทึกการตรวจสอบจะบันทึกการเข้าถึงทุกครั้ง
[เริ่มต้นใช้งานฟรี](https://clavitor.ai/th/checkout)
