xiaowei-system/skills/software-development/agent-cli-builder/references/cli-anything-zhiyi.md

2.8 KiB
Raw Blame History

cli-anything-zhiyi — 参考实现

用 agent-cli-builder 方法论为织忆 (MemoryWeave) 构建的 Agent-native CLI

项目信息

项目
源码 ~/bin/cli-anything-zhiyi/
入口 cli-anything-zhiyi(已 pip install -e
API localhost:7821API key: zhiyi-dev-key-2026
技术栈 Python 3.11, Click 8.4, prompt_toolkit可选
测试 9 个测试全部通过
SKILL.md cli_anything/zhiyi/skills/SKILL.md

命令设计

cli-anything-zhiyi
├── health           → 5 组件系统诊断
├── search <query>   → 记忆搜索(--top-k, --mode, --diversity
├── stats            → 统计(--type memories/graph/cache/metrics
├── graph
│   ├── navigate     → 图谱导航(--entity, --hops
│   ├── cleanup      → 图谱清理
├── feedback         → 记忆反馈(--id, --useful/--not-useful
├── repl             → 交互模式(默认)

架构层次

zhiyi_cli.py          ← Click CLI 入口 + 所有命令组
core/client.py        ← ZhiYiClient: _get/_post 封装所有 API 端点
tests/test_core.py    ← 9 个单元测试
skills/SKILL.md       ← Agent 可发现的 skill 定义

关键代码模式

1. Client 封装client.py

class ZhiYiClient:
    def __init__(self, base=None, api_key=None):
        self.base = (base or DEFAULT_BASE).rstrip("/")
        self.api_key = api_key or DEFAULT_KEY
    
    def _get(self, path) -> dict:
        # urllib.request with X-API-Key header, timeout=10
    def _post(self, path, data) -> dict:
        # JSON body + Content-Type + X-API-Key, timeout=30

2. 双输出模式zhiyi_cli.py

def output(data, message=""):
    if _json_output:
        click.echo(json.dumps(data, indent=2, ensure_ascii=False, default=str))
    else:
        # Human: icons + structured formatting

3. REPL 默认入口

@click.group(invoke_without_command=True)
@click.pass_context
def cli(ctx, json_flag):
    if ctx.invoked_subcommand is None:
        ctx.invoke(repl)

验证命令

# 健康检查
cli-anything-zhiyi health

# 搜索(人类可读)
cli-anything-zhiyi search "织忆" --top-k 3

# 搜索JSON 输出给 Agent
cli-anything-zhiyi search "小唯" --json | jq .results[].content

# 统计
cli-anything-zhiyi stats

# 图谱导航
cli-anything-zhiyi graph navigate -e "织忆" -n 2

# 测试
python3 cli_anything/zhiyi/tests/test_core.py

对比Hermes 插件 vs CLI 模式

维度 Hermes 织忆插件 cli-anything-zhiyi
使用场景 对话中自动 prefetch + 注入 终端直接查询
目标用户 小唯 A06 牧尘 / 其他 AI Agent
输出 嵌入系统 prompt 终端可读 / JSON