Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
Run AI agents across providers from one TypeScript harness, with plugins and cost telemetry built in.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Portable AI agent harness with plugin architecture for managing multiple AI providers, tracking telemetry, and ensuring quality compliance.
@dcyfr/ai is maintained by DCYFR Labs as part of the DCYFR AI tooling portfolio.
npm install @dcyfr/ai
CLI command name: the package is
@dcyfr/ai, but its command-line tool is invoked asdcyfr-ai— not@dcyfr/ai. After installing, runnpx dcyfr-ai <command>(or, without installing first,npx -p @dcyfr/ai dcyfr-ai <command>). Runningnpx @dcyfr/ai …fails with "could not determine executable to run" because the package ships several binaries.
npx dcyfr-ai config:init
This creates a .dcyfr.yaml configuration file:
version: "1.0.0"
projectName: my-app
agents:
designTokens:
enabled: true
compliance: 0.90
barrelExports:
enabled: true
pageLayout:
enabled: true
targetUsage: 0.90
testData:
enabled: true
import { loadConfig, ValidationFramework } from "@dcyfr/ai";
// Load configuration (auto-detects .dcyfr.yaml, .dcyfr.json, package.json)
const config = await loadConfig();
// Create validation framework
const framework = new ValidationFramework({
gates: config.validation.gates,
parallel: config.validation.parallel,
});
// Run validation
const report = await framework.validate({
projectRoot: config.project.root,
files: config.project.include,
config: config.agents,
});
console.log(`Validation: ${report.valid ? "PASS" : "FAIL"}`);
Each gate runs the plugins named in its plugins list, which you load with framework.loadPlugins([...]) (see docs/PLUGINS.md). A gate whose plugins aren't loaded runs nothing and is reported with skipped: true. If that gate is required, it fails with a gate-skipped violation naming the missing plugins. A report where no gate ran anything is never valid. Until you load plugins for the default gates, this script prints FAIL.
# Validate current project config
npx dcyfr-ai config:validate
# Show full configuration
npx dcyfr-ai config:validate --verbose
Why migrate: Smaller bundle footprint than LangChain (see bundlephobia), built-in telemetry, simpler API
// LangChain (before)
import { ChatOpenAI } from "langchain/chat_models/openai";
import { HumanMessage } from "langchain/schema";
const model = new ChatOpenAI({ temperature: 0.9 });
const response = await model.call([new HumanMessage("Hello")]);
// @dcyfr/ai (after)
import {
AgentRuntime,
ProviderRegistry,
TelemetryEngine,
getMemory,
} from "@dcyfr/ai";
const runtime = new AgentRuntime(
"assistant",
new ProviderRegistry({
primaryProvider: "anthropic",
fallbackChain: ["anthropic", "ollama"],
autoReturn: true,
healthCheckInterval: 60_000,
}),
getMemory(),
new TelemetryEngine(),
);
const result = await runtime.execute({ task: "Hello" });
console.log(result.output);
Key Differences:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗