Skip to content

v0.7.1 — system prompt 更新 GLM适配完成

Choose a tag to compare

@Allenllii Allenllii released this 22 Aug 11:59
407bb86

重点:系统提示词收口

系统提示词是 agent 每次会话读到的第一段文字,定义它是谁、怎么干活、什么时候该停下来问用户。此前它的开场白与产品名对不上:用户敲的是一个名字,agent 自述是另一个。这是整个产品里最靠前、也最容易被忽略的一处不一致。

现在它是:

You are Semantix, a coding agent running in a terminal on the user's machine.
Use tools to inspect, change, and verify the workspace directly.

为什么这一行不能随手改。 系统提示词是缓存前缀的开头。这个产品的核心价值就是跨会话复用与前缀缓存命中——提示词一旦变动,整段前缀缓存失效。所以仓库里有两道守卫盯着它:一道校验提示词组装的字节稳定性,一道比对完整快照防止无意漂移。本次改动是走完守卫、重新生成快照后落地的。

同时成型的行为契约。 提示词由四块拼成,后三块会追加到每一个系统提示词上——包括用户自定义人格,这样自定义角色无法意外删掉产品的交互约定。

组成块 约束的是什么 字符
身份与交付基线 身份、场域、工具优先;交付要覆盖每一项被点名的产出;接口变更必须让每个语义上的调用方跟上,而不只是类型能编过 992
用户决策归属 没有安全默认值的决定必须调 ask 交回用户,不能在正文里问;非交互场景则明说假设、走最可逆的路 301
工作规范 点名了做法就照做,想换做法要显式讲权衡而非默默替换;临时脚本不许留在仓库;交付前必看最终 diff;验证强度随改动大小走 591
语言跟随 跟随用户当前语言并随之切换,但代码、标识符、路径、命令一律保持原文不译 371

其中几条是直接冲着 agent 的常见失败模式写的:不许编造结果、不许放松测试、没有测试输出和最终 diff 就不许声称完成;证据与思路矛盾时改思路,而不是把同一件事再试一遍;只在三种情况下停——做完、卡在该由用户拍板的决定上、或者真的走不动了。语言跟随那块特意写成静态英文,就是为了留在缓存前缀里,避免每轮注入把前缀顶掉。

内置指南 skill 同期改名,用户敲的斜杠命令与产品名对齐。


⚠️ 升级需要手工迁移一次

本版统一了落盘契约。版本号是 patch,但直接覆盖升级会丢配置

现在的位置/名字 升级动作
用户目录 ~/.semantix/ 旧目录需改名(会话数据有兜底迁移机制)
项目配置 semantix-agent.toml 旧配置文件需改名
环境变量 SEMANTIX_* 114 个前缀需替换
keyring 服务名 semantix provider 密钥需重新输入一次
项目记忆文件 SEMANTIX.md 需改名

逐条命令见 docs/releases/v0.7.1.md

存量兼容都保留了:插件清单读不到新名时回退旧名,插件 apiVersion 的旧值继续接受,主题扩展名保留兼容,旧版会话与配置仍作为 legacy 源被迁移机制读取。已安装的插件不会因为改名而失效。


发布链:从「发完就走」到「发前自证」

这是本版第二项实质进步。上一版的产物核对暴露了一个结构性问题——打包脚本从不验证自己的产出,于是四项缺失全部漏到了线上,没有任何一道关卡拦下来。

此前 现在
自更新通道 只上传了完整包,而 upgrade 按约定去取扁平单二进制包和 SHA256SUMS——两个资产都不存在,直接 404 四平台扁平包与双份校验文件齐备,已按更新器的真实取数路径拉取校验
curl 安装器 需要独立的内核二进制资产,发布里没有;校验文件也无对应条目,脚本取到空值后校验失败 四平台裸内核二进制随版上传,线上实测下载并通过 sha256 比对
产物洁净度 在 macOS 上打包时扩展属性被写成归档成员,每个真实文件旁都躺着一份影子文件 显式关闭元数据归档并排除桌面索引文件,8 个压缩包残留计数实测均为 0
发布前检查 没有。上述三项都不难发现,只是从来没有人、也没有脚本去看一眼 打包完成即就地自检,任何一项不过直接 exit 1,产物不会流到上传环节

门禁校验四件事:每平台三件产物的存在性、校验文件里按名索引的条目是否对齐、每个压缩包的元数据残留、双名校验文件是否齐全。

自检本身也经过了实战:首次运行就报了 8 条失败。追查后确认是检查写得过严而非产物有问题——校验工具在不同平台的输出格式带有二进制标记差异,而两端消费方本来就都容忍这个标记。改为按字段取名比对后全绿。一道会误报的门禁等于没有门禁。


内核能力增强

领域 改进 PR
检索融合 hybrid 融合收敛到单一真源,支持 RRF 与可配权重——此前多路召回的合并逻辑分散在调用侧 #344
上下文管理 类型化片段的确定性淘汰,并与 Compact 事件联动——淘汰结果可复现,不再依赖调用顺序 #343
预取 probation 探针释放被降级的候选,修复预取进入吸收态后无法自愈的问题 #301
计费网关 钱包探测失败改走短退避而非整个 TTL——单次探测失败不再让计费停摆一个周期 #345
提示词栈 精简版提示词与条件式语义 review #350
终端体验 TUI 退出时重置鼠标追踪,终端不再残留鼠标模式 #349
测试稳定性 修复全量并行下的偶发超时——把 flake 当 bug 修,而不是重跑一次算了 #314

本版共 50 个提交、10 个 PR、770 个文件改动,151 个 Go 包全部纳入回归。


交付验证

发布后没有停在「资产列表看起来齐了」。验证是按两个下游消费方在代码里写死的真实取数路径,从线上拉取并逐项比对校验和。

消费方 取数路径 上一版 本版
自更新命令 扁平单二进制包 + SHA256SUMS 404 ✅ 校验通过
curl 安装脚本 裸内核二进制 + SHA256SUMS.txt 404 ✅ 校验通过
更新器包结构 包内应仅含裸二进制 ✅ 符合预期
产物洁净度 8 个压缩包元数据残留计数 每包均有 ✅ 0
版本标记 二进制内嵌版本号与 commit 未核 ✅ 已确认注入

版本标记这一项额外做了源头核对:注入用的变量名与两个入口文件中的声明逐个对齐。名字写错时链接器会静默不生效,产物看起来正常但版本号是空的。


资产

每平台三件,共四平台(darwin-arm64 / darwin-amd64 / linux-amd64 / linux-arm64):

  • semantix-agent-v0.7.1-<platform>.tar.gz — 完整包(semantix-agent + semantix + semantix-gateway + 两个配置模板 + 独立安装器 + README)
  • semantix-agent-<platform>.tar.gz — 扁平单二进制,semantix-agent upgrade
  • semantix-v0.7.1-<platform> — 裸内核二进制,curl 安装器用

外加 SHA256SUMSSHA256SUMS.txt(同一份校验、两个名字:自更新器读前者,安装器读后者)。

快速开始

tar -xzf semantix-agent-v0.7.1-<platform>.tar.gz
cd semantix-agent-v0.7.1-<platform>
cp semantix-agent.example.toml ~/.semantix/semantix-agent.toml
export GLM_API_KEY=<你的 GLM key>      # 或按需 DEEPSEEK_API_KEY
./semantix-agent                        # CLI TUI;或 ./semantix-agent web 开 GUI

完整发版记录与逐条升级命令:docs/releases/v0.7.1.md