add docs: system lora plan, specialist specs, training review
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
# Prism — TypeScript Specialist LoRA
|
||||
|
||||
Adapter codename: `prism`
|
||||
Agent: `build-ts`
|
||||
Base model: Qwen/Qwen3.5-27B
|
||||
|
||||
## Objective
|
||||
|
||||
Teach the model TypeScript-idiomatic code generation aligned with the build-ts
|
||||
agent's system prompt. The adapter should internalize:
|
||||
|
||||
- Strict TypeScript — no `any` without justification
|
||||
- `const` over `let`, never `var`
|
||||
- Named exports, `type` over `interface` (unless extending)
|
||||
- Package manager detection (bun/pnpm/npm)
|
||||
- Framework-aware patterns (Next.js, Vite, Astro, SvelteKit, Remix, Bun)
|
||||
- tsc → lint → test verification cycle
|
||||
|
||||
## Data Sources
|
||||
|
||||
### Session extraction (~200–350 examples)
|
||||
|
||||
Classify from opencode `build` sessions by:
|
||||
- File paths: `.ts`, `.tsx`, `.js`, `.jsx`, `package.json`, `tsconfig.json`
|
||||
- Bash commands: `npm`, `pnpm`, `bun`, `npx`, `tsc`, `vitest`, `jest`, `biome`
|
||||
- Error patterns: `TS2`, `TS7`, `error TS`, type errors
|
||||
- Framework config files in context: `next.config.*`, `vite.config.*`
|
||||
|
||||
### Git repo mining (~150–250 examples)
|
||||
|
||||
Target repos:
|
||||
- `~/.config/opencode/plugins/` — opencode plugins (TypeScript)
|
||||
- `madcat-os/sere-kit` — UI component library
|
||||
- `madcat-os/visor` — HUD/display system
|
||||
- Any `package.json`-rooted repos in madcat-os org
|
||||
|
||||
Extract patterns:
|
||||
- React component implementations (hooks, state management)
|
||||
- Plugin/tool development (opencode tools, MCP servers)
|
||||
- Type-safe API integrations
|
||||
- Build configuration (tsconfig, vite, next)
|
||||
|
||||
### Synthetic (~50–100 examples)
|
||||
|
||||
- Generic type patterns and constraints
|
||||
- Discriminated unions and type narrowing
|
||||
- Zod schema → TypeScript type inference
|
||||
- React Server Components vs Client Components
|
||||
- Edge runtime constraints (Cloudflare Workers, Vercel Edge)
|
||||
|
||||
## Example Format
|
||||
|
||||
```json
|
||||
{
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "<build-ts agent system prompt>"
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Add a new visor widget component for displaying memory graph connections"
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": null,
|
||||
"tool_calls": [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "glob",
|
||||
"arguments": {"pattern": "src/components/**/*.tsx"}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"content": "<file list>"
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": null,
|
||||
"tool_calls": [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "read",
|
||||
"arguments": {"filePath": "src/components/widgets/LogWidget.tsx"}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"content": "<existing widget pattern>"
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": null,
|
||||
"tool_calls": [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "write",
|
||||
"arguments": {
|
||||
"filePath": "src/components/widgets/GraphWidget.tsx",
|
||||
"content": "<new component following existing patterns>"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"content": "File written successfully"
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": null,
|
||||
"tool_calls": [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "bash",
|
||||
"arguments": {"command": "npx tsc --noEmit"}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"content": "<type check passes>"
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": "GraphWidget created. Follows LogWidget's pattern — named export, typed props, const component. Type check clean."
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Evaluation Criteria
|
||||
|
||||
1. Generated TypeScript passes `tsc --noEmit` with strict mode
|
||||
2. No `any` types without explicit justification
|
||||
3. Correct import/export patterns (named exports)
|
||||
4. Framework-appropriate patterns (detects Next.js vs Vite etc.)
|
||||
5. Package manager awareness (correct lockfile, correct run command)
|
||||
6. Tool call sequence: explore → read → implement → type-check
|
||||
7. React patterns: proper hook usage, no stale closures
|
||||
|
||||
## Training Config Overrides
|
||||
|
||||
```python
|
||||
MAX_SEQ = 8192
|
||||
LR = 5e-5
|
||||
```
|
||||
|
||||
## Estimated Size
|
||||
|
||||
- 400–600 examples total (largest dataset — most session history)
|
||||
- ~3M tokens
|
||||
- Training time: ~3 hrs on H100
|
||||
- Adapter size: ~305 MB
|
||||
Reference in New Issue
Block a user