Skip to content

Releases

证道 v2.2.3 — 正式版

Choose a tag to compare

@pisces19860207 pisces19860207 released this 05 Nov 08:30

v2.2.3 — 暗卫巡检·记忆分层·决策中心·御医自修 四大内务上线,附事件触发/影子/接真验证与大量修复清债(2026-11-05)

相对 v2.2.2 的提交增量:非 merge 提交 300 条(merge 提交 121 条不计入条目,仅用于定位范围)。
条目按「修复 / 新增 / 替换 / 已知问题」四类归并;每条一句话+提交短号;merge 提交不算一条。分类为最佳判断,可调整;条目数与提交数严格对齐。

新增(123 条)

  • E004 438: 记忆分层——三类(偏好/规矩/事实)+生命周期四态+事实 asOf 收录闸与 90 天过期 e06e96375
  • E007 feat(trigger): 事件触发源前两个——定时到点+日程开始前N分钟(手机侧自己接活第一刀) 05c185416
  • E008 feat(shadow): 影子按需——执行前基线指纹+执行后对表+复核排到下一轮 ca15c4779
  • E009 440-验收补:名册补登 443 的 assets/models/model-labels.json(rebase 到含 443 的 main 后 --assets 常红;名册 9→10,门禁正是靠这条红的) 3f2654e9a
  • E010 440: 第一方资产名册——licenses/FIRST-PARTY.md(9 条标 GZ-AG)+ --assets 双向校验 fb6e8d744
  • E011 419-御医自修接线:体检收尾后一行 DataDoctor.afterHealthRun——白名单(2026-11-04 已定:rehearsal/shadow/cache/baopu-tmp + .tmp/.part/*.crdownload)内超 7 天搬回收站;白名单外不动手、报需人处理并列出顶层入口;空集永不清理;主账(决策记录.jsonl 及其变体)判据/执行双层挡死;回收站整棵不进。门禁:定向 55 例+全量 9076 例绿,detekt 我的文件 0 条;真机实测 2 个验证残留入回收站、22 项白名单外原样列出(修复账 intent→result 两行) 0e0a81bfc
  • E012 380: 接真验证臂——CI 读数收件箱进 proofRunner(进化读数.jsonl+新表同来;ref 落盘防重放;时钟可疑落账;体检单添通道一格;链与判定件零改写) 99729857a
  • E017 feat(models): 模型名映射落 assets + 顶栏/跑马灯按权重推导 602ccac00
  • E018 417-补缝:改约基线「何时被消费」抽成纯函数 AmendRiskBaseline.step —— G8 源级钉退役,改由 5 条行为序列钉(含「改约后先 update_plan 再来动作」) ac83c08d1
  • E019 417-验收接管:改约基线只许真实动作消费(原实现无条件清空 ⇒ 改约后先发 update_plan 会吃掉基线,既落假降档账又让真正那次动作不重算)+ G8 源级门禁 4641b831c
  • E030 434: 顶栏对齐设计稿——模型区两段互斥弹层/跑马灯改朱胶囊/删「+」并把 newSession 抽成单一入口 e320dde80
  • E032 441: 一句话值守——三个触发接进主链路(进场/显式出场/隐式出场,只加调用不改388判定) 830ce35de
  • E033 428: 接线B域——进化闭环+接管五步接进生产(三判定件 0 调用→有调用,只加调用不改判定) 69a1eabf7
  • E035 427-批示落地:decidedBy 改 CENTER_AUTO——自动代行不许记成人裁(2026-11-04 批示②) 10f094b2c
  • E036 427: 接线口搬出 law/+名册 BOOKED→WIRED——过法典接线名册机检 1932c2145
  • E038 426: 名册结论表随事实迁移——3 条离开 B 区并留证(产物提交 7998628d) d133aec81
  • E039 426: 名册刷新——按现码重扫重写(旧产物末次提交 09d0359 ⇒ 本提交) 695ac49ed
  • E040 433: 资产类许可门禁——ASSETS.md 登记表 + --assets 模式(漏登记判红) a20715971
  • E041 423: 许可政策门禁——允许/禁止/未登记三态,缓存缺 POM 不算通过 dec82f360
  • E042 358: 御裁两条落地——同场地并发 ≤2 闸 + 报告清单交勘验作核验基线 ffebd4722
  • E045 358: 推演盘(军师)——只读真跑、写只落 cacheDir/rehearsal/rh-* 9fda19659
  • E048 388: 无人值守(L2 有限值守·离场模式)——离场开关(纯状态)+圈判定(圈内自动/圈外入队/红线停手)+四类通知(高优先/普通)+离场报告;前台服务/WorkManager 兜底+电量过热无网暂停+锁屏不弹卡进队列+通知深链直达 668d3efe2
  • E049 406: 调解器决策级接通——shouldAsk 弹卡前压卡、budgetFor 耐心阈值、decide 只给排序建议(三态一个字没动,右相仍零模型;只少问·排序·让步) bafd191b0
  • E051 405: 模型上下文读经验——轮开跑读判决经验账,最近同类经验一行进 prompt(无经验一字不加;样本<5 不生效=400口径;读不写三态) ddc0ef504
  • E052 409: 零产出语义修正——抽检件(影子/暗卫/金吾卫)按运行记录判两个维度:跑了零差异=已运行不报零产出、没跑=未取样、暗卫超期=未取样、0假PASS=正常;运行记录补耗时格;金吾卫全量巡接进决策中心(普查 0→1) 2320c3899
  • E053 422: 记录留档裁定——LGPL-2.1.txt 留档不随包,份数不减(9 = 随包 3 + 留档 6) 8521f2e1c
  • E056 384-A: 入口接线上半——ValueCheck 挂收尾链;准入四步成链出三档并落盘 445ab13ec
  • E057 408: 御医可修数据(L0)——索引/账本/临时三类自修,判据层零 IO、执行层只调既有接口 7170347d6
  • E060 376: 进化闭环闸——三触发有据、四条验证全绿才算成、失败自动回滚(不许半进化;接线归 380) e3f40994b
  • E061 412: 工具命中率——真机46次读数+53条构造语料+18处描述消歧(互指0/15→15/15) 486d018a2
  • E070 407 文本卡只装文件与命令行:触发三收口+删文本卡按钮+单卡闸 c0d3e3d11
  • E071 375: 闭环时延与振荡——四段时刻统计(发生→发现→处置→恢复三段时延 p50/p90+缺失数+振荡打标) 2f4cf92a7
  • E072 404-A(2/2)+B: 变更卡超时重问一次;任务契约起单即挂账、立即可查 63a5fbc77
  • E073 404-A(1/2): 变更确认卡两次超时的明示话术——计划未立,超时不许说成用户没同意 10ec53618
  • E075 403: 读数层产出接进部位档——态线不再空串;样本不足只印 n<10,孤立 0 退役 dc48b6f37
  • E084 396-订:判据④ 那条把「登记轮号」念在答复之后——牌已出待答清单 首轮全量(724 套件/8,551 例)本批只有这一条红,红在测试自己写错顺序,不是通道漏: submit 校验通过即在锁内占牌(pending.remove(askId)),答完之后 turnOf 读的是待答侧, 必然 null——判据②「一张牌只灌一次」要的正是这次摘牌。同一条例改成三段各归各位: ① 答前断言 turnOf == 3(登记那一刻的轮号,不是答的那一刻); ② 答后断言出身随答复留档(receivedSnapshot().single().turnId == 3); ③ 答后断言 turnOf 为 null(这张牌不再「正等她答」)。 ea7e3a871
  • E085 396: 补问答案回灌通道——答复带三样(轮次 turnId/AUTH·INFO·REJECT/授权范围),形态取「上下文补丁」 379 的缺口是「补问的答案只落日志账,不回灌模型」。本批开一条显式通道,不偷偷塞进历史: f823d711c
  • E090 369-批4: baopu 工具/物流/MCP 9 处确认死删除(R8 usage 地面真值) d5580c7ad
  • E093 369-批1: UI 主题/设置 8 处确认死删除(R8 usage 地面真值) 202cf34a6
  • E094 365: 能力画像 CapabilityProfile——policy 侧真对象(四层各入口+三硬规矩+JSON 落盘往返;判卷复用 345 五探针与 335 四道坏题,画像只读账不出分) 1c5073851
  • E103 379: 免打扰接线——弹卡前先问 QuietMode(静默/夜间/专注期延后并记账;静默上限转检查点等待);确认卡路按类表豁免;askGroup 拆小 detekt 381≤382(接管提交:交付方工作树未提交,验收方跑绿后提交) c04715530
  • E105 364-订③:按 A/B 两条裁定——变更行另起一名 EpochChangeRow+读口收成闭集 781f9a743
  • E108 364:纪元实体化——Epoch{id/label/startedAt/criteriaHash/reason}+纪元内改硬闸即拒+给定 epochId 可回放快照+变更账每行带 epochId(老行标「未归属」) 10d07944b
  • E113 372-名册更账: blockedBy/host 改准——346-B 已合 main,GuardPipeline 无人占;依赖代码位=GuardPipeline.kt:464 verdict.rejected 拒绝分支(待接线批:三档处置作为事实源接上) c360b2cc2
  • E114 372: 会话级三档处置判定(纯判定;law/ 新增 DispositionGate+21 例门禁+名册挂账一行) e64badd5a
  • E121 346-B: ③段拒绝记偏差账/④段工具自拒记工具失败,两处都不发灾异事件 cefa1ecd1
  • E122 346-B: ② 段越界那一刻发 OVER_SCOPE 事实事件(只发事实/不造出处/不判决,名册零改动) 1cc812981
  • E123 326-③b: 恢复卡「拒绝」也落一行处置(与 ③ 同处同形) 62072d93b
  • E124 326: 315 三处移交收口(处置账备份/普查表数据驱动/恢复卡补处置行) 64bfc0fbd
  • E125 373:入口覆盖清点——「有功能没入口」从人肉发现变成可重复清单 09d0359c5
  • E128 362-A: 影子测试剩 3 处反斜杠拼路径照 b2ffe87 房型改成 File(ws, ".shadow/…") 9da65d803
  • E131 343-补(接管提交):范围变更接进 PlanController/RunEngine 尾巴①——amend 写法门在落库前、pledgeAfterLanding 带 amendParse;计划测试 130 例绿(交付方未提交的工作树改动,由验收方代提交) 767d2eaa8
  • E132 feat(343): 两个预算刻度按她 11-01 拍板落名——自追加余量 2 条;问询 3 轮之后转检查点等待(记 GapItem、挂起,不递第 4 张卡) 64e1fd400
  • E136 feat(343): 军令状范围变更——追加/修改/删除三条正路+版本化+删项 DROPPED 与 ABANDONED 分列 99c0a570b
  • E144 361: 影子重做基底——副本重做关键步骤只比指纹与结论,不一致出 DISAGREEMENT 御批留给人;账实核对与同任务三连 FAIL 两处灾异接入;名册双向合拢,flow=true 机检自动放行 45656a432
  • E146 第三百一十九批:紧急闸剩余三处(自决路径能力闸+L21 登记制三条+止损效应清单) 84cfc43a8
  • E147 第三百二十七批:锚定集随包出厂——新用户装完 App,判据就有标准答案 7d1008f23
  • E148 feat(352④): SBOM 含 first-party 模块——:policy/:core 入册+真实依赖边 2ef093988
  • E150 feat(352③): public 面清单化——:policy/:core 顶层声明未登记即红 4846fbbe7
  • E153 353: update_plan 的 contract 键从 properties 兄弟位移进 properties——242 契约的真实路径从"接了但断"改为真通。①tools/PlanTool.kt:contract 整块(类型/required/描述原样)移入 inputSchema.properties——此前模型带 contract 过注册表 SchemaCheck 被"未知参数"拒,242 的接线测试直调 controller 不过 SchemaCheck 所以全绿也照断(347 发现,即"测试绿但真实路径断"模式之一)②测试真走 SchemaCheck(不许直调 controller):PlanToolTest 两例——带 contract 的参数过 validateCall(GuardPipeline 第①段的同一入口)+真管线执行落库;contract 类型错(非对象)被拒且报错点名键+人话;不带 contract 照旧可选 ③兄弟位扫描(判据③一次性扫完=永久门禁):ToolSchemaAllTest 新增「schema 顶层只有标准四件」——73 个注册工具实测唯一违规就是本单修的 contract,其余键无同类错误;谁再写出兄弟位键当场红。 已 rebase origin/main(347 aca6898 已在 main):PlanToolTest 自动并拢;347 的 PlanPledgeWiringTest① 那条"基线形状"断言按新形状改(properties=items+contract,353 把 contract 转正了)。 判据:①带 contract 的真实注册表调用不报未知参数(有测试,走 SchemaCheck)②非法类型被拒且报错可用 ③其余键无同类错误(扫描门禁钉住)④全量绿、detekt 不新增(预算 418 不动;main 现读数 414——341 批降的存量,非本单动作)。 门禁:app+core 8129 例/0 失败;detekt 414≤418;lint 在同内容的预 rebase 树 0 error/7 warn(PlanTool.kt 内容与 rebase 前逐字一致,未重跑全量 lint)。 租约:tools/PlanTool.kt+PlanToolTest.kt+ToolSchemaAllTest.kt(在飞表 353 行;与 341 目录租约相交仅 PlanTool.kt 一个文件——蓝总管 2026-11-01 拍板本单由 347 承接方接,不给 341 塞功能修复)。基线 cc7cf37→rebase origin/main,分支 fix/plan-contract-schema。 20b0ffbb0
  • E155 feat(345): 准入四层——能力=靠不靠得住(自报不据此放行+5探针+品行考复用335四道坏题+画像三硬规矩) 89d3db4af
  • E157 feat(348): 读数三态落进单子——有数/现算/无数据各占一行,不许混成"未取样"一种 8a82c9ed0
  • E158 feat(348): 读数层接线——体检单每次读一趟,四率一行中文(空样本写"样本不足",不印 0%) 1f5592d37
  • E166 347: 军令状接线通电——312 三调用点全接(NOT_WIRED → 在产):①update_plan schema 挂 pledge/closeout/resign(PlanPledgeSchemas.decorate 以同名覆盖再注册——agent/tools/ 是 341 租约,本批不碰 PlanTool.kt);非法组合(三键任两件同调)工具层先拒,引擎侧 pledgeComboGate 在出卡之前再拦 ②长程任务(≥5 步或跨会话)开工弹一次卡(照 242 房型:previewPledge→askUser(pledgeRequest)→answerPledgeCard);不许自动立状——冻结只认落库成功那一刻(pledgeAfterLanding),拒/超时 noteDeclined+declinedAck,没弹过卡按无状处理(closeout/resign 说明性忽略,不许事后补状) ③收尾调 PlanPledgeBoard.settle(正常完成在 Text 收口处+缺口回灌修复环,中止/停止在引擎 settle())——漏项 ⇒ 任务判未完成(notice 一句实话)+缺口弃单进未办成单+settle 账行 ④resign 必填原因(缺原因拒);重签走 140 卡人批(ResignChannel.HUMAN),applyResign 新版生效旧版留账,之后按新版结项(343 衔接) ⑤跨会话 seed:PlanPledgeSeed 从 计划军令状.jsonl 读回本会话快照+轮数(settle 行无 session 字段,轮数跟前面那版快照的会话走)。 租约:app/src/main/java/com/example/zhengdao/baopu/agent/PlanController.kt+RunEngine.kt(在飞表 347 行);baopu/plan/(343)与 agent/tools/(341)一个字节没动。测试适配两处(行为变更所致):PlanControllerTest 两条 ≥5 条计划的用例补 pledge 参数;PlanToolTest 管线集成用例照引擎 init 挂 decorate。 新测试:PlanPledgeWiringTest(判据①–⑥+负例:三意图/非法组合/弹卡一次/漏项进未办成单/账行/resign 拒/settle 非测试调用点源级门禁/不许自动立状的源级门禁/seed)。 门禁:app 690 套件/7957 例/0 失败(8 skip 存量);core 47/0;detekt 418=418(引擎 287/287,硬墙过);lint 0 error/7 warn(存量)。 发现一处既有问题(本批没动,报蓝总管):update_plan 的 contract 键在 inputSchema 里是 properties 的兄弟(tools/PlanTool.kt L93),不在 properties 里——模型带 contract 过注册表 SchemaCheck 会被「未知参数」拒(ContractWiringTest 的 B 组直调 controller 不走 SchemaCheck 所以没红)。改动点在 341 租约内,留给 341/后续单。 aca6898ce
  • E174 feat(328): 金吾卫喂入口通电——313 巡查逻辑从零调用到生产接线 a449e04c5
  • E178 feat(330): ①修成了也要在账上留那一笔(判据③"账上有记录")+简报四态照派工单用词(可用/被收回/被驳回/不支持) 7d10fd54b
  • E179 feat(330): 补票面漏项——触发词四句+授权落账/不弹五类/外发一律不做/开机定策三档一行(判据⑨⑩)+勘验路径探针与位置行+御医未闭环 4032c5784
  • E180 feat(330): 开机自检判定层+免打扰授权——四部位各一条结论、三级处置、阻断只弹一次 4ddafc313
  • E185 merge: 314 漂移闸接线(回放路径四环全接,判据零改动) 60a3ab484
  • E186 第三百三十九批:灾异与双盲的证据源(灾异三类事件+指纹比对核+名册纪律机检)——承接 323 的 BOOKED 两件 96b0ed24b
  • E189 feat(340): 值级验收收窄口径——NumericClaimGate(算术/计数自称对账:SUM/AVG/LINES/FILE_COUNT/PERCENT;无口径UNVERIFIABLE;差1也算差;零模型重算)+12单测+335离线验收(96行29FAILED2VERIFIED真值逐位一致) 2cabc5c40
  • E195 feat(policy): 判据进化——不可进化清单/锚定准入/纪元换表/禁标量分(310) 3043a2d71
  • E198 325: 三司会审生产接线——四触发各一处调 convene,日常交付零进三司 ec5b4a13e
  • E200 feat(292): 闸①宰相边界源级断言(网络/存储/上下文/完整历史一律禁) db89bc338
  • E207 feat(262): 补两点收尾——玄览 WebView 调试(仅 debug 包)+六格截图真机用例 2409c5298
  • E208 324: detekt 账目修正——删 10-19 旧 baseline、真读数重记两本账(口径修正,非放宽) 9552f972d
  • E209 feat(313): 过程监控回灌闭环——GapItem 唯一格式+金吾卫触发式采样+右相同格式回灌 66799b803
  • E212 第三百一十一批:三司会审判定层+右相反向监督(租约三新件;另按门禁口径登记 L24 名册) fcfa8f186
  • E214 316 扫描器覆盖面修复:实扫扩到 constitution/+显式映射(L28→TraceCrossCheckTest) c3e97ec43
  • E216 第三百一十五批:紧急闸接线(紧急卡必人批+止损 0 秒+24h 追认降级) 614b9d905
  • E217 295: 风险表键集门禁(GROUP_OF 键集必须等于风险表键集,双向差集+同数量换键仍红)+真机用例期望值 62→75 —— 前提勘误:基线 75/75 零缺口,风险表从未停在 62;app 661 套件/7706 例 0 失败、core 47 53dbcb535
  • E218 feat(298): 接上学习入口——御案三裁按下即表态入账(判据①的生产前提,裁定①选"接那一行"不选手工灌账) 6f0fd8f82
  • E221 feat(298): 判决时真查表——经验表折成不可变快照+原子换指针,两级裁决草稿层(命中即不弹/撞法条作废并记账)+每轮命中·未命中·被否三计数 ed3368ea0
  • E224 feat(law): 309 法典版本化——md↔门禁同笔提交硬判据(判据7)+法条回放闸+三态收敛 c4d5c96cf
  • E227 feat(312): 计划军令状——长程任务冻结快照+DONE/ABANDONED 两态结项+漏项即未完成+显式重签 `7a5091...
Read more

证道 v2.2.2 — 正式版

Choose a tag to compare

@pisces19860207 pisces19860207 released this 29 Oct 07:00

v2.2.2 · 修补版

这一版是修补版,不新增可见功能。

升级说明(2.2.1 → 2.2.2)

终端已从这个 App 拆出去,需要的话请另装 zhengdao-term;本机已有的终端数据/环境包不受影响,但新装用户不再从本 App 获得终端。

修了什么

  • 审计缺陷批次 A(14 条):静默吞异常改为可区分「没有 / 坏了」、路径守卫补洞、MCP 失败分级、KeyPool 坏池分档等。
  • 巡按取证:以 DOM / 可访问性快照取证,不依赖玄览在前台。
  • 离屏 WebView 取证探针:debug 专用,release 包不含。
  • 主线程 IO 收口:启动、抽屉、回收站、小说面板不再卡。
  • 依赖清理:删掉 3 个无主库,APK 小 2.86 MB;随包许可 8 → 4 份。
  • Opinion 契约与分类器接线(内部):减少不必要的打扰。
  • 法典门禁 15 条进 CI(内部)。

已知限制

  • 玄览「页面不可见时截图」仍未解决:只能在载入时前台拿到真图;巡按以 DOM / 可访问性快照取证据为主。
  • 249 任务级授权的六步门禁尚未接进生产:卡面可看,B 段接线在 276 批。
  • detekt 存量 326 条(复杂度/长度为主):未清零,只锁新增。
  • 10 处 UI 圆角仍用裸值:令牌语义待定。

安装

覆盖安装即可(同签名);从 debug 包换过来需先卸载。

证道 v2.2.1 — 正式版

Choose a tag to compare

@github-actions github-actions released this 23 Oct 13:53

证道 v2.2.1 — 正式版

v2.2.0 之后的一批:小说工程、工作区放开、记忆、文生图、计划卡降噪,以及一批修复。

覆盖安装即可,数据与环境保留;门槛不变:Android 16(API 36)+ arm64。

下载提速(并入凌晨 2.2.1 的内容)

  • 环境包改 4 路分片多连接下载:谁快谁多拉,断一条只补那一片;不支持分片的服务端自动退回单连接,断点续传。
  • 进度从「20% 一档」改成「1% 一档」(约每 1–2 MB 跳一个数字)。
  • 修掉两个续传老问题:续传写盘会截断已下载分片、分片合并后没改名到目标文件。
  • 实测同一台手机:单连接 20–170 KB/s → 分片后 0.6–1.4 MB/s(网络差别大,不承诺固定倍数)。

本版新增

① 小说工程 v1(W1/W2)

  • novel_create 建项目(过 CONFIRM,目录已存在就拒绝、不覆盖);novel_project 看总览(章节、字数、人物/设定);novel_continue 给续写简报(接哪一章、接哪一段、本章目标字数与差距、人物一致性提示)。
  • 项目落在 小说/<书名>/:book.json + 正文/,一章一个文件;正文仍走 write_file / edit_file,不另开写盘路径。

② 工作区放开

  • 越界不再硬拒:WorkspaceAccess 判「内 / 需问 / 拒」,一次运行问一次,同意即放行;回收站与备份的保护不动。可以直接让它处理工作区外的目录(比如 Obsidian 库)。

③ 记忆能力批

  • 情景记忆日记层+日记检索;同日多轮累计不再撞 provenance 闸;list_dir 的路径可以省略。

④ 文生图

  • Gemini 生图/改图:按一句话画图,或照着工作区里的图改;每次一张确认卡,会烧额度。
  • 工具参数表改走 parametersJsonSchema;执行时现取 Key(避免装配时池子冷却把空 Key 固化)。

⑤ 计划卡降噪

  • 同一版计划只按「排版归一化」判断:被拒过的不重复弹卡;只有明确点拒才记账。

⑥ 小修

  • 「关于」页显示构建 commit,用来分辨手机里装的到底是哪一次构建。
  • 自定义通道指向 Google 时强制走原生协议(工具参数表才完整)。
  • 工具约束类建议可采纳——落点是自己的人设(C 层),走既有备份通道。

修复

  • Gemini 原生工具参数 type 必须小写(大写会被当成没有参数表)。
  • 157/MEM-D1:同日多轮日记累计不再撞 provenance 闸。
  • libzhengdao_core.so 回编并刷新同源基线(改了 Rust 源码未重编导致 CI 红)。
  • 移除误入库的本地构建临时目录。
  • 文件头统一为「本项目原创、不含第三方源码拷贝」(仅注释,不改行为)。

质量读数

  • 全量单测:4927 例 / 0 失败 / 0 错误(收口复跑)。
  • lint:235 总 / 0 error(基线锁 235,上调即解冻)。
  • 清债:24 个已合并分支清理完毕,在飞表归零。

说明

  • 版本号:versionName 2.2.1、versionCode 39。
  • 本版不含破坏性改动;升级不需要重下环境。

证道 v2.2.0 — 正式版

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:17

证道 v2.2.0 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一个 APK。这一版的主角是抱朴:从「会聊天」变成「能动手」,并且每个动作都有边界。

覆盖安装即可,数据与环境保留;本版无破坏性改动。门槛不变:Android 16(API 36)+ arm64。

本次更新

① 界面重做:该确认的、该看的,各归各位

  • 决策卡统一成一套:授权、问人、记忆、技能提案四种卡,标题+「为什么」+可展开正文+证据;按钮左边否定、右边确认,热区不小于 48dp。
  • 顶栏加了决策中心:待授权、建议、提案、记录四页,卡不再堆在对话里。
  • 计划区独立成悬浮面板:运行中显示「第 n/N 步 · 当前步骤」,跑完自动收起;计划不再内联占正文。
  • 过程条:步骤与工具调用整体撤出正文,每条回答末尾只挂一行可折叠的过程条;点开能回看每一步的明细。正文里只剩你和抱朴说的话。
  • 抽屉、顶栏、设置页换了一套共享样式;大字体、深色、英文三种姿态都过了真机。

② 抱朴看图和改图

  • 12 MB 以内的图发原图,不再偷偷压小;手机拍的 HEIC / HEIF 自动转成通用格式再发。
  • 一次可以多选几张图一起发,输入框里有缩略图。
  • 会改图:缩放、裁剪、转格式、取主色、一次生成五档图标;原图永不覆盖。

③ 删除不再是一锤子买卖

  • 删文件默认进回收站,同分区搬移,几乎瞬时,删错了能找回来;回收站在文件管理器里可见。
  • 要彻底删得你明确点头;说一句「清空回收站」能一次清完。

④ 技能有了完整的一生

  • 新技能先当草稿,默认不进抱朴视野;用满 3 次才转正。
  • 写技能要过确认卡,写前自动备份,能恢复上一版;技能分成全局 / 项目 / 草稿 / 已归档四组,归档不是删除。

⑤ 资料库和本地知识库

  • 资料库交给抱朴整理:先列清单(路径、大小、格式、内容指纹),你点头再归位、改名、重建索引;原件一个字节不动。
  • 可以给资料库建本地索引:提问时回答带来源和行号,断网也能答。

⑥ 跑得久一点、稳一点

  • 单次任务上限 120 步,到顶必停;会话占到窗口七成才自动压缩。
  • 跑着还能再发消息,进队列,当前轮结束自动续跑;切 Tab、退后台也会继续。
  • 被杀重进,终端会话自动恢复;抱朴这边能接上上次中断的进度(已知边界:事务提交后、写 Thinking 前被杀,不会有中断提示)。

⑦ 工具不再平铺,按用途分组

  • 工具开关分六组(读与找 / 写与改 / 图片 / 网页 / 资料库 / 计划与技能),默认只开核心组;没解锁的工具,抱朴会明说「先解锁」。
  • 组解锁按会话走,新会话回到默认;你手动关掉的工具,解锁也打不开。

⑧ 可选的进阶能力

  • 多 Agent 协作 v1:解锁后可以把任务拆成子任务跑,默认锁着,不点头不开。
  • MCP 接入 v1:可在设置里接 HTTP/SSE 的 MCP 服务,工具默认不自动连接。
  • 写作时先给 2–3 个走向,你选一个再动笔;一次只写一段。

⑨ 里子

  • 性能优化一批;死代码、静默异常、lint 债清理(用户无感,包更干净)。
  • 评测基线进了 CI;工具 schema 全覆盖,工具自修只给建议、不自动改。

⑩ 模型选择与 Key 池

  • 点顶栏的公司名选模型:公司 → 模型清单(OpenRouter 可搜索)→ Key 池;Key 可以存多个,自动轮询。
  • 免费档换到 OpenRouter,仍然要你自己的 Key;浮层里有「去 OpenRouter 拿 Key」的直达入口。

⑪ 情景记忆 v1

  • 做过的事写成日记,文件是真相;需要时回灌到对话,也能删。
  • 数据库里的索引可重建,删索引不丢日记。

顺带:下载更快更稳(2.2.0 内)

  • 环境包改 分片多连接下载:同时开 4 路区间,谁快谁多拉,断一条只补那一片;不支持分片的网络会自动退回单连接。
  • 进度从 20% 一档改成 1% 一档,慢网下能看到数字在跳,不再盯着 0% 猜。
  • 断点续传修了两处真机测出来的坑:续传写盘会截断已下分片、合并后没改名导致校验读不到文件;两处都补了测试门禁,以后改回去会先红。
  • 实测同一台手机同一时刻:单连接 20–170 KB/s → 分片 0.6–1.4 MB/s(网络差别很大,不承诺固定倍数)。开 VPN 反而可能更慢:多绕一跳、加密开销、TCP 套 TCP,能直连时不必开。

已知限制(照实说)

  • 只支持 Android 16(API 36)+ arm64;目前只在一台真机(荣耀 Magic5 Pro)上做过完整验证。
  • 抱朴会写代码,但只在玄览里显示,不执行;要跑代码请去逍遥。
  • 抱朴不碰 shell、不起子进程;系统级的活它做不了,也不去做。
  • 全局技能抱朴不能改,只能提议;人设核心层只读。
  • 回收站不会自己清,占的空间要你说一句「清空回收站」才释放。
  • 无网时抱朴不可用;长任务仍受后台回收影响。
  • 多 Agent、MCP、多模态看图都属于「解锁/配置后才出现」的可选能力,默认不开。

说明

  • 覆盖安装即可,数据与环境保留;本版无破坏性改动。
  • 版本号:versionName 2.2.0、versionCode 38。

证道 v2.1.2 — 正式版

Choose a tag to compare

@github-actions github-actions released this 16 Oct 10:06

证道 v2.1.2 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一键安装。

怎么装(这一版不用卸载)

本版与 v2.0.13 ~ v2.1.1 是同一把发布密钥,直接覆盖安装即可,数据全在(Debian 环境、终端里的 tmux 会话、工作区、资料库、日志都不动)。

若你还在 v2.0.12 或更早:那些版本是旧 debug 钥匙签的,Android 不允许覆盖安装,必须先卸载再装(卸载会清掉 App 私有目录,Debian 环境约 200 MB 需重新下载;手机存储里的工作区、资料库、日志不受影响)。
安装门槛没变:Android 16(API 36)+ arm64,与之前几版一致。

本次更新

这一版攒了两个多月的批次(v2.1.1 之后共 133 笔代码提交),挑要紧的说。

① 底栏改名了:抱朴 / 逍遥 / 玄览 / 怡然(四个 Tab 各配了一枚新图标)

  • 老名字 → 新名字:太极 → 抱朴(Agent 对话页)、终端 → 逍遥(自由终端)、丹房 → 怡然(Agent 管理)、玄览不变(浏览器)。
  • 中英两套界面、设置页、引导文案、代码里的旧叫法一并对齐,不留混用。
  • 名字是把每个 Tab 的定位说清楚:抱朴是自研 agent(不再是外挂进程)、逍遥是放手用终端、玄览是看、怡然是过日子。

② 玄览(浏览器)从骨架变成能用的一页

  • 起始页:居中搜索框 + 快捷入口,空态不再是白屏。
  • 多标签:标签条 ↔ 新标签 ↔ 关闭(上限 20 个),标签之间互相隔离,后台标签自动降优先级。
  • 地址栏与导航:搜索词与网址一体、前往、后退 / 前进 / 刷新 / 主页;切走再切回来,还记得上一页。
  • 终端里点链接(OSC 8 超链接与裸 URL 两条路)直接在玄览打开,不用再手抄。
  • 标签条上的「眼睛」:把当前页面的快照导出给终端里的 agent 看(正文 / DOM / 摘要三个文件)。

③ 浏览器桥:给 agent 装一双手(默认关闭)

  • 设置里新增 浏览器桥 页:一个开关、一个本机环回地址(127.0.0.1:14080)、一个口令。
  • 终端里的 agent 靠它读当前页、点元素、填表单、滚动、开关标签、截图、跑一段 JS——一共 11 条命令。
  • 默认关闭、只监听本机环回、外网够不着;口令只显示前后各 4 位,可复制、可重置。

④ 抱朴页现在会显示「启动失败」——这是预期的,不是你没装好

  • 抱朴 Tab 顶部那条 OpenCode 线已结案:targetSdk 抬到 36 后,Android 不再允许 App 直接执行自己数据目录里的二进制(E-140),试了多次都过不去,2026-10-15 拍板彻底放弃。
  • 所以这一页此刻起不来、点「重试」也不会好;怡然的「最近问题」里会看到两条 抱朴(OpenCode)启动失败——放着不用管。
  • 抱朴本身没有取消,是改成自研重做——见下面「接下来」。

⑤ 手感与无障碍(一批小而密的修)

  • 设置与列表的字号阶梯落表(11 个槽位),大字体下不再截断、不再换行错位;触摸目标补齐 M3 的 48dp(三灯、新会话入口、权限整行)。
  • 首页大标题随滚动收缩;页面切换补上 push/pop 转场,告别「瞬间跳」。
  • 冷启动最多一个系统框(此前权限框与更新检查可能连弹);弱网横幅改成活体探针(网通了自动收起);怡然加下拉刷新。
  • 错误文案人性化:你看到的是一句人话,内部异常原文进运行日志;错误红字对比度 3.55:1 → 5.4:1,粘滞键活性格 3.17:1 → 5.06:1(都过 AA)。
  • 切 Tab 不再丢东西:会话 id 与输入草稿搬进进程级 holder;转屏不再跳回首页。

⑥ 隐私与安全

  • 运行日志改落应用私有目录,落盘前统一脱敏;设置页新增导出日志(你自己选目标位置,导出内容整篇再过一次脱敏)。
  • 设备迁移与云备份不再带走凭据(home/.claude、home/.hermes、oc 三类排掉)。
  • 两处脱敏与提示的修:敏感键值后面的内容不再被吃掉(...&sessionid=***&b=2 里的 &b=2 保住了);非法协议(intent://、javascript:、file://)终于会给出「为了安全,这种链接不允许在 App 内打开」——此前这条提示根本走不到(先归一化再判协议,判据永远为真,提示成了死代码)。

⑦ 底子

  • targetSdk 28 → 36:E-134 证伪了「必须 ≤28」那条旧结论——rootfs 里的二进制由 proot loader mmap 进内存加载,Android 从不直接 execve 它们;PRoot 四件套也从 assets 迁进 jniLibs(只读且可执行)。
  • 终端一批修复:光标脏区左边界、纵向换算收敛到一个实现、DCS 超限整条作废、OSC 52 死判据、滚轮封顶、功能键配色对齐系统键盘。
  • 稳定性:桥异常必回 JSON、四条控制命令走主线程、玄览首载死锁(E-142)修复、execJS 改脚本级包装。

接下来 · 抱朴(下一个大变化,先打个招呼)

这一版之后,主线就是抱朴线——把抱朴页从「外挂 OpenCode」改成证道自己的 agent。为了不让你在版本之间觉得「怎么突然全变了」,先把边界说清楚:

  • 改的是抱朴这一页(底栏位置、名字、入口都不变),逍遥 / 玄览 / 怡然 三页不动。
  • 抱朴不跨 rootfs、不起子进程、不依赖 Python / npm / node;只在工作区活动(默认 Download/证道,越界即拒);与他人只做文件交换(换手包)。
  • 它会接着你现在的东西:工作区、资料库、终端、玄览都在原地;抱朴自己的会话与消息另有自己的库,不碰终端里的 tmux 会话。
  • 节奏是先零件后组装:刀 0 = 零件(数据库 / 工具契约 / 令牌估算,单跑跑不出完整对话)→ 刀 1 = 组装 + UI(第一次能真正对话)→ 之后才轮到格式层(做卡)。所以中间几个版本你会看到抱朴页逐步长出东西,而不是一次到位。
  • 发布节奏不变:每做完一段、真机验过,攒一版一起发(就像这一版)。

说明

  • 无破坏性改动:设置、数据、Debian 环境、tmux 会话、工作区、资料库、日志全部保留,直接覆盖安装;minSdk 与之前一致(Android 16 / API 36),没有抬高安装门槛。
  • 单测从 739 例 / 91 suite(v2.1.1 发布时)增到 1244 例 / 173 suite(0 失败 0 错误,9 例按环境条件跳过)。
  • 已知且故意保留的:抱朴页的启动失败卡(见 ④);设置里的「资料库」卡暂不动;a:b 这种「像协议又像端口」的输入按裸域名走搜索(少弹窗口径)。

证道 v2.1.1 — 正式版

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:17

证道 v2.1.1 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一键安装。

怎么装(这一版不用卸载)

本版与 v2.0.13 ~ v2.1.0 是同一把发布密钥,直接覆盖安装即可,数据全在(Debian 环境、终端里的 tmux 会话、工作区、资料库、日志都不动)。

若你还在 v2.0.12 或更早:那些版本是旧的 debug 钥匙签的,Android 不允许覆盖安装,必须先卸载再装(卸载会清掉 App 私有目录,Debian 环境约 200 MB 需重新下载;手机存储里的工作区、资料库、日志不受影响)。

本次更新

① 太极:切到历史会话会真的重新加载了(修 E-123)

  • 问题:在太极页左边抽屉里点回一个历史会话,页面会停在空列表、看着像卡住或者出错;把 App 划掉重进才恢复正常。(同一个毛病新建会话时也会碰上。)
  • 原因:换会话时 App 先把「当前会话」记成了你要去的那个,紧接着才去判断「要不要重连」——判据一看两边是同一个会话,就当成「切 Tab / 返回」直接复用了旧连接,于是既没重新拉消息、也没把轮询和流式通道换到新会话上,界面就空在那儿。
  • 现在:换会话时只清掉上一轮的残留(消息、输入框、进行中的状态),不再预先把当前会话改成目标会话,判据照旧认得出「这是换会话」,于是会重新拉全量消息、重建轮询与流式通道。
  • 顺带说明:这个问题是 v2.0.12 引入连接复用判据时带出来的(当时没扫到调用方),从 v2.0.12 一直到 v2.1.0 都在;本次修好后,两条 JVM 回归用例钉住它——「清残留时绝不动当前会话」「清完残留后必须重开连接」,以后谁改回旧写法都会在单测里红。

说明

  • 无破坏性改动:设置、数据、Debian 环境、tmux 会话、工作区、资料库、日志全部保留,直接覆盖安装。
  • 单测从 737 例 / 91 suite 增到 739 例 / 91 suite(0 失败 0 错误,2 例按环境条件跳过);新增的两例分别钉住上面那条修复的两个断点。

证道 v2.1.0 — 正式版

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:28

证道 v2.1.0 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一键安装。

怎么装(这一版不用卸载)

本版与 v2.0.13 / v2.0.14 / v2.0.15 / v2.0.16 / v2.0.17 / v2.0.18 是同一把发布密钥,直接覆盖安装即可,数据全在(Debian 环境、终端里的 tmux 会话、工作区、资料库、日志都不动)。

若你还在 v2.0.12 或更早:那些版本是旧的 debug 钥匙签的,Android 不允许覆盖安装,必须先卸载再装(卸载会清掉 App 私有目录,Debian 环境约 200 MB 需重新下载;手机存储里的工作区、资料库、日志不受影响)。

本次更新

① Agents 页多了一张卡:Codex CLI

  • 首页 → Agents 里现在能一键安装 OpenAI 官方的 Codex CLI(npm i -g @openai/codex),装完点「启动」直接进 Codex 的交互界面,卸载也在同一张卡上。
  • 启动命令是 codex --no-daemon:--no-daemon 必须写在最前面当顶层标志,写到子命令后面 Codex 会报未知参数——这是配置时踩到的坑,已经固化在卡里,不用你自己记。
  • 这张卡只负责「装 / 起 / 卸」:不预设 ~/.codex/config.toml、不预设 models.json、App 里也没有填密钥的地方。想换基底(比如把 Codex 接到 DeepSeek)的人,自己在终端里配即可;卸载时 ~/.codex 会保留,不会被顺手删掉。

② 保活锁改成跟「终端有没有活动」走,不再一直占着

  • 以前只要 App 开着,保活锁就一直持有;现在每 30 秒汇总一次本 App 全部进程用掉的 CPU 时间:连续 10 分钟没有任何增长,就把锁放掉,通知栏文案从「会话运行中」变成「空闲休眠」——会话本身不结束。
  • 终端里一有动静(敲命令、Agent 在跑),锁立刻重新拿回来,通知栏变回「会话运行中」。
  • 判据刻意保守:宁可多持一点锁,也不把正在干活的终端判成空闲;读不到 CPU 读数时一律按「有活动」处理。这样只会有「该放没放」的情况,不会有「该醒没醒」。

③ 太极:401 自己恢复,不用再手动重连

  • 以前太极的服务重启后换了密码,App 手里还是旧密码,日志里会连着刷 HTTP 401,得自己去重新连一次;现在收到 401 会用重新解析到的密码自动重试一次(只试一次,流式通道不碰),并记一行「收到 401,用重新解析到的密码重试一次」。
  • 配套把「从 serve 日志里读密码」改稳了:从日志里收集最近的候选口令(最多 3 个、新的优先),逐个用 GET /api/session 探一次,挑真正能过鉴权的那一个——不再只看最后一行。服务刚重启、新口令还没落盘时,旧口令会被探针淘汰,不会再误用。

说明

  • 无破坏性改动:设置、数据、Debian 环境、tmux 会话、工作区、资料库、日志全部保留。
  • 单测从 690 例 / 86 suite 增到 737 例 / 91 suite(0 失败 0 错误,2 例按环境条件跳过);新增的测试面分别钉住 Codex 卡的三件事、空闲策略的每一种 CPU 读数、401 重试与口令探针的每个分支。

证道 v2.0.18 — 正式版

Choose a tag to compare

@github-actions github-actions released this 13 Oct 03:32

证道 v2.0.18 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一键安装。

怎么装(这一版不用卸载)

本版与 v2.0.13 / v2.0.14 / v2.0.15 / v2.0.16 / v2.0.17 是同一把发布密钥,直接覆盖安装即可,数据全在(Debian 环境、终端里的 tmux 会话、工作区、资料库、日志都不动)。

若你还在 v2.0.12 或更早:那些版本是旧的 debug 钥匙签的,Android 不允许覆盖安装,必须先卸载再装(卸载会清掉 App 私有目录,Debian 环境约 200 MB 需重新下载;手机存储里的工作区、资料库、日志不受影响)。

本次更新

① 英文界面 + 深色主题

  • 全站双语:界面外壳、设置页与全部二级页、首页、太极页、欢迎与首启权限页都已翻译(英文文案 743 条,与中文一一对应)。中文仍是默认,想换:设置 → Language → English。
  • 深色模式:设置 → Appearance 可选「跟随系统 / 浅色 / 深色」。深色配色是逐色按 WCAG 对比度算过的(对卡片底全部 ≥ 4.5:1),不是简单反色。
  • 顺带的体验修正:环境体检改成逐项并行上屏(不再等最后一项跑完才显示,TCP 探测超时 1.2s → 0.6s);首页的提示从 Toast 改成底部条(不再糊住按钮);设置页里的数字位点先用上次的值填上(不再先空后蹦)。
  • 还修掉 3 处「按中文文案判断分支」的真 BUG——这类代码在英文界面下必然失效,属于本次双语化的连带收获。

② 明文网络放行收窄

  • 以前是一个全局开关(usesCleartextTraffic="true",等于允许全站明文)。现在改成白名单,只放行回环地址(127.0.0.1 / localhost)——App 与内置服务之间的通信本来也只走环回。
  • 终端里 Debian 的 apt 仍照常走 http 源:那是 guest 里的原生程序,本来就不受这个策略约束(真机实测 apt-get update 正常)。

③ 版权文本随环境包一起分发(E-097 收口)

  • 镜像构建时把 348 个 Debian 包的 copyright 正文收成一份归档放进 rootfs(/usr/share/zhengdao-copyright.tar.zst,4.78 MiB 原文压到 0.49 MiB),并作为独立资产挂到每个 Release 上——这是许可证义务要求的「随分发物提供正文」,不再依赖外网归档站点长期可访问。
  • 构建脚本里加了硬断言:正文份数少于 300 就直接让构建失败,避免静默发出一个没有正文的空壳。

④ 「扫 BUG 与死代码」一批修复

安装锁现在也罩住「开会话」这条路(安装期间点开会话不会两边同时写 rootfs);备份规则由 AGP 的空模板改成逐条排除(Debian 环境、工作区等不再进云备份);serve 的停服判据收窄,不再误杀你自己在 Debian 里装的 opencode;「别在主线程量内存」从注释变成会抛的断言;越界判断统一到一处实现;粘滞 Ctrl 亮着时退格也会镜像行缓冲(以前会残留「幽灵文本」,下一次回车被当成提问提交)。

⑤ 两道新门禁(对使用者是「少一次装错包」)

  • 本机打正式包时如果没设发版签名钥匙,构建直接失败(以前会静默用调试钥匙签出装不上的包,用户只能卸载重装)。
  • CI 新增许可证正文门禁:APK 里 assets/licenses/ 的每份正文都要与仓库逐字节一致。

质量口径

  • 单元测试全绿:86 个测试类 / 690 例 / 0 失败 0 错误(1 例按环境条件跳过)。
  • 真机走查(正式签名包覆盖安装):切到英文后设置页/环境与更新/体检 11 项/外观/语言全部英文;深色模式在设置页、太极页正常;终端里 apt-get update 照常从 deb.debian.org 下载(验证明文策略没有误伤 guest)。

已知限制(未变)

  • 必须在 Android 16(API 36)及以上:更低版本未适配,安装会被直接拒绝。
  • 终端不是安全沙箱:只运行你信任的命令(PRoot 与 App 同 UID、同内核、同网络栈)。
  • 本机系统对「所有文件访问」开关不给证道开放(targetSdk=28),权限页里它是"可选增强",未开启属正常,不影响使用。
  • 英文界面还有几处是中文(已知、不影响使用):终端页里 App 自绘的部分(工具栏按钮、安装/解压提示、帮助文本,终端本身的 Debian 输出与界面语言无关)、首页「待处理」条目、Agents 页里各 Agent 的简介、以及开源许可页(那一页是许可证正文说明,刻意保持中文以免译文与法律文本不一致)。

证道 v2.0.17 — 正式版

Choose a tag to compare

@github-actions github-actions released this 11 Oct 15:43

证道 v2.0.17 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一键安装。

怎么装(这一版不用卸载)

本版与 v2.0.13 / v2.0.14 / v2.0.15 / v2.0.16 是同一把发布密钥,直接覆盖安装即可,数据全在(Debian 环境、终端里的 tmux 会话、工作区、资料库、日志都不动)。

若你还在 v2.0.12 或更早:那些版本是旧的 debug 钥匙签的,Android 不允许覆盖安装,必须先卸载再装(详见 v2.0.13 的说明——卸载会清掉 App 私有目录,Debian 环境约 200 MB 需重新下载;手机存储里的工作区、资料库、日志不受影响)。

本次更新

① 进终端不再自动帮你打开上次那个 Agent

  • 以前:杀掉 App(或系统回收)之后再进「终端」,它会自己把上一次在用的 Agent 重新拉起来——直接把你丢进 Hermes 的 TUI 里。这是早期为「崩溃后被接回」做的兜底,但它重放的只是一条启动命令,上下文、会话、你当时在做的事都已经没了,等于替你做了一次没点过的选择。
  • 现在:进终端就是干净的 shell(root@localhost:~#)。要起 Agent 就点首页那张卡片,或在终端里自己敲;tmux 里的会话本身照旧保留,进程还活着时点卡片仍然是真接回(不会重开)。
  • 顺带把落盘的「上次在用哪个 Agent」记录在会话重建时清干净,免得路由误判成「它已经在跑,已切回去」而点了没反应。

② 首页体检「Hermes 依赖环境」的红叉误报修掉了

  • 现象:环境明明是好的、hermes 也能正常启动,首页「环境就绪」展开后那一项却打红叉,写「依赖环境已丢失,需在终端重建」。
  • 两个根因(都记在 docs/ERRATA.md E-114):① 新版 hermes 的依赖代目录里放的是源码树、没有 uv.lock,而旧判据要求「记录里写的那个锁文件必须在」;② 判据把「更新中断留下的标记文件」也算成故障,一条残渣就让整项变红。
  • 现在:判据只认「环境目录在 + venv/pyvenv.cfg 在 + 记录是 guest 视角」;残渣降级成提示,按钮文案相应变成「清理更新标记」。设置页与本项的说明文案一并跟上。

③ hermes 自己装的扩展,一律「只报不删」

  • 浏览器工具(agent-browser 驱动 + chromium 本体)与桌面自动化(cua-driver)都归入保留:存储明细里照旧列出体积,但不再出现任何清理入口(因此「清理可选工具」这个按钮在本版里不会再出现——没有可清项)。
  • 理由:这几件是 hermes 自己装的扩展,有它们 hermes 就多一种能力(浏览器工具实测可用);上游 lockfile 标的 optional 是「装不装都行」,不是「可以删」。
  • 其它清理一个都没变:Agent 包缓存、临时文件、旧依赖代、安装脚本缓存照旧可清;ffmpeg(hermes 必需包)与 python / node / uv / npm 等核心运行时一直是「保留」。

质量口径

  • 单元测试全绿:68 个测试类 / 622 例 / 0 失败 0 错误(app\build\test-results\testDebugUnitTest)。其中存储清理那组改成断言「没有任何 hermes 工具目录可清、清理调用不删任何东西」,HermesEnv 那组补了两条(新版布局没有 uv.lock 也算好环境 / 缺 pyvenv.cfg 才算坏)。
  • 真机走查:正式签名包覆盖安装后,进终端为干净 shell(无 Agent TUI)、首页体检 11/11 通过、设置页「环境与更新」显示「依赖环境记录有效」(修前是红字)、存储明细里 chromium / agent-browser 显示保留。

已知限制(未变)

  • 必须在 Android 16(API 36)及以上:更低版本未适配,安装会被直接拒绝。
  • 终端不是安全沙箱:只运行你信任的命令(PRoot 与 App 同 UID、同内核、同网络栈)。
  • 本机系统对「所有文件访问」开关不给证道开放(targetSdk=28),权限页里它是"可选增强",未开启属正常,不影响使用。

证道 v2.0.16 — 正式版

Choose a tag to compare

@github-actions github-actions released this 11 Oct 14:26

证道 v2.0.16 — 正式版

在 Android 上运行 AI Agent 的轻量环境——免 root、零命令、一键安装。

怎么装(这一版不用卸载)

本版与 v2.0.13 / v2.0.14 / v2.0.15 是同一把发布密钥,直接覆盖安装即可,数据全在。

若你还在 v2.0.12 或更早:那些版本是旧的 debug 钥匙签的,Android 不允许覆盖安装,必须先卸载再装(详见 v2.0.13 的说明——卸载会清掉 App 私有目录,Debian 环境约 200 MB 需重新下载;手机存储里的工作区、资料库、日志不受影响)。

本次更新

① 第一方代码的许可改为「保留所有权利」(重要,请先读)

  • 自 2026-10-11 起,证道自己写的代码(App 本体、tools/、脚本、文档)不再默认按 GPL-3.0 授权,改为保留所有权利:允许浏览、克隆、自行构建评估;再分发与任何商业使用(收费或免费提供、作为服务提供、捆绑 / 贴牌 / OEM、企业内部规模化部署)须事先取得作者书面许可(putaopanpan@gmail.com)。
  • 已发布的旧版本不受影响:≤ v2.0.15 的版本仍按各自发布时的 GPL-3.0 分发(GPL 授权一经发布不可撤回),那份 GPL-3.0 全文现在随仓库放在 licenses/GPL-3.0.txt,App 内「设置 → 关于 → 开源许可」离线可读。
  • 第三方组件一个都没变,随附义务照旧:com/termux/** 仍是 Apache-2.0(含修改通知)、proot 仍是 GPL-2.0-or-later(以独立进程方式调用)、libtalloc 仍是 LGPL-3.0-or-later、libandroid-shmem 仍是 BSD-3-Clause、字体仍是 SIL OFL 1.1、Debian rootfs 的许可与来源照旧。逐条对照见仓库根 THIRD-PARTY-LICENSES.md 与 PROVENANCE.md。
  • 随 App 分发的许可证正文因此变成九份 .txt(第一方声明在包内名为 LICENSE-zhengdao.txt)——不联网也能在应用内读全文。
  • 顺带补齐外部贡献流程:CONTRIBUTING.md 与 CLA.md(外部贡献须先签 CLA,且必须在第一个外部 PR 之前落地)。

② 设置页换成「入口页 + 六个二级页」

  • 设置页原来是一长条(终端外观、工作区、资料库、保活记录、运行日志、帮助、关于全堆在一屏),现在入口页只列这几项,各自点进一个二级页;卡片内容逐字未改,只是换了位置。

③ 首页「最近问题」卡上的按钮真的会去对地方了

  • 「去设置看记录」(上次运行不是正常结束):以前只把设置页打开,你得自己找;现在直接进「保活记录」页。
  • 「看日志」(会话保活服务没起来):现在直接进设置页的「运行日志」一节(并停在那一节)。
  • 这两条以前共用同一个动作标识,首页也没这个分支,于是两处都只是「打开设置」——现在各自一条。

质量口径

  • 单元测试 全绿(app\build\test-results\testDebugUnitTest,本版实测 0 失败 0 错误);新增一条「去路标识必须唯一」的断言,防止上面第 ③ 条那种「两条去路共用一个标识」的病复发。
  • 许可相关文档与随包内容按构建期断言核对(licenses/ 与包内 assets/licenses/ 逐份比对字节数与 SHA256)。

已知限制(未变)

  • 必须在 Android 16(API 36)及以上:更低版本未适配,安装会被直接拒绝。
  • 终端不是安全沙箱:只运行你信任的命令(PRoot 与 App 同 UID、同内核、同网络栈)。
  • 本机系统对「所有文件访问」开关不给证道开放(targetSdk=28),权限页里它是"可选增强",未开启属正常,不影响使用。