pi-cli
npx skills add https://github.com/mksteady/mkskills --skill pi-cli
Agent 安装分布
Skill 文档
pi-cli – ç»ä¸é¡¹ç®åæ CLI
ç»ä¸ç项ç®åæåç»´æ¤å·¥å ·ï¼æ¯æéæåæå LLM 驱å¨çæºè½åæãä¸ project-index åè½å®å ¨ä¸è´ã
â ä¸¥ç¦æä½ (CRITICAL – å¿ è¯»)
2026-01-22 äºæ è®°å½ï¼æ§è¡
git checkout HEAD -- tests/ågit checkout HEAD -- js/ï¼å¯¼è´ç¨æ·ä¸æ´å¤©çæå¨å·¥ä½ï¼100+ æä»¶ï¼æ°¸ä¹ ä¸¢å¤±ï¼æ æ³æ¢å¤ã
以䏿ä½å¿ é¡»å 询é®ç¨æ·ç¡®è®¤ï¼å¦åç»å¯¹ç¦æ¢æ§è¡ï¼
git checkout HEAD --/git checkout -- <path>â 伿°¸ä¹ 䏢弿ªæäº¤ä¿®æ¹git reset --hardâ 伿°¸ä¹ ä¸¢å¼æææªæäº¤ä¿®æ¹git clean -fdâ 伿°¸ä¹ å 餿ªè·è¸ªæä»¶git stash drop/git stash clearâ 伿°¸ä¹ å é¤ stash- 任使¹éå 餿件çæä½ (
rm -rf,find -deleteç)
æ¹éä»»å¡è¿åº¦ä¿æ¤ï¼æ¯å®æä¸æ¹ä»»å¡åï¼å¿ é¡»æäº¤ææéç¨æ·æäº¤ã
æ ¸å¿è½å
| è½å | 说æ |
|---|---|
| DAG è°åº¦ | ä¾èµæç¥çå¹¶åæ§è¡ï¼åç®å½å äºç¶ç®å½ |
| LLM æ¹é | codeagent-wrapper éæï¼å¹¶å + éè¯ + checkpoint |
| ä¾èµå¾ | æä»¶çº§ä¾èµåæãå½±åèå´ãstale ä¼ æ |
| æµè¯åæ | æ å°ãä¼å 级æåºãå影念è¯ãLLM ä¿®å¤ |
| ææ¡£çæ | CLAUDE.md çæï¼éæ + LLM 模å¼ï¼ |
| 代ç 审计 | AUDIT.md çæãå®å ¨/è´¨éé®é¢æ£æµ |
| Dashboard | Web UIï¼SSE 宿¶æ´æ°ï¼ä»»å¡ç®¡çï¼é ç½®ç¼è¾ |
å½ä»¤å¯¹ç §
| pi-cli å½ä»¤ | project-index èæ¬ | 说æ |
|---|---|---|
pi init |
hook.js init |
åå§åé ç½® |
pi deps build |
dependency-graph.js |
æå»ºä¾èµå¾ |
pi deps impact |
impact-analyzer.js |
å½±ååæ |
pi deps propagate |
stale-propagate.js |
Stale ä¼ æ |
pi test map |
test-mapper.js |
æµè¯æ å° |
pi test fix --llm |
test-fix.js |
æµè¯ä¿®å¤ |
pi test prioritize |
test-prioritize.js |
ä¼å 级æåº |
pi test affected |
test-affected.js |
åå½±åæµè¯ |
pi test generate |
test-generator.js |
çææµè¯ |
pi doc generate |
generate.js |
çæ CLAUDE.md |
pi doc check |
check-stale.js |
è¿ææ£æµ |
pi audit scan |
code-audit.js |
代ç 审计 |
pi audit fix |
audit-fix.js |
å®¡è®¡ä¿®å¤ |
pi module analyze --llm |
module-analyzer.js |
LLM 模ååæ |
pi ui |
dashboard.js |
Web Dashboard |
å¿«éå¼å§
# åå§åé
ç½®
pi init
# æå»ºä¾èµå¾
pi deps build
# LLM 驱å¨ç模ååæï¼çæ CLAUDE.md + AUDIT.mdï¼
pi module analyze --llm --concurrency=20
# æµè¯åæåä¿®å¤
pi test map
pi test fix --llm --concurrency=10
# å¯å¨ Dashboard
pi ui --port=3008
å½ä»¤
| å½ä»¤ | åå½ä»¤ | 说æ |
|---|---|---|
init |
– | åå§å .pi-config.json |
deps |
build, impact, propagate, query | ä¾èµå¾åæ |
test |
map, run, plan, fix, affected, prioritize, generate | æµè¯æä½ |
doc |
generate, check, scan | ææ¡£çæ |
audit |
scan, fix, status, archive | 代ç 审计 |
module |
analyze | LLM 模ååæ |
task |
list, start, cancel, types | ä»»å¡ç®¡ç |
stale |
notify, status | Stale éç¥ |
update |
– | å¢éæ´æ° |
hook |
init, install, uninstall | Claude Code hooks |
ui |
– | Web Dashboard |
AI äº¤äºæå¼
主å¨è¯¢é®
宿æ¹éä»»å¡åï¼åºä¸»å¨è¯¢é®ç¨æ·ï¼
ä»»å¡å®æãæ¯å¦æå¼ Dashboard æ¥ç详ç»ç¶æï¼
â è¿è¡: pi ui
â 访é®: http://localhost:3008
ä»»å¡åæ£æ¥
æ§è¡ææ¡£/æµè¯ä»»å¡åï¼å æ£æ¥ç¶æï¼
pi doc check --stale-only --json
æ ¹æ®è¾åºå³å®å¤çèå´ã
触ååºæ¯
- æ°é¡¹ç®å ¥é©» â ç¨æ·è¯´”帮æåæè¿ä¸ªé¡¹ç®”ã”çæææ¡£”
- éç项ç®çè§£ â ç¨æ·è¯´”è¿ä¸ªä»£ç åºæä¹ç»ç»ç”
- 代ç ä¿®æ¹å â æ£æµå°æ ¸å¿æ¨¡ååæ´ï¼æéæ´æ°ææ¡£
- æµè¯ç»´æ¤ â ç¨æ·è¯´”çææµè¯”ã”ä¿®å¤æµè¯”
- å®¡è®¡éæ± â ç¨æ·è¯´”æ£æ¥å®å ¨é®é¢”ã”代ç 审计”
æ ¸å¿æ¦å¿µ
ä¸å±æ¶æ
project/CLAUDE.md # Layer 1: æ¦è§ + 模åç´¢å¼
â
src/modules/auth/CLAUDE.md # Layer 2: 模å详æ
+ 忍¡åç´¢å¼
â
src/modules/auth/jwt/CLAUDE.md # Layer 3: å®ç°ç»è
æºè½è¦ççç¥
䏿¯æ¯ä¸ªç®å½é½éè¦ç¬ç« CLAUDE.mdï¼
- 大ç®å½ (â¥5 æä»¶æ â¥200 è¡) â å¿ é¡»æç¬ç« CLAUDE.md
- å°ç®å½ + ç¶ç®å½æ CLAUDE.md â ç±ç¶ç®å½è¦ç
- å°ç®å½ + ç¶ç®å½æ CLAUDE.md â å¤å¿ï¼éå ³æ³¨
å±çº§ä¾èµæåº (DAG)
æ¹éçææ¶æç®å½æ·±åº¦ä»æ·±å°æµ å¤çï¼
js/agents/core/sandbox/system â å
çæ
js/agents/core/sandbox â åçæ
js/agents/core â åå
js/agents â æå
ç¡®ä¿ç¶ç®å½çææ¶å¯å¼ç¨åç®å½ç CLAUDE.mdã
LLM 模å¼
éè¿ --llm å¯ç¨ LLM 驱å¨çæºè½åæï¼
# 模ååæï¼å« Kanban éæï¼
KANBAN_URL=http://localhost:3007/api/v1 pi module analyze --llm
# æµè¯ä¿®å¤ï¼å®å
¨çº¦æï¼åªæ¹æµè¯ï¼ä¸æ¹å®ç°ï¼
pi test fix --llm --concurrency=20
DAG è°åº¦
ä»»å¡å¸¦ dependencies åæ®µæ¶èªå¨å¯ç¨ DAG è°åº¦ï¼
const tasks = [
{ id: 'parent', dependencies: ['child1', 'child2'], prompt: '...' },
{ id: 'child1', prompt: '...' },
{ id: 'child2', prompt: '...' }
];
// child1, child2 å¹¶åæ§è¡ï¼å®æå parent æå¼å§
ä¾èµåæç³»ç»
æå»ºæä»¶çº§ä¾èµå¾ï¼æ¯æå½±ååæå stale ä¼ æã
ä¾èµå¾æå»º
# æå»ºä¾èµå¾
pi deps build
# æ¥è¯¢åæä»¶ä¾èµ
pi deps query shared/index.js
è¾åºæä»¶ï¼.dep-graph.json
å½±ååæ
åæåæ´æä»¶ç䏿¸¸å½±åèå´ï¼
# 忿宿件
pi deps impact shared/utils/logger.js core/event-bus.js
# åæ git åæ´
pi deps impact --since HEAD~5
pi deps impact --staged
Stale ä¼ æ
å° stale ç¶ææ²¿ä¾èµå¾å䏿¸¸ä¼ æï¼
# èªå¨æ£æµ + ä¼ æ
pi deps propagate
# æå®åæ´æä»¶
pi deps propagate --changed core/event-bus.js
# å
嫿µè¯éè·å表
pi deps propagate --changed core/event-bus.js --tests
# è°æ´ä¼ ææ·±åº¦ï¼é»è®¤ 2ï¼
pi deps propagate --depth 3
å ¸å工使µ
# 1. æå»º/æ´æ°ä¾èµå¾
pi deps build
# 2. 代ç ä¿®æ¹åï¼åæå½±å
pi deps impact --staged
# 3. æ£æ¥ stale ä¼ æ
pi deps propagate --tests
# 4. è¿è¡åå½±åçæµè¯
pi test affected --staged
æºè½æµè¯ä¿®å¤ï¼100+ éè¯¯åºæ¯ï¼
彿大鿵è¯å¤±è´¥æ¶ï¼æºè½æåºä¿®å¤é¡ºåºï¼
# åæå¤±è´¥æµè¯çä¼å
级
pi test prioritize --from-file test-results.json
ä¿®å¤çç¥ï¼
- å ä¿® root cause â 被ä¾èµæå¤çæä»¶ï¼ä¸ä¸ªä¿®å¤è§£å³å¤ä¸ªé误
- å¹¶è¡ä¿®ç¬ç«é â æ ä¾èµå ³ç³»çæä»¶å¯ä»¥ 60 å¼å¹¶å
- æåä¿®å¶åèç¹ â ä¾èµé¾æ«ç«¯çæä»¶
工使µ
æ°é¡¹ç®
pi init– åå§åé ç½®pi deps build– æå»ºä¾èµå¾pi doc generate– çæææ¡£- å¼å§å¼å
éç项ç®
pi init– åå§åé ç½®pi deps build– æå»ºä¾èµå¾pi doc generate– çæææ¡£pi module analyze --llm– åå§å®¡è®¡- æéè°æ´
代ç ä¿®æ¹å
ä¿®æ¹æ¨¡å代ç åï¼å¿
é¡»æ£æ¥å¹¶æ´æ°å¯¹åºç CLAUDE.md å AUDIT.mdï¼
-
æ£æ¥ CLAUDE.md
- å 容éè¦æ´æ° â ä¿®æ¹ææ¡£å 容
- å
容ä»ç¶åç¡® â
touch CLAUDE.mdæ´æ°æ¶é´æ³
-
æ£æ¥ AUDIT.md
- æ°å¢å®å ¨é®é¢ â è¡¥å å° Issues å表
- é®é¢å·²ä¿®å¤ â 使ç¨
pi audit archive彿¡£ - å
容ä»ç¶åç¡® â
touch AUDIT.mdæ´æ°æ¶é´æ³
-
éªè¯ç¶æ
pi doc check <module-path> --stale-only pi audit status <module-path>
éè¦ï¼å³ä½¿æ²¡æå®è´¨æ§æ¹å¨ï¼ä¹å¿ é¡» touch æä»¶ä»¥æ´æ°æ¶é´æ³ï¼å¦å stale æ£æµä¼æç»æ¥å该模åè¿æã
é ç½®æä»¶
.pi-config.json
{
"name": "my-project",
"language": "javascript",
"src": {
"dirs": ["src"],
"pattern": "**/*.js",
"ignore": ["node_modules", "dist"]
},
"test": {
"dirs": ["tests"],
"pattern": "**/*.test.js",
"cmd": "npm test",
"framework": "vitest"
},
"cache": ".project-index",
"llm": {
"provider": "codex",
"timeout": 600000
}
}
.stale-config.json
{
"include": ["js/agents/**"],
"ignore": ["tests/**", "docs/**"],
"features": { "doc": true, "audit": true, "kanban": true, "testAnalysis": true },
"concurrency": 6
}
Dashboard
è®¿é® http://localhost:3008ï¼åè½å
æ¬ï¼
- æ»è§ï¼è¿æç¶æãç¼åæ¥æº
- 模åï¼æ¨¡åå表ãè¿æ»¤ãç¶æçé
- ä»»å¡ï¼å¯å¨/åæ¶/å é¤/éè¯ä»»å¡
- ä¾èµå¾ï¼D3 å¯è§å
- é ç½®ï¼ç¼è¾ .stale-config.json
- å¯å¨ï¼ä»»å¡ç±»åéæ©ãåæ°é ç½®
ç®å½ç»æ
pi-cli/
âââ cli.js # ç»ä¸å
¥å£
âââ lib/
â âââ shared.js # å·¥å
·å½æ°
â âââ context.js # é
ç½®å è½½
â âââ types.js # ç±»åå®ä¹
â âââ deps/ # ä¾èµå¾åæ
â â âââ graph.js # ä¾èµå¾ + å½±ååæ
â âââ test/ # æµè¯æä½
â â âââ mapper.js # æºç âæµè¯æ å°
â â âââ runner.js # æµè¯è¿è¡
â â âââ prioritize.js # ä¼å
级æåº
â â âââ fix.js # LLM æµè¯ä¿®å¤
â â âââ generator.js # æµè¯çæ
â âââ doc/ # ææ¡£çæ
â â âââ generate.js # CLAUDE.md çæ + stale æ£æµ
â âââ audit/ # 代ç 审计
â â âââ scan.js # AUDIT.md çæ
â âââ module/ # LLM 模ååæ
â â âââ analyzer.js # æ¹éææ¡£/审计çæ
â âââ llm/ # LLM æ¹éæ§è¡
â â âââ batch.js # DAG è°åº¦ + codeagent-wrapper
â âââ task/ # ä»»å¡ç®¡ç
â â âââ manager.js # PID è·è¸ª + ç¶æç®¡ç
â âââ stale/ # Stale éç¥
â âââ update/ # å¢éæ´æ°
âââ ui/
âââ server.js # Dashboard (SSE + API)
Kanban éæ
审计任å¡èªå¨åå»ºå° Kanbanï¼
export KANBAN_URL=http://127.0.0.1:3007/api/v1
æªè¿è¡ Kanban æå¡æ¶éé»è·³è¿ã
å®å ¨çº¦æ
LLM ä»»å¡èªå¨æ³¨å ¥å®å ¨åç¼ï¼ç¦æ¢ï¼
- æ§è¡ git checkout / reset / clean
- å 餿件
- ä¿®æ¹å®ç°ä»£ç ï¼ä» æµè¯ä¿®å¤æ¶ï¼
â ï¸ ç¦æ¢çé误模å¼
æµè¯ä¿®å¤å代ç çææ¶å¿ é¡»é¿å ç忍¡å¼ï¼
- ä¸è¦è·³è¿æµè¯ â æ¯æ¬¡ä¿®å¤åå¿ é¡»è¿è¡æµè¯éªè¯
- ä¸è¦æ¹éå é¤ â å个æä»¶éä¸å¤ç
- ä¸è¦ç¡¬ç¼ç â 使ç¨é ç½®æä»¶
- ä¸è¦å¿½ç¥é误 â è®°å½å¹¶ä¸æ¥
ç»éªæè®
åè§ LESSONS.md