zcyclaw 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. zcyclaw-0.1.0/.gitignore +28 -0
  2. zcyclaw-0.1.0/CLAUDE.md +137 -0
  3. zcyclaw-0.1.0/LICENSE +21 -0
  4. zcyclaw-0.1.0/PKG-INFO +121 -0
  5. zcyclaw-0.1.0/README.md +78 -0
  6. zcyclaw-0.1.0/docs/RAG-CLI-/346/212/200/346/234/257/345/270/202/345/234/272/350/260/203/347/240/224/346/212/245/345/221/212.md +488 -0
  7. zcyclaw-0.1.0/docs//346/224/277/345/272/234/351/207/207/350/264/255AI/345/212/251/346/211/213/345/270/202/345/234/272/350/260/203/347/240/224/346/212/245/345/221/212.md +240 -0
  8. zcyclaw-0.1.0/docs//346/224/277/345/272/234/351/207/207/350/264/255agent/345/274/200/345/217/221/346/216/242/347/264/242.md +487 -0
  9. zcyclaw-0.1.0/findings.md +134 -0
  10. zcyclaw-0.1.0/progress.md +63 -0
  11. zcyclaw-0.1.0/pyproject.toml +69 -0
  12. zcyclaw-0.1.0/scripts/build_data.py +63 -0
  13. zcyclaw-0.1.0/scripts/extract_laws.py +566 -0
  14. zcyclaw-0.1.0/src/zyclaw/__init__.py +31 -0
  15. zcyclaw-0.1.0/src/zyclaw/__main__.py +6 -0
  16. zcyclaw-0.1.0/src/zyclaw/cli/__init__.py +1 -0
  17. zcyclaw-0.1.0/src/zyclaw/cli/commands.py +171 -0
  18. zcyclaw-0.1.0/src/zyclaw/cli/stream.py +59 -0
  19. zcyclaw-0.1.0/src/zyclaw/config/__init__.py +1 -0
  20. zcyclaw-0.1.0/src/zyclaw/config/loader.py +43 -0
  21. zcyclaw-0.1.0/src/zyclaw/config/paths.py +41 -0
  22. zcyclaw-0.1.0/src/zyclaw/config/schema.py +124 -0
  23. zcyclaw-0.1.0/src/zyclaw/data/__init__.py +1 -0
  24. zcyclaw-0.1.0/src/zyclaw/data/seed_data//345/205/263/344/272/216/344/277/203/350/277/233/346/224/277/345/272/234/351/207/207/350/264/255/345/205/254/345/271/263/347/253/236/344/272/211/344/274/230/345/214/226/350/220/245/345/225/206/347/216/257/345/242/203/347/232/204/351/200/232/347/237/245./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +35 -0
  25. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/213/233/346/240/207/346/212/225/346/240/207/346/263/225./346/263/225/345/276/213./346/234/211/346/225/210.md +163 -0
  26. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/213/233/346/240/207/346/212/225/346/240/207/346/263/225/345/256/236/346/226/275/346/235/241/344/276/213./350/241/214/346/224/277/346/263/225/350/247/204./346/234/211/346/225/210.md +327 -0
  27. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/345/222/214/347/244/276/344/274/232/350/265/204/346/234/254/345/220/210/344/275/234/351/241/271/347/233/256/346/224/277/345/272/234/351/207/207/350/264/255/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +59 -0
  28. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/344/273/243/347/220/206/346/234/272/346/236/204/347/256/241/347/220/206/346/232/202/350/241/214/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +105 -0
  29. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/344/277/203/350/277/233/344/270/255/345/260/217/344/274/201/344/270/232/345/217/221/345/261/225/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +87 -0
  30. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/344/277/241/346/201/257/345/205/254/345/274/200/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +43 -0
  31. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/346/241/206/346/236/266/345/215/217/350/256/256/351/207/207/350/264/255/346/226/271/345/274/217/347/256/241/347/220/206/346/232/202/350/241/214/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +285 -0
  32. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/346/263/225./346/263/225/345/276/213./346/234/211/346/225/210.md +329 -0
  33. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/346/263/225/345/256/236/346/226/275/346/235/241/344/276/213./350/241/214/346/224/277/346/263/225/350/247/204./346/234/211/346/225/210.md +305 -0
  34. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/347/253/236/344/272/211/346/200/247/347/243/213/345/225/206/351/207/207/350/264/255/346/226/271/345/274/217/347/256/241/347/220/206/346/232/202/350/241/214/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +145 -0
  35. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/350/257/204/345/256/241/344/270/223/345/256/266/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +129 -0
  36. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/350/264/247/347/211/251/345/222/214/346/234/215/345/212/241/346/213/233/346/240/207/346/212/225/346/240/207/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +429 -0
  37. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/350/277/233/345/217/243/344/272/247/345/223/201/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +93 -0
  38. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/351/234/200/346/261/202/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +123 -0
  39. zcyclaw-0.1.0/src/zyclaw/data/seed_data//346/224/277/345/272/234/351/207/207/350/264/255/351/235/236/346/213/233/346/240/207/351/207/207/350/264/255/346/226/271/345/274/217/347/256/241/347/220/206/345/212/236/346/263/225./351/203/250/351/227/250/350/247/204/347/253/240./346/234/211/346/225/210.md +309 -0
  40. zcyclaw-0.1.0/src/zyclaw/data/updater.py +159 -0
  41. zcyclaw-0.1.0/src/zyclaw/llm/__init__.py +1 -0
  42. zcyclaw-0.1.0/src/zyclaw/llm/anthropic_provider.py +124 -0
  43. zcyclaw-0.1.0/src/zyclaw/llm/base.py +121 -0
  44. zcyclaw-0.1.0/src/zyclaw/llm/factory.py +49 -0
  45. zcyclaw-0.1.0/src/zyclaw/llm/openai_compat.py +100 -0
  46. zcyclaw-0.1.0/src/zyclaw/llm/registry.py +109 -0
  47. zcyclaw-0.1.0/src/zyclaw/llm/retry.py +72 -0
  48. zcyclaw-0.1.0/src/zyclaw/qa.py +193 -0
  49. zcyclaw-0.1.0/src/zyclaw/rag/__init__.py +1 -0
  50. zcyclaw-0.1.0/src/zyclaw/rag/chunker.py +126 -0
  51. zcyclaw-0.1.0/src/zyclaw/rag/embeddings.py +168 -0
  52. zcyclaw-0.1.0/src/zyclaw/rag/loader.py +73 -0
  53. zcyclaw-0.1.0/src/zyclaw/rag/retriever.py +69 -0
  54. zcyclaw-0.1.0/src/zyclaw/rag/vector_store.py +199 -0
  55. zcyclaw-0.1.0/src/zyclaw/session.py +34 -0
  56. zcyclaw-0.1.0/src/zyclaw/types.py +22 -0
  57. zcyclaw-0.1.0/task_plan.md +40 -0
  58. zcyclaw-0.1.0/tests/test_integration.py +197 -0
  59. zcyclaw-0.1.0/uv.lock +2572 -0
@@ -0,0 +1,28 @@
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+
9
+ # 虚拟环境
10
+ .venv/
11
+
12
+ # 测试与缓存
13
+ .pytest_cache/
14
+ .ruff_cache/
15
+
16
+ # 环境变量与敏感文件
17
+ .env
18
+ .env.*
19
+
20
+ # IDE
21
+ .idea/
22
+ .vscode/
23
+ *.swp
24
+ *.swo
25
+
26
+ # OS
27
+ .DS_Store
28
+ Thumbs.db
@@ -0,0 +1,137 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## 语言要求
6
+
7
+ 本项目所有沟通、文档、代码注释、commit message 均使用**中文**。
8
+
9
+ ## 项目概述
10
+
11
+ **zyclaw**(政府采购 Agent)是一个独立于采购平台的政府采购智能顾问工具,基于 RAG 架构提供专业法规问答、采购方式推荐、价格查询、文档模板生成等功能。不绑定任何采购平台,核心开源。
12
+
13
+ CLI 命令名:`zcyclaw`
14
+
15
+ ## 技术栈
16
+
17
+ - **语言**: Python 3.11+
18
+ - **CLI 框架**: Typer + Rich + prompt_toolkit
19
+ - **配置管理**: Pydantic + pydantic-settings
20
+ - **包管理**: uv(pyproject.toml + 分层extras + hatchling构建)
21
+ - **向量库**: ChromaDB(嵌入式运行,PersistentClient本地持久化)
22
+ - **Embedding**: 智谱API(首选) / fastembed(本地可选) / BGE-M3(高级可选)
23
+ - **LLM**: DeepSeek / 智谱GLM(首选),兼容OpenAI/Anthropic
24
+ - **LLM Provider**: ProviderSpec注册表 + openai_compat统一后端(参考nanobot)
25
+ - **RAG框架**: 自研(不用LangChain,体积可控、稳定、领域适配)
26
+ - **日志**: loguru
27
+ - **价格数据**: SQLite(结构化查询)
28
+ - **爬虫**: 预构建数据(MVP) / requests增量(扩展) / Playwright(可选,非运行时依赖)
29
+ - **文档生成**: python-docx + Jinja2
30
+ - **构建系统**: hatchling
31
+ - **打包分发**: uv + PyPI
32
+
33
+ ## 代码结构
34
+
35
+ ```
36
+ src/zyclaw/
37
+ ├── __init__.py # 版本号(从pyproject.toml读取)
38
+ ├── __main__.py # 入口
39
+ ├── cli/
40
+ │ ├── commands.py # Typer命令定义
41
+ │ └── stream.py # 流式输出渲染
42
+ ├── config/
43
+ │ ├── schema.py # Pydantic配置模型
44
+ │ ├── loader.py # 配置加载
45
+ │ └── paths.py # 路径集中管理
46
+ ├── session.py # 会话记忆管理
47
+ ├── history.py # 历史记录管理
48
+ ├── rag/
49
+ │ ├── loader.py # 文档加载器
50
+ │ ├── chunker.py # 法规专用分块器(按条款/章节)
51
+ │ ├── embeddings.py # Embedding适配层
52
+ │ ├── vector_store.py # ChromaDB存储层
53
+ │ └── retriever.py # 检索器
54
+ ├── price/
55
+ │ ├── store.py # 历史成交价SQLite存储
56
+ │ └── query.py # 价格查询与分析
57
+ ├── crawler/
58
+ │ └── gov_crawler.py # 爬虫(可选模块)
59
+ ├── llm/
60
+ │ ├── __init__.py # 懒加载导出
61
+ │ ├── base.py # LLMProvider基类 + LLMResponse
62
+ │ ├── registry.py # ProviderSpec注册表
63
+ │ ├── openai_compat.py # OpenAI兼容后端(覆盖DeepSeek/智谱/通义/Ollama等)
64
+ │ └── anthropic_provider.py # Anthropic独立后端
65
+ ├── template/
66
+ │ ├── doc_generator.py # Word文档生成
67
+ │ └── *.jinja2 # 各类文档模板
68
+ └── types.py # 类型定义
69
+ ```
70
+
71
+ ## 开发命令
72
+
73
+ ```bash
74
+ # 安装依赖
75
+ uv sync
76
+
77
+ # 运行 CLI
78
+ uv run zcyclaw
79
+
80
+ # 构建
81
+ uv build
82
+
83
+ # 发布到 PyPI
84
+ uv publish
85
+
86
+ # 运行测试
87
+ uv run pytest
88
+
89
+ # 免安装直接运行
90
+ uvx zyclaw ask "询价采购需要满足什么条件?"
91
+ ```
92
+
93
+ ## 核心设计原则
94
+
95
+ 1. **专业准确优先**: 所有回答必须标注法条来源,可追溯,不知道就直说
96
+ 2. **隐私第一**: 所有数据本地存储,API Key 不经第三方,请求直连 LLM 厂商
97
+ 3. **开箱即用**: 预构建法规数据包首次运行下载,核心功能安装即用
98
+ 4. **渐进式功能**: 先核心问答,再逐步扩展
99
+ 5. **国产优先**: LLM 和 Embedding 优先支持国产模型(DeepSeek/智谱/通义)
100
+ 6. **轻量安装**: 核心包最小化,扩展功能通过 extras 按需安装
101
+ 7. **参考 nanobot 架构**: Provider 注册表 + Pydantic 配置 + 懒加载 + 路径集中管理
102
+
103
+ ## 分层安装
104
+
105
+ ```bash
106
+ uv tool install zyclaw # 最小安装
107
+ uv tool install "zcyclaw[deepseek,zhipu]" # 国产模型支持
108
+ uv tool install "zcyclaw[full]" # 完整安装
109
+ ```
110
+
111
+ ## 配置
112
+
113
+ 配置文件位置:`~/.zcyclaw/config.json`
114
+ 采用 Pydantic + pydantic-settings,支持环境变量覆盖(`ZCYCLAW_PROVIDERS__DEEPSEEK__API_KEY=xxx`)
115
+
116
+ ## 分阶段开发计划
117
+
118
+ - **Phase 1**: CLI框架 + RAG问答(自研) + 国产模型支持 + 预构建数据包
119
+ - **Phase 2**: 价格查询 + 文档模板生成 + 合规计算 + 历史管理
120
+ - **Phase 3**: 供应商功能 + 可选爬虫 + 法规追踪 + TUI/Web UI
121
+
122
+ ## 架构分层
123
+
124
+ 用户交互层(CLI→TUI→Web) → 会话记忆层 → RAG知识检索层(ChromaDB+自研) → 结构化数据层(SQLite) → 数据更新层(预构建→增量→可选爬虫) → LLM推理生成层
125
+
126
+ ## 关键决策
127
+
128
+ - **Typer 替代 Click**: 更现代的CLI框架,自动类型推断和help生成
129
+ - **Pydantic 配置**: 类型安全 + 环境变量自动解析,参考nanobot
130
+ - **ProviderSpec注册表**: 新增厂商只需加一条Spec + 一个Config字段,参考nanobot
131
+ - **openai_compat统一后端**: 绝大多数国产模型兼容OpenAI协议,避免为每个厂商写适配器
132
+ - **懒加载**: 用户只装了DeepSeek就不导入Anthropic SDK,减少启动时间和内存
133
+ - **不用LangChain**: 依赖链重(+200MB)、breaking changes频繁,自研RAG核心代码量可控
134
+ - **Playwright非运行时依赖**: 安装体积200MB+,仅作可选"zcyclaw[crawler]`扩展
135
+ - **国产模型优先**: 目标用户在国内,OpenAI/Anthropic访问不稳定
136
+ - **预构建数据包**: 首次运行从CDN下载,避免本地构建耗时
137
+ - **loguru替代logging**: 更简洁的日志库,开箱即用
zcyclaw-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 zyclaw
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
zcyclaw-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.4
2
+ Name: zcyclaw
3
+ Version: 0.1.0
4
+ Summary: 政府采购智能顾问 - 基于RAG的法规问答CLI工具
5
+ Project-URL: Homepage, https://github.com/brucehuu/zyclaw
6
+ Project-URL: Repository, https://github.com/brucehuu/zyclaw
7
+ Project-URL: Issues, https://github.com/brucehuu/zyclaw/issues
8
+ Author: zyclaw
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai-agent,cli,government-procurement,rag
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Office/Business
19
+ Requires-Python: >=3.11
20
+ Requires-Dist: chromadb>=0.5
21
+ Requires-Dist: httpx>=0.27
22
+ Requires-Dist: loguru>=0.7
23
+ Requires-Dist: prompt-toolkit>=3.0
24
+ Requires-Dist: pydantic-settings>=2.0
25
+ Requires-Dist: pydantic>=2.0
26
+ Requires-Dist: python-docx>=1.2.0
27
+ Requires-Dist: rich>=13.0
28
+ Requires-Dist: typer>=0.12
29
+ Provides-Extra: anthropic
30
+ Requires-Dist: anthropic>=0.30; extra == 'anthropic'
31
+ Provides-Extra: crawler
32
+ Requires-Dist: playwright>=1.40; extra == 'crawler'
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
35
+ Requires-Dist: pytest>=8.0; extra == 'dev'
36
+ Requires-Dist: ruff>=0.5; extra == 'dev'
37
+ Provides-Extra: fastembed
38
+ Requires-Dist: fastembed>=0.4; extra == 'fastembed'
39
+ Provides-Extra: full
40
+ Requires-Dist: anthropic>=0.30; extra == 'full'
41
+ Requires-Dist: fastembed>=0.4; extra == 'full'
42
+ Description-Content-Type: text/markdown
43
+
44
+ # zyclaw
45
+
46
+ 政府采购智能顾问 — 基于 RAG 的法规问答 CLI 工具。
47
+
48
+ 独立于采购平台,基于中国政府采购法律法规提供专业问答、采购方式推荐等功能。核心开源,数据本地存储,隐私第一。
49
+
50
+ ## 功能
51
+
52
+ - **法规智能问答**:基于 16 部核心法规(766 条法条),回答自动标注法条来源
53
+ - **流式输出**:token-by-token 逐字显示,体验流畅
54
+ - **多 LLM 支持**:DeepSeek / 智谱 GLM / 通义千问 / Moonshot / OpenAI / Ollama / Anthropic
55
+ - **开箱即用**:预构建法规数据随包分发,安装即可使用
56
+ - **本地优先**:向量库、配置、日志全部本地存储,API Key 直连 LLM 厂商
57
+
58
+ ## 快速开始
59
+
60
+ ```bash
61
+ # 安装
62
+ uv tool install zyclaw
63
+
64
+ # 或使用 pip
65
+ pip install zcyclaw
66
+
67
+ # 初始化配置(选择 LLM 提供商 + 输入 API Key)
68
+ zcyclaw init
69
+
70
+ # 单次问答
71
+ zcyclaw ask "询价采购需要满足什么条件?"
72
+
73
+ # 交互式多轮问答
74
+ zcyclaw ask -i
75
+
76
+ # 更新法规数据
77
+ zcyclaw update
78
+
79
+ # 查看数据统计
80
+ zcyclaw stats
81
+ ```
82
+
83
+ ## 配置
84
+
85
+ 配置文件位置:`~/.zcyclaw/config.json`
86
+
87
+ 支持环境变量覆盖,前缀 `ZCYCLAW_`,双下划线分隔嵌套:
88
+
89
+ ```bash
90
+ export ZCYCLAW_PROVIDERS__DEEPSEEK__API_KEY=sk-xxx
91
+ export ZCYCLAW_DEFAULT_PROVIDER=deepseek
92
+ ```
93
+
94
+ ## 可选安装
95
+
96
+ ```bash
97
+ # Anthropic 后端支持
98
+ uv tool install "zcyclaw[anthropic]"
99
+
100
+ # 本地 Embedding(fastembed/BGE-M3)
101
+ uv tool install "zcyclaw[fastembed]"
102
+
103
+ # 完整安装
104
+ uv tool install "zcyclaw[full]"
105
+ ```
106
+
107
+ ## 内置法规
108
+
109
+ | 效力层级 | 法规 |
110
+ |----------|------|
111
+ | 法律 | 政府采购法、招标投标法 |
112
+ | 行政法规 | 政府采购法实施条例、招标投标法实施条例 |
113
+ | 部门规章 | 货物和服务招标投标管理办法、非招标采购方式管理办法、竞争性磋商采购方式管理暂行办法、框架协议采购方式管理暂行办法、促进中小企业发展管理办法、需求管理办法、信息公开办法、评审专家管理办法、进口产品管理办法、代理机构管理暂行办法、政府和社会资本合作项目政府采购管理办法、关于促进政府采购公平竞争优化营商环境的通知 |
114
+
115
+ ## 技术栈
116
+
117
+ Python 3.11+ / Typer / Rich / Pydantic / ChromaDB / httpx / loguru
118
+
119
+ ## 许可证
120
+
121
+ MIT License
@@ -0,0 +1,78 @@
1
+ # zyclaw
2
+
3
+ 政府采购智能顾问 — 基于 RAG 的法规问答 CLI 工具。
4
+
5
+ 独立于采购平台,基于中国政府采购法律法规提供专业问答、采购方式推荐等功能。核心开源,数据本地存储,隐私第一。
6
+
7
+ ## 功能
8
+
9
+ - **法规智能问答**:基于 16 部核心法规(766 条法条),回答自动标注法条来源
10
+ - **流式输出**:token-by-token 逐字显示,体验流畅
11
+ - **多 LLM 支持**:DeepSeek / 智谱 GLM / 通义千问 / Moonshot / OpenAI / Ollama / Anthropic
12
+ - **开箱即用**:预构建法规数据随包分发,安装即可使用
13
+ - **本地优先**:向量库、配置、日志全部本地存储,API Key 直连 LLM 厂商
14
+
15
+ ## 快速开始
16
+
17
+ ```bash
18
+ # 安装
19
+ uv tool install zyclaw
20
+
21
+ # 或使用 pip
22
+ pip install zcyclaw
23
+
24
+ # 初始化配置(选择 LLM 提供商 + 输入 API Key)
25
+ zcyclaw init
26
+
27
+ # 单次问答
28
+ zcyclaw ask "询价采购需要满足什么条件?"
29
+
30
+ # 交互式多轮问答
31
+ zcyclaw ask -i
32
+
33
+ # 更新法规数据
34
+ zcyclaw update
35
+
36
+ # 查看数据统计
37
+ zcyclaw stats
38
+ ```
39
+
40
+ ## 配置
41
+
42
+ 配置文件位置:`~/.zcyclaw/config.json`
43
+
44
+ 支持环境变量覆盖,前缀 `ZCYCLAW_`,双下划线分隔嵌套:
45
+
46
+ ```bash
47
+ export ZCYCLAW_PROVIDERS__DEEPSEEK__API_KEY=sk-xxx
48
+ export ZCYCLAW_DEFAULT_PROVIDER=deepseek
49
+ ```
50
+
51
+ ## 可选安装
52
+
53
+ ```bash
54
+ # Anthropic 后端支持
55
+ uv tool install "zcyclaw[anthropic]"
56
+
57
+ # 本地 Embedding(fastembed/BGE-M3)
58
+ uv tool install "zcyclaw[fastembed]"
59
+
60
+ # 完整安装
61
+ uv tool install "zcyclaw[full]"
62
+ ```
63
+
64
+ ## 内置法规
65
+
66
+ | 效力层级 | 法规 |
67
+ |----------|------|
68
+ | 法律 | 政府采购法、招标投标法 |
69
+ | 行政法规 | 政府采购法实施条例、招标投标法实施条例 |
70
+ | 部门规章 | 货物和服务招标投标管理办法、非招标采购方式管理办法、竞争性磋商采购方式管理暂行办法、框架协议采购方式管理暂行办法、促进中小企业发展管理办法、需求管理办法、信息公开办法、评审专家管理办法、进口产品管理办法、代理机构管理暂行办法、政府和社会资本合作项目政府采购管理办法、关于促进政府采购公平竞争优化营商环境的通知 |
71
+
72
+ ## 技术栈
73
+
74
+ Python 3.11+ / Typer / Rich / Pydantic / ChromaDB / httpx / loguru
75
+
76
+ ## 许可证
77
+
78
+ MIT License