All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project follows Semantic Versioning.
chattool cc start现在会捕获启动异常和非零退出码,并把失败原因直接输出给用户;默认连续失败 5 次后才停止重试,避免 cc-connect 因偶发异常直接变成不可用状态chattool setup nodejs、setup codex、setup opencode、setup claude、setup lark-cli、setup cc-connect、setup frp、setup docker与chattool dns cert-update现在统一支持-l/--log-level;复杂等待型命令的阶段日志可按DEBUG/INFO/WARNING/ERROR控制,而setup alias这类本地即时配置命令继续保持简洁输出chattool setup alias现在在未显式传--shell且终端可交互时,会先进入 shell 多选页,再进入 alias 多选页;chattool setup nodejs也改为像 alias 一样默认同步更新所有已探测到的~/.zshrc/~/.bashrc,并在-i时允许交互选择目标 shellsrc/chattool/interaction/新增声明式 CLI 输入规范层:统一提供CommandField/CommandSchema/CommandConstraint/resolve_command_inputs()/add_interactive_option(),把缺参补问、-i/-I语义、TTY 检查和多字段约束从各命令的重复样板中收口到共享模块;chattool dns、chattool client cert、chattool client svg2gif、chattool gh、chattool zulip、chattool image、chatenv高频 profile/key 命令、chattool explore arxiv get、chattool network ping、chattool dns cert-update已切到这套机制,并补充了相应 mock CLI 测试与开发文档规范chattool dns现在在交互终端里默认进入命令选择;chattool dns get/set/ddns缺少必要参数时会自动补问,-I才显式禁用交互并报错;同时ddns的监控间隔短参数收口为仅保留--interval,避免与统一的-i交互开关冲突chattool pypi probe现在默认检查正式pypi,收口为更直接的精确项目名可用性检查:名称已占用时直接给出阻塞结论,并补充作者、摘要、链接、最新版本等少量有用信息;不再默认查testpypi,也不再输出一组对决策无帮助的固定状态项chattool nginx static-root的默认站点根目录现从 NAS 风格示例调整为更通用的/var/www/example-site,交互默认值、文档和测试同步更新chattool setup中通过 npm 执行安装或检查时,现会先打印真实的npm ...命令,方便用户确认当前实际在执行什么chattool pypi init在交互终端里省略包名时,现会自动进入交互式补参;显式-I关闭交互时才保持缺参报错chattool setup workspace在交互式启用 ChatTool / RexBlog 模块时,现会分别提示是否配置 GitHub token;默认值优先读取当前仓库 git credential,并以 mask 形式展示,便于直接复用到目标仓库chatenv init/chatenv new更新 active typed env 后,chatenv cat与运行时配置加载现在会优先读取envs/<Config>/.env,不再被已有 shell 环境变量意外覆盖,避免交互里刚保存的新值看起来“没有生效”chatenv new现在收紧为纯 profile 创建语义:无论直接传 profile 名还是交互式补参,都只写入envs/<Config>/<profile>.env,不再顺手覆盖当前 active.envchatskill install/chattool skill install现在在交互终端里缺少 skill 名时会进入选择页,而不是直接因缺参数中断;非交互环境仍保持显式报错chattool skill install现在支持opencode平台,默认安装到~/.config/opencode/skills/;claude平台名同步收口为claude,不再继续暴露claude-codechattool skill install覆盖已存在 skill 时,交互提示现在支持输入a一次允许本轮后续全部覆盖,避免--all时逐个确认chattool skill install在交互终端里省略-p/--platform时,现会先进入平台选择页,并把codex作为默认候选放在首位;非交互环境仍默认回退到codexchattool skill install交互式缺少 skill 名时,现改为共享的多选控制页;顶部提供一个可联动的“全选”项,支持在同一页切换全选/清空,不再只支持单个 skill 或单独的 “Install all skills” 入口chattool setup alias的交互式 alias 选择现改为与skill install一致的共享多选控制页;去掉单独 preset 页,改为在同一页通过顶部“全选”项切换全选/清空chattool setup codex/chattool setup opencode/chattool setup lark-cli现在统一修正为显式参数 > -e/--env > 工具默认配置位置 > 系统环境变量 > typed .env > 默认值,避免已有工具配置被当前 shell 中的 OpenAI / Feishu 默认值意外覆盖Publish Packageworkflow 现在会用内联 Python 读取src/chattool/__init__.py中的__version__,避免 release tag 校验被单引号/双引号差异误判chattool setup codex/chattool setup opencode现在默认优先读取保存的 typed env 配置,再回退到 shell 环境变量;显式-e/--env仍然拥有更高优先级,避免交互默认值被临时环境变量意外抢占
chattool setup opencode新增--plugin auto-loop,可在写入 OpenCode 基础 provider/model 配置时同步把opencode-auto-loop追加到plugin数组,方便直接启用现成 auto-loop 插件chattool setup workspace默认结构现切换到projects/模型:workspace 根目录保留README.md/AGENTS.md/MEMORY.md作为 general-use 协议与上下文入口,实际工作统一进入projects/下的单任务或多任务 project 执行chattool setup workspace现在会把“review 由 loop 在模型准备停下时触发,默认完整做完后再统一汇报结果”写入新生成的 workspace 协议;开发任务还会明确要求每个阶段先测试通过、更新文档,再按review.md规则完成校验与收尾chattool setup workspace新增--with-opencode-loop模板版本:启用后会安装本地 OpenCodechatloopplugin / commands 资产,并切换到 loop-aware workspace 模板src/chattool/setup/assets/opencode_chatloop/现收纳 ChatTool 管理的 OpenCodechatloop安装源,包括 plugin、slash commands 与最小说明文档chattool pypi init新增--template default|cli-style;其中cli-style会额外生成DEVELOP.md、setup.md、CHANGELOG.md、AGENTS.md以及docs/、tests/cli-tests/、tests/mock-cli-tests/、tests/code-tests/的基础说明文件,作为更贴近 ChatTool 当前 CLI/文档/测试/自动化规范的初始仓库模板chattool setup opencode现支持-e/--env,可显式复用 ChatTool 的 OpenAI 配置来源;支持.env文件路径或OpenAIprofile 名称,并按显式参数 > -e 指定的 OpenAI 配置 > 当前 OpenAI 配置 > 现有 opencode 配置 > 默认值回退- 新增
chattool setup workspace [PROFILE] [WORKSPACE_DIR],用于在核心项目外围初始化人类-AI 协作工作区骨架;支持baseprofile、默认中文模板、显式--language en、--dry-run与已完成setup.md的保护覆盖语义 chattool docker nas新增 NAS 静态文件服务模板,生成 compose 与 env 示例占位模板;镜像、路径、端口与 URL 前缀需由用户显式填写或通过--set覆盖- 新增
chattool setup docker,用于检查 Docker / Docker Compose / docker 组状态;涉及sudo的建议命令默认只打印,显式传入--sudo后才允许在确认后执行 - 新增
chattool nginx,用于按模板生成常见的 Nginx 配置片段;当前收口为配置导向的最小模板集:基础proxy_pass、HTTPS 入口反代、WebSocket 转发、静态目录站点和重定向,并支持-i交互式补齐必要参数
chattool setup workspace不再默认生成reports//playgrounds//setup.md,也不再依赖AGENTS.generated.md/MEMORY.generated.md这类 helper files 做主要迁移路径;当前更强调通过根目录README.md和projects/README.md提供 general-use 入口与结构约定
- CLI 测试规范现拆成双轨:
tests/cli-tests/只维护真实 CLI 链路,所有基于mock/patch/monkeypatch/ fake client 的 CLI 测试统一迁入tests/mock-cli-tests/ - GitHub CI 的 stable smoke tests 现同步切到
tests/mock-cli-tests/,避免继续引用真实 CLI 用例目录 skills/chattool-dev-review/现在收窄为纯开发验收 skill,不再混入正式发版边界;涉及版本 tag、Publish Package、PyPI 校验与release.log的动作改由新 skillskills/chattool-release/负责skills/practice-make-perfact/现在明确把“任务后整理到 PR/MR 阶段”和“合并后的正式发版”拆成两个阶段:前者继续串联$chattool-dev-review,后者显式切换到$chattool-releasePublish Packageworkflow 现改为只响应合并后推送的vX.Y.Ztag,并在工作流中去掉v前缀后与包版本做严格比对,避免继续沿用旧的裸版本 tag 习惯chattool setup相关的nvm/lark-cli子进程调用现统一避免使用 login shell,减少用户 shell 初始化把提示符和控制序列污染到当前交互页面的风险Publish Packageworkflow 现在会在发布前显式检查 PyPI 是否已存在同版本;若src/chattool/__init__.py未提前 bump、或同版本已发布,工作流会直接失败,而不是靠twine upload --skip-existing静默跳过- GitHub PR smoke tests 现从多版本矩阵收敛为最小双平台覆盖:
ubuntu-latest + Python 3.10与macos-latest + Python 3.10,减少日常 CI 资源消耗;跨版本兼容继续以本地验证和必要时的专项检查为主
skills/feishu/现在把 Agent 协作登录明确收口到lark-cli auth login --recommend --no-wait与--device-code的非阻塞 device flow,避免 skill 入口直接把会话带进阻塞式浏览器登录tests/cli-tests/lark/guide/test_chattool_lark_skill_index.py现在会同时校对SKILL.md与SKILL.zh.md的命令分流和 Agent 登录指引,避免中文入口回归时被漏检
- 新增
tests/mock-cli-tests/测试线,并补充chattool统一入口 lazy dispatch 的 mock CLI 测试 chattool cc init现支持--quiet/--no-quiet,可直接写入项目级quiet = true/false;交互模式下也会提示并沿用已有 quiet 默认值- 新增
skills/chattool-release/,用于处理 ChatTool 的发版准备、tag 时机、发布工作流检查、PyPI 校验和正式发版后的release.log记录 - 新增
tests/cli-tests/skill/test_chattool_skill_release_boundary.md与tests/cli-tests/skill/test_chattool_skill_release_boundary.py,校对chattool-dev-review、chattool-release和practice-make-perfact的边界与串联关系 - 新增
tests/cli-tests/skill/test_chattool_release_tag_format.md与tests/cli-tests/skill/test_chattool_release_tag_format.py,校对正式发版流程已统一使用vX.Y.Ztag,并由Publish Packageworkflow 正确剥离v前缀做版本校验 - 新增
tests/cli-tests/skill/test_chattool_release_version_bump.md与tests/cli-tests/skill/test_chattool_release_version_bump.py,校对 release/practice/dev-review skill、开发文档与 workflow 都明确要求“版本号必须在 PR 阶段先 bump,PyPI 已有同版本时必须失败”
chattool setup codex/chatup codex的交互式补参现在不再因为旧的 login shell 副作用和隐藏输入提示显示异常而表现成“像是已经回到 shell、但实际还在等待输入”- 共享
utils/tui.py现改为更安全的click + Rich提示实现,并对敏感输入统一走stderr渲染与读取,降低 setup 交互过程中终端状态错乱的概率 chatenv init与chattool setup alias的交互菜单现在恢复了更直接的终端操作体验:Ctrl-C会直接退出,alias 自定义选择支持键盘 checkbox 式勾选utils/tui.py现在会正确处理纯字符串选项,避免chattool setup alias等页面把str.title方法错误渲染成<built-in method title ...>- 当
questionary不可用时,统一 TUI 现在会安全降级到编号选择和逗号分隔多选,避免交互命令直接因可选依赖缺失而中断
- ChatTool 现统一以
Python >=3.9作为公开支持下限:chattool pypi init默认生成requires-python = ">=3.9",包元数据不再用最高到 3.12 的 classifier 形成隐性上限;GitHub CI 只保留最小 smoke-test 覆盖 - 默认
pip install chattool现在只保留核心聊天能力与基础 CLI 依赖;questionary、aiohttp、fastapi、uvicorn、pydantic、fastmcp、PyGithub、gitpython、pillow、batch_executor、filelock等已拆分到新的 optional extras(如interactive、dns、serve、mcp、github、client、batch) import chattool、chattool serve、chattool mcp与chattool.tools现在进一步收紧为惰性导入,避免默认安装路径被 DNS / Lark / MCP / Serve 等可选功能反向拉重- env 配置机制开始切换为按类型拆分的目录模型:活动配置与 profile 现在按
envs/<Config>/.env、envs/<Config>/<profile>.env管理,不再把单个全局.env作为唯一真相 - 配置优先级现调整为
显式参数 > os.environ > env 文件 > 默认值 - 对支持
-e/--env的命令,配置优先级进一步固定为显式参数 > -e/显式 env > os.environ > 类型内置 .env > 默认值,并写入配置文档与开发规范,便于后续统一复用 OpenAI配置移除了OPENAI_API_BASE_URL,统一只保留OPENAI_API_BASEchattool lark现已从仓库内“平行飞书 CLI”收缩为最小遗留入口,只保留info、send、chat三个调试命令;原有文档、设计说明和大部分真实 CLI 测试已同步收口到这一边界- 仓库开发规范现在把“绝对禁止 mock”明确写入
AGENTS.md、DEVELOP.md、docs/development-guide/与tests/cli-tests/README.md:宁可做更窄的真实测试,也不接受用 mock 伪造行为 - 开发规范现补充说明:GitHub 自动测试当前只覆盖
.github/workflows/ci.yml里的 stable smoke tests,不包含lark/dns这类第三方链路与大多数真实 CLI 测试;相关能力需要本地单独验证 chattool gh pr-check现在支持--wait轮询等待 CI 结束;默认不设超时,只有显式传--timeout时才会超时报错skills/feishu/现在改为紧凑双语入口:SKILL.md/SKILL.zh.md统一强调官方lark-cli为默认入口,并把消息调试路由到im、正文路由到docs、评论与权限路由到drive、wiki 路由到wikichattool pypi现已收口为最小命令集:只保留init/build/check/upload/probe;移除doctor/publish/release,并取消原有交互式补参与上传封装逻辑,upload直接复用默认twine upload行为chattool lark send现在把默认目标拆成“默认用户”和“默认群聊”两条路径:FEISHU_DEFAULT_RECEIVER_ID继续用于用户消息,新增FEISHU_DEFAULT_CHAT_ID专门服务-t chat_id- Feishu 真实测试与文档说明现在回到生产口径,不再引入独立的
FEISHU_TEST_USER_ID/FEISHU_TEST_USER_ID_TYPE
- 若干使用
X | Y类型注解的核心模块现统一补上from __future__ import annotations,避免 Python 3.9 在导入阶段因注解求值失败 chattool setup codex现在不再把实际 API key 错写进preferred_auth_method:config.toml中该字段固定为"apikey",真实密钥只写入auth.json的OPENAI_API_KEYchatenv new -t <type>在交互终端里不再退化成单纯的save语义:省略 profile 名时现在会先询问名称,再进入该类型字段填写,然后写入并激活新 profileskills/feishu/补回SKILL.zh.md,避免技能资产检查在 CI 中因缺少中文入口文件失败chattool gh pr-merge新增可选的--check开关,用于在合并前显式检查 check runs 与 workflow runs,避免再次误把带红 CI 的 PR 当成可安全合并chattool skill install不再强制要求 skill frontmatter 包含version,只校验name与descriptionchattool setup alias的自定义多选现在统一走utils/tui.py的 checkbox 封装,交互里显式显示☑/☐勾选态,不再只靠高亮区分选中项
- 新增根目录
Dockerfile.playground,用于直接构建一个最小的 ChatTool workspace 启动镜像;镜像在/opt/venv中安装 ChatTool,容器启动后会线性执行chattool setup workspace -> chattool env set CHATTOOL_SKILLS_DIR -> chattool setup alias chatenv new <profile> -t <type>,用于从当前激活的类型配置直接创建并激活一个新 profile,补齐save/use/delete之间的便捷新建入口chattool gh run-view与chattool gh job-logs,用于直接查看 GitHub Actions workflow run / job 详情与失败日志,避免排查 CI 时再临时写脚本chattool setup codex -e ...现可显式复用 OpenAI 配置来源:支持.env文件路径或OpenAIprofile 名称,并按显式参数 > -e 指定的 oai 配置 > 当前 oai 配置 > 现有 codex 配置 > 默认值回退chattool setup lark-cli,用于安装官方lark-cli,并按显式参数 > -e 指定的 feishu 配置 > 当前 feishu 配置 > 现有 lark-cli 配置 > 默认值复用 ChatTool 的 Feishu 配置;文档补充了~/.lark-cli/config.json与 ChatToolenvs/Feishu/.env的默认位置说明chattool lark doc perm-public-get|perm-public-set与perm-member-list|perm-member-add,补齐飞书文档权限读取、公开分享更新和显式协作者管理 CLI,避免再为“发出可编辑文档”临时写 SDK 脚本skills/practice-make-perfact/references/cli-reference.md,新增后处理阶段的 CLI 参考索引,方便在“手写脚本还是该补 CLI”之间快速做归位判断- 博客新增
docs/blog/agent-cli/lark-cli-guide.md,整理官方larksuite/cli的安装、认证、三层命令体系与 Agent 场景下的安全使用路线 - 博客新增
docs/blog/lark-message-session-debug.md,先从消息 ID、会话 ID、最小送达链路与 capture/replay 边界澄清飞书消息/会话调试专题的探索范围 FEISHU_DEFAULT_CHAT_ID配置项,并补充默认群聊发送与 docxopenchat群权限的 quickstart 示例
chattool cc init -i现在会在一开始先确认是否覆盖已有配置文件;已有平台配置和飞书凭证候选值会直接作为默认值展示,回车即可复用,不再追加“是否沿用默认”确认chattool gh pr-view与chattool gh pr-check现在会直接显示 PR 的mergeable/mergeable_state,避免只看到 head checks 却漏掉相对最新 base 的冲突态- 飞书主 skill 现在重组为索引式技能包:根目录只保留
skills/feishu/SKILL.md作为入口,专题说明、API 参考与 docx 边界统一收口到主题子目录 skills/feishu/guide/api-reference.md现在集中维护 Feishu 官方 API 文档 URL 与chattool lark到 API 的映射,便于扩展时继续学习与沉淀chattool lark相关文档现在统一使用“双轨文档模型”描述云文档能力:稳定正文轨用于可靠写入,结构化 docx 轨用于 block 级增强chattool lark scopes现在会在列出权限后补充关键能力分类摘要,并在匹配到未授权 scope 时直接标记为权限问题chattool lark doc append-json现在会在写入前归一化 code block 的style.language字段,避免parse-md -> append-json因非法语言值整批失败chattool lark troubleshoot check-scopes现在支持导出权限诊断卡片 JSON,并可直接把诊断卡片发给默认接收者或显式指定的目标- CLI 入口现在统一过滤
lark-oapi带来的pkg_resources/ event loop 噪音警告,且chattool lark改为按命令懒加载飞书实现,减少无关 import
FEISHU_TEST_USER_ID与FEISHU_TEST_USER_ID_TYPE配置项,用于chatenv cat -t feishu和@pytest.mark.lark真实测试共享测试用户配置tests/cli-tests/lark/guide/test_chattool_lark_basic.py、tests/cli-tests/lark/documents/test_chattool_lark_doc_basic.py、tests/cli-tests/lark/documents/test_chattool_lark_doc_markdown.py,补齐 Feishu 基础链路与文档链路的真实 CLI 执行覆盖
- 旧的文档读写型 Feishu skill
feishu-create-doc、feishu-fetch-doc、feishu-update-doc已并回主feishuskill,不再单独维护
chattool setup cc-connect现已提供 cc-connect 安装入口;chattool cc setup改为该命令的别名,两者共用同一套安装逻辑chattool setup codex默认模型现改为gpt-5.4,chattool setup claude默认小模型现改为claude-opus-4-6chattool setup codex/claude/opencode现在会在收集配置前先检查Node.js >= 20与npm;若当前终端可交互且依赖不满足,会先提示是否执行chattool setup nodejs进行安装或升级skills/practice-make-perfact现在改为任务完成后的后处理工作流:回顾已有改动、提取可复用内容、串联chattool-dev-review,再统一完成文档/测试/变更记录与 PR/MR 收尾- 开发流程现在明确要求把 scratch、临时试验产物与一次性导出结果放到仓库外独立目录,而不是放在仓库内
skills/chattool-gh现在覆盖pr-check、PR 后续维护与 CI 排查流程,并同步更新为当前 GitHub CLI 用法chattool setup nodejs现在改为写入仓库内置的nvm.sh与 shell 初始化块,不再通过curl从 GitHub 拉取 nvm 安装脚本chattool cc init -i在选择飞书平台时,现会把当前chatenv中的FEISHU_APP_ID/FEISHU_APP_SECRET作为默认候选值chattool skill/chatskill现在在未显式传--source时,会正确读取chatenv中的CHATTOOL_SKILLS_DIR- skill CLI 代码目录现统一为
src/chattool/skill/,避免与仓库根目录skills/资产目录混淆 chatenv init -t skill中CHATTOOL_SKILLS_DIR的交互提示已缩短,避免占用过多输入空间
tests/cli-tests/env/test_chattool_env_basic.py现已补齐env init -t ...交互输入,避免因新增默认字段 prompt 导致测试中断- 全量
pytest现在可稳定完成:历史tests/code-tests/tools/lark/test_cli_integration.py已改为唯一模块名,避免与 DNS 测试模块同名导致收集冲突 tests/code-tests/dns/test_cert_server_real.py与tests/code-tests/dns/test_cert_update_real.py现改为显式CHATTOOL_RUN_DNS_CERT_REAL=1才启用,避免日常全量回归卡在真实证书生命周期测试tests/code-tests/core/test_batch.py现已修正未 await 的协程调用,且 pytest 过滤规则补齐了常见第三方告警,降低全量回归噪音chattool setup nodejs首次通过内置nvm安装 Node.js 后,后续同一轮setup codex/claude/opencode/cc-connect现在会正确复用~/.nvm中的运行时,不再误报 “Node.js requirement still not satisfied after setup”chattool setup alias现在会把chatskill正确映射到chattool skill
chattool setup claude— 安装 Claude Code CLI 并写入配置chattool skill/chatskill— Skills 管理,支持安装到 Codex / Claude Code- 新增 skill:
chattool-dev-review - ChatTool skills 约定维护
versionfrontmatter,新建 skill 以0.1.0为初始版本 - 所有仓库内 skills 现在都提供对应的
SKILL.zh.md chattool cc— cc-connect 最小可用配置、启动与诊断命令chattool skill install --prefix— 安装时添加chattool-前缀CHATTOOL_SKILLS_DIR— 指定 skills 源目录- 新增 skill:
feishu chattool cc init --full-options— 提示填写代理等高级选项chattool lark -e/--env— 支持从指定.env文件或保存的 profile 读取飞书鉴权chattool lark doc— 支持飞书云文档创建、查询、纯文本读取、块查看与追加文本chattool lark doc parse-md— 支持将 Markdown 解析为飞书 docx block JSON,便于检查结构映射chattool lark doc append-json— 支持将结构化 block JSON 直接写入飞书云文档chattool lark doc append-file— 支持将本地 txt/md 文件整理后追加到飞书云文档FEISHU_DEFAULT_RECEIVER_ID—chattool lark send可省略接收者并默认发给配置用户chattool lark notify-doc— 创建云文档、追加正文并把文档链接发送给默认用户chattool lark notify-doc --append-file/--open— 支持从文件追加正文并在成功后打开文档chattool pypi— 新增 Python 包 doctor/build/check/publish/release CLIchattool pypi init— 快速生成最小可发布的src/布局 Python 包骨架chattool pypi probe— 检查包名和版本在 PyPI/TestPyPI 上是否已被占用- 文档:新增“Python 库仓库构成设计”,明确 PyPI 包、源码、测试、CLI 测试与 skills 的目录边界
- 设计:新增
chattool pypiCLI 文档,定义 build/check/publish/release 的命令边界与安全策略 chattool explore arxiv— arXiv 论文搜索、daily 抓取与 preset 检索chattool explore arxiv新增math-formalization-weeklypreset,并补充数学形式化近一周追踪 workflowskills/arxiv-explore新增数学形式化近一周子模块,包含分类索引、真实样例和多查询收集脚本chattool lark notify-doc --batch-size— 批量写入失败时回退到单段追加,提升飞书文档写入稳定性- 开发文档
development-guide/architecture-overview.md,系统说明 ChatTool 架构分层、设计特点与任务沉淀路径
chattool skill install现在会在安装前校验SKILL.md的 YAML frontmatter,并在缺少name/description时直接报错,避免把无效 skills 复制到 Codex / Claude Codechattool skill install现在同时校验versionfrontmatter,并要求使用0.1.0这类语义化版本格式chattool setup nodejs现在会输出版本信息并在当前 shell 不可用时给出提示chattool pypi init现在按统一 CLI 规范补全向导参数,并生成可直接运行python -m pytest -q的测试骨架chattool pypi doctor/build/check/publish/release -i现在按统一 TUI 规范提示当前命令相关参数chattool pypi init --version现在支持设置初始版本,并在 dynamic version 场景下解析真实版本值chattool pypi publish/release现在优先复用.pypirc,只有缺少配置时才回退到交互输入
- 飞书机器人完整工具链:
LarkBot、ChatSession、MessageContext - CLI:
chattool lark(发消息、上传、监听)、chattool serve lark(echo/ai/webhook) - 支持 WebSocket 长连接和 Flask Webhook 两种接收模式
- 卡片消息、按钮回调、动态更新卡片
- DNS 管理:统一接口支持阿里云和腾讯云
- DDNS 动态域名更新(公网 / 局域网)
- SSL 证书自动申请与续期(ACME v2 / DNS-01)
- 环境变量集中管理:
chatenv,支持多 profile、敏感值打码
- 统一
ChatAPI(同步 / 异步 / 流式) - 默认从环境变量读取 API 配置
请参考仓库提交记录。